diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 2af5a433c..c06ce8832 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -6,7 +6,7 @@ body: attributes: value: | Before filling a bug report it would be great to [upgrade](https://docs.victoriametrics.com/#how-to-upgrade) - to [the latest available release](https://github.com/VictoriaMetrics/VictoriaMetrics/releases) + to [the latest available release](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest) and verify whether the bug is reproducible there. It's also recommended to read the [troubleshooting docs](https://docs.victoriametrics.com/Troubleshooting.html) first. - type: textarea diff --git a/.github/workflows/check-licenses.yml b/.github/workflows/check-licenses.yml index a904b2562..28852f836 100644 --- a/.github/workflows/check-licenses.yml +++ b/.github/workflows/check-licenses.yml @@ -17,7 +17,7 @@ jobs: - name: Setup Go uses: actions/setup-go@main with: - go-version: 1.21.1 + go-version: 1.21.3 id: go - name: Code checkout uses: actions/checkout@master diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 4e2e66be2..ab7e324a1 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -57,7 +57,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v4 with: - go-version: 1.21.1 + go-version: 1.21.3 check-latest: true cache: true if: ${{ matrix.language == 'go' }} diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 945b46ae0..a0d88242b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -32,7 +32,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v4 with: - go-version: 1.21.1 + go-version: 1.21.3 check-latest: true cache: true @@ -56,7 +56,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v4 with: - go-version: 1.21.1 + go-version: 1.21.3 check-latest: true cache: true @@ -81,7 +81,7 @@ jobs: id: go uses: actions/setup-go@v4 with: - go-version: 1.21.1 + go-version: 1.21.3 check-latest: true cache: true diff --git a/.github/workflows/sync-docs.yml b/.github/workflows/sync-docs.yml index 2f533b7d2..fbb389591 100644 --- a/.github/workflows/sync-docs.yml +++ b/.github/workflows/sync-docs.yml @@ -6,6 +6,8 @@ on: paths: - 'docs/**' workflow_dispatch: {} +env: + PAGEFIND_VERSION: "1.0.3" permissions: contents: read # This is required for actions/checkout and to commit back image update deployments: write @@ -24,7 +26,16 @@ jobs: repository: VictoriaMetrics/vmdocs token: ${{ secrets.VM_BOT_GH_TOKEN }} path: docs - + - uses: peaceiris/actions-hugo@v2 + with: + hugo-version: 'latest' + extended: true + - name: Install PageFind #install the static search engine for index build + uses: supplypike/setup-bin@v3 + with: + uri: "https://github.com/CloudCannon/pagefind/releases/download/v${{env.PAGEFIND_VERSION}}/pagefind-v${{env.PAGEFIND_VERSION}}-x86_64-unknown-linux-musl.tar.gz" + name: "pagefind" + version: ${{env.PAGEFIND_VERSION}} - name: Import GPG key uses: crazy-max/ghaction-import-gpg@v5 with: @@ -45,6 +56,7 @@ jobs: rm -rf content cp -r ../main/docs content make clean-after-copy + make build-search-index git config --global user.name "${{ steps.import-gpg.outputs.email }}" git config --global user.email "${{ steps.import-gpg.outputs.email }}" git add . diff --git a/.gitignore b/.gitignore index a5c001917..96d97c523 100644 --- a/.gitignore +++ b/.gitignore @@ -22,13 +22,3 @@ Gemfile.lock /_site _site *.tmp - -# vm binaries -app/victoria-metrics/victoria-metrics -app/vmagent/vmagent -app/vmctl/vmctl -app/vmalert/vmalert - -# vm default data folder -app/victoria-metrics/victoria-metrics-data/ -app/vmagent/vmagent-remotewrite-data/ \ No newline at end of file diff --git a/Makefile b/Makefile index 8b2dd3344..8909af47e 100644 --- a/Makefile +++ b/Makefile @@ -28,7 +28,8 @@ all: \ vmauth-prod \ vmbackup-prod \ vmrestore-prod \ - vmctl-prod + vmctl-prod \ + vmalert-tool-prod clean: rm -rf bin/* @@ -40,7 +41,8 @@ publish: package-base \ publish-vmauth \ publish-vmbackup \ publish-vmrestore \ - publish-vmctl + publish-vmctl \ + publish-vmalert-tool package: \ package-victoria-metrics \ @@ -50,7 +52,8 @@ package: \ package-vmauth \ package-vmbackup \ package-vmrestore \ - package-vmctl + package-vmctl \ + package-vmalert-tool vmutils: \ vmagent \ @@ -58,7 +61,8 @@ vmutils: \ vmauth \ vmbackup \ vmrestore \ - vmctl + vmctl \ + vmalert-tool vmutils-pure: \ vmagent-pure \ @@ -66,7 +70,8 @@ vmutils-pure: \ vmauth-pure \ vmbackup-pure \ vmrestore-pure \ - vmctl-pure + vmctl-pure \ + vmalert-tool-pure vmutils-linux-amd64: \ vmagent-linux-amd64 \ @@ -74,7 +79,8 @@ vmutils-linux-amd64: \ vmauth-linux-amd64 \ vmbackup-linux-amd64 \ vmrestore-linux-amd64 \ - vmctl-linux-amd64 + vmctl-linux-amd64 \ + vmalert-tool-linux-amd64 vmutils-linux-arm64: \ vmagent-linux-arm64 \ @@ -82,7 +88,8 @@ vmutils-linux-arm64: \ vmauth-linux-arm64 \ vmbackup-linux-arm64 \ vmrestore-linux-arm64 \ - vmctl-linux-arm64 + vmctl-linux-arm64 \ + vmalert-tool-linux-arm64 vmutils-linux-arm: \ vmagent-linux-arm \ @@ -90,7 +97,8 @@ vmutils-linux-arm: \ vmauth-linux-arm \ vmbackup-linux-arm \ vmrestore-linux-arm \ - vmctl-linux-arm + vmctl-linux-arm \ + vmalert-tool-linux-arm vmutils-linux-386: \ vmagent-linux-386 \ @@ -98,7 +106,8 @@ vmutils-linux-386: \ vmauth-linux-386 \ vmbackup-linux-386 \ vmrestore-linux-386 \ - vmctl-linux-386 + vmctl-linux-386 \ + vmalert-tool-linux-386 vmutils-linux-ppc64le: \ vmagent-linux-ppc64le \ @@ -106,7 +115,8 @@ vmutils-linux-ppc64le: \ vmauth-linux-ppc64le \ vmbackup-linux-ppc64le \ vmrestore-linux-ppc64le \ - vmctl-linux-ppc64le + vmctl-linux-ppc64le \ + vmalert-tool-linux-ppc64le vmutils-darwin-amd64: \ vmagent-darwin-amd64 \ @@ -114,7 +124,8 @@ vmutils-darwin-amd64: \ vmauth-darwin-amd64 \ vmbackup-darwin-amd64 \ vmrestore-darwin-amd64 \ - vmctl-darwin-amd64 + vmctl-darwin-amd64 \ + vmalert-tool-darwin-amd64 vmutils-darwin-arm64: \ vmagent-darwin-arm64 \ @@ -122,7 +133,8 @@ vmutils-darwin-arm64: \ vmauth-darwin-arm64 \ vmbackup-darwin-arm64 \ vmrestore-darwin-arm64 \ - vmctl-darwin-arm64 + vmctl-darwin-arm64 \ + vmalert-tool-darwin-arm64 vmutils-freebsd-amd64: \ vmagent-freebsd-amd64 \ @@ -130,7 +142,8 @@ vmutils-freebsd-amd64: \ vmauth-freebsd-amd64 \ vmbackup-freebsd-amd64 \ vmrestore-freebsd-amd64 \ - vmctl-freebsd-amd64 + vmctl-freebsd-amd64 \ + vmalert-tool-freebsd-amd64 vmutils-openbsd-amd64: \ vmagent-openbsd-amd64 \ @@ -138,7 +151,8 @@ vmutils-openbsd-amd64: \ vmauth-openbsd-amd64 \ vmbackup-openbsd-amd64 \ vmrestore-openbsd-amd64 \ - vmctl-openbsd-amd64 + vmctl-openbsd-amd64 \ + vmalert-tool-openbsd-amd64 vmutils-windows-amd64: \ vmagent-windows-amd64 \ @@ -146,7 +160,8 @@ vmutils-windows-amd64: \ vmauth-windows-amd64 \ vmbackup-windows-amd64 \ vmrestore-windows-amd64 \ - vmctl-windows-amd64 + vmctl-windows-amd64 \ + vmalert-tool-windows-amd64 victoria-metrics-crossbuild: \ victoria-metrics-linux-386 \ @@ -342,7 +357,8 @@ release-vmutils-goos-goarch: \ vmauth-$(GOOS)-$(GOARCH)-prod \ vmbackup-$(GOOS)-$(GOARCH)-prod \ vmrestore-$(GOOS)-$(GOARCH)-prod \ - vmctl-$(GOOS)-$(GOARCH)-prod + vmctl-$(GOOS)-$(GOARCH)-prod \ + vmalert-tool-$(GOOS)-$(GOARCH)-prod cd bin && \ tar --transform="flags=r;s|-$(GOOS)-$(GOARCH)||" -czf vmutils-$(GOOS)-$(GOARCH)-$(PKG_TAG).tar.gz \ vmagent-$(GOOS)-$(GOARCH)-prod \ @@ -351,6 +367,7 @@ release-vmutils-goos-goarch: \ vmbackup-$(GOOS)-$(GOARCH)-prod \ vmrestore-$(GOOS)-$(GOARCH)-prod \ vmctl-$(GOOS)-$(GOARCH)-prod \ + vmalert-tool-$(GOOS)-$(GOARCH)-prod && sha256sum vmutils-$(GOOS)-$(GOARCH)-$(PKG_TAG).tar.gz \ vmagent-$(GOOS)-$(GOARCH)-prod \ vmalert-$(GOOS)-$(GOARCH)-prod \ @@ -358,6 +375,7 @@ release-vmutils-goos-goarch: \ vmbackup-$(GOOS)-$(GOARCH)-prod \ vmrestore-$(GOOS)-$(GOARCH)-prod \ vmctl-$(GOOS)-$(GOARCH)-prod \ + vmalert-tool-$(GOOS)-$(GOARCH)-prod \ | sed s/-$(GOOS)-$(GOARCH)-prod/-prod/ > vmutils-$(GOOS)-$(GOARCH)-$(PKG_TAG)_checksums.txt cd bin && rm -rf \ vmagent-$(GOOS)-$(GOARCH)-prod \ @@ -365,7 +383,8 @@ release-vmutils-goos-goarch: \ vmauth-$(GOOS)-$(GOARCH)-prod \ vmbackup-$(GOOS)-$(GOARCH)-prod \ vmrestore-$(GOOS)-$(GOARCH)-prod \ - vmctl-$(GOOS)-$(GOARCH)-prod + vmctl-$(GOOS)-$(GOARCH)-prod \ + vmalert-tool-$(GOOS)-$(GOARCH)-prod release-vmutils-windows-goarch: \ vmagent-windows-$(GOARCH)-prod \ @@ -373,7 +392,8 @@ release-vmutils-windows-goarch: \ vmauth-windows-$(GOARCH)-prod \ vmbackup-windows-$(GOARCH)-prod \ vmrestore-windows-$(GOARCH)-prod \ - vmctl-windows-$(GOARCH)-prod + vmctl-windows-$(GOARCH)-prod \ + vmalert-tool-windows-$(GOARCH)-prod cd bin && \ zip vmutils-windows-$(GOARCH)-$(PKG_TAG).zip \ vmagent-windows-$(GOARCH)-prod.exe \ @@ -382,6 +402,7 @@ release-vmutils-windows-goarch: \ vmbackup-windows-$(GOARCH)-prod.exe \ vmrestore-windows-$(GOARCH)-prod.exe \ vmctl-windows-$(GOARCH)-prod.exe \ + vmalert-tool-windows-$(GOARCH)-prod.exe \ && sha256sum vmutils-windows-$(GOARCH)-$(PKG_TAG).zip \ vmagent-windows-$(GOARCH)-prod.exe \ vmalert-windows-$(GOARCH)-prod.exe \ @@ -389,6 +410,7 @@ release-vmutils-windows-goarch: \ vmbackup-windows-$(GOARCH)-prod.exe \ vmrestore-windows-$(GOARCH)-prod.exe \ vmctl-windows-$(GOARCH)-prod.exe \ + vmalert-tool-windows-$(GOARCH)-prod.exe \ > vmutils-windows-$(GOARCH)-$(PKG_TAG)_checksums.txt cd bin && rm -rf \ vmagent-windows-$(GOARCH)-prod.exe \ @@ -396,7 +418,8 @@ release-vmutils-windows-goarch: \ vmauth-windows-$(GOARCH)-prod.exe \ vmbackup-windows-$(GOARCH)-prod.exe \ vmrestore-windows-$(GOARCH)-prod.exe \ - vmctl-windows-$(GOARCH)-prod.exe + vmctl-windows-$(GOARCH)-prod.exe \ + vmalert-tool-windows-$(GOARCH)-prod.exe pprof-cpu: go tool pprof -trim_path=github.com/VictoriaMetrics/VictoriaMetrics@ $(PPROF_FILE) @@ -514,3 +537,4 @@ docs-sync: SRC=app/vmctl/README.md DST=docs/vmctl.md OLD_URL='/vmctl.html' ORDER=8 TITLE=vmctl $(MAKE) copy-docs SRC=app/vmgateway/README.md DST=docs/vmgateway.md OLD_URL='/vmgateway.html' ORDER=9 TITLE=vmgateway $(MAKE) copy-docs SRC=app/vmbackupmanager/README.md DST=docs/vmbackupmanager.md OLD_URL='/vmbackupmanager.html' ORDER=10 TITLE=vmbackupmanager $(MAKE) copy-docs + SRC=app/vmalert-tool/README.md DST=docs/vmalert-tool.md OLD_URL='' ORDER=12 TITLE=vmalert-tool $(MAKE) copy-docs diff --git a/README.md b/README.md index 62e6b11d2..e966a8bb4 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ VictoriaMetrics is a fast, cost-effective and scalable monitoring solution and time series database. -VictoriaMetrics is available in [binary releases](https://github.com/VictoriaMetrics/VictoriaMetrics/releases), +VictoriaMetrics is available in [binary releases](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest), [Docker images](https://hub.docker.com/r/victoriametrics/victoria-metrics/), [Snap packages](https://snapcraft.io/victoriametrics) and [source code](https://github.com/VictoriaMetrics/VictoriaMetrics). @@ -29,7 +29,7 @@ If you have questions about VictoriaMetrics, then feel free asking them at [Vict [Contact us](mailto:info@victoriametrics.com) if you need enterprise support for VictoriaMetrics. See [features available in enterprise package](https://docs.victoriametrics.com/enterprise.html). Enterprise binaries can be downloaded and evaluated for free -from [the releases page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases). +from [the releases page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest). See how to request a free trial license [here](https://victoriametrics.com/products/enterprise/trial/). VictoriaMetrics is developed at a fast pace, so it is recommended periodically checking the [CHANGELOG](https://docs.victoriametrics.com/CHANGELOG.html) and performing [regular upgrades](#how-to-upgrade-victoriametrics). @@ -137,7 +137,8 @@ See also [articles and slides about VictoriaMetrics from our users](https://docs ### Install -To quickly try VictoriaMetrics, just download [VictoriaMetrics executable](https://github.com/VictoriaMetrics/VictoriaMetrics/releases) or [Docker image](https://hub.docker.com/r/victoriametrics/victoria-metrics/) and start it with the desired command-line flags. +To quickly try VictoriaMetrics, just download [VictoriaMetrics executable](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest) +or [Docker image](https://hub.docker.com/r/victoriametrics/victoria-metrics/) and start it with the desired command-line flags. See also [QuickStart guide](https://docs.victoriametrics.com/Quick-Start.html) for additional information. VictoriaMetrics can also be installed via these installation methods: @@ -214,8 +215,8 @@ After changes were made, trigger config re-read with the command `curl 127.0.0.1 ### Running as Windows service -In order to run as a windows service it is required to create a service configuration for [WinSW](https://github.com/winsw/winsw) -and then install it as a service. +In order to run VictoriaMetrics as a Windows service it is required to create a service configuration for [WinSW](https://github.com/winsw/winsw) +and then install it as a service according to the following guide: 1. Create a service configuration: @@ -225,23 +226,23 @@ and then install it as a service. VictoriaMetrics VictoriaMetrics %BASE%\victoria-metrics-windows-amd64-prod.exe" - + - + 1 hour - + -envflag.enable - + Normal - + 15 sec - + true Automatic 15 sec 1 sec - + %BASE%\logs 10240 @@ -251,7 +252,7 @@ and then install it as a service. - + ``` @@ -264,6 +265,9 @@ and then install it as a service. Get-Service VictoriaMetrics | Start-Service ``` +See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3781) for more details. + + ## Prometheus setup Add the following lines to Prometheus config file (it is usually located at `/etc/prometheus/prometheus.yml`) in order to send data to VictoriaMetrics: @@ -325,7 +329,7 @@ too high memory consumption of Prometheus, then try to lower `max_samples_per_se Keep in mind that these two params are tightly connected. Read more about tuning remote write for Prometheus [here](https://prometheus.io/docs/practices/remote_write). -It is recommended upgrading Prometheus to [v2.12.0](https://github.com/prometheus/prometheus/releases) or newer, +It is recommended upgrading Prometheus to [v2.12.0](https://github.com/prometheus/prometheus/releases/latest) or newer, since previous versions may have issues with `remote_write`. Take a look also at [vmagent](https://docs.victoriametrics.com/vmagent.html) @@ -352,9 +356,11 @@ See more in [description](https://github.com/VictoriaMetrics/grafana-datasource# VictoriaMetrics is developed at a fast pace, so it is recommended periodically checking [the CHANGELOG page](https://docs.victoriametrics.com/CHANGELOG.html) and performing regular upgrades. -It is safe upgrading VictoriaMetrics to new versions unless [release notes](https://github.com/VictoriaMetrics/VictoriaMetrics/releases) say otherwise. It is safe skipping multiple versions during the upgrade unless [release notes](https://github.com/VictoriaMetrics/VictoriaMetrics/releases) say otherwise. It is recommended performing regular upgrades to the latest version, since it may contain important bug fixes, performance optimizations or new features. +It is safe upgrading VictoriaMetrics to new versions unless [release notes](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest) say otherwise. +It is safe skipping multiple versions during the upgrade unless [release notes](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest) say otherwise. +It is recommended performing regular upgrades to the latest version, since it may contain important bug fixes, performance optimizations or new features. -It is also safe downgrading to older versions unless [release notes](https://github.com/VictoriaMetrics/VictoriaMetrics/releases) say otherwise. +It is also safe downgrading to older versions unless [release notes](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest) say otherwise. The following steps must be performed during the upgrade / downgrade procedure: @@ -533,7 +539,7 @@ dd_url: http://victoriametrics:8428/datadog vmagent also can accept Datadog metrics format. Depending on where vmagent will forward data, -pick [single-node or cluster URL]((https://docs.victoriametrics.com/url-examples.html#datadog)) formats. +pick [single-node or cluster URL](https://docs.victoriametrics.com/url-examples.html#datadog) formats. ### Sending metrics to Datadog and VictoriaMetrics @@ -851,71 +857,76 @@ For example, `/api/put?extra_label=foo=bar` would add `{foo="bar"}` label to all ## How to send data from NewRelic agent VictoriaMetrics accepts data from [NewRelic infrastructure agent](https://docs.newrelic.com/docs/infrastructure/install-infrastructure-agent) -at `/api/v1/newrelic/infra/v2/metrics/events/bulk` path. -NewRelic's infrastructure agent sends so-called [Events](https://docs.newrelic.com/docs/infrastructure/manage-your-data/data-instrumentation/default-infrastructure-monitoring-data/#infrastructure-events) -which then transformed by VictoriaMetrics to the [Prometheus exposition format](https://github.com/prometheus/docs/blob/main/content/docs/instrumenting/exposition_formats.md#text-based-format). +at `/newrelic/infra/v2/metrics/events/bulk` HTTP path. +VictoriaMetrics receives [Events](https://docs.newrelic.com/docs/infrastructure/manage-your-data/data-instrumentation/default-infrastructure-monitoring-data/#infrastructure-events) +from NewRelic agent at the given path, transforms them to [raw samples](https://docs.victoriametrics.com/keyConcepts.html#raw-samples) +according to [these docs](#newrelic-agent-data-mapping) before storing the raw samples to the database. -NewRelic's infrastructure agent allows configuring destinations for metrics forwarding via ENV variable `COLLECTOR_URL`. -It is also required to specify `NRIA_LICENSE_KEY`, which is available only after registration into account of the NewRelic cloud. +You need passing `COLLECTOR_URL` and `NRIA_LICENSE_KEY` environment variables to NewRelic infrastructure agent in order to send the collected metrics to VictoriaMetrics. +The `COLLECTOR_URL` must point to `/newrelic` HTTP endpoint at VictoriaMetrics, while the `NRIA_LICENSE_KEY` must contain NewRelic license key, +which can be obtained [here](https://newrelic.com/signup). +For example, if VictoriaMetrics runs at `localhost:8428`, then the following command can be used for running NewRelic infrastructure agent: -To configure NewRelic infrastructure agent for forwarding metrics to VictoriaMetrics use the following example: ```console -COLLECTOR_URL="http://localhost:8428/newrelic/api/v1" NRIA_LICENSE_KEY="YOUR_LICENSE_KEY" ./newrelic-infra +COLLECTOR_URL="http://localhost:8428/newrelic" NRIA_LICENSE_KEY="NEWRELIC_LICENSE_KEY" ./newrelic-infra ``` -### NewRelic agent data mapping +### NewRelic agent data mapping + +VictoriaMetrics maps [NewRelic Events](https://docs.newrelic.com/docs/infrastructure/manage-your-data/data-instrumentation/default-infrastructure-monitoring-data/#infrastructure-events) +to [raw samples](https://docs.victoriametrics.com/keyConcepts.html#raw-samples) in the following way: + +1. Every numeric field is converted into a raw sample with the corresponding name. +1. The `eventType` and all the other fields with `string` value type are attached to every raw sample as [metric labels](https://docs.victoriametrics.com/keyConcepts.html#labels). +1. The `timestamp` field is used as timestamp for the ingested [raw sample](https://docs.victoriametrics.com/keyConcepts.html#raw-samples). + The `timestamp` field may be specified either in seconds or in milliseconds since the [Unix Epoch](https://en.wikipedia.org/wiki/Unix_time). + If the `timestamp` field is missing, then the raw sample is stored with the current timestamp. + +For example, let's import the following NewRelic Events request to VictoriaMetrics: -As example, lets create `newrelic.json` file with the following content: ```json [ - { - "Events":[ - { - "eventType":"SystemSample", - "entityKey":"macbook-pro.local", - "cpuPercent":25.056660790748904, - "cpuUserPercent":8.687987912389374, - "cpuSystemPercent":16.36867287835953, - "cpuIOWaitPercent":0, - "cpuIdlePercent":74.94333920925109, - "cpuStealPercent":0, - "loadAverageOneMinute":5.42333984375, - "loadAverageFiveMinute":4.099609375, - "loadAverageFifteenMinute":3.58203125 - } - ] - } - ] + { + "Events":[ + { + "eventType":"SystemSample", + "entityKey":"macbook-pro.local", + "cpuPercent":25.056660790748904, + "cpuUserPercent":8.687987912389374, + "cpuSystemPercent":16.36867287835953, + "cpuIOWaitPercent":0, + "cpuIdlePercent":74.94333920925109, + "cpuStealPercent":0, + "loadAverageOneMinute":5.42333984375, + "loadAverageFiveMinute":4.099609375, + "loadAverageFifteenMinute":3.58203125 + } + ] + } +] ``` -Let's use cUrl to send `newrelic.json` to single-node VictoriaMetrics: +Save this JSON into `newrelic.json` file and then use the following command in order to import it into VictoriaMetrics: ```console -curl -X POST -H 'Content-Type: application/json' --data-binary @newrelic.json http://localhost:8428/newrelic/api/v1/infra/v2/metrics/events/bulk +curl -X POST -H 'Content-Type: application/json' --data-binary @newrelic.json http://localhost:8428/newrelic/infra/v2/metrics/events/bulk ``` -If data was successfully ingested, you'll get `{"status":"ok"}` response. Let's fetch ingested data from VictoriaMetrics -in vmui via query `{__name__!=""}`: +Let's fetch the ingested data via [data export API](#how-to-export-data-in-json-line-format): + ```console -system_sample_cpu_io_wait_percent{entity_key="macbook-pro.local"} 0 -system_sample_cpu_idle_percent{entity_key="macbook-pro.local"} 74.9433392092 -system_sample_cpu_percent{entity_key="macbook-pro.local"} 25.056660790748 -system_sample_cpu_steal_percent{entity_key="macbook-pro.local"} 0 -system_sample_cpu_system_percent{entity_key="macbook-pro.local"} 16.368672878359 -system_sample_cpu_user_percent{entity_key="macbook-pro.local"} 8.687987912389 -system_sample_load_average_fifteen_minute{entity_key="macbook-pro.local"} 3.58203125 -system_sample_load_average_five_minute{entity_key="macbook-pro.local"} 4.099609375 -system_sample_load_average_one_minute{entity_key="macbook-pro.local"} 5.42333984375 +curl http://localhost:8428/api/v1/export -d 'match={eventType="SystemSample"}' +{"metric":{"__name__":"cpuStealPercent","entityKey":"macbook-pro.local","eventType":"SystemSample"},"values":[0],"timestamps":[1697407970000]} +{"metric":{"__name__":"loadAverageFiveMinute","entityKey":"macbook-pro.local","eventType":"SystemSample"},"values":[4.099609375],"timestamps":[1697407970000]} +{"metric":{"__name__":"cpuIOWaitPercent","entityKey":"macbook-pro.local","eventType":"SystemSample"},"values":[0],"timestamps":[1697407970000]} +{"metric":{"__name__":"cpuSystemPercent","entityKey":"macbook-pro.local","eventType":"SystemSample"},"values":[16.368672878359],"timestamps":[1697407970000]} +{"metric":{"__name__":"loadAverageOneMinute","entityKey":"macbook-pro.local","eventType":"SystemSample"},"values":[5.42333984375],"timestamps":[1697407970000]} +{"metric":{"__name__":"cpuUserPercent","entityKey":"macbook-pro.local","eventType":"SystemSample"},"values":[8.687987912389],"timestamps":[1697407970000]} +{"metric":{"__name__":"cpuIdlePercent","entityKey":"macbook-pro.local","eventType":"SystemSample"},"values":[74.9433392092],"timestamps":[1697407970000]} +{"metric":{"__name__":"loadAverageFifteenMinute","entityKey":"macbook-pro.local","eventType":"SystemSample"},"values":[3.58203125],"timestamps":[1697407970000]} +{"metric":{"__name__":"cpuPercent","entityKey":"macbook-pro.local","eventType":"SystemSample"},"values":[25.056660790748],"timestamps":[1697407970000]} ``` -The fields in `newrelic.json` are transformed in the following way: -1. `eventType` filed is used as prefix for all metrics in the object; -2. `entityKey` or any other field with `string` value type is used as label attached to all metrics in the object; -3. the rest fields with numeric values will be used as metrics; -4. the additional field `timestamp` can be added to the payload to set the timestamp for all metrics. If omitted, -current time is used. - - ## Prometheus querying API usage VictoriaMetrics supports the following handlers from [Prometheus querying API](https://prometheus.io/docs/prometheus/latest/querying/api/): @@ -1060,7 +1071,7 @@ VictoriaMetrics supports the following handlers from [Graphite Tags API](https:/ ## How to build from sources -We recommend using either [binary releases](https://github.com/VictoriaMetrics/VictoriaMetrics/releases) or +We recommend using either [binary releases](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest) or [docker images](https://hub.docker.com/r/victoriametrics/victoria-metrics/) instead of building VictoriaMetrics from sources. Building from sources is reasonable when developing additional features specific to your needs or when testing bugfixes. @@ -1875,7 +1886,8 @@ to historical data. See [how to configure multiple retentions in VictoriaMetrics cluster](https://docs.victoriametrics.com/Cluster-VictoriaMetrics.html#retention-filters). -Retention filters can be evaluated for free by downloading and using enterprise binaries from [the releases page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases). +Retention filters can be evaluated for free by downloading and using enterprise binaries from [the releases page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest). +See how to request a free trial license [here](https://victoriametrics.com/products/enterprise/trial/). ## Downsampling @@ -1896,7 +1908,8 @@ Please, note that intervals of `-downsampling.period` must be multiples of each In case [deduplication](https://docs.victoriametrics.com/#deduplication) is enabled value of `-dedup.minScrapeInterval` must also be multiple of `-downsampling.period` intervals. This is required to ensure consistency of deduplication and downsampling results. -The downsampling can be evaluated for free by downloading and using enterprise binaries from [the releases page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases). +The downsampling can be evaluated for free by downloading and using enterprise binaries from [the releases page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest). +See how to request a free trial license [here](https://victoriametrics.com/products/enterprise/trial/). ## Multi-tenancy @@ -1959,7 +1972,7 @@ and [the general security page at VictoriaMetrics website](https://victoriametri The only option is increasing the limit on [the number of open files in the OS](https://medium.com/@muhammadtriwibowo/set-permanently-ulimit-n-open-files-in-ubuntu-4d61064429a). The recommendation is not specific for VictoriaMetrics only but also for any service which handles many HTTP connections and stores data on disk. * VictoriaMetrics is a write-heavy application and its performance depends on disk performance. So be careful with other - applications or utilities (like [fstrim](http://manpages.ubuntu.com/manpages/bionic/man8/fstrim.8.html)) + applications or utilities (like [fstrim](https://manpages.ubuntu.com/manpages/lunar/en/man8/fstrim.8.html)) which could [exhaust disk resources](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1521). * The recommended filesystem is `ext4`, the recommended persistent storage is [persistent HDD-based disk on GCP](https://cloud.google.com/compute/docs/disks/#pdspecs), since it is protected from hardware failures via internal replication and it can be [resized on the fly](https://cloud.google.com/compute/docs/disks/add-persistent-disk#resize_pd). @@ -2125,7 +2138,7 @@ and [cardinality explorer docs](#cardinality-explorer). * It is recommended inspecting logs during troubleshooting, since they may contain useful information. -* It is recommended upgrading to the latest available release from [this page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases), +* It is recommended upgrading to the latest available release from [this page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest), since the encountered issue could be already fixed there. * It is recommended to have at least 50% of spare resources for CPU, disk IO and RAM, so VictoriaMetrics could handle short spikes in the workload without performance issues. @@ -2136,6 +2149,11 @@ and [cardinality explorer docs](#cardinality-explorer). can be [monitored](#monitoring) via `vm_free_disk_space_bytes` metric. The total size of data stored on the disk can be monitored via sum of `vm_data_size_bytes` metrics. +* If you run VictoriaMetrics on a host with 16 or more CPU cores, then it may be needed to tune the `-search.maxWorkersPerQuery` command-line flag + in order to improve query performance. If VictoriaMetrics serves big number of concurrent `select` queries, then try reducing the value for this flag. + If VcitoriaMetrics serves heavy queries, which select `>10K` of [time series](https://docs.victoriametrics.com/keyConcepts.html#time-series) and/or process `>100M` + of [raw samples](https://docs.victoriametrics.com/keyConcepts.html#raw-samples) per query, then try setting the value for this flag to the number of available CPU cores. + * VictoriaMetrics buffers incoming data in memory for up to a few seconds before flushing it to persistent storage. This may lead to the following "issues": * Data becomes available for querying in a few seconds after inserting. It is possible to flush in-memory buffers to searchable parts @@ -2172,15 +2190,19 @@ and [cardinality explorer docs](#cardinality-explorer). This suppresses default gap filling algorithm used by VictoriaMetrics - by default it assumes each time series is continuous instead of discrete, so it fills gaps between real samples with regular intervals. -* Metrics and labels leading to [high cardinality](https://docs.victoriametrics.com/FAQ.html#what-is-high-cardinality) or [high churn rate](https://docs.victoriametrics.com/FAQ.html#what-is-high-churn-rate) can be determined via [cardinality explorer](#cardinality-explorer) and via [/api/v1/status/tsdb](#tsdb-stats) endpoint. +* Metrics and labels leading to [high cardinality](https://docs.victoriametrics.com/FAQ.html#what-is-high-cardinality) + or [high churn rate](https://docs.victoriametrics.com/FAQ.html#what-is-high-churn-rate) can be determined + via [cardinality explorer](#cardinality-explorer) and via [/api/v1/status/tsdb](#tsdb-stats) endpoint. * New time series can be logged if `-logNewSeries` command-line flag is passed to VictoriaMetrics. -* VictoriaMetrics limits the number of labels per each metric with `-maxLabelsPerTimeseries` command-line flag. - This prevents from ingesting metrics with too many labels. It is recommended [monitoring](#monitoring) `vm_metrics_with_dropped_labels_total` +* VictoriaMetrics limits the number of labels per each metric with `-maxLabelsPerTimeseries` command-line flag + and drops superflouos labels. This prevents from ingesting metrics with too many labels. + It is recommended [monitoring](#monitoring) `vm_metrics_with_dropped_labels_total` metric in order to determine whether `-maxLabelsPerTimeseries` must be adjusted for your workload. -* If you store Graphite metrics like `foo.bar.baz` in VictoriaMetrics, then `{__graphite__="foo.*.baz"}` filter can be used for selecting such metrics. See [these docs](#selecting-graphite-metrics) for details. +* If you store Graphite metrics like `foo.bar.baz` in VictoriaMetrics, then `{__graphite__="foo.*.baz"}` filter can be used for selecting such metrics. + See [these docs](#selecting-graphite-metrics) for details. You can also query Graphite metrics with [Graphite querying API](#graphite-render-api-usage). * VictoriaMetrics ignores `NaN` values during data ingestion. @@ -2322,7 +2344,8 @@ See also [high availability docs](#high-availability) and [backup docs](#backups VictoriaMetrics supports backups via [vmbackup](https://docs.victoriametrics.com/vmbackup.html) and [vmrestore](https://docs.victoriametrics.com/vmrestore.html) tools. We also provide [vmbackupmanager](https://docs.victoriametrics.com/vmbackupmanager.html) tool for enterprise subscribers. -Enterprise binaries can be downloaded and evaluated for free from [the releases page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases). +Enterprise binaries can be downloaded and evaluated for free from [the releases page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest). +See how to request a free trial license [here](https://victoriametrics.com/products/enterprise/trial/). ## vmalert @@ -2401,7 +2424,7 @@ Feel free asking any questions regarding VictoriaMetrics: * [Twitter](https://twitter.com/VictoriaMetrics/) * [Linkedin](https://www.linkedin.com/company/victoriametrics/) * [Reddit](https://www.reddit.com/r/VictoriaMetrics/) -* [Telegram-en](https://t.me/VictoriaMetrics_en?) +* [Telegram-en](https://t.me/VictoriaMetrics_en) * [Telegram-ru](https://t.me/VictoriaMetrics_ru1) * [Google groups](https://groups.google.com/forum/#!forum/victorametrics-users) * [Mastodon](https://mastodon.social/@victoriametrics/) @@ -2484,7 +2507,7 @@ Pass `-help` to VictoriaMetrics in order to see the list of supported command-li -denyQueryTracing Whether to disable the ability to trace queries. See https://docs.victoriametrics.com/#query-tracing -downsampling.period array - Comma-separated downsampling periods in the format 'offset:period'. For example, '30d:10m' instructs to leave a single sample per 10 minutes for samples older than 30 days. When setting multiple downsampling periods, it is necessary for the periods to be multiples of each other. See https://docs.victoriametrics.com/#downsampling for details. This flag is available only in VictoriaMetrics enterprise. See https://docs.victoriametrics.com/enterprise.html + Comma-separated downsampling periods in the format 'offset:period'. For example, '30d:10m' instructs to leave a single sample per 10 minutes for samples older than 30 days. When setting multiple downsampling periods, it is necessary for the periods to be multiples of each other. See https://docs.victoriametrics.com/#downsampling for details. This flag is available only in Enterprise binaries. See https://docs.victoriametrics.com/enterprise.html Supports an array of values separated by comma or specified via multiple flags. -dryRun Whether to check config files without running VictoriaMetrics. The following config files are checked: -promscrape.config, -relabelConfig and -streamAggr.config. Unknown config entries aren't allowed in -promscrape.config by default. This can be changed with -promscrape.config.strictParse=false command-line flag @@ -2495,7 +2518,7 @@ Pass `-help` to VictoriaMetrics in order to see the list of supported command-li -envflag.prefix string Prefix for environment variables if -envflag.enable is set -eula - Deprecated, please use -license or -licenseFile flags instead. By specifying this flag, you confirm that you have an enterprise license and accept the ESA https://victoriametrics.com/legal/esa/ . This flag is available only in VictoriaMetrics enterprise. See https://docs.victoriametrics.com/enterprise.html + Deprecated, please use -license or -licenseFile flags instead. By specifying this flag, you confirm that you have an enterprise license and accept the ESA https://victoriametrics.com/legal/esa/ . This flag is available only in Enterprise binaries. See https://docs.victoriametrics.com/enterprise.html -filestream.disableFadvise Whether to disable fadvise() syscall when reading large data files. The fadvise() syscall prevents from eviction of recently accessed data from OS page cache during background merges and backups. In some rare cases it is better to disable the syscall if it uses too much CPU -finalMergeDelay duration @@ -2568,11 +2591,11 @@ Pass `-help` to VictoriaMetrics in order to see the list of supported command-li -internStringMaxLen int The maximum length for strings to intern. A lower limit may save memory at the cost of higher CPU usage. See https://en.wikipedia.org/wiki/String_interning . See also -internStringDisableCache and -internStringCacheExpireDuration (default 500) -license string - enterprise license key. This flag is available only in VictoriaMetrics enterprise. Documentation - https://docs.victoriametrics.com/enterprise.html, for more information, visit https://victoriametrics.com/products/enterprise/ . To request a trial license, go to https://victoriametrics.com/products/enterprise/trial/ + Lisense key for VictoriaMetrics Enterprise. See https://victoriametrics.com/products/enterprise/ . Trial Enterprise license can be obtained from https://victoriametrics.com/products/enterprise/trial/ . This flag is available only in Enterprise binaries. The license key can be also passed via file specified by -licenseFile command-line flag -license.forceOffline - enables offline license verification. License keys issued must support this feature. Contact our support team for license keys with offline check support. + Whether to enable offline verification for VictoriaMetrics Enterprise license key, which has been passed either via -license or via -licenseFile command-line flag. The issued license key must support offline verification feature. Contact info@victoriametrics.com if you need offline license verification. This flag is avilable only in Enterprise binaries -licenseFile string - path to file with enterprise license key. This flag is available only in VictoriaMetrics enterprise. Documentation - https://docs.victoriametrics.com/enterprise.html, for more information, visit https://victoriametrics.com/products/enterprise/ . To request a trial license, go to https://victoriametrics.com/products/enterprise/trial/ + Path to file with license key for VictoriaMetrics Enterprise. See https://victoriametrics.com/products/enterprise/ . Trial Enterprise license can be obtained from https://victoriametrics.com/products/enterprise/trial/ . This flag is available only in Enterprise binaries. The license key can be also passed inline via -license command-line flag -logNewSeries Whether to log new series. This option is for debug purposes only. It can lead to performance issues when big number of new series are ingested into VictoriaMetrics -loggerDisableTimestamps @@ -2592,7 +2615,7 @@ Pass `-help` to VictoriaMetrics in order to see the list of supported command-li -loggerWarnsPerSecondLimit int Per-second limit on the number of WARN messages. If more than the given number of warns are emitted per second, then the remaining warns are suppressed. Zero values disable the rate limit -maxConcurrentInserts int - The maximum number of concurrent insert requests. The default value should work for most cases, since it minimizes memory usage. The default value can be increased when clients send data over slow networks. See also -insert.maxQueueDuration (default 8) + The maximum number of concurrent insert requests. Default value should work for most cases, since it minimizes the memory usage. The default value can be increased when clients send data over slow networks. See also -insert.maxQueueDuration (default 8) -maxInsertRequestSize size The maximum size in bytes of a single Prometheus remote_write API request Supports the following optional suffixes for size values: KB, MB, GB, TB, KiB, MiB, GiB, TiB (default 33554432) @@ -2630,14 +2653,16 @@ Pass `-help` to VictoriaMetrics in order to see the list of supported command-li Items in the previous caches are removed when the percent of requests it serves becomes lower than this value. Higher values reduce memory usage at the cost of higher CPU usage. See also -cacheExpireDuration (default 0.1) -promscrape.azureSDCheckInterval duration Interval for checking for changes in Azure. This works only if azure_sd_configs is configured in '-promscrape.config' file. See https://docs.victoriametrics.com/sd_configs.html#azure_sd_configs for details (default 1m0s) + -promscrape.cluster.memberLabel string + If non-empty, then the label with this name and the -promscrape.cluster.memberNum value is added to all the scraped metrics. See https://docs.victoriametrics.com/vmagent.html#scraping-big-number-of-targets for more info -promscrape.cluster.memberNum string - The number of number in the cluster of scrapers. It must be a unique value in the range 0 ... promscrape.cluster.membersCount-1 across scrapers in the cluster. Can be specified as pod name of Kubernetes StatefulSet - pod-name-Num, where Num is a numeric part of pod name (default "0") + The number of vmagent instance in the cluster of scrapers. It must be a unique value in the range 0 ... promscrape.cluster.membersCount-1 across scrapers in the cluster. Can be specified as pod name of Kubernetes StatefulSet - pod-name-Num, where Num is a numeric part of pod name. See also -promscrape.cluster.memberLabel . See https://docs.victoriametrics.com/vmagent.html#scraping-big-number-of-targets for more info (default "0") -promscrape.cluster.membersCount int - The number of members in a cluster of scrapers. Each member must have a unique -promscrape.cluster.memberNum in the range 0 ... promscrape.cluster.membersCount-1 . Each member then scrapes roughly 1/N of all the targets. By default, cluster scraping is disabled, i.e. a single scraper scrapes all the targets + The number of members in a cluster of scrapers. Each member must have a unique -promscrape.cluster.memberNum in the range 0 ... promscrape.cluster.membersCount-1 . Each member then scrapes roughly 1/N of all the targets. By default, cluster scraping is disabled, i.e. a single scraper scrapes all the targets. See https://docs.victoriametrics.com/vmagent.html#scraping-big-number-of-targets for more info (default 1) -promscrape.cluster.name string - Optional name of the cluster. If multiple vmagent clusters scrape the same targets, then each cluster must have unique name in order to properly de-duplicate samples received from these clusters. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/2679 + Optional name of the cluster. If multiple vmagent clusters scrape the same targets, then each cluster must have unique name in order to properly de-duplicate samples received from these clusters. See https://docs.victoriametrics.com/vmagent.html#scraping-big-number-of-targets for more info -promscrape.cluster.replicationFactor int - The number of members in the cluster, which scrape the same targets. If the replication factor is greater than 1, then the deduplication must be enabled at remote storage side. See https://docs.victoriametrics.com/#deduplication (default 1) + The number of members in the cluster, which scrape the same targets. If the replication factor is greater than 1, then the deduplication must be enabled at remote storage side. See https://docs.victoriametrics.com/vmagent.html#scraping-big-number-of-targets for more info (default 1) -promscrape.config string Optional path to Prometheus config file with 'scrape_configs' section containing targets to scrape. The path can point to local file and to http url. See https://docs.victoriametrics.com/#how-to-scrape-prometheus-exporters-such-as-node-exporter for details -promscrape.config.dryRun @@ -2728,7 +2753,7 @@ Pass `-help` to VictoriaMetrics in order to see the list of supported command-li -relabelConfig string Optional path to a file with relabeling rules, which are applied to all the ingested metrics. The path can point either to local file or to http url. See https://docs.victoriametrics.com/#relabeling for details. The config is reloaded on SIGHUP signal -retentionFilter array - Retention filter in the format 'filter:retention'. For example, '{env="dev"}:3d' configures the retention for time series with env="dev" label to 3 days. See https://docs.victoriametrics.com/#retention-filters for details. This flag is available only in VictoriaMetrics enterprise. See https://docs.victoriametrics.com/enterprise.html + Retention filter in the format 'filter:retention'. For example, '{env="dev"}:3d' configures the retention for time series with env="dev" label to 3 days. See https://docs.victoriametrics.com/#retention-filters for details. This flag is available only in Enterprise binaries. See https://docs.victoriametrics.com/enterprise.html Supports an array of values separated by comma or specified via multiple flags. -retentionPeriod value Data with timestamps outside the retentionPeriod is automatically deleted. The minimum retentionPeriod is 24h or 1d. See also -retentionFilter @@ -2806,6 +2831,8 @@ Pass `-help` to VictoriaMetrics in order to see the list of supported command-li The maximum number of tag values returned from /api/v1/label//values (default 100000) -search.maxUniqueTimeseries int The maximum number of unique time series, which can be selected during /api/v1/query and /api/v1/query_range queries. This option allows limiting memory usage (default 300000) + -search.maxWorkersPerQuery int + The maximum number of CPU cores a single query can use. The default value should work good for most cases. The flag can be set to lower values for improving performance of big number of concurrently executed queries. The flag can be set to bigger values for improving performance of heavy queries, which scan big number of time series (>10K) and/or big number of samples (>100M). There is no sense in setting this flag to values bigger than the number of CPU cores available on the system (default 4) -search.minStalenessInterval duration The minimum interval for staleness calculations. This flag could be useful for removing gaps on graphs generated from time series with irregular intervals between samples. See also '-search.maxStalenessInterval' -search.noStaleMarkers diff --git a/app/vlselect/main.go b/app/vlselect/main.go index 844437c04..df8e94925 100644 --- a/app/vlselect/main.go +++ b/app/vlselect/main.go @@ -88,6 +88,12 @@ func RequestHandler(w http.ResponseWriter, r *http.Request) bool { return true } if strings.HasPrefix(path, "/vmui/") { + if strings.HasPrefix(path, "/vmui/static/") { + // Allow clients caching static contents for long period of time, since it shouldn't change over time. + // Path to static contents (such as js and css) must be changed whenever its contents is changed. + // See https://developer.chrome.com/docs/lighthouse/performance/uses-long-cache-ttl/ + w.Header().Set("Cache-Control", "max-age=31536000") + } r.URL.Path = path vmuiFileServer.ServeHTTP(w, r) return true diff --git a/app/vlselect/vmui/asset-manifest.json b/app/vlselect/vmui/asset-manifest.json index d34c0f53c..897909764 100644 --- a/app/vlselect/vmui/asset-manifest.json +++ b/app/vlselect/vmui/asset-manifest.json @@ -1,14 +1,13 @@ { "files": { - "main.css": "./static/css/main.3258b6c4.css", - "main.js": "./static/js/main.41b816cc.js", + "main.css": "./static/css/main.9a224445.css", + "main.js": "./static/js/main.02178f4b.js", "static/js/522.b5ae4365.chunk.js": "./static/js/522.b5ae4365.chunk.js", - "static/media/Lato-Regular.ttf": "./static/media/Lato-Regular.d714fec1633b69a9c2e9.ttf", - "static/media/Lato-Bold.ttf": "./static/media/Lato-Bold.32360ba4b57802daa4d6.ttf", + "static/media/MetricsQL.md": "./static/media/MetricsQL.957b90ab4cb4852eec26.md", "index.html": "./index.html" }, "entrypoints": [ - "static/css/main.3258b6c4.css", - "static/js/main.41b816cc.js" + "static/css/main.9a224445.css", + "static/js/main.02178f4b.js" ] } \ No newline at end of file diff --git a/app/vlselect/vmui/index.html b/app/vlselect/vmui/index.html index ecb92d30d..cbd95dd51 100644 --- a/app/vlselect/vmui/index.html +++ b/app/vlselect/vmui/index.html @@ -1 +1 @@ -VM UI
\ No newline at end of file +VM UI
\ No newline at end of file diff --git a/app/vlselect/vmui/static/css/main.3258b6c4.css b/app/vlselect/vmui/static/css/main.3258b6c4.css deleted file mode 100644 index bd7547f21..000000000 --- a/app/vlselect/vmui/static/css/main.3258b6c4.css +++ /dev/null @@ -1 +0,0 @@ -.vm-tabs{gap:16px;height:100%;position:relative;-webkit-user-select:none;user-select:none}.vm-tabs,.vm-tabs-item{align-items:center;display:flex;justify-content:center}.vm-tabs-item{color:inherit;cursor:pointer;font-size:inherit;font-weight:inherit;opacity:.6;padding:16px 8px;text-decoration:none;text-transform:capitalize;transition:opacity .2s}.vm-tabs-item_active{opacity:1}.vm-tabs-item:hover{opacity:.8}.vm-tabs-item__icon{display:grid;margin-right:8px;width:16px}.vm-tabs-item__icon_single{margin-right:0}.vm-tabs__indicator{border-bottom:2px solid;position:absolute;transition:width .2s ease,left .3s cubic-bezier(.28,.84,.42,1)}.vm-alert{grid-gap:8px;align-items:center;background-color:var(--color-background-block);border-radius:8px;box-shadow:var(--box-shadow);color:var(--color-text);display:grid;font-size:14px;font-weight:400;gap:8px;grid-template-columns:20px 1fr;line-height:1.5;padding:16px;position:relative}.vm-alert_mobile{align-items:flex-start;border-radius:0}.vm-alert:after{border-radius:8px;content:"";height:100%;left:0;opacity:.1;position:absolute;top:0;width:100%;z-index:1}.vm-alert_mobile:after{border-radius:0}.vm-alert__content,.vm-alert__icon{position:relative;z-index:2}.vm-alert__icon{align-items:center;display:flex;justify-content:center}.vm-alert__content{-webkit-filter:brightness(.6);filter:brightness(.6);white-space:pre-line}.vm-alert_success{color:var(--color-success)}.vm-alert_success:after{background-color:var(--color-success)}.vm-alert_error{color:var(--color-error)}.vm-alert_error:after{background-color:var(--color-error)}.vm-alert_info{color:var(--color-info)}.vm-alert_info:after{background-color:var(--color-info)}.vm-alert_warning{color:var(--color-warning)}.vm-alert_warning:after{background-color:var(--color-warning)}.vm-alert_dark:after{opacity:.1}.vm-alert_dark .vm-alert__content{-webkit-filter:none;filter:none}.vm-button{align-items:center;border-radius:6px;color:#fff;cursor:pointer;display:flex;font-size:12px;font-weight:400;justify-content:center;line-height:1.3;min-height:31px;padding:6px 14px;position:relative;text-transform:uppercase;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-user-select:none;user-select:none;white-space:nowrap}.vm-button:hover:after{background-color:var(--color-hover-black)}.vm-button:after,.vm-button:before{border-radius:6px;content:"";height:100%;left:0;position:absolute;top:0;transition:background-color .2s ease;width:100%}.vm-button:before{-webkit-transform:translateZ(-2px);transform:translateZ(-2px)}.vm-button:after{background-color:transparent;-webkit-transform:translateZ(-1px);transform:translateZ(-1px)}.vm-button:active:after{-webkit-transform:scale(.9);transform:scale(.9)}.vm-button span{align-items:center;display:grid;justify-content:center;-webkit-transform:translateZ(1px);transform:translateZ(1px)}.vm-button span svg{width:15px}.vm-button__start-icon{margin-right:6px}.vm-button__end-icon{margin-left:6px}.vm-button_disabled{cursor:not-allowed;opacity:.3}.vm-button_icon{padding:6px 8px}.vm-button_icon .vm-button__end-icon,.vm-button_icon .vm-button__start-icon{margin:0}.vm-button_small{min-height:25px;padding:4px 8px}.vm-button_small span svg{width:13px}.vm-button_contained_primary{color:var(--color-primary-text)}.vm-button_contained_primary,.vm-button_contained_primary:before{background-color:var(--color-primary)}.vm-button_contained_primary:hover:after{background-color:hsla(0,6%,6%,.2)}.vm-button_contained_secondary{color:var(--color-secondary-text)}.vm-button_contained_secondary:before{background-color:var(--color-secondary)}.vm-button_contained_secondary:hover:after{background-color:hsla(0,6%,6%,.2)}.vm-button_contained_success{color:var(--color-success-text)}.vm-button_contained_success:before{background-color:var(--color-success)}.vm-button_contained_success:hover:after{background-color:hsla(0,6%,6%,.2)}.vm-button_contained_error{color:var(--color-error-text)}.vm-button_contained_error:before{background-color:var(--color-error)}.vm-button_contained_gray{color:var(--color-text-secondary)}.vm-button_contained_gray:before{background-color:var(--color-text-secondary)}.vm-button_contained_warning{color:var(--color-warning)}.vm-button_contained_warning:before{background-color:var(--color-warning);opacity:.2}.vm-button_text_primary{color:var(--color-primary)}.vm-button_text_secondary{color:var(--color-secondary)}.vm-button_text_success{color:var(--color-success)}.vm-button_text_error{color:var(--color-error)}.vm-button_text_gray{color:var(--color-text-secondary)}.vm-button_text_warning{color:var(--color-warning)}.vm-button_outlined_primary{border:1px solid var(--color-primary);color:var(--color-primary)}.vm-button_outlined_error{border:1px solid var(--color-error);color:var(--color-error)}.vm-button_outlined_secondary{border:1px solid var(--color-secondary);color:var(--color-secondary)}.vm-button_outlined_success{border:1px solid var(--color-success);color:var(--color-success)}.vm-button_outlined_gray{border:1px solid var(--color-text-secondary);color:var(--color-text-secondary)}.vm-button_outlined_warning{border:1px solid var(--color-warning);color:var(--color-warning)}.vm-json-view__copy{display:flex;justify-content:flex-end;position:-webkit-sticky;position:sticky;top:0;z-index:2}.vm-json-view__code{font-size:14px;line-height:1.4;-webkit-transform:translateY(-32px);transform:translateY(-32px);white-space:pre-wrap}.vm-explore-logs-body-header{margin:-24px -24px 0}.vm-explore-logs-body-header_mobile{margin:-16px -16px 0}.vm-explore-logs-body-header__settings{align-items:center;display:flex;gap:8px}.vm-explore-logs-body__table{overflow:auto;padding-top:24px;width:calc(100vw - 96px - var(--scrollbar-width))}@media(max-width:768px){.vm-explore-logs-body__table{width:calc(100vw - 48px - var(--scrollbar-width))}}.vm-explore-logs-body__table_mobile{width:calc(100vw - 32px - var(--scrollbar-width))}.vm-explore-logs-body__table .vm-table{min-width:700px}.vm-explore-logs-body-content-group-keys{align-items:center;border-bottom:var(--border-divider);display:flex;flex-wrap:wrap;gap:8px;padding:16px 0}.vm-explore-logs-body-content-group-keys__title{font-weight:700}.vm-explore-logs-body-content-group-keys__key{background-color:var(--color-primary);border-radius:4px;color:var(--color-primary-text);padding:4px 12px}.vm-explore-logs-body-content-group-rows{display:grid}.vm-explore-logs-body-content-group-rows-item{grid-gap:8px;border-bottom:var(--border-divider);display:grid;gap:8px;grid-template-columns:107px 1fr;padding:16px 0}.vm-explore-logs-body-content-group-rows-item__time{align-items:center;display:flex;justify-content:center;line-height:1.3}.vm-explore-logs-body-content-group-rows-item__msg{font-family:monospace;line-height:1.1;overflow-wrap:anywhere}.vm-tooltip{-webkit-animation:vm-scale .15s cubic-bezier(.28,.84,.42,1);animation:vm-scale .15s cubic-bezier(.28,.84,.42,1);background-color:var(--color-background-tooltip);border-radius:4px;box-shadow:var(--box-shadow-popper);color:#fff;font-size:12px;line-height:150%;opacity:1;padding:3px 8px;pointer-events:auto;position:fixed;transition:opacity .1s ease-in-out;white-space:nowrap;z-index:101}@-webkit-keyframes vm-scale{0%{-webkit-transform:scale(0);transform:scale(0)}to{-webkit-transform:scale(1);transform:scale(1)}}@keyframes vm-scale{0%{-webkit-transform:scale(0);transform:scale(0)}to{-webkit-transform:scale(1);transform:scale(1)}}.vm-popper{background-color:var(--color-background-block);border-radius:4px;box-shadow:var(--box-shadow-popper);opacity:0;pointer-events:none;position:fixed;transition:opacity .1s ease-in-out;z-index:-99}.vm-popper_open{-webkit-animation:vm-slider .15s cubic-bezier(.28,.84,.42,1.1);animation:vm-slider .15s cubic-bezier(.28,.84,.42,1.1);opacity:1;pointer-events:auto;-webkit-transform-origin:top center;transform-origin:top center;z-index:101}.vm-popper_mobile{-webkit-animation:none;animation:none;border-radius:0;bottom:0;left:0;overflow:auto;position:fixed;right:0;top:0;width:100%}.vm-popper-header{grid-gap:8px;align-items:center;background-color:var(--color-background-block);border-bottom:var(--border-divider);border-radius:4px 4px 0 0;color:var(--color-text);display:grid;gap:8px;grid-template-columns:1fr auto;justify-content:space-between;margin-bottom:16px;min-height:51px;padding:8px 8px 8px 16px}.vm-popper-header__title{font-weight:700;-webkit-user-select:none;user-select:none}@-webkit-keyframes vm-slider{0%{-webkit-transform:scaleY(0);transform:scaleY(0)}to{-webkit-transform:scaleY(1);transform:scaleY(1)}}@keyframes vm-slider{0%{-webkit-transform:scaleY(0);transform:scaleY(0)}to{-webkit-transform:scaleY(1);transform:scaleY(1)}}.vm-select-limits{display:grid;padding:8px 0}.vm-table-settings-popper{display:grid;min-width:250px}.vm-table-settings-popper_mobile .vm-table-settings-popper-list{gap:16px}.vm-table-settings-popper_mobile .vm-table-settings-popper-list:first-child{padding-top:0}.vm-table-settings-popper-list{grid-gap:12px;border-bottom:var(--border-divider);display:grid;gap:12px;max-height:350px;overflow:auto;padding:16px}.vm-table-settings-popper-list_first{padding-top:0}.vm-table-settings-popper-list-header{align-items:center;display:grid;grid-template-columns:1fr auto;justify-content:space-between;min-height:25px}.vm-table-settings-popper-list-header__title{font-weight:700}.vm-table-settings-popper-list__item{font-size:14px}.vm-checkbox{align-items:center;cursor:pointer;display:flex;justify-content:flex-start;-webkit-user-select:none;user-select:none}.vm-checkbox_disabled{cursor:default;opacity:.6}.vm-checkbox_secondary_active .vm-checkbox-track{background-color:var(--color-secondary)}.vm-checkbox_secondary .vm-checkbox-track{border:1px solid var(--color-secondary)}.vm-checkbox_primary_active .vm-checkbox-track{background-color:var(--color-primary)}.vm-checkbox_primary .vm-checkbox-track{border:1px solid var(--color-primary)}.vm-checkbox_active .vm-checkbox-track__thumb{-webkit-transform:scale(1);transform:scale(1)}.vm-checkbox:hover .vm-checkbox-track{opacity:.8}.vm-checkbox-track{align-items:center;background-color:transparent;border-radius:4px;display:flex;height:16px;justify-content:center;padding:2px;position:relative;transition:background-color .2s ease,opacity .3s ease-out;width:16px}.vm-checkbox-track__thumb{align-items:center;color:#fff;display:grid;height:12px;justify-content:center;-webkit-transform:scale(0);transform:scale(0);transition:-webkit-transform .1s ease-in-out;transition:transform .1s ease-in-out;transition:transform .1s ease-in-out,-webkit-transform .1s ease-in-out;width:12px}.vm-checkbox__label{color:inherit;font-size:inherit;margin-left:8px;transition:color .2s ease;white-space:nowrap}.vm-switch{align-items:center;cursor:pointer;display:flex;justify-content:flex-start;-webkit-user-select:none;user-select:none}.vm-switch_full-width{flex-direction:row-reverse;justify-content:space-between}.vm-switch_full-width .vm-switch__label{margin-left:0}.vm-switch_disabled{cursor:default;opacity:.6}.vm-switch_secondary_active .vm-switch-track{background-color:var(--color-secondary)}.vm-switch_primary_active .vm-switch-track{background-color:var(--color-primary)}.vm-switch_active .vm-switch-track__thumb{left:20px}.vm-switch:hover .vm-switch-track{opacity:.8}.vm-switch-track{align-items:center;background-color:hsla(0,6%,6%,.4);border-radius:17px;display:flex;height:17px;justify-content:flex-start;padding:3px;position:relative;transition:background-color .2s ease,opacity .3s ease-out;width:34px}.vm-switch-track__thumb{background-color:var(--color-background-block);border-radius:50%;left:3px;min-height:11px;min-width:11px;position:absolute;top:auto;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;transition:right .2s ease-out,left .2s ease-out}.vm-switch__label{color:var(--color-text-secondary);font-size:inherit;margin-left:8px;transition:color .2s ease;white-space:nowrap}.vm-switch_active .vm-switch__label{color:var(--color-text)}.vm-pagination{display:flex;gap:8px;justify-content:flex-end;padding:16px 0 0;position:-webkit-sticky;position:sticky;right:0}.vm-pagination_mobile{padding:16px 0}.vm-pagination__icon_prev{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.vm-pagination__icon_next{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.vm-accordion-header{align-items:center;cursor:pointer;display:grid;font-size:inherit;position:relative}.vm-accordion-header__arrow{align-items:center;display:flex;justify-content:center;position:absolute;right:14px;top:auto;-webkit-transform:rotate(0);transform:rotate(0);transition:-webkit-transform .2s ease-in-out;transition:transform .2s ease-in-out;transition:transform .2s ease-in-out,-webkit-transform .2s ease-in-out}.vm-accordion-header__arrow_open{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.vm-accordion-header__arrow svg{height:auto;width:14px}.accordion-section{overflow:hidden}.vm-spinner{align-items:center;-webkit-animation:vm-fade 2s cubic-bezier(.28,.84,.42,1.1);animation:vm-fade 2s cubic-bezier(.28,.84,.42,1.1);background-color:hsla(0,0%,100%,.5);bottom:0;display:flex;flex-direction:column;justify-content:center;left:0;pointer-events:none;position:fixed;right:0;top:0;z-index:99}.vm-spinner_dark{background-color:hsla(0,6%,6%,.2)}.vm-spinner__message{color:rgba(var(--color-text),.9);font-size:16px;line-height:1.3;margin-top:24px;text-align:center;white-space:pre-line}.half-circle-spinner,.half-circle-spinner *{box-sizing:border-box}.half-circle-spinner{border-radius:100%;height:60px;position:relative;width:60px}.half-circle-spinner .circle{border:6px solid transparent;border-radius:100%;content:"";height:100%;position:absolute;width:100%}.half-circle-spinner .circle.circle-1{-webkit-animation:half-circle-spinner-animation 1s infinite;animation:half-circle-spinner-animation 1s infinite;border-top-color:var(--color-primary)}.half-circle-spinner .circle.circle-2{-webkit-animation:half-circle-spinner-animation 1s infinite alternate;animation:half-circle-spinner-animation 1s infinite alternate;border-bottom-color:var(--color-primary)}@-webkit-keyframes half-circle-spinner-animation{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes half-circle-spinner-animation{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes vm-fade{0%{opacity:0}to{opacity:1}}@keyframes vm-fade{0%{opacity:0}to{opacity:1}}.vm-explore-logs-header{grid-gap:16px;align-items:center;display:grid;gap:16px}.vm-explore-logs-header-bottom{align-items:center;display:flex;flex-wrap:wrap;gap:16px;justify-content:flex-end}@media(max-width:500px){.vm-explore-logs-header-bottom{display:grid;justify-content:normal}}.vm-explore-logs-header-bottom__execute{display:grid}.vm-explore-logs-header-bottom-helpful{align-items:center;display:flex;flex-wrap:wrap;gap:8px 16px;justify-content:center}.vm-explore-logs-header-bottom-helpful a{color:var(--color-text-secondary)}.vm-text-field{display:grid;margin:6px 0;position:relative;width:100%}.vm-text-field_textarea:after{content:attr(data-replicated-value) " ";visibility:hidden;white-space:pre-wrap}.vm-text-field:after,.vm-text-field__input{background-color:transparent;border:var(--border-divider);font-size:14px;grid-area:1/1/2/2;line-height:18px;overflow:hidden;padding:8px 16px;width:100%}.vm-text-field__error,.vm-text-field__helper-text,.vm-text-field__label,.vm-text-field__warning{-webkit-line-clamp:1;line-clamp:1;-webkit-box-orient:vertical;background-color:var(--color-background-block);display:-webkit-box;font-size:12px;left:8px;line-height:14px;max-width:calc(100% - 16px);overflow:hidden;padding:0 3px;pointer-events:none;position:absolute;text-overflow:ellipsis;-webkit-user-select:none;user-select:none;z-index:2}.vm-text-field__label{color:var(--color-text-secondary);top:-8px}.vm-text-field__error,.vm-text-field__helper-text,.vm-text-field__warning{overflow-wrap:anywhere;pointer-events:auto;position:relative;top:-6px;-webkit-user-select:text;user-select:text;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.vm-text-field__error_full,.vm-text-field__helper-text_full,.vm-text-field__warning_full{display:block;overflow:visible}.vm-text-field__error_overflowed,.vm-text-field__helper-text_overflowed,.vm-text-field__warning_overflowed{cursor:pointer}.vm-text-field__error{color:var(--color-error)}.vm-text-field__warning{color:var(--color-warning)}.vm-text-field__helper-text{color:var(--color-text-secondary)}.vm-text-field__input{background-color:transparent;border-radius:4px;color:var(--color-text);display:block;min-height:40px;overflow:hidden;resize:none;transition:border .2s ease}.vm-text-field__input:focus,.vm-text-field__input:hover{border:1px solid var(--color-primary)}.vm-text-field__input_error,.vm-text-field__input_error:focus,.vm-text-field__input_error:hover{border-color:var(--color-error)}.vm-text-field__input_warning,.vm-text-field__input_warning:focus,.vm-text-field__input_warning:hover{border-color:var(--color-warning)}.vm-text-field__input_icon-start{padding-left:31px}.vm-text-field__input:disabled{background-color:inherit;color:inherit}.vm-text-field__input:disabled:hover{border-color:var(--color-text-disabled)}.vm-text-field__icon-end,.vm-text-field__icon-start{align-items:center;color:var(--color-text-secondary);display:flex;height:40px;justify-content:center;left:8px;max-width:15px;position:absolute;top:0}.vm-text-field__icon-end{left:auto;right:8px}.vm-text-field__controls-info{bottom:8px;color:var(--color-text-secondary);font-size:12px;opacity:.8;position:absolute;right:16px}.vm-autocomplete{max-height:300px;overflow:auto;overscroll-behavior:none}.vm-autocomplete_mobile{max-height:calc(var(--vh)*100 - 70px)}.vm-autocomplete__no-options{color:var(--color-text-disabled);padding:16px;text-align:center}.vm-query-editor{position:relative}.vm-query-editor-autocomplete{max-height:300px;overflow:auto}.vm-explore-logs{grid-gap:24px;align-items:flex-start;display:grid;gap:24px;grid-template-rows:auto 1fr}.vm-header{align-items:center;display:flex;flex-wrap:wrap;gap:0 48px;justify-content:flex-start;min-height:51px;padding:8px 24px;z-index:99}.vm-header_app{padding:8px 0}@media(max-width:1000px){.vm-header{gap:8px;padding:8px;position:-webkit-sticky;position:sticky;top:0}}.vm-header_sidebar{display:grid;grid-template-columns:40px auto 1fr}.vm-header_mobile{display:grid;grid-template-columns:33px 1fr 33px;justify-content:space-between}.vm-header_dark .vm-header-button,.vm-header_dark button,.vm-header_dark button:before{background-color:var(--color-background-block)}.vm-header-logo{align-items:center;cursor:pointer;display:flex;justify-content:flex-start;margin-bottom:2px;overflow:hidden;position:relative;width:100%}.vm-header-logo,.vm-header-logo svg,.vm-header-logo_mobile{max-width:65px;min-width:65px}.vm-header-logo_mobile{margin:0 auto}.vm-header-logo_logs,.vm-header-logo_logs svg{max-width:75px;min-width:75px}.vm-header-nav{align-items:center;display:flex;gap:16px;justify-content:flex-start}.vm-header-nav_column{align-items:stretch;flex-direction:column;gap:8px}.vm-header-nav_column .vm-header-nav-item{padding:16px 0}.vm-header-nav_column .vm-header-nav-item_sub{justify-content:stretch}.vm-header-nav-item{cursor:pointer;font-size:14px;font-weight:400;opacity:1;padding:16px 8px;position:relative;text-transform:capitalize;transition:opacity .2s ease-in}.vm-header-nav-item_sub{grid-gap:4px;align-items:center;cursor:default;display:grid;gap:4px;grid-template-columns:auto 14px;justify-content:center}.vm-header-nav-item:hover{opacity:.7}.vm-header-nav-item_active{border-bottom:2px solid hsla(0,6%,6%,.2)}.vm-header-nav-item svg{-webkit-transform:rotate(0deg);transform:rotate(0deg);transition:-webkit-transform .2s ease-in;transition:transform .2s ease-in;transition:transform .2s ease-in,-webkit-transform .2s ease-in}.vm-header-nav-item_open svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.vm-header-nav-item-submenu{border-radius:4px;color:#fff;display:grid;opacity:1;padding:8px;-webkit-transform-origin:top center;transform-origin:top center;white-space:nowrap}.vm-header-nav-item-submenu-item{cursor:pointer}.vm-modal{align-items:center;background:hsla(0,6%,6%,.55);bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:100}.vm-modal_mobile{align-items:flex-start;max-height:calc(var(--vh)*100);min-height:calc(var(--vh)*100);overflow:auto}.vm-modal_mobile .vm-modal-content{border-radius:0;grid-template-rows:70px -webkit-max-content;grid-template-rows:70px max-content;max-height:-webkit-max-content;max-height:max-content;min-height:100%;overflow:visible;width:100vw}.vm-modal_mobile .vm-modal-content-header{margin-bottom:16px;padding:8px 8px 8px 16px}.vm-modal_mobile .vm-modal-content-header__title{max-width:80vw}.vm-modal_mobile .vm-modal-content-body{align-items:flex-start;display:grid;min-height:100%;padding:0 16px 24px}.vm-modal-content{background:var(--color-background-block);border-radius:4px;box-shadow:0 0 24px hsla(0,6%,6%,.07);max-height:calc(var(--vh)*90);overflow:auto}.vm-modal-content-header{grid-gap:8px;align-items:center;background-color:var(--color-background-block);border-bottom:var(--border-divider);border-radius:4px 4px 0 0;color:var(--color-text);display:grid;gap:8px;grid-template-columns:1fr auto;justify-content:space-between;margin-bottom:24px;min-height:51px;padding:16px 24px;position:-webkit-sticky;position:sticky;top:0;z-index:3}.vm-modal-content-header__title{font-weight:700;max-width:50vw;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;user-select:none;white-space:nowrap}.vm-modal-content-header__close{align-items:center;box-sizing:initial;color:#fff;cursor:pointer;display:flex;justify-content:center;padding:10px;width:24px}.vm-modal-content-body{padding:0 24px 24px}.vm-shortcuts{min-width:400px}@media(max-width:500px){.vm-shortcuts{min-width:100%}}.vm-shortcuts-section{border-bottom:var(--border-divider);margin-bottom:16px;padding-bottom:16px;position:relative}.vm-shortcuts-section__title{font-weight:700;margin-bottom:16px}.vm-shortcuts-section__read-more{position:absolute;right:0;top:-8px}.vm-shortcuts-section-list{grid-gap:16px;display:grid;gap:16px}@media(max-width:500px){.vm-shortcuts-section-list{gap:24px}}.vm-shortcuts-section-list-item{grid-gap:8px;align-items:center;display:grid;gap:8px;grid-template-columns:210px 1fr}@media(max-width:500px){.vm-shortcuts-section-list-item{grid-template-columns:1fr}}.vm-shortcuts-section-list-item__key{align-items:center;display:flex;gap:4px}.vm-shortcuts-section-list-item__key code,.vm-shortcuts-section-list-item__key svg{background-color:var(--color-background-body);background-repeat:repeat-x;border:var(--border-divider);border-radius:4px;color:var(--color-text);display:inline-block;font-size:12px;line-height:2;padding:2px 8px 0;text-align:center}.vm-shortcuts-section-list-item__key svg{color:var(--color-primary);padding:4px;width:24px}.vm-shortcuts-section-list-item__description{font-size:14px}.fc-graph-tips{grid-gap:16px;display:grid;gap:16px;max-width:520px}.fc-graph-tips-item{grid-gap:8px;border-bottom:var(--border-divider);display:grid;gap:8px;line-height:1.3;padding-bottom:16px}.fc-graph-tips-item__action{color:var(--color-text-secondary);font-weight:700}.fc-graph-tips-item__description{display:inline-block;line-height:1.5}.fc-graph-tips-item__description code,.fc-graph-tips-item__description svg{align-items:center;background-color:var(--color-background-body);border:var(--border-divider);border-radius:4px;color:var(--color-text);display:inline-flex;font-size:12px;justify-content:center;margin:0 2px 2px;min-height:20px;min-width:20px;padding:0 4px}.fc-graph-tips-item svg{color:var(--color-primary);margin-top:-8px;padding:2px;-webkit-transform:translateY(8px);transform:translateY(8px);width:18px}.vm-menu-burger{background:none;border:none;cursor:pointer;height:18px;outline:none;padding:0;position:relative;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;width:18px}.vm-menu-burger:after{background-color:hsla(0,6%,6%,.1);border-radius:50%;content:"";height:calc(100% + 12px);left:-6px;position:absolute;top:-6px;-webkit-transform:scale(0) translateZ(-2px);transform:scale(0) translateZ(-2px);transition:-webkit-transform .14s ease-in-out;transition:transform .14s ease-in-out;transition:transform .14s ease-in-out,-webkit-transform .14s ease-in-out;width:calc(100% + 12px)}.vm-menu-burger:hover:after{-webkit-transform:scale(1) translateZ(-2px);transform:scale(1) translateZ(-2px)}.vm-menu-burger span{border-top:2px solid #fff;display:block;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);transition:border-color .3s ease,-webkit-transform .3s ease;transition:transform .3s ease,border-color .3s ease;transition:transform .3s ease,border-color .3s ease,-webkit-transform .3s ease}.vm-menu-burger span,.vm-menu-burger span:after,.vm-menu-burger span:before{border-radius:6px;height:2px;left:0;position:absolute;width:100%}.vm-menu-burger span:after,.vm-menu-burger span:before{-webkit-animation-duration:.6s;animation-duration:.6s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(.645,.045,.355,1);animation-timing-function:cubic-bezier(.645,.045,.355,1);background:#fff;content:"";top:0}.vm-menu-burger span:before{-webkit-animation-name:topLineBurger;animation-name:topLineBurger}.vm-menu-burger span:after{-webkit-animation-name:bottomLineBurger;animation-name:bottomLineBurger}.vm-menu-burger_opened span{border-color:transparent}.vm-menu-burger_opened span:before{-webkit-animation-name:topLineCross;animation-name:topLineCross}.vm-menu-burger_opened span:after{-webkit-animation-name:bottomLineCross;animation-name:bottomLineCross}@-webkit-keyframes topLineCross{0%{-webkit-transform:translateY(-7px);transform:translateY(-7px)}50%{-webkit-transform:translateY(0);transform:translateY(0)}to{-webkit-transform:translateY(-2px) translateX(30%) rotate(45deg);transform:translateY(-2px) translateX(30%) rotate(45deg);width:60%}}@keyframes topLineCross{0%{-webkit-transform:translateY(-7px);transform:translateY(-7px)}50%{-webkit-transform:translateY(0);transform:translateY(0)}to{-webkit-transform:translateY(-2px) translateX(30%) rotate(45deg);transform:translateY(-2px) translateX(30%) rotate(45deg);width:60%}}@-webkit-keyframes bottomLineCross{0%{-webkit-transform:translateY(3px);transform:translateY(3px)}50%{-webkit-transform:translateY(0);transform:translateY(0)}to{-webkit-transform:translateY(-2px) translateX(30%) rotate(-45deg);transform:translateY(-2px) translateX(30%) rotate(-45deg);width:60%}}@keyframes bottomLineCross{0%{-webkit-transform:translateY(3px);transform:translateY(3px)}50%{-webkit-transform:translateY(0);transform:translateY(0)}to{-webkit-transform:translateY(-2px) translateX(30%) rotate(-45deg);transform:translateY(-2px) translateX(30%) rotate(-45deg);width:60%}}@-webkit-keyframes topLineBurger{0%{-webkit-transform:translateY(0) rotate(45deg);transform:translateY(0) rotate(45deg)}50%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:translateY(-7px) rotate(0deg);transform:translateY(-7px) rotate(0deg)}}@keyframes topLineBurger{0%{-webkit-transform:translateY(0) rotate(45deg);transform:translateY(0) rotate(45deg)}50%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:translateY(-7px) rotate(0deg);transform:translateY(-7px) rotate(0deg)}}@-webkit-keyframes bottomLineBurger{0%{-webkit-transform:translateY(0) rotate(-45deg);transform:translateY(0) rotate(-45deg)}50%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:translateY(3px) rotate(0deg);transform:translateY(3px) rotate(0deg)}}@keyframes bottomLineBurger{0%{-webkit-transform:translateY(0) rotate(-45deg);transform:translateY(0) rotate(-45deg)}50%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:translateY(3px) rotate(0deg);transform:translateY(3px) rotate(0deg)}}.vm-header-sidebar{background-color:inherit;color:inherit;height:24px;width:24px}.vm-header-sidebar-button{align-items:center;display:flex;height:51px;justify-content:center;left:0;position:absolute;top:0;transition:left .35s cubic-bezier(.28,.84,.42,1);width:51px}.vm-header-sidebar-button_open{left:149px;position:fixed;z-index:102}.vm-header-sidebar-menu{grid-gap:16px;background-color:inherit;box-shadow:var(--box-shadow-popper);display:grid;gap:16px;grid-template-rows:1fr auto;height:100%;left:0;padding:16px;position:fixed;top:0;-webkit-transform:translateX(-100%);transform:translateX(-100%);-webkit-transform-origin:left;transform-origin:left;transition:-webkit-transform .3s cubic-bezier(.28,.84,.42,1);transition:transform .3s cubic-bezier(.28,.84,.42,1);transition:transform .3s cubic-bezier(.28,.84,.42,1),-webkit-transform .3s cubic-bezier(.28,.84,.42,1);width:200px;z-index:101}.vm-header-sidebar-menu_open{-webkit-transform:translateX(0);transform:translateX(0)}.vm-header-sidebar-menu__logo{align-items:center;cursor:pointer;display:flex;justify-content:flex-start;position:relative;width:65px}.vm-header-sidebar-menu-settings{grid-gap:8px;align-items:center;display:grid;gap:8px}.vm-header-controls{align-items:center;display:flex;flex-grow:1;gap:8px;justify-content:flex-end}.vm-header-controls_mobile{display:grid;grid-template-columns:1fr;padding:0}.vm-header-controls_mobile .vm-header-button{border:none}.vm-header-controls-modal{-webkit-transform:scale(0);transform:scale(0)}.vm-header-controls-modal_open{-webkit-transform:scale(1);transform:scale(1)}.vm-container{display:flex;flex-direction:column;min-height:calc(var(--vh)*100 - var(--scrollbar-height))}.vm-container-body{background-color:var(--color-background-body);flex-grow:1;min-height:100%;padding:24px}.vm-container-body_mobile{padding:8px 0 0}@media(max-width:768px){.vm-container-body{padding:8px 0 0}}.vm-container-body_app{background-color:transparent;padding:8px 0}.vm-footer{align-items:center;background:var(--color-background-body);border-top:var(--border-divider);color:var(--color-text-secondary);display:flex;flex-wrap:wrap;gap:24px;justify-content:center;padding:24px}@media(max-width:768px){.vm-footer{gap:16px;padding:16px}}.vm-footer__link,.vm-footer__website{grid-gap:6px;align-items:center;display:grid;gap:6px;grid-template-columns:12px auto;justify-content:center}.vm-footer__website{margin-right:16px}@media(max-width:768px){.vm-footer__website{margin-right:0}}.vm-footer__link{grid-template-columns:14px auto}.vm-footer__copyright{flex-grow:1;text-align:right}@media(max-width:768px){.vm-footer__copyright{font-size:12px;text-align:center;width:100%}}.vm-server-configurator{align-items:center;display:flex;flex-direction:column;gap:24px;padding-bottom:24px;width:600px}.vm-server-configurator_mobile{align-items:flex-start;grid-auto-rows:-webkit-min-content;grid-auto-rows:min-content;height:100%;width:100%}@media(max-width:768px){.vm-server-configurator{width:100%}}.vm-server-configurator__input{width:100%}.vm-server-configurator__title{align-items:center;display:flex;font-size:14px;font-weight:700;grid-column:auto/span 2;justify-content:flex-start;margin-bottom:16px}.vm-server-configurator-footer{align-items:center;display:flex;gap:8px;justify-content:flex-end;width:100%}.vm-server-configurator_mobile .vm-server-configurator-footer{display:grid;grid-template-columns:1fr 1fr}.vm-limits-configurator-title__reset{align-items:center;display:flex;flex-grow:1;justify-content:flex-end}.vm-limits-configurator__inputs{align-items:center;display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between}.vm-limits-configurator__inputs_mobile{gap:8px}.vm-limits-configurator__inputs div{flex-grow:1}.vm-timezones-item{align-items:center;cursor:pointer;display:flex;gap:8px;justify-content:space-between}.vm-timezones-item_selected{border:var(--border-divider);border-radius:4px;padding:8px 16px}.vm-timezones-item__title{text-transform:capitalize}.vm-timezones-item__utc{align-items:center;background-color:var(--color-hover-black);border-radius:4px;display:inline-flex;justify-content:center;padding:4px}.vm-timezones-item__icon{align-items:center;display:inline-flex;justify-content:flex-end;margin:0 0 0 auto;transition:-webkit-transform .2s ease-in;transition:transform .2s ease-in;transition:transform .2s ease-in,-webkit-transform .2s ease-in}.vm-timezones-item__icon svg{width:14px}.vm-timezones-item__icon_open{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.vm-timezones-list{background-color:var(--color-background-block);border-radius:8px;max-height:300px;overflow:auto}.vm-timezones-list_mobile{max-height:calc(var(--vh)*100 - 70px)}.vm-timezones-list_mobile .vm-timezones-list-header__search{padding:0 16px}.vm-timezones-list-header{background-color:var(--color-background-block);border-bottom:var(--border-divider);position:-webkit-sticky;position:sticky;top:0;z-index:2}.vm-timezones-list-header__search{padding:8px}.vm-timezones-list-group{border-bottom:var(--border-divider);padding:8px 0}.vm-timezones-list-group:last-child{border-bottom:none}.vm-timezones-list-group__title{color:var(--color-text-secondary);font-weight:700;padding:8px 16px}.vm-timezones-list-group-options{align-items:flex-start;display:grid}.vm-timezones-list-group-options__item{padding:8px 16px;transition:background-color .2s ease}.vm-timezones-list-group-options__item:hover{background-color:hsla(0,6%,6%,.1)}.vm-theme-control__toggle{display:inline-flex;min-width:300px;text-transform:capitalize}.vm-theme-control_mobile .vm-theme-control__toggle{display:flex;min-width:100%}.vm-toggles{grid-gap:3px;display:grid;gap:3px;position:relative;width:100%}.vm-toggles__label{color:var(--color-text-secondary);font-size:12px;line-height:1;padding:0 16px}.vm-toggles-group{overflow:hidden;width:100%}.vm-toggles-group,.vm-toggles-group-item{align-items:center;display:grid;justify-content:center;position:relative}.vm-toggles-group-item{border-bottom:var(--border-divider);border-right:var(--border-divider);border-top:var(--border-divider);color:var(--color-text-secondary);cursor:pointer;font-size:12px;font-weight:700;padding:8px;text-align:center;transition:color .15s ease-in;-webkit-user-select:none;user-select:none;z-index:2}.vm-toggles-group-item_first{border-left:var(--border-divider);border-radius:16px 0 0 16px}.vm-toggles-group-item:last-child{border-left:none;border-radius:0 16px 16px 0}.vm-toggles-group-item_icon{gap:4px;grid-template-columns:14px auto}.vm-toggles-group-item:hover{color:var(--color-primary)}.vm-toggles-group-item_active{border-color:transparent;color:var(--color-primary)}.vm-toggles-group-item_active:hover{background-color:transparent}.vm-toggles-group__highlight{background-color:rgba(var(--color-primary),.08);border:1px solid var(--color-primary);height:100%;position:absolute;top:0;transition:left .2s cubic-bezier(.28,.84,.42,1),border-radius .2s linear;z-index:1}#root,body,html{background-attachment:fixed;background-color:#fefeff;background-color:var(--color-background-body);background-repeat:no-repeat;color:#110f0f;color:var(--color-text);cursor:default;font-family:Lato,sans-serif;font-size:14px;margin:0;min-height:100%}body{overflow:auto}*{-webkit-tap-highlight-color:rgba(0,0,0,0);cursor:inherit;font:inherit;touch-action:pan-x pan-y}code{font-family:monospace}b{font-weight:700}input,textarea{cursor:text}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{-webkit-user-select:none;user-select:none}input::placeholder,textarea::placeholder{-webkit-user-select:none;user-select:none}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.vm-snackbar{-webkit-animation:vm-slide-snackbar .15s cubic-bezier(.28,.84,.42,1.1);animation:vm-slide-snackbar .15s cubic-bezier(.28,.84,.42,1.1);bottom:16px;left:16px;position:fixed;z-index:999}.vm-snackbar-content{align-items:center;display:grid;grid-template-columns:1fr auto}.vm-snackbar-content__close{color:inherit;height:24px;opacity:.8;padding:4px;width:24px}.vm-snackbar_mobile{bottom:0;left:0;right:0}@-webkit-keyframes vm-slide-snackbar{0%{-webkit-transform:translateY(100%);transform:translateY(100%)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes vm-slide-snackbar{0%{-webkit-transform:translateY(100%);transform:translateY(100%)}to{-webkit-transform:translateY(0);transform:translateY(0)}}svg{width:100%}*{scrollbar-color:#a09f9f #fff;scrollbar-color:var(--color-text-disabled) var(--color-background-block);scrollbar-width:thin}::-webkit-scrollbar{width:12px}::-webkit-scrollbar-track{background:#fff;background:var(--color-background-block)}::-webkit-scrollbar-thumb{background-color:#a09f9f;background-color:var(--color-text-disabled);border:3px solid #fff;border:3px solid var(--color-background-block);border-radius:20px}a,abbr,acronym,address,applet,article,aside,audio,big,body,canvas,caption,center,cite,code,del,details,dfn,div,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{border:0;margin:0;padding:0;vertical-align:initial}h1,h2,h3,h4,h5,h6{font-weight:400}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}q:after,q:before{content:""}table{border-collapse:collapse;border-spacing:0}input::-webkit-input-placeholder{opacity:1;-webkit-transition:opacity .3s ease;transition:opacity .3s ease}input::placeholder{opacity:1;transition:opacity .3s ease}input:focus::-webkit-input-placeholder{opacity:0;-webkit-transition:opacity .3s ease;transition:opacity .3s ease}input:focus::placeholder{opacity:0;transition:opacity .3s ease}*{box-sizing:border-box;outline:none}button{background:none;border:none;border-radius:0;padding:0}strong{letter-spacing:1px}input[type=file]{cursor:pointer;font-size:0;height:100%;left:0;opacity:0;position:absolute;top:0;width:100%}input[type=file]:disabled{cursor:not-allowed}a{color:inherit;text-decoration:inherit}input,textarea{-webkit-text-fill-color:inherit;appearance:none;-webkit-appearance:none}input:disabled,textarea:disabled{opacity:1!important}input:placeholder-shown,textarea:placeholder-shown{width:100%}input:-webkit-autofill,input:-webkit-autofill:active,input:-webkit-autofill:focus,input:-webkit-autofill:hover{-webkit-box-shadow:inset 0 0 0 0 #fff!important;width:100%;z-index:2}@font-face{font-display:swap;font-family:Lato;font-style:normal;font-weight:400;src:url(../../static/media/Lato-Regular.d714fec1633b69a9c2e9.ttf)}@font-face{font-display:swap;font-family:Lato;font-style:normal;font-weight:700;src:url(../../static/media/Lato-Bold.32360ba4b57802daa4d6.ttf)}.vm-header-button{border:1px solid hsla(0,6%,6%,.2)}.vm-list-item{background-color:transparent;cursor:pointer;padding:12px 16px;transition:background-color .2s ease}.vm-list-item_mobile{padding:16px}.vm-list-item:hover,.vm-list-item_active{background-color:rgba(0,0,0,.06);background-color:var(--color-hover-black)}.vm-list-item_multiselect{grid-gap:8px;align-items:center;display:grid;gap:8px;grid-template-columns:10px 1fr;justify-content:flex-start}.vm-list-item_multiselect svg{-webkit-animation:vm-scale .15s cubic-bezier(.28,.84,.42,1);animation:vm-scale .15s cubic-bezier(.28,.84,.42,1)}.vm-list-item_multiselect span{grid-column:2}.vm-list-item_multiselect_selected{color:#3f51b5;color:var(--color-primary)}.vm-mobile-option{align-items:center;display:flex;gap:8px;justify-content:flex-start;padding:12px 0;-webkit-user-select:none;user-select:none;width:100%}.vm-mobile-option__arrow,.vm-mobile-option__icon{align-items:center;display:flex;justify-content:center}.vm-mobile-option__icon{color:#3f51b5;color:var(--color-primary);height:22px;width:22px}.vm-mobile-option__arrow{color:#3f51b5;color:var(--color-primary);height:14px;-webkit-transform:rotate(-90deg);transform:rotate(-90deg);width:14px}.vm-mobile-option-text{grid-gap:2px;align-items:center;display:grid;flex-grow:1;gap:2px}.vm-mobile-option-text__label{font-weight:700}.vm-mobile-option-text__value{color:#706f6f;color:var(--color-text-secondary);font-size:12px}.vm-block{background-color:#fff;background-color:var(--color-background-block);border-radius:8px;box-shadow:1px 2px 6px rgba(0,0,0,.08);box-shadow:var(--box-shadow);padding:24px}.vm-block_mobile{border-radius:0;padding:16px}.vm-block_empty-padding{padding:0}.vm-section-header{align-items:center;border-bottom:1px solid rgba(0,0,0,.15);border-bottom:var(--border-divider);border-radius:8px 8px 0 0;display:grid;grid-template-columns:1fr auto;justify-content:center;padding:0 24px}.vm-section-header__title{font-size:14px;font-weight:700}.vm-section-header__title_mobile{-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;text-overflow:ellipsis}.vm-section-header__tabs{align-items:center;display:flex;font-size:12px;justify-content:flex-start}.vm-table{border-collapse:initial;border-spacing:0;margin-top:-24px;width:100%}.vm-table,.vm-table__row{background-color:#fff;background-color:var(--color-background-block)}.vm-table__row{transition:background-color .2s ease}.vm-table__row:hover:not(.vm-table__row_header){background-color:rgba(0,0,0,.06);background-color:var(--color-hover-black)}.vm-table__row_header{position:relative;z-index:2}.vm-table__row_selected{background-color:rgba(26,144,255,.05)}.vm-table-cell{border-bottom:1px solid rgba(0,0,0,.15);border-bottom:var(--border-divider);height:40px;line-height:1.5;overflow-wrap:anywhere;padding:12px;vertical-align:top}.vm-table-cell__content{align-items:center;display:flex;justify-content:flex-start}.vm-table-cell_sort{cursor:pointer}.vm-table-cell_sort:hover{background-color:rgba(0,0,0,.06);background-color:var(--color-hover-black)}.vm-table-cell_header{font-weight:700;overflow-wrap:normal;text-align:left}.vm-table-cell_gray{color:#110f0f;color:var(--color-text);opacity:.4}.vm-table-cell_right{text-align:right}.vm-table-cell_right .vm-table-cell__content{justify-content:flex-end}.vm-table-cell_no-wrap{white-space:nowrap}.vm-table-cell_no-padding{padding:0}.vm-table-cell_pre{white-space:pre-wrap}.vm-table-cell_logs-time{overflow-wrap:normal;white-space:pre}.vm-table-cell_logs{font-family:monospace;line-height:1.2}.vm-table__sort-icon{align-items:center;display:flex;justify-content:center;margin:0 8px;opacity:.4;transition:opacity .2s ease,-webkit-transform .2s ease-in-out;transition:opacity .2s ease,transform .2s ease-in-out;transition:opacity .2s ease,transform .2s ease-in-out,-webkit-transform .2s ease-in-out;width:15px}.vm-table__sort-icon_active{opacity:1}.vm-table__sort-icon_desc{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.vm-link{cursor:pointer;transition:color .2s ease}.vm-link_colored{color:#3f51b5;color:var(--color-primary)}.vm-link_underlined{text-decoration:underline}.vm-link_with-icon{grid-gap:6px;align-items:center;display:grid;gap:6px;grid-template-columns:14px auto;justify-content:center}.vm-link:hover{color:#3f51b5;color:var(--color-primary);text-decoration:underline}.vm-dynamic-number{color:#a09f9f;color:var(--color-text-disabled);font-size:12px}.vm-dynamic-number_positive{color:#4caf50;color:var(--color-success)}.vm-dynamic-number_negative{color:#fd080e;color:var(--color-error)}.vm-dynamic-number_down:before{content:"↓"}.vm-dynamic-number_up:before{content:"↑"}:root{--color-primary:#3f51b5;--color-secondary:#e91e63;--color-error:#fd080e;--color-warning:#ff8308;--color-info:#03a9f4;--color-success:#4caf50;--color-primary-text:#fff;--color-secondary-text:#fff;--color-error-text:#fff;--color-warning-text:#fff;--color-info-text:#fff;--color-success-text:#fff;--color-background-body:#fefeff;--color-background-block:#fff;--color-background-tooltip:rgba(80,80,80,.9);--color-text:#110f0f;--color-text-secondary:#706f6f;--color-text-disabled:#a09f9f;--box-shadow:rgba(0,0,0,.08) 1px 2px 6px;--box-shadow-popper:rgba(0,0,0,.1) 0px 2px 8px 0px;--border-divider:1px solid rgba(0,0,0,.15);--color-hover-black:rgba(0,0,0,.06)} \ No newline at end of file diff --git a/app/vlselect/vmui/static/css/main.9a224445.css b/app/vlselect/vmui/static/css/main.9a224445.css new file mode 100644 index 000000000..e1d57682c --- /dev/null +++ b/app/vlselect/vmui/static/css/main.9a224445.css @@ -0,0 +1 @@ +.vm-tabs{gap:12px;height:100%;position:relative;-webkit-user-select:none;user-select:none}.vm-tabs,.vm-tabs-item{align-items:center;display:flex;justify-content:center}.vm-tabs-item{color:inherit;cursor:pointer;font-size:inherit;font-weight:inherit;opacity:.6;padding:12px 8px;text-decoration:none;text-transform:capitalize;transition:opacity .2s}.vm-tabs-item_active{opacity:1}.vm-tabs-item:hover{opacity:.8}.vm-tabs-item__icon{display:grid;margin-right:8px;width:16px}.vm-tabs-item__icon_single{margin-right:0}.vm-tabs__indicator{border-bottom:2px solid;position:absolute;transition:width .2s ease,left .3s cubic-bezier(.28,.84,.42,1)}.vm-alert{grid-gap:8px;align-items:center;background-color:var(--color-background-block);border-radius:8px;box-shadow:var(--box-shadow);color:var(--color-text);display:grid;font-size:14px;font-weight:400;gap:8px;grid-template-columns:20px 1fr;line-height:1.5;padding:12px;position:relative}.vm-alert_mobile{align-items:flex-start;border-radius:0}.vm-alert:after{border-radius:8px;content:"";height:100%;left:0;opacity:.1;position:absolute;top:0;width:100%;z-index:1}.vm-alert_mobile:after{border-radius:0}.vm-alert__content,.vm-alert__icon{position:relative;z-index:2}.vm-alert__icon{align-items:center;display:flex;justify-content:center}.vm-alert__content{-webkit-filter:brightness(.6);filter:brightness(.6);white-space:pre-line}.vm-alert_success{color:var(--color-success)}.vm-alert_success:after{background-color:var(--color-success)}.vm-alert_error{color:var(--color-error)}.vm-alert_error:after{background-color:var(--color-error)}.vm-alert_info{color:var(--color-info)}.vm-alert_info:after{background-color:var(--color-info)}.vm-alert_warning{color:var(--color-warning)}.vm-alert_warning:after{background-color:var(--color-warning)}.vm-alert_dark:after{opacity:.1}.vm-alert_dark .vm-alert__content{-webkit-filter:none;filter:none}.vm-button{align-items:center;border-radius:6px;color:#fff;cursor:pointer;display:flex;font-size:12px;font-weight:400;justify-content:center;line-height:1.3;min-height:31px;padding:6px 14px;position:relative;text-transform:uppercase;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-user-select:none;user-select:none;white-space:nowrap}.vm-button:hover:after{background-color:var(--color-hover-black)}.vm-button:after,.vm-button:before{border-radius:6px;content:"";height:100%;left:0;position:absolute;top:0;transition:background-color .2s ease;width:100%}.vm-button:before{-webkit-transform:translateZ(-2px);transform:translateZ(-2px)}.vm-button:after{background-color:transparent;-webkit-transform:translateZ(-1px);transform:translateZ(-1px)}.vm-button:active:after{-webkit-transform:scale(.9);transform:scale(.9)}.vm-button span{align-items:center;display:grid;justify-content:center;-webkit-transform:translateZ(1px);transform:translateZ(1px)}.vm-button span svg{width:15px}.vm-button__start-icon{margin-right:6px}.vm-button__end-icon{margin-left:6px}.vm-button_disabled{cursor:not-allowed;opacity:.3}.vm-button_icon{padding:6px 8px}.vm-button_icon .vm-button__end-icon,.vm-button_icon .vm-button__start-icon{margin:0}.vm-button_small{min-height:25px;padding:4px 8px}.vm-button_small span svg{width:13px}.vm-button_contained_primary{color:var(--color-primary-text)}.vm-button_contained_primary,.vm-button_contained_primary:before{background-color:var(--color-primary)}.vm-button_contained_primary:hover:after{background-color:hsla(0,6%,6%,.2)}.vm-button_contained_secondary{color:var(--color-secondary-text)}.vm-button_contained_secondary:before{background-color:var(--color-secondary)}.vm-button_contained_secondary:hover:after{background-color:hsla(0,6%,6%,.2)}.vm-button_contained_success{color:var(--color-success-text)}.vm-button_contained_success:before{background-color:var(--color-success)}.vm-button_contained_success:hover:after{background-color:hsla(0,6%,6%,.2)}.vm-button_contained_error{color:var(--color-error-text)}.vm-button_contained_error:before{background-color:var(--color-error)}.vm-button_contained_gray{color:var(--color-text-secondary)}.vm-button_contained_gray:before{background-color:var(--color-text-secondary)}.vm-button_contained_warning{color:var(--color-warning)}.vm-button_contained_warning:before{background-color:var(--color-warning);opacity:.2}.vm-button_text_primary{color:var(--color-primary)}.vm-button_text_secondary{color:var(--color-secondary)}.vm-button_text_success{color:var(--color-success)}.vm-button_text_error{color:var(--color-error)}.vm-button_text_gray{color:var(--color-text-secondary)}.vm-button_text_warning{color:var(--color-warning)}.vm-button_outlined_primary{border:1px solid var(--color-primary);color:var(--color-primary)}.vm-button_outlined_error{border:1px solid var(--color-error);color:var(--color-error)}.vm-button_outlined_secondary{border:1px solid var(--color-secondary);color:var(--color-secondary)}.vm-button_outlined_success{border:1px solid var(--color-success);color:var(--color-success)}.vm-button_outlined_gray{border:1px solid var(--color-text-secondary);color:var(--color-text-secondary)}.vm-button_outlined_warning{border:1px solid var(--color-warning);color:var(--color-warning)}.vm-json-view__copy{display:flex;justify-content:flex-end;position:-webkit-sticky;position:sticky;top:0;z-index:2}.vm-json-view__code{font-size:14px;line-height:1.4;-webkit-transform:translateY(-32px);transform:translateY(-32px);white-space:pre-wrap}.vm-explore-logs-body-header,.vm-explore-logs-body-header_mobile{margin:-12px -12px 0}.vm-explore-logs-body-header__settings{align-items:center;display:flex;gap:8px}.vm-explore-logs-body__table{overflow:auto;padding-top:12px;width:calc(100vw - 48px - var(--scrollbar-width))}@media(max-width:768px){.vm-explore-logs-body__table{width:calc(100vw - 24px - var(--scrollbar-width))}}.vm-explore-logs-body__table_mobile{width:calc(100vw - 24px - var(--scrollbar-width))}.vm-explore-logs-body__table .vm-table{min-width:700px}.vm-explore-logs-body-content-group-keys{align-items:center;border-bottom:var(--border-divider);display:flex;flex-wrap:wrap;gap:8px;padding:12px 0}.vm-explore-logs-body-content-group-keys__title{font-weight:700}.vm-explore-logs-body-content-group-keys__key{background-color:var(--color-primary);border-radius:4px;color:var(--color-primary-text);padding:4px 12px}.vm-explore-logs-body-content-group-rows{display:grid}.vm-explore-logs-body-content-group-rows-item{grid-gap:8px;border-bottom:var(--border-divider);display:grid;gap:8px;grid-template-columns:107px 1fr;padding:12px 0}.vm-explore-logs-body-content-group-rows-item__time{align-items:center;display:flex;justify-content:center;line-height:1.3}.vm-explore-logs-body-content-group-rows-item__msg{font-family:monospace;line-height:1.1;overflow-wrap:anywhere}.vm-tooltip{-webkit-animation:vm-scale .15s cubic-bezier(.28,.84,.42,1);animation:vm-scale .15s cubic-bezier(.28,.84,.42,1);background-color:var(--color-background-tooltip);border-radius:4px;box-shadow:var(--box-shadow-popper);color:#fff;font-size:12px;line-height:150%;opacity:1;padding:3px 8px;pointer-events:auto;position:fixed;transition:opacity .1s ease-in-out;white-space:nowrap;z-index:101}@-webkit-keyframes vm-scale{0%{-webkit-transform:scale(0);transform:scale(0)}to{-webkit-transform:scale(1);transform:scale(1)}}@keyframes vm-scale{0%{-webkit-transform:scale(0);transform:scale(0)}to{-webkit-transform:scale(1);transform:scale(1)}}.vm-popper{background-color:var(--color-background-block);border-radius:4px;box-shadow:var(--box-shadow-popper);opacity:0;pointer-events:none;position:fixed;transition:opacity .1s ease-in-out;z-index:-99}.vm-popper_open{-webkit-animation:vm-slider .15s cubic-bezier(.28,.84,.42,1.1);animation:vm-slider .15s cubic-bezier(.28,.84,.42,1.1);opacity:1;pointer-events:auto;-webkit-transform-origin:top center;transform-origin:top center;z-index:101}.vm-popper_mobile{-webkit-animation:none;animation:none;border-radius:0;bottom:0;left:0;overflow:auto;position:fixed;right:0;top:0;width:100%}.vm-popper-header{grid-gap:8px;align-items:center;background-color:var(--color-background-block);border-bottom:var(--border-divider);border-radius:4px 4px 0 0;color:var(--color-text);display:grid;gap:8px;grid-template-columns:1fr auto;justify-content:space-between;margin-bottom:12px;min-height:51px;padding:8px 8px 8px 12px}.vm-popper-header__title{font-weight:700;-webkit-user-select:none;user-select:none}@-webkit-keyframes vm-slider{0%{-webkit-transform:scaleY(0);transform:scaleY(0)}to{-webkit-transform:scaleY(1);transform:scaleY(1)}}@keyframes vm-slider{0%{-webkit-transform:scaleY(0);transform:scaleY(0)}to{-webkit-transform:scaleY(1);transform:scaleY(1)}}.vm-select-limits{display:grid;padding:8px 0}.vm-table-settings-popper{display:grid;min-width:250px}.vm-table-settings-popper_mobile .vm-table-settings-popper-list{gap:12px}.vm-table-settings-popper_mobile .vm-table-settings-popper-list:first-child{padding-top:0}.vm-table-settings-popper-list{grid-gap:12px;border-bottom:var(--border-divider);display:grid;gap:12px;max-height:350px;overflow:auto;padding:12px}.vm-table-settings-popper-list_first{padding-top:0}.vm-table-settings-popper-list-header{align-items:center;display:grid;grid-template-columns:1fr auto;justify-content:space-between;min-height:25px}.vm-table-settings-popper-list-header__title{font-weight:700}.vm-table-settings-popper-list__item{font-size:14px}.vm-checkbox{align-items:center;cursor:pointer;display:flex;justify-content:flex-start;-webkit-user-select:none;user-select:none}.vm-checkbox_disabled{cursor:default;opacity:.6}.vm-checkbox_secondary_active .vm-checkbox-track{background-color:var(--color-secondary)}.vm-checkbox_secondary .vm-checkbox-track{border:1px solid var(--color-secondary)}.vm-checkbox_primary_active .vm-checkbox-track{background-color:var(--color-primary)}.vm-checkbox_primary .vm-checkbox-track{border:1px solid var(--color-primary)}.vm-checkbox_active .vm-checkbox-track__thumb{-webkit-transform:scale(1);transform:scale(1)}.vm-checkbox:hover .vm-checkbox-track{opacity:.8}.vm-checkbox-track{align-items:center;background-color:transparent;border-radius:4px;display:flex;height:16px;justify-content:center;padding:2px;position:relative;transition:background-color .2s ease,opacity .3s ease-out;width:16px}.vm-checkbox-track__thumb{align-items:center;color:#fff;display:grid;height:12px;justify-content:center;-webkit-transform:scale(0);transform:scale(0);transition:-webkit-transform .1s ease-in-out;transition:transform .1s ease-in-out;transition:transform .1s ease-in-out,-webkit-transform .1s ease-in-out;width:12px}.vm-checkbox__label{color:inherit;font-size:inherit;margin-left:8px;transition:color .2s ease;white-space:nowrap}.vm-switch{align-items:center;cursor:pointer;display:flex;font-size:12px;justify-content:flex-start;-webkit-user-select:none;user-select:none}.vm-switch_full-width{flex-direction:row-reverse;justify-content:space-between}.vm-switch_full-width .vm-switch__label{margin-left:0}.vm-switch_disabled{cursor:default;opacity:.6}.vm-switch_secondary_active .vm-switch-track{background-color:var(--color-secondary)}.vm-switch_primary_active .vm-switch-track{background-color:var(--color-primary)}.vm-switch_active .vm-switch-track__thumb{left:20px}.vm-switch:hover .vm-switch-track{opacity:.8}.vm-switch-track{align-items:center;background-color:hsla(0,6%,6%,.4);border-radius:17px;display:flex;height:17px;justify-content:flex-start;padding:3px;position:relative;transition:background-color .2s ease,opacity .3s ease-out;width:34px}.vm-switch-track__thumb{background-color:var(--color-background-block);border-radius:50%;left:3px;min-height:11px;min-width:11px;position:absolute;top:auto;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;transition:right .2s ease-out,left .2s ease-out}.vm-switch__label{color:var(--color-text-secondary);font-size:inherit;margin-left:8px;transition:color .2s ease;white-space:nowrap}.vm-switch_active .vm-switch__label{color:var(--color-text)}.vm-pagination{display:flex;gap:8px;justify-content:flex-end;padding:12px 0 0;position:-webkit-sticky;position:sticky;right:0}.vm-pagination_mobile{padding:12px 0}.vm-pagination__icon_prev{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.vm-pagination__icon_next{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.vm-accordion-header{align-items:center;cursor:pointer;display:grid;font-size:inherit;position:relative}.vm-accordion-header__arrow{align-items:center;display:flex;justify-content:center;position:absolute;right:14px;top:auto;-webkit-transform:rotate(0);transform:rotate(0);transition:-webkit-transform .2s ease-in-out;transition:transform .2s ease-in-out;transition:transform .2s ease-in-out,-webkit-transform .2s ease-in-out}.vm-accordion-header__arrow_open{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.vm-accordion-header__arrow svg{height:auto;width:14px}.accordion-section{overflow:hidden}.vm-spinner{align-items:center;-webkit-animation:vm-fade 2s cubic-bezier(.28,.84,.42,1.1);animation:vm-fade 2s cubic-bezier(.28,.84,.42,1.1);background-color:hsla(0,0%,100%,.5);bottom:0;display:flex;flex-direction:column;justify-content:center;left:0;pointer-events:none;position:fixed;right:0;top:0;z-index:99}.vm-spinner_dark{background-color:hsla(0,6%,6%,.2)}.vm-spinner__message{color:rgba(var(--color-text),.9);font-size:16px;line-height:1.3;margin-top:12px;text-align:center;white-space:pre-line}.half-circle-spinner,.half-circle-spinner *{box-sizing:border-box}.half-circle-spinner{border-radius:100%;height:60px;position:relative;width:60px}.half-circle-spinner .circle{border:6px solid transparent;border-radius:100%;content:"";height:100%;position:absolute;width:100%}.half-circle-spinner .circle.circle-1{-webkit-animation:half-circle-spinner-animation 1s infinite;animation:half-circle-spinner-animation 1s infinite;border-top-color:var(--color-primary)}.half-circle-spinner .circle.circle-2{-webkit-animation:half-circle-spinner-animation 1s infinite alternate;animation:half-circle-spinner-animation 1s infinite alternate;border-bottom-color:var(--color-primary)}@-webkit-keyframes half-circle-spinner-animation{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes half-circle-spinner-animation{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes vm-fade{0%{opacity:0}to{opacity:1}}@keyframes vm-fade{0%{opacity:0}to{opacity:1}}.vm-explore-logs-header{grid-gap:12px;align-items:center;display:grid;gap:12px}.vm-explore-logs-header-bottom{align-items:center;display:flex;flex-wrap:wrap;gap:12px;justify-content:flex-end}@media(max-width:500px){.vm-explore-logs-header-bottom{display:grid;justify-content:normal}}.vm-explore-logs-header-bottom__execute{display:grid}.vm-explore-logs-header-bottom-helpful{align-items:center;display:flex;flex-wrap:wrap;gap:8px 12px;justify-content:center}.vm-explore-logs-header-bottom-helpful a{color:var(--color-text-secondary)}.vm-text-field{display:grid;margin:6px 0;position:relative;width:100%}.vm-text-field_textarea:after{content:attr(data-replicated-value) " ";visibility:hidden;white-space:pre-wrap}.vm-text-field:after,.vm-text-field__input{background-color:transparent;border:var(--border-divider);font-size:14px;grid-area:1/1/2/2;line-height:18px;overflow:hidden;padding:8px 12px;width:100%}.vm-text-field__error,.vm-text-field__helper-text,.vm-text-field__label,.vm-text-field__warning{-webkit-line-clamp:1;line-clamp:1;-webkit-box-orient:vertical;background-color:var(--color-background-block);display:-webkit-box;font-size:12px;left:6px;line-height:14px;max-width:calc(100% - 12px);overflow:hidden;padding:0 3px;pointer-events:none;position:absolute;text-overflow:ellipsis;-webkit-user-select:none;user-select:none;z-index:2}.vm-text-field__label{color:var(--color-text-secondary);top:-8px}.vm-text-field__error,.vm-text-field__helper-text,.vm-text-field__warning{overflow-wrap:anywhere;pointer-events:auto;position:relative;top:-6px;-webkit-user-select:text;user-select:text;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.vm-text-field__error_full,.vm-text-field__helper-text_full,.vm-text-field__warning_full{display:block;overflow:visible}.vm-text-field__error_overflowed,.vm-text-field__helper-text_overflowed,.vm-text-field__warning_overflowed{cursor:pointer}.vm-text-field__error{color:var(--color-error)}.vm-text-field__warning{color:var(--color-warning)}.vm-text-field__helper-text{color:var(--color-text-secondary)}.vm-text-field__input{background-color:transparent;border-radius:4px;color:var(--color-text);display:block;font-family:monospace;overflow:hidden;resize:none;transition:border .2s ease}.vm-text-field__input:focus,.vm-text-field__input:hover{border:1px solid var(--color-primary)}.vm-text-field__input_error,.vm-text-field__input_error:focus,.vm-text-field__input_error:hover{border-color:var(--color-error)}.vm-text-field__input_warning,.vm-text-field__input_warning:focus,.vm-text-field__input_warning:hover{border-color:var(--color-warning)}.vm-text-field__input_icon-start{padding-left:31px}.vm-text-field__input:disabled{background-color:inherit;color:inherit}.vm-text-field__input:disabled:hover{border-color:var(--color-text-disabled)}.vm-text-field__icon-end,.vm-text-field__icon-start{align-items:center;color:var(--color-text-secondary);display:flex;height:40px;justify-content:center;left:8px;max-width:15px;position:absolute;top:0}.vm-text-field__icon-end{left:auto;right:8px}.vm-text-field__controls-info{bottom:8px;color:var(--color-text-secondary);font-size:12px;opacity:.8;position:absolute;right:12px}.vm-autocomplete{max-height:300px;overflow:auto;overscroll-behavior:none;position:relative}.vm-autocomplete_mobile{max-height:calc(var(--vh)*100 - 70px)}.vm-autocomplete__no-options{color:var(--color-text-disabled);padding:12px;text-align:center}.vm-autocomplete-info{background-color:var(--color-background-block);border-radius:4px;box-shadow:var(--box-shadow-popper);left:0;min-width:450px;overflow-wrap:anywhere;padding:12px;position:absolute;right:0;top:calc(100% + 1px)}.vm-autocomplete-info__type{color:var(--color-text-secondary);margin-bottom:8px}.vm-autocomplete-info__description{line-height:130%}.vm-autocomplete-info__description p{margin:12px 0}.vm-autocomplete-info__description p:last-child{margin:0}.vm-query-editor{position:relative}.vm-query-editor-autocomplete{max-height:300px;overflow:auto}.vm-explore-logs{grid-gap:12px;align-items:flex-start;display:grid;gap:12px;grid-template-rows:auto 1fr}.vm-header{align-items:center;display:flex;flex-wrap:wrap;gap:0 16px;justify-content:flex-start;min-height:51px;padding:8px 12px;z-index:99}.vm-header_app{padding:8px 0}@media(max-width:1000px){.vm-header{gap:8px;padding:8px;position:-webkit-sticky;position:sticky;top:0}}.vm-header_sidebar{display:grid;grid-template-columns:40px auto 1fr}.vm-header_mobile{display:grid;grid-template-columns:33px 1fr 33px;justify-content:space-between}.vm-header_dark .vm-header-button,.vm-header_dark button,.vm-header_dark button:before{background-color:var(--color-background-block)}.vm-header-logo{align-items:center;cursor:pointer;display:flex;justify-content:flex-start;margin-bottom:2px;overflow:hidden;position:relative;width:100%}.vm-header-logo,.vm-header-logo svg,.vm-header-logo_mobile{max-width:65px;min-width:65px}.vm-header-logo_mobile{margin:0 auto}.vm-header-logo_logs,.vm-header-logo_logs svg{max-width:75px;min-width:75px}.vm-header-nav{align-items:center;display:flex;gap:12px;justify-content:flex-start}.vm-header-nav_column{align-items:stretch;flex-direction:column;gap:8px}.vm-header-nav_column .vm-header-nav-item{padding:12px 0}.vm-header-nav_column .vm-header-nav-item_sub{justify-content:stretch}.vm-header-nav-item{cursor:pointer;font-size:14px;font-weight:400;opacity:1;padding:12px 8px;position:relative;text-transform:capitalize;transition:opacity .2s ease-in}.vm-header-nav-item_sub{grid-gap:4px;align-items:center;cursor:default;display:grid;gap:4px;grid-template-columns:auto 14px;justify-content:center}.vm-header-nav-item:hover{opacity:.7}.vm-header-nav-item_active{border-bottom:2px solid hsla(0,6%,6%,.2)}.vm-header-nav-item svg{-webkit-transform:rotate(0deg);transform:rotate(0deg);transition:-webkit-transform .2s ease-in;transition:transform .2s ease-in;transition:transform .2s ease-in,-webkit-transform .2s ease-in}.vm-header-nav-item_open svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.vm-header-nav-item-submenu{border-radius:4px;color:#fff;display:grid;opacity:1;padding:8px;-webkit-transform-origin:top center;transform-origin:top center;white-space:nowrap}.vm-header-nav-item-submenu-item{cursor:pointer}.vm-modal{align-items:center;background:hsla(0,6%,6%,.55);bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:100}.vm-modal_mobile{align-items:flex-start;max-height:calc(var(--vh)*100);min-height:calc(var(--vh)*100);overflow:auto}.vm-modal_mobile .vm-modal-content{border-radius:0;grid-template-rows:70px -webkit-max-content;grid-template-rows:70px max-content;max-height:-webkit-max-content;max-height:max-content;min-height:100%;overflow:visible;width:100vw}.vm-modal_mobile .vm-modal-content-header{margin-bottom:12px;padding:8px 8px 8px 12px}.vm-modal_mobile .vm-modal-content-header__title{max-width:80vw}.vm-modal_mobile .vm-modal-content-body{align-items:flex-start;display:grid;min-height:100%;padding:0 12px 12px}.vm-modal-content{background:var(--color-background-block);border-radius:4px;box-shadow:0 0 24px hsla(0,6%,6%,.07);max-height:calc(var(--vh)*90);overflow:auto}.vm-modal-content-header{grid-gap:8px;align-items:center;background-color:var(--color-background-block);border-bottom:var(--border-divider);border-radius:4px 4px 0 0;color:var(--color-text);display:grid;gap:8px;grid-template-columns:1fr auto;justify-content:space-between;margin-bottom:12px;min-height:51px;padding:12px;position:-webkit-sticky;position:sticky;top:0;z-index:3}.vm-modal-content-header__title{font-weight:700;max-width:50vw;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;user-select:none;white-space:nowrap}.vm-modal-content-header__close{align-items:center;box-sizing:initial;color:#fff;cursor:pointer;display:flex;justify-content:center;padding:10px;width:24px}.vm-modal-content-body{padding:0 12px 12px}.vm-shortcuts{min-width:400px}@media(max-width:500px){.vm-shortcuts{min-width:100%}}.vm-shortcuts-section{border-bottom:var(--border-divider);margin-bottom:12px;padding-bottom:12px;position:relative}.vm-shortcuts-section__title{font-weight:700;margin-bottom:12px}.vm-shortcuts-section__read-more{position:absolute;right:0;top:-8px}.vm-shortcuts-section-list{grid-gap:12px;display:grid;gap:12px}@media(max-width:500px){.vm-shortcuts-section-list{gap:12px}}.vm-shortcuts-section-list-item{grid-gap:8px;align-items:center;display:grid;gap:8px;grid-template-columns:210px 1fr}@media(max-width:500px){.vm-shortcuts-section-list-item{grid-template-columns:1fr}}.vm-shortcuts-section-list-item__key{align-items:center;display:flex;gap:4px}.vm-shortcuts-section-list-item__key code,.vm-shortcuts-section-list-item__key svg{background-color:var(--color-background-body);background-repeat:repeat-x;border:var(--border-divider);border-radius:4px;color:var(--color-text);display:inline-block;font-size:12px;line-height:2;padding:2px 8px 0;text-align:center}.vm-shortcuts-section-list-item__key svg{color:var(--color-primary);padding:4px;width:24px}.vm-shortcuts-section-list-item__description{font-size:14px}.fc-graph-tips{grid-gap:12px;display:grid;gap:12px;max-width:520px}.fc-graph-tips-item{grid-gap:8px;border-bottom:var(--border-divider);display:grid;gap:8px;line-height:1.3;padding-bottom:12px}.fc-graph-tips-item__action{color:var(--color-text-secondary);font-weight:700}.fc-graph-tips-item__description{display:inline-block;line-height:1.5}.fc-graph-tips-item__description code,.fc-graph-tips-item__description svg{align-items:center;background-color:var(--color-background-body);border:var(--border-divider);border-radius:4px;color:var(--color-text);display:inline-flex;font-size:12px;justify-content:center;margin:0 2px 2px;min-height:20px;min-width:20px;padding:0 4px}.fc-graph-tips-item svg{color:var(--color-primary);margin-top:-8px;padding:2px;-webkit-transform:translateY(8px);transform:translateY(8px);width:18px}.vm-menu-burger{background:none;border:none;cursor:pointer;height:18px;outline:none;padding:0;position:relative;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;width:18px}.vm-menu-burger:after{background-color:hsla(0,6%,6%,.1);border-radius:50%;content:"";height:calc(100% + 12px);left:-6px;position:absolute;top:-6px;-webkit-transform:scale(0) translateZ(-2px);transform:scale(0) translateZ(-2px);transition:-webkit-transform .14s ease-in-out;transition:transform .14s ease-in-out;transition:transform .14s ease-in-out,-webkit-transform .14s ease-in-out;width:calc(100% + 12px)}.vm-menu-burger:hover:after{-webkit-transform:scale(1) translateZ(-2px);transform:scale(1) translateZ(-2px)}.vm-menu-burger span{border-top:2px solid #fff;display:block;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);transition:border-color .3s ease,-webkit-transform .3s ease;transition:transform .3s ease,border-color .3s ease;transition:transform .3s ease,border-color .3s ease,-webkit-transform .3s ease}.vm-menu-burger span,.vm-menu-burger span:after,.vm-menu-burger span:before{border-radius:6px;height:2px;left:0;position:absolute;width:100%}.vm-menu-burger span:after,.vm-menu-burger span:before{-webkit-animation-duration:.6s;animation-duration:.6s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(.645,.045,.355,1);animation-timing-function:cubic-bezier(.645,.045,.355,1);background:#fff;content:"";top:0}.vm-menu-burger span:before{-webkit-animation-name:topLineBurger;animation-name:topLineBurger}.vm-menu-burger span:after{-webkit-animation-name:bottomLineBurger;animation-name:bottomLineBurger}.vm-menu-burger_opened span{border-color:transparent}.vm-menu-burger_opened span:before{-webkit-animation-name:topLineCross;animation-name:topLineCross}.vm-menu-burger_opened span:after{-webkit-animation-name:bottomLineCross;animation-name:bottomLineCross}@-webkit-keyframes topLineCross{0%{-webkit-transform:translateY(-7px);transform:translateY(-7px)}50%{-webkit-transform:translateY(0);transform:translateY(0)}to{-webkit-transform:translateY(-2px) translateX(30%) rotate(45deg);transform:translateY(-2px) translateX(30%) rotate(45deg);width:60%}}@keyframes topLineCross{0%{-webkit-transform:translateY(-7px);transform:translateY(-7px)}50%{-webkit-transform:translateY(0);transform:translateY(0)}to{-webkit-transform:translateY(-2px) translateX(30%) rotate(45deg);transform:translateY(-2px) translateX(30%) rotate(45deg);width:60%}}@-webkit-keyframes bottomLineCross{0%{-webkit-transform:translateY(3px);transform:translateY(3px)}50%{-webkit-transform:translateY(0);transform:translateY(0)}to{-webkit-transform:translateY(-2px) translateX(30%) rotate(-45deg);transform:translateY(-2px) translateX(30%) rotate(-45deg);width:60%}}@keyframes bottomLineCross{0%{-webkit-transform:translateY(3px);transform:translateY(3px)}50%{-webkit-transform:translateY(0);transform:translateY(0)}to{-webkit-transform:translateY(-2px) translateX(30%) rotate(-45deg);transform:translateY(-2px) translateX(30%) rotate(-45deg);width:60%}}@-webkit-keyframes topLineBurger{0%{-webkit-transform:translateY(0) rotate(45deg);transform:translateY(0) rotate(45deg)}50%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:translateY(-7px) rotate(0deg);transform:translateY(-7px) rotate(0deg)}}@keyframes topLineBurger{0%{-webkit-transform:translateY(0) rotate(45deg);transform:translateY(0) rotate(45deg)}50%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:translateY(-7px) rotate(0deg);transform:translateY(-7px) rotate(0deg)}}@-webkit-keyframes bottomLineBurger{0%{-webkit-transform:translateY(0) rotate(-45deg);transform:translateY(0) rotate(-45deg)}50%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:translateY(3px) rotate(0deg);transform:translateY(3px) rotate(0deg)}}@keyframes bottomLineBurger{0%{-webkit-transform:translateY(0) rotate(-45deg);transform:translateY(0) rotate(-45deg)}50%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:translateY(3px) rotate(0deg);transform:translateY(3px) rotate(0deg)}}.vm-header-sidebar{background-color:inherit;color:inherit;height:24px;width:24px}.vm-header-sidebar-button{align-items:center;display:flex;height:51px;justify-content:center;left:0;position:absolute;top:0;transition:left .35s cubic-bezier(.28,.84,.42,1);width:51px}.vm-header-sidebar-button_open{left:149px;position:fixed;z-index:102}.vm-header-sidebar-menu{grid-gap:12px;background-color:inherit;box-shadow:var(--box-shadow-popper);display:grid;gap:12px;grid-template-rows:1fr auto;height:100%;left:0;padding:12px;position:fixed;top:0;-webkit-transform:translateX(-100%);transform:translateX(-100%);-webkit-transform-origin:left;transform-origin:left;transition:-webkit-transform .3s cubic-bezier(.28,.84,.42,1);transition:transform .3s cubic-bezier(.28,.84,.42,1);transition:transform .3s cubic-bezier(.28,.84,.42,1),-webkit-transform .3s cubic-bezier(.28,.84,.42,1);width:200px;z-index:101}.vm-header-sidebar-menu_open{-webkit-transform:translateX(0);transform:translateX(0)}.vm-header-sidebar-menu__logo{align-items:center;cursor:pointer;display:flex;justify-content:flex-start;position:relative;width:65px}.vm-header-sidebar-menu-settings{grid-gap:8px;align-items:center;display:grid;gap:8px}.vm-header-controls{align-items:center;display:flex;flex-grow:1;gap:8px;justify-content:flex-end}.vm-header-controls_mobile{display:grid;grid-template-columns:1fr;padding:0}.vm-header-controls_mobile .vm-header-button{border:none}.vm-header-controls-modal{-webkit-transform:scale(0);transform:scale(0)}.vm-header-controls-modal_open{-webkit-transform:scale(1);transform:scale(1)}.vm-container{display:flex;flex-direction:column;min-height:calc(var(--vh)*100 - var(--scrollbar-height))}.vm-container-body{background-color:var(--color-background-body);flex-grow:1;min-height:100%;padding:12px}.vm-container-body_mobile{padding:8px 0 0}@media(max-width:768px){.vm-container-body{padding:8px 0 0}}.vm-container-body_app{background-color:transparent;padding:8px 0}.vm-footer{align-items:center;background:var(--color-background-body);border-top:var(--border-divider);color:var(--color-text-secondary);display:flex;flex-wrap:wrap;gap:12px;justify-content:center;padding:12px}@media(max-width:768px){.vm-footer{gap:12px;padding:12px}}.vm-footer__link,.vm-footer__website{grid-gap:6px;align-items:center;display:grid;gap:6px;grid-template-columns:12px auto;justify-content:center}.vm-footer__website{margin-right:12px}@media(max-width:768px){.vm-footer__website{margin-right:0}}.vm-footer__link{grid-template-columns:14px auto}.vm-footer__copyright{flex-grow:1;text-align:right}@media(max-width:768px){.vm-footer__copyright{font-size:12px;text-align:center;width:100%}}.vm-server-configurator{align-items:center;display:flex;flex-direction:column;gap:12px;padding-bottom:12px;width:600px}.vm-server-configurator_mobile{align-items:flex-start;grid-auto-rows:-webkit-min-content;grid-auto-rows:min-content;height:100%;width:100%}@media(max-width:768px){.vm-server-configurator{width:100%}}.vm-server-configurator__input{width:100%}.vm-server-configurator__title{align-items:center;display:flex;font-size:14px;font-weight:700;grid-column:auto/span 2;justify-content:flex-start;margin-bottom:12px}.vm-server-configurator-footer{align-items:center;display:flex;gap:8px;justify-content:flex-end;width:100%}.vm-server-configurator_mobile .vm-server-configurator-footer{display:grid;grid-template-columns:1fr 1fr}.vm-limits-configurator-title__reset{align-items:center;display:flex;flex-grow:1;justify-content:flex-end}.vm-limits-configurator__inputs{align-items:center;display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between}.vm-limits-configurator__inputs_mobile{gap:8px}.vm-limits-configurator__inputs div{flex-grow:1}.vm-timezones-item{align-items:center;cursor:pointer;display:flex;gap:8px;justify-content:space-between}.vm-timezones-item_selected{border:var(--border-divider);border-radius:4px;padding:8px 12px}.vm-timezones-item__title{text-transform:capitalize}.vm-timezones-item__utc{align-items:center;background-color:var(--color-hover-black);border-radius:4px;display:inline-flex;justify-content:center;padding:4px}.vm-timezones-item__icon{align-items:center;display:inline-flex;justify-content:flex-end;margin:0 0 0 auto;transition:-webkit-transform .2s ease-in;transition:transform .2s ease-in;transition:transform .2s ease-in,-webkit-transform .2s ease-in}.vm-timezones-item__icon svg{width:14px}.vm-timezones-item__icon_open{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.vm-timezones-list{background-color:var(--color-background-block);border-radius:8px;max-height:300px;overflow:auto}.vm-timezones-list_mobile{max-height:calc(var(--vh)*100 - 70px)}.vm-timezones-list_mobile .vm-timezones-list-header__search{padding:0 12px}.vm-timezones-list-header{background-color:var(--color-background-block);border-bottom:var(--border-divider);position:-webkit-sticky;position:sticky;top:0;z-index:2}.vm-timezones-list-header__search{padding:8px}.vm-timezones-list-group{border-bottom:var(--border-divider);padding:8px 0}.vm-timezones-list-group:last-child{border-bottom:none}.vm-timezones-list-group__title{color:var(--color-text-secondary);font-weight:700;padding:8px 12px}.vm-timezones-list-group-options{align-items:flex-start;display:grid}.vm-timezones-list-group-options__item{padding:8px 12px;transition:background-color .2s ease}.vm-timezones-list-group-options__item:hover{background-color:hsla(0,6%,6%,.1)}.vm-theme-control__toggle{display:inline-flex;min-width:300px;text-transform:capitalize}.vm-theme-control_mobile .vm-theme-control__toggle{display:flex;min-width:100%}.vm-toggles{grid-gap:3px;display:grid;gap:3px;position:relative;width:100%}.vm-toggles__label{color:var(--color-text-secondary);font-size:12px;line-height:1;padding:0 12px}.vm-toggles-group{overflow:hidden;width:100%}.vm-toggles-group,.vm-toggles-group-item{align-items:center;display:grid;justify-content:center;position:relative}.vm-toggles-group-item{border-bottom:var(--border-divider);border-right:var(--border-divider);border-top:var(--border-divider);color:var(--color-text-secondary);cursor:pointer;font-size:12px;font-weight:700;padding:8px;text-align:center;transition:color .15s ease-in;-webkit-user-select:none;user-select:none;z-index:2}.vm-toggles-group-item_first{border-left:var(--border-divider);border-radius:16px 0 0 16px}.vm-toggles-group-item:last-child{border-left:none;border-radius:0 16px 16px 0}.vm-toggles-group-item_icon{gap:4px;grid-template-columns:14px auto}.vm-toggles-group-item:hover{color:var(--color-primary)}.vm-toggles-group-item_active{border-color:transparent;color:var(--color-primary)}.vm-toggles-group-item_active:hover{background-color:transparent}.vm-toggles-group__highlight{background-color:rgba(var(--color-primary),.08);border:1px solid var(--color-primary);height:100%;position:absolute;top:0;transition:left .2s cubic-bezier(.28,.84,.42,1),border-radius .2s linear;z-index:1}#root,body,html{background-attachment:fixed;background-color:#fefeff;background-color:var(--color-background-body);background-repeat:no-repeat;color:#110f0f;color:var(--color-text);cursor:default;font-family:system-ui;font-size:14px;margin:0;min-height:100%}body{overflow:auto}*{-webkit-tap-highlight-color:rgba(0,0,0,0);cursor:inherit;font:inherit;touch-action:pan-x pan-y}code{font-family:monospace}b{font-weight:700}input,textarea{cursor:text}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{-webkit-user-select:none;user-select:none}input::placeholder,textarea::placeholder{-webkit-user-select:none;user-select:none}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.vm-snackbar{-webkit-animation:vm-slide-snackbar .15s cubic-bezier(.28,.84,.42,1.1);animation:vm-slide-snackbar .15s cubic-bezier(.28,.84,.42,1.1);bottom:12px;left:12px;position:fixed;z-index:999}.vm-snackbar-content{align-items:center;display:grid;grid-template-columns:1fr auto}.vm-snackbar-content__close{color:inherit;height:24px;opacity:.8;padding:4px;width:24px}.vm-snackbar_mobile{bottom:0;left:0;right:0}@-webkit-keyframes vm-slide-snackbar{0%{-webkit-transform:translateY(100%);transform:translateY(100%)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes vm-slide-snackbar{0%{-webkit-transform:translateY(100%);transform:translateY(100%)}to{-webkit-transform:translateY(0);transform:translateY(0)}}svg{width:100%}*{scrollbar-color:#a09f9f #fff;scrollbar-color:var(--color-text-disabled) var(--color-background-block);scrollbar-width:thin}::-webkit-scrollbar{width:12px}::-webkit-scrollbar-track{background:#fff;background:var(--color-background-block)}::-webkit-scrollbar-thumb{background-color:#a09f9f;background-color:var(--color-text-disabled);border:3px solid #fff;border:3px solid var(--color-background-block);border-radius:20px}a,abbr,acronym,address,applet,article,aside,audio,big,body,canvas,caption,center,cite,code,del,details,dfn,div,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{border:0;margin:0;padding:0;vertical-align:initial}h1,h2,h3,h4,h5,h6{font-weight:400}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}q:after,q:before{content:""}table{border-collapse:collapse;border-spacing:0}input::-webkit-input-placeholder{opacity:1;-webkit-transition:opacity .3s ease;transition:opacity .3s ease}input::placeholder{opacity:1;transition:opacity .3s ease}input:focus::-webkit-input-placeholder{opacity:0;-webkit-transition:opacity .3s ease;transition:opacity .3s ease}input:focus::placeholder{opacity:0;transition:opacity .3s ease}*{box-sizing:border-box;outline:none}button{background:none;border:none;border-radius:0;padding:0}strong{letter-spacing:1px}input[type=file]{cursor:pointer;font-size:0;height:100%;left:0;opacity:0;position:absolute;top:0;width:100%}input[type=file]:disabled{cursor:not-allowed}a{color:inherit;text-decoration:inherit}input,textarea{-webkit-text-fill-color:inherit;appearance:none;-webkit-appearance:none}input:disabled,textarea:disabled{opacity:1!important}input:placeholder-shown,textarea:placeholder-shown{width:100%}input:-webkit-autofill,input:-webkit-autofill:active,input:-webkit-autofill:focus,input:-webkit-autofill:hover{-webkit-box-shadow:inset 0 0 0 0 #fff!important;width:100%;z-index:2}.vm-header-button{border:1px solid hsla(0,6%,6%,.2)}.vm-list-item{background-color:transparent;cursor:pointer;padding:12px;transition:background-color .2s ease}.vm-list-item_mobile{padding:12px}.vm-list-item:hover,.vm-list-item_active{background-color:rgba(0,0,0,.06);background-color:var(--color-hover-black)}.vm-list-item_multiselect{grid-gap:8px;align-items:center;display:grid;gap:8px;grid-template-columns:10px 1fr;justify-content:flex-start}.vm-list-item_multiselect svg{-webkit-animation:vm-scale .15s cubic-bezier(.28,.84,.42,1);animation:vm-scale .15s cubic-bezier(.28,.84,.42,1)}.vm-list-item_multiselect span{grid-column:2}.vm-list-item_multiselect_selected{color:#3f51b5;color:var(--color-primary)}.vm-list-item_with-icon{grid-gap:4px;display:grid;gap:4px;grid-template-columns:14px 1fr}.vm-list-item_with-icon,.vm-mobile-option{align-items:center;justify-content:flex-start}.vm-mobile-option{display:flex;gap:8px;padding:6px 0;-webkit-user-select:none;user-select:none;width:100%}.vm-mobile-option__arrow,.vm-mobile-option__icon{align-items:center;display:flex;justify-content:center}.vm-mobile-option__icon{color:#3f51b5;color:var(--color-primary);height:22px;width:22px}.vm-mobile-option__arrow{color:#3f51b5;color:var(--color-primary);height:14px;-webkit-transform:rotate(-90deg);transform:rotate(-90deg);width:14px}.vm-mobile-option-text{grid-gap:2px;align-items:center;display:grid;flex-grow:1;gap:2px}.vm-mobile-option-text__label{font-weight:700}.vm-mobile-option-text__value{color:#706f6f;color:var(--color-text-secondary);font-size:12px}.vm-block{background-color:#fff;background-color:var(--color-background-block);border-radius:8px;box-shadow:1px 2px 6px rgba(0,0,0,.08);box-shadow:var(--box-shadow);padding:12px}.vm-block_mobile{border-radius:0;padding:12px}.vm-block_empty-padding{padding:0}.vm-section-header{align-items:center;border-bottom:1px solid rgba(0,0,0,.15);border-bottom:var(--border-divider);border-radius:8px 8px 0 0;display:grid;grid-template-columns:1fr auto;justify-content:center;padding:0 12px}.vm-section-header__title{font-size:14px;font-weight:700}.vm-section-header__title_mobile{-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;text-overflow:ellipsis}.vm-section-header__tabs{align-items:center;display:flex;font-size:12px;justify-content:flex-start}.vm-table{border-collapse:initial;border-spacing:0;margin-top:-12px;width:100%}.vm-table,.vm-table__row{background-color:#fff;background-color:var(--color-background-block)}.vm-table__row{transition:background-color .2s ease}.vm-table__row:hover:not(.vm-table__row_header){background-color:rgba(0,0,0,.06);background-color:var(--color-hover-black)}.vm-table__row_header{position:relative;z-index:2}.vm-table__row_selected{background-color:rgba(26,144,255,.05)}.vm-table-cell{border-bottom:1px solid rgba(0,0,0,.15);border-bottom:var(--border-divider);line-height:1.5;overflow-wrap:anywhere;padding:4px;vertical-align:top}.vm-table-cell__content{align-items:center;display:flex;justify-content:flex-start}.vm-table-cell_sort{cursor:pointer}.vm-table-cell_sort:hover{background-color:rgba(0,0,0,.06);background-color:var(--color-hover-black)}.vm-table-cell_header{font-weight:700;overflow-wrap:normal;text-align:left}.vm-table-cell_gray{color:#110f0f;color:var(--color-text);opacity:.4}.vm-table-cell_right{text-align:right}.vm-table-cell_right .vm-table-cell__content{justify-content:flex-end}.vm-table-cell_no-wrap{white-space:nowrap}.vm-table-cell_no-padding{padding:0}.vm-table-cell_pre{white-space:pre-wrap}.vm-table-cell_logs-time{overflow-wrap:normal;white-space:pre}.vm-table-cell_logs{font-family:monospace;line-height:1.2}.vm-table__sort-icon{align-items:center;display:flex;justify-content:center;margin:0 8px;opacity:.4;transition:opacity .2s ease,-webkit-transform .2s ease-in-out;transition:opacity .2s ease,transform .2s ease-in-out;transition:opacity .2s ease,transform .2s ease-in-out,-webkit-transform .2s ease-in-out;width:15px}.vm-table__sort-icon_active{opacity:1}.vm-table__sort-icon_desc{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.vm-link{cursor:pointer;transition:color .2s ease}.vm-link_colored{color:#3f51b5;color:var(--color-primary)}.vm-link_underlined{text-decoration:underline}.vm-link_with-icon{grid-gap:6px;align-items:center;display:grid;gap:6px;grid-template-columns:14px auto;justify-content:center}.vm-link:hover{color:#3f51b5;color:var(--color-primary);text-decoration:underline}.vm-dynamic-number{color:#a09f9f;color:var(--color-text-disabled);font-size:12px}.vm-dynamic-number_positive{color:#4caf50;color:var(--color-success)}.vm-dynamic-number_negative{color:#fd080e;color:var(--color-error)}.vm-dynamic-number_down:before{content:"↓"}.vm-dynamic-number_up:before{content:"↑"}:root{--color-primary:#3f51b5;--color-secondary:#e91e63;--color-error:#fd080e;--color-warning:#ff8308;--color-info:#03a9f4;--color-success:#4caf50;--color-primary-text:#fff;--color-secondary-text:#fff;--color-error-text:#fff;--color-warning-text:#fff;--color-info-text:#fff;--color-success-text:#fff;--color-background-body:#fefeff;--color-background-block:#fff;--color-background-tooltip:rgba(80,80,80,.9);--color-text:#110f0f;--color-text-secondary:#706f6f;--color-text-disabled:#a09f9f;--box-shadow:rgba(0,0,0,.08) 1px 2px 6px;--box-shadow-popper:rgba(0,0,0,.1) 0px 2px 8px 0px;--border-divider:1px solid rgba(0,0,0,.15);--color-hover-black:rgba(0,0,0,.06)} \ No newline at end of file diff --git a/app/vlselect/vmui/static/js/main.02178f4b.js b/app/vlselect/vmui/static/js/main.02178f4b.js new file mode 100644 index 000000000..27f2c0127 --- /dev/null +++ b/app/vlselect/vmui/static/js/main.02178f4b.js @@ -0,0 +1,2 @@ +/*! For license information please see main.02178f4b.js.LICENSE.txt */ +!function(){var e={680:function(e,t,n){"use strict";var r=n(476),i=n(962),o=i(r("String.prototype.indexOf"));e.exports=function(e,t){var n=r(e,!!t);return"function"===typeof n&&o(e,".prototype.")>-1?i(n):n}},962:function(e,t,n){"use strict";var r=n(199),i=n(476),o=i("%Function.prototype.apply%"),a=i("%Function.prototype.call%"),u=i("%Reflect.apply%",!0)||r.call(a,o),l=i("%Object.getOwnPropertyDescriptor%",!0),c=i("%Object.defineProperty%",!0),s=i("%Math.max%");if(c)try{c({},"a",{value:1})}catch(p){c=null}e.exports=function(e){var t=u(r,a,arguments);l&&c&&(l(t,"length").configurable&&c(t,"length",{value:1+s(0,e.length-(arguments.length-1))}));return t};var f=function(){return u(r,o,arguments)};c?c(e.exports,"apply",{value:f}):e.exports.apply=f},123:function(e,t){var n;!function(){"use strict";var r={}.hasOwnProperty;function i(){for(var e=[],t=0;t=t?e:""+Array(t+1-r.length).join(n)+e},y={s:g,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),r=Math.floor(n/60),i=n%60;return(t<=0?"+":"-")+g(r,2,"0")+":"+g(i,2,"0")},m:function e(t,n){if(t.date()1)return e(a[0])}else{var u=t.name;b[u]=t,i=u}return!r&&i&&(_=i),i||!r&&_},A=function(e,t){if(D(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new x(n)},k=y;k.l=w,k.i=D,k.w=function(e,t){return A(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var x=function(){function m(e){this.$L=w(e.locale,null,!0),this.parse(e)}var g=m.prototype;return g.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(k.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var r=t.match(h);if(r){var i=r[2]-1||0,o=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,o)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,o)}}return new Date(t)}(e),this.$x=e.x||{},this.init()},g.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},g.$utils=function(){return k},g.isValid=function(){return!(this.$d.toString()===d)},g.isSame=function(e,t){var n=A(e);return this.startOf(t)<=n&&n<=this.endOf(t)},g.isAfter=function(e,t){return A(e)=0&&(o[f]=parseInt(s,10))}var p=o[3],d=24===p?0:p,h=o[0]+"-"+o[1]+"-"+o[2]+" "+d+":"+o[4]+":"+o[5]+":000",v=+t;return(i.utc(h).valueOf()-(v-=v%1e3))/6e4},l=r.prototype;l.tz=function(e,t){void 0===e&&(e=o);var n=this.utcOffset(),r=this.toDate(),a=r.toLocaleString("en-US",{timeZone:e}),u=Math.round((r-new Date(a))/1e3/60),l=i(a).$set("millisecond",this.$ms).utcOffset(15*-Math.round(r.getTimezoneOffset()/15)-u,!0);if(t){var c=l.utcOffset();l=l.add(n-c,"minute")}return l.$x.$timezone=e,l},l.offsetName=function(e){var t=this.$x.$timezone||i.tz.guess(),n=a(this.valueOf(),t,{timeZoneName:e}).find((function(e){return"timezonename"===e.type.toLowerCase()}));return n&&n.value};var c=l.startOf;l.startOf=function(e,t){if(!this.$x||!this.$x.$timezone)return c.call(this,e,t);var n=i(this.format("YYYY-MM-DD HH:mm:ss:SSS"));return c.call(n,e,t).tz(this.$x.$timezone,!0)},i.tz=function(e,t,n){var r=n&&t,a=n||t||o,l=u(+i(),a);if("string"!=typeof e)return i(e).tz(a);var c=function(e,t,n){var r=e-60*t*1e3,i=u(r,n);if(t===i)return[r,t];var o=u(r-=60*(i-t)*1e3,n);return i===o?[r,i]:[e-60*Math.min(i,o)*1e3,Math.max(i,o)]}(i.utc(e,r).valueOf(),l,a),s=c[0],f=c[1],p=i(s).utcOffset(f);return p.$x.$timezone=a,p},i.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},i.tz.setDefault=function(e){o=e}}}()},635:function(e){e.exports=function(){"use strict";var e="minute",t=/[+-]\d\d(?::?\d\d)?/g,n=/([+-]|\d\d)/g;return function(r,i,o){var a=i.prototype;o.utc=function(e){return new i({date:e,utc:!0,args:arguments})},a.utc=function(t){var n=o(this.toDate(),{locale:this.$L,utc:!0});return t?n.add(this.utcOffset(),e):n},a.local=function(){return o(this.toDate(),{locale:this.$L,utc:!1})};var u=a.parse;a.parse=function(e){e.utc&&(this.$u=!0),this.$utils().u(e.$offset)||(this.$offset=e.$offset),u.call(this,e)};var l=a.init;a.init=function(){if(this.$u){var e=this.$d;this.$y=e.getUTCFullYear(),this.$M=e.getUTCMonth(),this.$D=e.getUTCDate(),this.$W=e.getUTCDay(),this.$H=e.getUTCHours(),this.$m=e.getUTCMinutes(),this.$s=e.getUTCSeconds(),this.$ms=e.getUTCMilliseconds()}else l.call(this)};var c=a.utcOffset;a.utcOffset=function(r,i){var o=this.$utils().u;if(o(r))return this.$u?0:o(this.$offset)?c.call(this):this.$offset;if("string"==typeof r&&(r=function(e){void 0===e&&(e="");var r=e.match(t);if(!r)return null;var i=(""+r[0]).match(n)||["-",0,0],o=i[0],a=60*+i[1]+ +i[2];return 0===a?0:"+"===o?a:-a}(r),null===r))return this;var a=Math.abs(r)<=16?60*r:r,u=this;if(i)return u.$offset=a,u.$u=0===r,u;if(0!==r){var l=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(u=this.local().add(a+l,e)).$offset=a,u.$x.$localOffset=l}else u=this.utc();return u};var s=a.format;a.format=function(e){var t=e||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return s.call(this,t)},a.valueOf=function(){var e=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*e},a.isUTC=function(){return!!this.$u},a.toISOString=function(){return this.toDate().toISOString()},a.toString=function(){return this.toDate().toUTCString()};var f=a.toDate;a.toDate=function(e){return"s"===e&&this.$offset?o(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():f.call(this)};var p=a.diff;a.diff=function(e,t,n){if(e&&this.$u===e.$u)return p.call(this,e,t,n);var r=this.local(),i=o(e).local();return p.call(r,i,t,n)}}}()},781:function(e){"use strict";var t=Array.prototype.slice,n=Object.prototype.toString;e.exports=function(e){var r=this;if("function"!==typeof r||"[object Function]"!==n.call(r))throw new TypeError("Function.prototype.bind called on incompatible "+r);for(var i,o=t.call(arguments,1),a=Math.max(0,r.length-o.length),u=[],l=0;l1&&"boolean"!==typeof t)throw new a('"allowMissing" argument must be a boolean');if(null===E(/^%?[^%]*%?$/,e))throw new i("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var n=function(e){var t=x(e,0,1),n=x(e,-1);if("%"===t&&"%"!==n)throw new i("invalid intrinsic syntax, expected closing `%`");if("%"===n&&"%"!==t)throw new i("invalid intrinsic syntax, expected opening `%`");var r=[];return k(e,C,(function(e,t,n,i){r[r.length]=n?k(i,S,"$1"):t||e})),r}(e),r=n.length>0?n[0]:"",o=F("%"+r+"%",t),u=o.name,c=o.value,s=!1,f=o.alias;f&&(r=f[0],A(n,w([0,1],f)));for(var p=1,d=!0;p=n.length){var y=l(c,h);c=(d=!!y)&&"get"in y&&!("originalValue"in y.get)?y.get:c[h]}else d=D(c,h),c=c[h];d&&!s&&(m[u]=c)}}return c}},593:function(e){"use strict";var t={foo:{}},n=Object;e.exports=function(){return{__proto__:t}.foo===t.foo&&!({__proto__:null}instanceof n)}},520:function(e,t,n){"use strict";var r="undefined"!==typeof Symbol&&Symbol,i=n(541);e.exports=function(){return"function"===typeof r&&("function"===typeof Symbol&&("symbol"===typeof r("foo")&&("symbol"===typeof Symbol("bar")&&i())))}},541:function(e){"use strict";e.exports=function(){if("function"!==typeof Symbol||"function"!==typeof Object.getOwnPropertySymbols)return!1;if("symbol"===typeof Symbol.iterator)return!0;var e={},t=Symbol("test"),n=Object(t);if("string"===typeof t)return!1;if("[object Symbol]"!==Object.prototype.toString.call(t))return!1;if("[object Symbol]"!==Object.prototype.toString.call(n))return!1;for(t in e[t]=42,e)return!1;if("function"===typeof Object.keys&&0!==Object.keys(e).length)return!1;if("function"===typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;var r=Object.getOwnPropertySymbols(e);if(1!==r.length||r[0]!==t)return!1;if(!Object.prototype.propertyIsEnumerable.call(e,t))return!1;if("function"===typeof Object.getOwnPropertyDescriptor){var i=Object.getOwnPropertyDescriptor(e,t);if(42!==i.value||!0!==i.enumerable)return!1}return!0}},838:function(e,t,n){"use strict";var r=n(199);e.exports=r.call(Function.call,Object.prototype.hasOwnProperty)},7:function(e,t,n){var r="__lodash_hash_undefined__",i=1/0,o="[object Function]",a="[object GeneratorFunction]",u="[object Symbol]",l=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,c=/^\w*$/,s=/^\./,f=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,p=/\\(\\)?/g,d=/^\[object .+?Constructor\]$/,h="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,v="object"==typeof self&&self&&self.Object===Object&&self,m=h||v||Function("return this")();var g=Array.prototype,y=Function.prototype,_=Object.prototype,b=m["__core-js_shared__"],D=function(){var e=/[^.]+$/.exec(b&&b.keys&&b.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}(),w=y.toString,A=_.hasOwnProperty,k=_.toString,x=RegExp("^"+w.call(A).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),E=m.Symbol,C=g.splice,S=I(m,"Map"),F=I(Object,"create"),M=E?E.prototype:void 0,O=M?M.toString:void 0;function T(e){var t=-1,n=e?e.length:0;for(this.clear();++t-1},B.prototype.set=function(e,t){var n=this.__data__,r=N(n,e);return r<0?n.push([e,t]):n[r][1]=t,this},P.prototype.clear=function(){this.__data__={hash:new T,map:new(S||B),string:new T}},P.prototype.delete=function(e){return R(this,e).delete(e)},P.prototype.get=function(e){return R(this,e).get(e)},P.prototype.has=function(e){return R(this,e).has(e)},P.prototype.set=function(e,t){return R(this,e).set(e,t),this};var j=H((function(e){var t;e=null==(t=e)?"":function(e){if("string"==typeof e)return e;if(W(e))return O?O.call(e):"";var t=e+"";return"0"==t&&1/e==-i?"-0":t}(t);var n=[];return s.test(e)&&n.push(""),e.replace(f,(function(e,t,r,i){n.push(r?i.replace(p,"$1"):t||e)})),n}));function z(e){if("string"==typeof e||W(e))return e;var t=e+"";return"0"==t&&1/e==-i?"-0":t}function H(e,t){if("function"!=typeof e||t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function n(){var r=arguments,i=t?t.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var a=e.apply(this,r);return n.cache=o.set(i,a),a};return n.cache=new(H.Cache||P),n}H.Cache=P;var U=Array.isArray;function V(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function W(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&k.call(e)==u}e.exports=function(e,t,n){var r=null==e?void 0:L(e,t);return void 0===r?n:r}},154:function(e,t,n){var r="function"===typeof Map&&Map.prototype,i=Object.getOwnPropertyDescriptor&&r?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,o=r&&i&&"function"===typeof i.get?i.get:null,a=r&&Map.prototype.forEach,u="function"===typeof Set&&Set.prototype,l=Object.getOwnPropertyDescriptor&&u?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,c=u&&l&&"function"===typeof l.get?l.get:null,s=u&&Set.prototype.forEach,f="function"===typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,p="function"===typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,d="function"===typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,h=Boolean.prototype.valueOf,v=Object.prototype.toString,m=Function.prototype.toString,g=String.prototype.match,y=String.prototype.slice,_=String.prototype.replace,b=String.prototype.toUpperCase,D=String.prototype.toLowerCase,w=RegExp.prototype.test,A=Array.prototype.concat,k=Array.prototype.join,x=Array.prototype.slice,E=Math.floor,C="function"===typeof BigInt?BigInt.prototype.valueOf:null,S=Object.getOwnPropertySymbols,F="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?Symbol.prototype.toString:null,M="function"===typeof Symbol&&"object"===typeof Symbol.iterator,O="function"===typeof Symbol&&Symbol.toStringTag&&(typeof Symbol.toStringTag===M||"symbol")?Symbol.toStringTag:null,T=Object.prototype.propertyIsEnumerable,B=("function"===typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(e){return e.__proto__}:null);function P(e,t){if(e===1/0||e===-1/0||e!==e||e&&e>-1e3&&e<1e3||w.call(/e/,t))return t;var n=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"===typeof e){var r=e<0?-E(-e):E(e);if(r!==e){var i=String(r),o=y.call(t,i.length+1);return _.call(i,n,"$&_")+"."+_.call(_.call(o,/([0-9]{3})/g,"$&_"),/_$/,"")}}return _.call(t,n,"$&_")}var N=n(654),L=N.custom,$=H(L)?L:null;function R(e,t,n){var r="double"===(n.quoteStyle||t)?'"':"'";return r+e+r}function I(e){return _.call(String(e),/"/g,""")}function j(e){return"[object Array]"===W(e)&&(!O||!("object"===typeof e&&O in e))}function z(e){return"[object RegExp]"===W(e)&&(!O||!("object"===typeof e&&O in e))}function H(e){if(M)return e&&"object"===typeof e&&e instanceof Symbol;if("symbol"===typeof e)return!0;if(!e||"object"!==typeof e||!F)return!1;try{return F.call(e),!0}catch(t){}return!1}e.exports=function e(t,n,r,i){var u=n||{};if(V(u,"quoteStyle")&&"single"!==u.quoteStyle&&"double"!==u.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(V(u,"maxStringLength")&&("number"===typeof u.maxStringLength?u.maxStringLength<0&&u.maxStringLength!==1/0:null!==u.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var l=!V(u,"customInspect")||u.customInspect;if("boolean"!==typeof l&&"symbol"!==l)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(V(u,"indent")&&null!==u.indent&&"\t"!==u.indent&&!(parseInt(u.indent,10)===u.indent&&u.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(V(u,"numericSeparator")&&"boolean"!==typeof u.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var v=u.numericSeparator;if("undefined"===typeof t)return"undefined";if(null===t)return"null";if("boolean"===typeof t)return t?"true":"false";if("string"===typeof t)return Y(t,u);if("number"===typeof t){if(0===t)return 1/0/t>0?"0":"-0";var b=String(t);return v?P(t,b):b}if("bigint"===typeof t){var w=String(t)+"n";return v?P(t,w):w}var E="undefined"===typeof u.depth?5:u.depth;if("undefined"===typeof r&&(r=0),r>=E&&E>0&&"object"===typeof t)return j(t)?"[Array]":"[Object]";var S=function(e,t){var n;if("\t"===e.indent)n="\t";else{if(!("number"===typeof e.indent&&e.indent>0))return null;n=k.call(Array(e.indent+1)," ")}return{base:n,prev:k.call(Array(t+1),n)}}(u,r);if("undefined"===typeof i)i=[];else if(Z(i,t)>=0)return"[Circular]";function L(t,n,o){if(n&&(i=x.call(i)).push(n),o){var a={depth:u.depth};return V(u,"quoteStyle")&&(a.quoteStyle=u.quoteStyle),e(t,a,r+1,i)}return e(t,u,r+1,i)}if("function"===typeof t&&!z(t)){var U=function(e){if(e.name)return e.name;var t=g.call(m.call(e),/^function\s*([\w$]+)/);if(t)return t[1];return null}(t),q=X(t,L);return"[Function"+(U?": "+U:" (anonymous)")+"]"+(q.length>0?" { "+k.call(q,", ")+" }":"")}if(H(t)){var ee=M?_.call(String(t),/^(Symbol\(.*\))_[^)]*$/,"$1"):F.call(t);return"object"!==typeof t||M?ee:G(ee)}if(function(e){if(!e||"object"!==typeof e)return!1;if("undefined"!==typeof HTMLElement&&e instanceof HTMLElement)return!0;return"string"===typeof e.nodeName&&"function"===typeof e.getAttribute}(t)){for(var te="<"+D.call(String(t.nodeName)),ne=t.attributes||[],re=0;re"}if(j(t)){if(0===t.length)return"[]";var ie=X(t,L);return S&&!function(e){for(var t=0;t=0)return!1;return!0}(ie)?"["+K(ie,S)+"]":"[ "+k.call(ie,", ")+" ]"}if(function(e){return"[object Error]"===W(e)&&(!O||!("object"===typeof e&&O in e))}(t)){var oe=X(t,L);return"cause"in Error.prototype||!("cause"in t)||T.call(t,"cause")?0===oe.length?"["+String(t)+"]":"{ ["+String(t)+"] "+k.call(oe,", ")+" }":"{ ["+String(t)+"] "+k.call(A.call("[cause]: "+L(t.cause),oe),", ")+" }"}if("object"===typeof t&&l){if($&&"function"===typeof t[$]&&N)return N(t,{depth:E-r});if("symbol"!==l&&"function"===typeof t.inspect)return t.inspect()}if(function(e){if(!o||!e||"object"!==typeof e)return!1;try{o.call(e);try{c.call(e)}catch(te){return!0}return e instanceof Map}catch(t){}return!1}(t)){var ae=[];return a&&a.call(t,(function(e,n){ae.push(L(n,t,!0)+" => "+L(e,t))})),J("Map",o.call(t),ae,S)}if(function(e){if(!c||!e||"object"!==typeof e)return!1;try{c.call(e);try{o.call(e)}catch(t){return!0}return e instanceof Set}catch(n){}return!1}(t)){var ue=[];return s&&s.call(t,(function(e){ue.push(L(e,t))})),J("Set",c.call(t),ue,S)}if(function(e){if(!f||!e||"object"!==typeof e)return!1;try{f.call(e,f);try{p.call(e,p)}catch(te){return!0}return e instanceof WeakMap}catch(t){}return!1}(t))return Q("WeakMap");if(function(e){if(!p||!e||"object"!==typeof e)return!1;try{p.call(e,p);try{f.call(e,f)}catch(te){return!0}return e instanceof WeakSet}catch(t){}return!1}(t))return Q("WeakSet");if(function(e){if(!d||!e||"object"!==typeof e)return!1;try{return d.call(e),!0}catch(t){}return!1}(t))return Q("WeakRef");if(function(e){return"[object Number]"===W(e)&&(!O||!("object"===typeof e&&O in e))}(t))return G(L(Number(t)));if(function(e){if(!e||"object"!==typeof e||!C)return!1;try{return C.call(e),!0}catch(t){}return!1}(t))return G(L(C.call(t)));if(function(e){return"[object Boolean]"===W(e)&&(!O||!("object"===typeof e&&O in e))}(t))return G(h.call(t));if(function(e){return"[object String]"===W(e)&&(!O||!("object"===typeof e&&O in e))}(t))return G(L(String(t)));if(!function(e){return"[object Date]"===W(e)&&(!O||!("object"===typeof e&&O in e))}(t)&&!z(t)){var le=X(t,L),ce=B?B(t)===Object.prototype:t instanceof Object||t.constructor===Object,se=t instanceof Object?"":"null prototype",fe=!ce&&O&&Object(t)===t&&O in t?y.call(W(t),8,-1):se?"Object":"",pe=(ce||"function"!==typeof t.constructor?"":t.constructor.name?t.constructor.name+" ":"")+(fe||se?"["+k.call(A.call([],fe||[],se||[]),": ")+"] ":"");return 0===le.length?pe+"{}":S?pe+"{"+K(le,S)+"}":pe+"{ "+k.call(le,", ")+" }"}return String(t)};var U=Object.prototype.hasOwnProperty||function(e){return e in this};function V(e,t){return U.call(e,t)}function W(e){return v.call(e)}function Z(e,t){if(e.indexOf)return e.indexOf(t);for(var n=0,r=e.length;nt.maxStringLength){var n=e.length-t.maxStringLength,r="... "+n+" more character"+(n>1?"s":"");return Y(y.call(e,0,t.maxStringLength),t)+r}return R(_.call(_.call(e,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,q),"single",t)}function q(e){var t=e.charCodeAt(0),n={8:"b",9:"t",10:"n",12:"f",13:"r"}[t];return n?"\\"+n:"\\x"+(t<16?"0":"")+b.call(t.toString(16))}function G(e){return"Object("+e+")"}function Q(e){return e+" { ? }"}function J(e,t,n,r){return e+" ("+t+") {"+(r?K(n,r):k.call(n,", "))+"}"}function K(e,t){if(0===e.length)return"";var n="\n"+t.prev+t.base;return n+k.call(e,","+n)+"\n"+t.prev}function X(e,t){var n=j(e),r=[];if(n){r.length=e.length;for(var i=0;i-1?e.split(","):e},c=function(e,t,n,r){if(e){var o=n.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,a=/(\[[^[\]]*])/g,u=n.depth>0&&/(\[[^[\]]*])/.exec(o),c=u?o.slice(0,u.index):o,s=[];if(c){if(!n.plainObjects&&i.call(Object.prototype,c)&&!n.allowPrototypes)return;s.push(c)}for(var f=0;n.depth>0&&null!==(u=a.exec(o))&&f=0;--o){var a,u=e[o];if("[]"===u&&n.parseArrays)a=[].concat(i);else{a=n.plainObjects?Object.create(null):{};var c="["===u.charAt(0)&&"]"===u.charAt(u.length-1)?u.slice(1,-1):u,s=parseInt(c,10);n.parseArrays||""!==c?!isNaN(s)&&u!==c&&String(s)===c&&s>=0&&n.parseArrays&&s<=n.arrayLimit?(a=[])[s]=i:"__proto__"!==c&&(a[c]=i):a={0:i}}i=a}return i}(s,t,n,r)}};e.exports=function(e,t){var n=function(e){if(!e)return a;if(null!==e.decoder&&void 0!==e.decoder&&"function"!==typeof e.decoder)throw new TypeError("Decoder has to be a function.");if("undefined"!==typeof e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var t="undefined"===typeof e.charset?a.charset:e.charset;return{allowDots:"undefined"===typeof e.allowDots?a.allowDots:!!e.allowDots,allowPrototypes:"boolean"===typeof e.allowPrototypes?e.allowPrototypes:a.allowPrototypes,allowSparse:"boolean"===typeof e.allowSparse?e.allowSparse:a.allowSparse,arrayLimit:"number"===typeof e.arrayLimit?e.arrayLimit:a.arrayLimit,charset:t,charsetSentinel:"boolean"===typeof e.charsetSentinel?e.charsetSentinel:a.charsetSentinel,comma:"boolean"===typeof e.comma?e.comma:a.comma,decoder:"function"===typeof e.decoder?e.decoder:a.decoder,delimiter:"string"===typeof e.delimiter||r.isRegExp(e.delimiter)?e.delimiter:a.delimiter,depth:"number"===typeof e.depth||!1===e.depth?+e.depth:a.depth,ignoreQueryPrefix:!0===e.ignoreQueryPrefix,interpretNumericEntities:"boolean"===typeof e.interpretNumericEntities?e.interpretNumericEntities:a.interpretNumericEntities,parameterLimit:"number"===typeof e.parameterLimit?e.parameterLimit:a.parameterLimit,parseArrays:!1!==e.parseArrays,plainObjects:"boolean"===typeof e.plainObjects?e.plainObjects:a.plainObjects,strictNullHandling:"boolean"===typeof e.strictNullHandling?e.strictNullHandling:a.strictNullHandling}}(t);if(""===e||null===e||"undefined"===typeof e)return n.plainObjects?Object.create(null):{};for(var s="string"===typeof e?function(e,t){var n,c={__proto__:null},s=t.ignoreQueryPrefix?e.replace(/^\?/,""):e,f=t.parameterLimit===1/0?void 0:t.parameterLimit,p=s.split(t.delimiter,f),d=-1,h=t.charset;if(t.charsetSentinel)for(n=0;n-1&&(m=o(m)?[m]:m),i.call(c,v)?c[v]=r.combine(c[v],m):c[v]=m}return c}(e,n):e,f=n.plainObjects?Object.create(null):{},p=Object.keys(s),d=0;d0?k.join(",")||null:void 0}];else if(l(p))F=p;else{var O=Object.keys(k);F=v?O.sort(v):O}for(var T=a&&l(k)&&1===k.length?n+"[]":n,B=0;B0?D+b:""}},837:function(e,t,n){"use strict";var r=n(609),i=Object.prototype.hasOwnProperty,o=Array.isArray,a=function(){for(var e=[],t=0;t<256;++t)e.push("%"+((t<16?"0":"")+t.toString(16)).toUpperCase());return e}(),u=function(e,t){for(var n=t&&t.plainObjects?Object.create(null):{},r=0;r1;){var t=e.pop(),n=t.obj[t.prop];if(o(n)){for(var r=[],i=0;i=48&&s<=57||s>=65&&s<=90||s>=97&&s<=122||o===r.RFC1738&&(40===s||41===s)?l+=u.charAt(c):s<128?l+=a[s]:s<2048?l+=a[192|s>>6]+a[128|63&s]:s<55296||s>=57344?l+=a[224|s>>12]+a[128|s>>6&63]+a[128|63&s]:(c+=1,s=65536+((1023&s)<<10|1023&u.charCodeAt(c)),l+=a[240|s>>18]+a[128|s>>12&63]+a[128|s>>6&63]+a[128|63&s])}return l},isBuffer:function(e){return!(!e||"object"!==typeof e)&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},maybeMap:function(e,t){if(o(e)){for(var n=[],r=0;r2&&(u.children=arguments.length>3?t.call(arguments,2):r),"function"==typeof e&&null!=e.defaultProps)for(a in e.defaultProps)void 0===u[a]&&(u[a]=e.defaultProps[a]);return g(e,u,i,o,null)}function g(e,t,n,o,a){var u={type:e,props:t,key:n,ref:o,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==a?++i:a};return null==a&&null!=r.vnode&&r.vnode(u),u}function y(){return{current:null}}function _(e){return e.children}function b(e,t){this.props=e,this.context=t}function D(e,t){if(null==t)return e.__?D(e.__,e.__.__k.indexOf(e)+1):null;for(var n;tt&&o.sort(l));k.__r=0}function x(e,t,n,r,i,o,a,u,l,c,p){var h,v,m,y,b,D,w,A,k,x,C=0,M=r&&r.__k||f,O=M.length,T=O,B=t.length;for(n.__k=[],h=0;h0?g(y.type,y.props,y.key,y.ref?y.ref:null,y.__v):y)&&(y.__=n,y.__b=n.__b+1,-1===(A=F(y,M,w=h+C,T))?m=s:(m=M[A]||s,M[A]=void 0,T--),P(e,y,m,i,o,a,u,l,c,p),b=y.__e,(v=y.ref)&&m.ref!=v&&(m.ref&&$(m.ref,null,y),p.push(v,y.__c||b,y)),null!=b&&(null==D&&(D=b),x=!(k=m===s||null===m.__v)&&A===w,k?-1==A&&C--:A!==w&&(A===w+1?(C++,x=!0):A>w?T>B-w?(C+=A-w,x=!0):C--:C=A(null!=l?1:0))for(;a>=0||u=0){if((l=t[a])&&i==l.key&&o===l.type)return a;a--}if(u2&&(l.children=arguments.length>3?t.call(arguments,2):r),g(e.type,l,i||e.key,o||e.ref,null)}function U(e,t){var n={__c:t="__cC"+c++,__:e,Consumer:function(e,t){return e.children(t)},Provider:function(e){var n,r;return this.getChildContext||(n=[],(r={})[t]=this,this.getChildContext=function(){return r},this.shouldComponentUpdate=function(e){this.props.value!==e.value&&n.some((function(e){e.__e=!0,A(e)}))},this.sub=function(e){n.push(e);var t=e.componentWillUnmount;e.componentWillUnmount=function(){n.splice(n.indexOf(e),1),t&&t.call(e)}}),e.children}};return n.Provider.__=n.Consumer.contextType=n}t=f.slice,r={__e:function(e,t,n,r){for(var i,o,a;t=t.__;)if((i=t.__c)&&!i.__)try{if((o=i.constructor)&&null!=o.getDerivedStateFromError&&(i.setState(o.getDerivedStateFromError(e)),a=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(e,r||{}),a=i.__d),a)return i.__E=i}catch(t){e=t}throw e}},i=0,b.prototype.setState=function(e,t){var n;n=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=h({},this.state),"function"==typeof e&&(e=e(h({},n),this.props)),e&&h(n,e),null!=e&&this.__v&&(t&&this._sb.push(t),A(this))},b.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),A(this))},b.prototype.render=_,o=[],u="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,l=function(e,t){return e.__v.__b-t.__v.__b},k.__r=0,c=0;var V,W,Z,Y,q=0,G=[],Q=[],J=r.__b,K=r.__r,X=r.diffed,ee=r.__c,te=r.unmount;function ne(e,t){r.__h&&r.__h(W,e,q||t),q=0;var n=W.__H||(W.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({__V:Q}),n.__[e]}function re(e){return q=1,ie(De,e)}function ie(e,t,n){var r=ne(V++,2);if(r.t=e,!r.__c&&(r.__=[n?n(t):De(void 0,t),function(e){var t=r.__N?r.__N[0]:r.__[0],n=r.t(t,e);t!==n&&(r.__N=[n,r.__[1]],r.__c.setState({}))}],r.__c=W,!W.u)){var i=function(e,t,n){if(!r.__c.__H)return!0;var i=r.__c.__H.__.filter((function(e){return e.__c}));if(i.every((function(e){return!e.__N})))return!o||o.call(this,e,t,n);var a=!1;return i.forEach((function(e){if(e.__N){var t=e.__[0];e.__=e.__N,e.__N=void 0,t!==e.__[0]&&(a=!0)}})),!(!a&&r.__c.props===e)&&(!o||o.call(this,e,t,n))};W.u=!0;var o=W.shouldComponentUpdate,a=W.componentWillUpdate;W.componentWillUpdate=function(e,t,n){if(this.__e){var r=o;o=void 0,i(e,t,n),o=r}a&&a.call(this,e,t,n)},W.shouldComponentUpdate=i}return r.__N||r.__}function oe(e,t){var n=ne(V++,3);!r.__s&&be(n.__H,t)&&(n.__=e,n.i=t,W.__H.__h.push(n))}function ae(e,t){var n=ne(V++,4);!r.__s&&be(n.__H,t)&&(n.__=e,n.i=t,W.__h.push(n))}function ue(e){return q=5,ce((function(){return{current:e}}),[])}function le(e,t,n){q=6,ae((function(){return"function"==typeof e?(e(t()),function(){return e(null)}):e?(e.current=t(),function(){return e.current=null}):void 0}),null==n?n:n.concat(e))}function ce(e,t){var n=ne(V++,7);return be(n.__H,t)?(n.__V=e(),n.i=t,n.__h=e,n.__V):n.__}function se(e,t){return q=8,ce((function(){return e}),t)}function fe(e){var t=W.context[e.__c],n=ne(V++,9);return n.c=e,t?(null==n.__&&(n.__=!0,t.sub(W)),t.props.value):e.__}function pe(e,t){r.useDebugValue&&r.useDebugValue(t?t(e):e)}function de(e){var t=ne(V++,10),n=re();return t.__=e,W.componentDidCatch||(W.componentDidCatch=function(e,r){t.__&&t.__(e,r),n[1](e)}),[n[0],function(){n[1](void 0)}]}function he(){var e=ne(V++,11);if(!e.__){for(var t=W.__v;null!==t&&!t.__m&&null!==t.__;)t=t.__;var n=t.__m||(t.__m=[0,0]);e.__="P"+n[0]+"-"+n[1]++}return e.__}function ve(){for(var e;e=G.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(ye),e.__H.__h.forEach(_e),e.__H.__h=[]}catch(u){e.__H.__h=[],r.__e(u,e.__v)}}r.__b=function(e){W=null,J&&J(e)},r.__r=function(e){K&&K(e),V=0;var t=(W=e.__c).__H;t&&(Z===W?(t.__h=[],W.__h=[],t.__.forEach((function(e){e.__N&&(e.__=e.__N),e.__V=Q,e.__N=e.i=void 0}))):(t.__h.forEach(ye),t.__h.forEach(_e),t.__h=[],V=0)),Z=W},r.diffed=function(e){X&&X(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(1!==G.push(t)&&Y===r.requestAnimationFrame||((Y=r.requestAnimationFrame)||ge)(ve)),t.__H.__.forEach((function(e){e.i&&(e.__H=e.i),e.__V!==Q&&(e.__=e.__V),e.i=void 0,e.__V=Q}))),Z=W=null},r.__c=function(e,t){t.some((function(e){try{e.__h.forEach(ye),e.__h=e.__h.filter((function(e){return!e.__||_e(e)}))}catch(i){t.some((function(e){e.__h&&(e.__h=[])})),t=[],r.__e(i,e.__v)}})),ee&&ee(e,t)},r.unmount=function(e){te&&te(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach((function(e){try{ye(e)}catch(e){t=e}})),n.__H=void 0,t&&r.__e(t,n.__v))};var me="function"==typeof requestAnimationFrame;function ge(e){var t,n=function(){clearTimeout(r),me&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,100);me&&(t=requestAnimationFrame(n))}function ye(e){var t=W,n=e.__c;"function"==typeof n&&(e.__c=void 0,n()),W=t}function _e(e){var t=W;e.__c=e.__(),W=t}function be(e,t){return!e||e.length!==t.length||t.some((function(t,n){return t!==e[n]}))}function De(e,t){return"function"==typeof t?t(e):t}function we(e,t){for(var n in t)e[n]=t[n];return e}function Ae(e,t){for(var n in e)if("__source"!==n&&!(n in t))return!0;for(var r in t)if("__source"!==r&&e[r]!==t[r])return!0;return!1}function ke(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t}function xe(e){this.props=e}function Ee(e,t){function n(e){var n=this.props.ref,r=n==e.ref;return!r&&n&&(n.call?n(null):n.current=null),t?!t(this.props,e)||!r:Ae(this.props,e)}function r(t){return this.shouldComponentUpdate=n,m(e,t)}return r.displayName="Memo("+(e.displayName||e.name)+")",r.prototype.isReactComponent=!0,r.__f=!0,r}(xe.prototype=new b).isPureReactComponent=!0,xe.prototype.shouldComponentUpdate=function(e,t){return Ae(this.props,e)||Ae(this.state,t)};var Ce=r.__b;r.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),Ce&&Ce(e)};var Se="undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.forward_ref")||3911;function Fe(e){function t(t){var n=we({},t);return delete n.ref,e(n,t.ref||null)}return t.$$typeof=Se,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName="ForwardRef("+(e.displayName||e.name)+")",t}var Me=function(e,t){return null==e?null:C(C(e).map(t))},Oe={map:Me,forEach:Me,count:function(e){return e?C(e).length:0},only:function(e){var t=C(e);if(1!==t.length)throw"Children.only";return t[0]},toArray:C},Te=r.__e;r.__e=function(e,t,n,r){if(e.then)for(var i,o=t;o=o.__;)if((i=o.__c)&&i.__c)return null==t.__e&&(t.__e=n.__e,t.__k=n.__k),i.__c(e,t);Te(e,t,n,r)};var Be=r.unmount;function Pe(e,t,n){return e&&(e.__c&&e.__c.__H&&(e.__c.__H.__.forEach((function(e){"function"==typeof e.__c&&e.__c()})),e.__c.__H=null),null!=(e=we({},e)).__c&&(e.__c.__P===n&&(e.__c.__P=t),e.__c=null),e.__k=e.__k&&e.__k.map((function(e){return Pe(e,t,n)}))),e}function Ne(e,t,n){return e&&(e.__v=null,e.__k=e.__k&&e.__k.map((function(e){return Ne(e,t,n)})),e.__c&&e.__c.__P===t&&(e.__e&&n.insertBefore(e.__e,e.__d),e.__c.__e=!0,e.__c.__P=n)),e}function Le(){this.__u=0,this.t=null,this.__b=null}function $e(e){var t=e.__.__c;return t&&t.__a&&t.__a(e)}function Re(e){var t,n,r;function i(i){if(t||(t=e()).then((function(e){n=e.default||e}),(function(e){r=e})),r)throw r;if(!n)throw t;return m(n,i)}return i.displayName="Lazy",i.__f=!0,i}function Ie(){this.u=null,this.o=null}r.unmount=function(e){var t=e.__c;t&&t.__R&&t.__R(),t&&!0===e.__h&&(e.type=null),Be&&Be(e)},(Le.prototype=new b).__c=function(e,t){var n=t.__c,r=this;null==r.t&&(r.t=[]),r.t.push(n);var i=$e(r.__v),o=!1,a=function(){o||(o=!0,n.__R=null,i?i(u):u())};n.__R=a;var u=function(){if(! --r.__u){if(r.state.__a){var e=r.state.__a;r.__v.__k[0]=Ne(e,e.__c.__P,e.__c.__O)}var t;for(r.setState({__a:r.__b=null});t=r.t.pop();)t.forceUpdate()}},l=!0===t.__h;r.__u++||l||r.setState({__a:r.__b=r.__v.__k[0]}),e.then(a,a)},Le.prototype.componentWillUnmount=function(){this.t=[]},Le.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var n=document.createElement("div"),r=this.__v.__k[0].__c;this.__v.__k[0]=Pe(this.__b,n,r.__O=r.__P)}this.__b=null}var i=t.__a&&m(_,null,e.fallback);return i&&(i.__h=null),[m(_,null,t.__a?null:e.children),i]};var je=function(e,t,n){if(++n[1]===n[0]&&e.o.delete(t),e.props.revealOrder&&("t"!==e.props.revealOrder[0]||!e.o.size))for(n=e.u;n;){for(;n.length>3;)n.pop()();if(n[1]>>1,1),t.i.removeChild(e)}}),j(m(ze,{context:t.context},e.__v),t.l)):t.l&&t.componentWillUnmount()}function Ue(e,t){var n=m(He,{__v:e,i:t});return n.containerInfo=t,n}(Ie.prototype=new b).__a=function(e){var t=this,n=$e(t.__v),r=t.o.get(e);return r[0]++,function(i){var o=function(){t.props.revealOrder?(r.push(i),je(t,e,r)):i()};n?n(o):o()}},Ie.prototype.render=function(e){this.u=null,this.o=new Map;var t=C(e.children);e.revealOrder&&"b"===e.revealOrder[0]&&t.reverse();for(var n=t.length;n--;)this.o.set(t[n],this.u=[1,0,this.u]);return e.children},Ie.prototype.componentDidUpdate=Ie.prototype.componentDidMount=function(){var e=this;this.o.forEach((function(t,n){je(e,n,t)}))};var Ve="undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103,We=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,Ze=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,Ye=/[A-Z0-9]/g,qe="undefined"!=typeof document,Ge=function(e){return("undefined"!=typeof Symbol&&"symbol"==typeof Symbol()?/fil|che|rad/:/fil|che|ra/).test(e)};function Qe(e,t,n){return null==t.__k&&(t.textContent=""),j(e,t),"function"==typeof n&&n(),e?e.__c:null}function Je(e,t,n){return z(e,t),"function"==typeof n&&n(),e?e.__c:null}b.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach((function(e){Object.defineProperty(b.prototype,e,{configurable:!0,get:function(){return this["UNSAFE_"+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})}));var Ke=r.event;function Xe(){}function et(){return this.cancelBubble}function tt(){return this.defaultPrevented}r.event=function(e){return Ke&&(e=Ke(e)),e.persist=Xe,e.isPropagationStopped=et,e.isDefaultPrevented=tt,e.nativeEvent=e};var nt,rt={enumerable:!1,configurable:!0,get:function(){return this.class}},it=r.vnode;r.vnode=function(e){"string"==typeof e.type&&function(e){var t=e.props,n=e.type,r={};for(var i in t){var o=t[i];if(!("value"===i&&"defaultValue"in t&&null==o||qe&&"children"===i&&"noscript"===n||"class"===i||"className"===i)){var a=i.toLowerCase();"defaultValue"===i&&"value"in t&&null==t.value?i="value":"download"===i&&!0===o?o="":"ondoubleclick"===a?i="ondblclick":"onchange"!==a||"input"!==n&&"textarea"!==n||Ge(t.type)?"onfocus"===a?i="onfocusin":"onblur"===a?i="onfocusout":Ze.test(i)?i=a:-1===n.indexOf("-")&&We.test(i)?i=i.replace(Ye,"-$&").toLowerCase():null===o&&(o=void 0):a=i="oninput","oninput"===a&&r[i=a]&&(i="oninputCapture"),r[i]=o}}"select"==n&&r.multiple&&Array.isArray(r.value)&&(r.value=C(t.children).forEach((function(e){e.props.selected=-1!=r.value.indexOf(e.props.value)}))),"select"==n&&null!=r.defaultValue&&(r.value=C(t.children).forEach((function(e){e.props.selected=r.multiple?-1!=r.defaultValue.indexOf(e.props.value):r.defaultValue==e.props.value}))),t.class&&!t.className?(r.class=t.class,Object.defineProperty(r,"className",rt)):(t.className&&!t.class||t.class&&t.className)&&(r.class=r.className=t.className),e.props=r}(e),e.$$typeof=Ve,it&&it(e)};var ot=r.__r;r.__r=function(e){ot&&ot(e),nt=e.__c};var at=r.diffed;r.diffed=function(e){at&&at(e);var t=e.props,n=e.__e;null!=n&&"textarea"===e.type&&"value"in t&&t.value!==n.value&&(n.value=null==t.value?"":t.value),nt=null};var ut={ReactCurrentDispatcher:{current:{readContext:function(e){return nt.__n[e.__c].props.value}}}},lt="17.0.2";function ct(e){return m.bind(null,e)}function st(e){return!!e&&e.$$typeof===Ve}function ft(e){return st(e)?H.apply(null,arguments):e}function pt(e){return!!e.__k&&(j(null,e),!0)}function dt(e){return e&&(e.base||1===e.nodeType&&e)||null}var ht=function(e,t){return e(t)},vt=function(e,t){return e(t)},mt=_;function gt(e){e()}function yt(e){return e}function _t(){return[!1,gt]}var bt=ae;function Dt(e,t){var n=t(),r=re({h:{__:n,v:t}}),i=r[0].h,o=r[1];return ae((function(){i.__=n,i.v=t,ke(i.__,t())||o({h:i})}),[e,n,t]),oe((function(){return ke(i.__,i.v())||o({h:i}),e((function(){ke(i.__,i.v())||o({h:i})}))}),[e]),n}var wt,At={useState:re,useId:he,useReducer:ie,useEffect:oe,useLayoutEffect:ae,useInsertionEffect:bt,useTransition:_t,useDeferredValue:yt,useSyncExternalStore:Dt,startTransition:gt,useRef:ue,useImperativeHandle:le,useMemo:ce,useCallback:se,useContext:fe,useDebugValue:pe,version:"17.0.2",Children:Oe,render:Qe,hydrate:Je,unmountComponentAtNode:pt,createPortal:Ue,createElement:m,createContext:U,createFactory:ct,cloneElement:ft,createRef:y,Fragment:_,isValidElement:st,findDOMNode:dt,Component:b,PureComponent:xe,memo:Ee,forwardRef:Fe,flushSync:vt,unstable_batchedUpdates:ht,StrictMode:mt,Suspense:Le,SuspenseList:Ie,lazy:Re,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:ut},kt=n(658),xt=n.n(kt),Et=n(443),Ct=n.n(Et),St=n(446),Ft=n.n(St),Mt=n(635),Ot=n.n(Mt);function Tt(e){if(Array.isArray(e))return e}function Bt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}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 o,a=!0,u=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){u=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(u)throw o}}}}function Rt(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function It(e){return function(e){if(Array.isArray(e))return Bt(e)}(e)||Rt(e)||Pt(e)||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 jt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function zt(e){return zt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},zt(e)}function Ht(e){var t=function(e,t){if("object"!==zt(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!==zt(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===zt(t)?t:String(t)}function Ut(e,t){for(var n=0;n=0&&(t.hash=e.substr(n),e=e.substr(0,n));var r=e.indexOf("?");r>=0&&(t.search=e.substr(r),e=e.substr(0,r)),e&&(t.pathname=e)}return t}function cn(e,t,n,r){void 0===r&&(r={});var i=r,o=i.window,a=void 0===o?document.defaultView:o,u=i.v5Compat,l=void 0!==u&&u,c=a.history,s=wt.Pop,f=null,p=d();function d(){return(c.state||{idx:null}).idx}function h(){s=wt.Pop;var e=d(),t=null==e?null:e-p;p=e,f&&f({action:s,location:m.location,delta:t})}function v(e){var t="null"!==a.location.origin?a.location.origin:a.location.href,n="string"===typeof e?e:un(e);return nn(t,"No window.location.(origin|href) available to create URL for href: "+n),new URL(n,t)}null==p&&(p=0,c.replaceState(Xt({},c.state,{idx:p}),""));var m={get action(){return s},get location(){return e(a,c)},listen:function(e){if(f)throw new Error("A history only accepts one active listener");return a.addEventListener(tn,h),f=e,function(){a.removeEventListener(tn,h),f=null}},createHref:function(e){return t(a,e)},createURL:v,encodeLocation:function(e){var t=v(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:function(e,t){s=wt.Push;var r=an(m.location,e,t);n&&n(r,e);var i=on(r,p=d()+1),o=m.createHref(r);try{c.pushState(i,"",o)}catch(u){if(u instanceof DOMException&&"DataCloneError"===u.name)throw u;a.location.assign(o)}l&&f&&f({action:s,location:m.location,delta:1})},replace:function(e,t){s=wt.Replace;var r=an(m.location,e,t);n&&n(r,e);var i=on(r,p=d()),o=m.createHref(r);c.replaceState(i,"",o),l&&f&&f({action:s,location:m.location,delta:0})},go:function(e){return c.go(e)}};return m}!function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"}(en||(en={}));new Set(["lazy","caseSensitive","path","id","index","children"]);function sn(e,t,n){void 0===n&&(n="/");var r=kn(("string"===typeof t?ln(t):t).pathname||"/",n);if(null==r)return null;var i=fn(e);!function(e){e.sort((function(e,t){return e.score!==t.score?t.score-e.score:function(e,t){var n=e.length===t.length&&e.slice(0,-1).every((function(e,n){return e===t[n]}));return n?e[e.length-1]-t[t.length-1]:0}(e.routesMeta.map((function(e){return e.childrenIndex})),t.routesMeta.map((function(e){return e.childrenIndex})))}))}(i);for(var o=null,a=0;null==o&&a0&&(nn(!0!==e.index,'Index routes must not have child routes. Please remove all child routes from route path "'+u+'".'),fn(e.children,t,l,u)),(null!=e.path||e.index)&&t.push({path:u,score:bn(u,e.index),routesMeta:l})};return e.forEach((function(e,t){var n;if(""!==e.path&&null!=(n=e.path)&&n.includes("?")){var r,o=$t(pn(e.path));try{for(o.s();!(r=o.n()).done;){var a=r.value;i(e,t,a)}}catch(u){o.e(u)}finally{o.f()}}else i(e,t)})),t}function pn(e){var t=e.split("/");if(0===t.length)return[];var n,r=Tt(n=t)||Rt(n)||Pt(n)||Nt(),i=r[0],o=r.slice(1),a=i.endsWith("?"),u=i.replace(/\?$/,"");if(0===o.length)return a?[u,""]:[u];var l=pn(o.join("/")),c=[];return c.push.apply(c,It(l.map((function(e){return""===e?u:[u,e].join("/")})))),a&&c.push.apply(c,It(l)),c.map((function(t){return e.startsWith("/")&&""===t?"/":t}))}var dn=/^:\w+$/,hn=3,vn=2,mn=1,gn=10,yn=-2,_n=function(e){return"*"===e};function bn(e,t){var n=e.split("/"),r=n.length;return n.some(_n)&&(r+=yn),t&&(r+=vn),n.filter((function(e){return!_n(e)})).reduce((function(e,t){return e+(dn.test(t)?hn:""===t?mn:gn)}),r)}function Dn(e,t){for(var n=e.routesMeta,r={},i="/",o=[],a=0;a and the router will parse it for you.'}function En(e){return e.filter((function(e,t){return 0===t||e.route.path&&e.route.path.length>0}))}function Cn(e,t,n,r){var i;void 0===r&&(r=!1),"string"===typeof e?i=ln(e):(nn(!(i=Xt({},e)).pathname||!i.pathname.includes("?"),xn("?","pathname","search",i)),nn(!i.pathname||!i.pathname.includes("#"),xn("#","pathname","hash",i)),nn(!i.search||!i.search.includes("#"),xn("#","search","hash",i)));var o,a=""===e||""===i.pathname,u=a?"/":i.pathname;if(r||null==u)o=n;else{var l=t.length-1;if(u.startsWith("..")){for(var c=u.split("/");".."===c[0];)c.shift(),l-=1;i.pathname=c.join("/")}o=l>=0?t[l]:"/"}var s=function(e,t){void 0===t&&(t="/");var n="string"===typeof e?ln(e):e,r=n.pathname,i=n.search,o=void 0===i?"":i,a=n.hash,u=void 0===a?"":a,l=r?r.startsWith("/")?r:function(e,t){var n=t.replace(/\/+$/,"").split("/");return e.split("/").forEach((function(e){".."===e?n.length>1&&n.pop():"."!==e&&n.push(e)})),n.length>1?n.join("/"):"/"}(r,t):t;return{pathname:l,search:Mn(o),hash:On(u)}}(i,o),f=u&&"/"!==u&&u.endsWith("/"),p=(a||"."===u)&&n.endsWith("/");return s.pathname.endsWith("/")||!f&&!p||(s.pathname+="/"),s}var Sn=function(e){return e.join("/").replace(/\/\/+/g,"/")},Fn=function(e){return e.replace(/\/+$/,"").replace(/^\/*/,"/")},Mn=function(e){return e&&"?"!==e?e.startsWith("?")?e:"?"+e:""},On=function(e){return e&&"#"!==e?e.startsWith("#")?e:"#"+e:""};Error;function Tn(e){return null!=e&&"number"===typeof e.status&&"string"===typeof e.statusText&&"boolean"===typeof e.internal&&"data"in e}var Bn=["post","put","patch","delete"],Pn=(new Set(Bn),["get"].concat(Bn));new Set(Pn),new Set([301,302,303,307,308]),new Set([307,308]);Symbol("deferred");function Nn(){return Nn=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||nn(!1),o=o.slice(0,Math.min(o.length,u+1))}return o.reduceRight((function(e,r,i){var u=r.route.id?null==a?void 0:a[r.route.id]:null,l=null;n&&(l=r.route.errorElement||Kn);var c=t.concat(o.slice(0,i+1)),s=function(){var t;return t=u?l:r.route.Component?m(r.route.Component,null):r.route.element?r.route.element:e,m(er,{match:r,routeContext:{outlet:e,matches:c,isDataRoute:null!=n},children:t})};return n&&(r.route.ErrorBoundary||r.route.errorElement||0===i)?m(Xn,{location:n.location,revalidation:n.revalidation,component:l,error:u,children:s(),routeContext:{outlet:null,matches:c,isDataRoute:!0}}):s()}),null)}function nr(e){var t=fe(Ln);return t||nn(!1),t}function rr(e){var t=fe($n);return t||nn(!1),t}function ir(e){var t=function(e){var t=fe(jn);return t||nn(!1),t}(),n=t.matches[t.matches.length-1];return n.route.id||nn(!1),n.route.id}!function(e){e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate"}(Qn||(Qn={})),function(e){e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId"}(Jn||(Jn={}));var or;function ar(e){return function(e){var t=fe(jn).outlet;return t?m(Zn.Provider,{value:e},t):t}(e.context)}function ur(e){nn(!1)}function lr(e){var t=e.basename,n=void 0===t?"/":t,r=e.children,i=void 0===r?null:r,o=e.location,a=e.navigationType,u=void 0===a?wt.Pop:a,l=e.navigator,c=e.static,s=void 0!==c&&c;Hn()&&nn(!1);var f=n.replace(/^\/*/,"/"),p=ce((function(){return{basename:f,navigator:l,static:s}}),[f,l,s]);"string"===typeof o&&(o=ln(o));var d=o,h=d.pathname,v=void 0===h?"/":h,g=d.search,y=void 0===g?"":g,_=d.hash,b=void 0===_?"":_,D=d.state,w=void 0===D?null:D,A=d.key,k=void 0===A?"default":A,x=ce((function(){var e=kn(v,f);return null==e?null:{location:{pathname:e,search:y,hash:b,state:w,key:k},navigationType:u}}),[f,v,y,b,w,k,u]);return null==x?null:m(Rn.Provider,{value:p},m(In.Provider,{children:i,value:x}))}function cr(e){var t=e.children,n=e.location;return qn(sr(t),n)}!function(e){e[e.pending=0]="pending",e[e.success=1]="success",e[e.error=2]="error"}(or||(or={}));new Promise((function(){}));function sr(e,t){void 0===t&&(t=[]);var n=[];return Oe.forEach(e,(function(e,r){if(st(e)){var i=[].concat(It(t),[r]);if(e.type!==_){e.type!==ur&&nn(!1),e.props.index&&e.props.children&&nn(!1);var o={id:e.props.id||i.join("-"),caseSensitive:e.props.caseSensitive,element:e.props.element,Component:e.props.Component,index:e.props.index,path:e.props.path,loader:e.props.loader,action:e.props.action,errorElement:e.props.errorElement,ErrorBoundary:e.props.ErrorBoundary,hasErrorBoundary:null!=e.props.ErrorBoundary||null!=e.props.errorElement,shouldRevalidate:e.props.shouldRevalidate,handle:e.props.handle,lazy:e.props.lazy};e.props.children&&(o.children=sr(e.props.children,i)),n.push(o)}else n.push.apply(n,sr(e.props.children,i))}})),n}function fr(){return fr=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(i[n]=e[n]);return i}function dr(e){return void 0===e&&(e=""),new URLSearchParams("string"===typeof e||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((function(t,n){var r=e[n];return t.concat(Array.isArray(r)?r.map((function(e){return[n,e]})):[[n,r]])}),[]))}new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);var hr=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset"],vr=["aria-current","caseSensitive","className","end","style","to","children"];var mr=e.startTransition;function gr(e){var t=e.basename,n=e.children,r=e.future,i=e.window,o=ue();null==o.current&&(o.current=function(e){return void 0===e&&(e={}),cn((function(e,t){var n=ln(e.location.hash.substr(1)),r=n.pathname,i=void 0===r?"/":r,o=n.search,a=void 0===o?"":o,u=n.hash;return an("",{pathname:i,search:a,hash:void 0===u?"":u},t.state&&t.state.usr||null,t.state&&t.state.key||"default")}),(function(e,t){var n=e.document.querySelector("base"),r="";if(n&&n.getAttribute("href")){var i=e.location.href,o=i.indexOf("#");r=-1===o?i:i.slice(0,o)}return r+"#"+("string"===typeof t?t:un(t))}),(function(e,t){rn("/"===e.pathname.charAt(0),"relative pathnames are not supported in hash history.push("+JSON.stringify(t)+")")}),e)}({window:i,v5Compat:!0}));var a=o.current,u=Lt(re({action:a.action,location:a.location}),2),l=u[0],c=u[1],s=(r||{}).v7_startTransition,f=se((function(e){s&&mr?mr((function(){return c(e)})):c(e)}),[c,s]);return ae((function(){return a.listen(f)}),[a,f]),m(lr,{basename:t,children:n,location:l.location,navigationType:l.action,navigator:a})}var yr="undefined"!==typeof window&&"undefined"!==typeof window.document&&"undefined"!==typeof window.document.createElement,_r=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,br=Fe((function(e,t){var n,r=e.onClick,i=e.relative,o=e.reloadDocument,a=e.replace,u=e.state,l=e.target,s=e.to,f=e.preventScrollReset,p=pr(e,hr),d=fe(Rn).basename,h=!1;if("string"===typeof s&&_r.test(s)&&(n=s,yr))try{var v=new URL(window.location.href),g=s.startsWith("//")?new URL(v.protocol+s):new URL(s),y=kn(g.pathname,d);g.origin===v.origin&&null!=y?s=y+g.search+g.hash:h=!0}catch(c){}var _=function(e,t){var n=(void 0===t?{}:t).relative;Hn()||nn(!1);var r=fe(Rn),i=r.basename,o=r.navigator,a=Yn(e,{relative:n}),u=a.hash,l=a.pathname,c=a.search,s=l;return"/"!==i&&(s="/"===l?i:Sn([i,l])),o.createHref({pathname:s,search:c,hash:u})}(s,{relative:i}),b=function(e,t){var n=void 0===t?{}:t,r=n.target,i=n.replace,o=n.state,a=n.preventScrollReset,u=n.relative,l=Wn(),c=Un(),s=Yn(e,{relative:u});return se((function(t){if(function(e,t){return 0===e.button&&(!t||"_self"===t)&&!function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)}(t,r)){t.preventDefault();var n=void 0!==i?i:un(c)===un(s);l(e,{replace:n,state:o,preventScrollReset:a,relative:u})}}),[c,l,s,i,o,r,e,a,u])}(s,{replace:a,state:u,target:l,preventScrollReset:f,relative:i});return m("a",fr({},p,{href:n||_,onClick:h||o?r:function(e){r&&r(e),e.defaultPrevented||b(e)},ref:t,target:l}))}));var Dr=Fe((function(e,t){var n=e["aria-current"],r=void 0===n?"page":n,i=e.caseSensitive,o=void 0!==i&&i,a=e.className,u=void 0===a?"":a,l=e.end,c=void 0!==l&&l,s=e.style,f=e.to,p=e.children,d=pr(e,vr),h=Yn(f,{relative:d.relative}),v=Un(),g=fe($n),y=fe(Rn).navigator,_=y.encodeLocation?y.encodeLocation(h).pathname:h.pathname,b=v.pathname,D=g&&g.navigation&&g.navigation.location?g.navigation.location.pathname:null;o||(b=b.toLowerCase(),D=D?D.toLowerCase():null,_=_.toLowerCase());var w,A=b===_||!c&&b.startsWith(_)&&"/"===b.charAt(_.length),k=null!=D&&(D===_||!c&&D.startsWith(_)&&"/"===D.charAt(_.length)),x=A?r:void 0;w="function"===typeof u?u({isActive:A,isPending:k}):[u,A?"active":null,k?"pending":null].filter(Boolean).join(" ");var E="function"===typeof s?s({isActive:A,isPending:k}):s;return m(br,fr({},d,{"aria-current":x,className:w,ref:t,style:E,to:f}),"function"===typeof p?p({isActive:A,isPending:k}):p)}));var wr,Ar;function kr(e){var t=ue(dr(e)),n=ue(!1),r=Un(),i=ce((function(){return function(e,t){var n=dr(e);if(t){var r,i=$t(t.keys());try{var o=function(){var e=r.value;n.has(e)||t.getAll(e).forEach((function(t){n.append(e,t)}))};for(i.s();!(r=i.n()).done;)o()}catch(a){i.e(a)}finally{i.f()}}return n}(r.search,n.current?null:t.current)}),[r.search]),o=Wn(),a=se((function(e,t){var r=dr("function"===typeof e?e(i):e);n.current=!0,o("?"+r,t)}),[o,i]);return[i,a]}(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher"})(wr||(wr={})),function(e){e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"}(Ar||(Ar={}));function xr(e,t,n){return(t=Ht(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Er(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Cr(e){for(var t=1;t=100&&(n=r-r%10),e<100&&e>=10&&(n=r-r%5),e<10&&e>=1&&(n=r),e<1&&e>.01&&(n=Math.round(40*e)/40);var i=function(e){return di(xt().duration(e,"seconds").asMilliseconds())}(n||.001);return i.replace(/\s/g,"")},ci=function(e){var t=e.match(/\d+/g),n=e.match(/[a-zA-Z]+/g);if(n&&t&&ui.includes(n[0]))return xr({},n[0],t[0])},si=function(e,t){return li(e/(t?ri:ni))},fi=function(e,t){var n=(t||xt()().toDate()).valueOf()/1e3,r=function(e){var t=ai.map((function(e){return e.short})).join("|"),n=new RegExp("\\d+[".concat(t,"]+"),"g"),r=(e.match(n)||[]).reduce((function(e,t){var n=ci(t);return n?Cr(Cr({},e),n):Cr({},e)}),{});return xt().duration(r).asSeconds()}(e);return{start:n-r,end:n,step:si(r),date:pi(t||xt()().toDate())}},pi=function(e){return xt().tz(e).utc().format(ti)},di=function(e){var t=Math.floor(e%1e3),n=Math.floor(e/1e3%60),r=Math.floor(e/1e3/60%60),i=Math.floor(e/1e3/3600%24),o=Math.floor(e/864e5),a=["d","h","m","s","ms"],u=[o,i,r,n,t].map((function(e,t){return e?"".concat(e).concat(a[t]):""}));return u.filter((function(e){return e})).join("")},hi=function(e){var t=xt()(1e3*e);return t.isValid()?t.toDate():new Date},vi=[{title:"Last 5 minutes",duration:"5m"},{title:"Last 15 minutes",duration:"15m"},{title:"Last 30 minutes",duration:"30m",isDefault:!0},{title:"Last 1 hour",duration:"1h"},{title:"Last 3 hours",duration:"3h"},{title:"Last 6 hours",duration:"6h"},{title:"Last 12 hours",duration:"12h"},{title:"Last 24 hours",duration:"24h"},{title:"Last 2 days",duration:"2d"},{title:"Last 7 days",duration:"7d"},{title:"Last 30 days",duration:"30d"},{title:"Last 90 days",duration:"90d"},{title:"Last 180 days",duration:"180d"},{title:"Last 1 year",duration:"1y"},{title:"Yesterday",duration:"1d",until:function(){return xt()().tz().subtract(1,"day").endOf("day").toDate()}},{title:"Today",duration:"1d",until:function(){return xt()().tz().endOf("day").toDate()}}].map((function(e){return Cr({id:e.title.replace(/\s/g,"_").toLocaleLowerCase(),until:e.until?e.until:function(){return xt()().tz().toDate()}},e)})),mi=function(e){var t,n=e.relativeTimeId,r=e.defaultDuration,i=e.defaultEndInput,o=null===(t=vi.find((function(e){return e.isDefault})))||void 0===t?void 0:t.id,a=n||$r("g0.relative_time",o),u=vi.find((function(e){return e.id===a}));return{relativeTimeId:u?a:"none",duration:u?u.duration:r,endInput:u?u.until():i}},gi=function(e){var t=xt()().tz(e);return"UTC".concat(t.format("Z"))},yi=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=new RegExp(e,"i");return oi.reduce((function(n,r){var i=(r.match(/^(.*?)\//)||[])[1]||"unknown",o=gi(r),a=o.replace(/UTC|0/,""),u=r.replace(/[/_]/g," "),l={region:r,utc:o,search:"".concat(r," ").concat(o," ").concat(u," ").concat(a)},c=!e||e&&t.test(l.search);return c&&n[i]?n[i].push(l):c&&(n[i]=[l]),n}),{})},_i=function(e){xt().tz.setDefault(e)},bi=Ir("TIMEZONE")||xt().tz.guess();_i(bi);var Di,wi=$r("g0.range_input"),Ai=mi({defaultDuration:wi||"1h",defaultEndInput:(Di=$r("g0.end_input",xt()().utc().format(ti)),xt()(Di).utcOffset(0,!0).toDate()),relativeTimeId:wi?$r("g0.relative_time","none"):void 0}),ki=Ai.duration,xi=Ai.endInput,Ei=Ai.relativeTimeId,Ci={duration:ki,period:fi(ki,xi),relativeTime:Ei,timezone:bi};function Si(e,t){switch(t.type){case"SET_DURATION":return Cr(Cr({},e),{},{duration:t.payload,period:fi(t.payload,hi(e.period.end)),relativeTime:"none"});case"SET_RELATIVE_TIME":return Cr(Cr({},e),{},{duration:t.payload.duration,period:fi(t.payload.duration,t.payload.until),relativeTime:t.payload.id});case"SET_PERIOD":var n=function(e){var t=e.to.valueOf()-e.from.valueOf();return di(t)}(t.payload);return Cr(Cr({},e),{},{duration:n,period:fi(n,t.payload.to),relativeTime:"none"});case"RUN_QUERY":var r=mi({relativeTimeId:e.relativeTime,defaultDuration:e.duration,defaultEndInput:hi(e.period.end)}),i=r.duration,o=r.endInput;return Cr(Cr({},e),{},{period:fi(i,o)});case"RUN_QUERY_TO_NOW":return Cr(Cr({},e),{},{period:fi(e.duration)});case"SET_TIMEZONE":return _i(t.payload),Rr("TIMEZONE",t.payload),Cr(Cr({},e),{},{timezone:t.payload});default:throw new Error}}var Fi=U({}),Mi=function(){return fe(Fi).state},Oi=function(e){var t=e.map((function(e){return e.values[e.index]})),n=function(e){var t=Ir(e);return t?JSON.parse(t):[]}("QUERY_HISTORY");n[0]||(n[0]=[]);var r=n[0];t.forEach((function(e){!r.includes(e)&&e&&r.unshift(e),r.length>100&&r.shift()})),Rr("QUERY_HISTORY",JSON.stringify(n))},Ti=function(){var e,t=(null===(e=(window.location.hash.split("?")[1]||"").match(/g\d+\.expr/g))||void 0===e?void 0:e.length)||1;return new Array(t>4?4:t).fill(1).map((function(e,t){return $r("g".concat(t,".expr"),"")}))}(),Bi={query:Ti,queryHistory:Ti.map((function(e){return{index:0,values:[e]}})),autocomplete:Ir("AUTOCOMPLETE")||!1};function Pi(e,t){switch(t.type){case"SET_QUERY":return Cr(Cr({},e),{},{query:t.payload.map((function(e){return e}))});case"SET_QUERY_HISTORY":return Oi(t.payload),Cr(Cr({},e),{},{queryHistory:t.payload});case"SET_QUERY_HISTORY_BY_INDEX":return e.queryHistory.splice(t.payload.queryNumber,1,t.payload.value),Cr(Cr({},e),{},{queryHistory:e.queryHistory});case"TOGGLE_AUTOCOMPLETE":return Rr("AUTOCOMPLETE",!e.autocomplete),Cr(Cr({},e),{},{autocomplete:!e.autocomplete});default:throw new Error}}var Ni=U({}),Li=function(){return Qr("svg",{viewBox:"0 0 74 24",fill:"currentColor",children:Qr("path",{d:"M6.12 10.48c.36.28.8.43 1.26.43h.05c.48 0 .96-.19 1.25-.44 1.5-1.28 5.88-5.29 5.88-5.29C15.73 4.1 12.46 3.01 7.43 3h-.06C2.33 3-.93 4.1.24 5.18c0 0 4.37 4 5.88 5.3Zm2.56 2.16c-.36.28-.8.44-1.26.45h-.04c-.46 0-.9-.17-1.26-.45-1.04-.88-4.74-4.22-6.12-5.5v1.94c0 .21.08.5.22.63l.07.06c1.05.96 4.55 4.16 5.83 5.25.36.28.8.43 1.26.44h.04c.49-.02.96-.2 1.26-.44 1.3-1.11 4.94-4.45 5.88-5.31.15-.14.23-.42.23-.63V7.15a454.94 454.94 0 0 1-6.11 5.5Zm-1.26 4.99c.46 0 .9-.16 1.26-.44a454.4 454.4 0 0 0 6.1-5.5v1.94c0 .2-.07.48-.22.62-.94.87-4.57 4.2-5.88 5.3-.3.26-.77.44-1.26.45h-.04c-.46 0-.9-.16-1.26-.44-1.2-1.02-4.38-3.92-5.62-5.06l-.28-.25c-.14-.14-.22-.42-.22-.62v-1.94c1.38 1.26 5.08 4.6 6.12 5.5.36.28.8.43 1.26.44h.04ZM35 5l-5.84 14.46h-2.43L20.89 5h2.16a.9.9 0 0 1 .9.61l3.41 8.82a18.8 18.8 0 0 1 .62 2.02 19.44 19.44 0 0 1 .57-2.02l3.39-8.82c.05-.15.16-.3.31-.42a.9.9 0 0 1 .58-.19H35Zm17.18 0v14.46H49.8v-9.34c0-.37.02-.78.06-1.21l-4.37 8.21c-.21.4-.53.59-.95.59h-.38c-.43 0-.75-.2-.95-.59L38.8 8.88a22.96 22.96 0 0 1 .07 1.24v9.34H36.5V5h2.03l.3.01c.1 0 .17.02.24.05.07.03.13.07.19.13a1 1 0 0 1 .17.24l4.33 8.03a16.97 16.97 0 0 1 .6 1.36 14.34 14.34 0 0 1 .6-1.38l4.28-8.01c.05-.1.1-.18.17-.24.06-.06.12-.1.19-.13a.9.9 0 0 1 .24-.05l.3-.01h2.04Zm8.88 13.73a4.5 4.5 0 0 0 1.82-.35 3.96 3.96 0 0 0 2.22-2.47c.2-.57.3-1.19.3-1.85V5.31h1.02v8.75c0 .78-.12 1.51-.37 2.19a4.88 4.88 0 0 1-2.76 2.95c-.66.29-1.4.43-2.23.43-.82 0-1.57-.14-2.24-.43a5.01 5.01 0 0 1-2.75-2.95 6.37 6.37 0 0 1-.37-2.19V5.31h1.03v8.74c0 .66.1 1.28.3 1.85a3.98 3.98 0 0 0 2.21 2.47c.53.24 1.14.36 1.82.36Zm10.38.73h-1.03V5.31h1.03v14.15Z"})})},$i=function(){return Qr("svg",{viewBox:"0 0 85 38",fill:"currentColor",children:[Qr("path",{d:"M11.12 10.48c.36.28.8.43 1.26.43h.05c.48 0 .96-.19 1.25-.44 1.5-1.28 5.88-5.29 5.88-5.29 1.17-1.09-2.1-2.17-7.13-2.18h-.06c-5.04 0-8.3 1.1-7.13 2.18 0 0 4.37 4 5.88 5.3Zm2.56 2.16c-.36.28-.8.44-1.26.45h-.04c-.46 0-.9-.17-1.26-.45-1.04-.88-4.74-4.22-6.12-5.5v1.94c0 .21.08.5.22.63l.07.06c1.05.96 4.55 4.16 5.83 5.25.36.28.8.43 1.26.44h.04c.49-.02.96-.2 1.26-.44 1.3-1.11 4.94-4.45 5.88-5.31.15-.14.23-.42.23-.63V7.15a455.13 455.13 0 0 1-6.11 5.5Zm-1.26 4.99c.46 0 .9-.16 1.26-.44 2.05-1.82 4.09-3.65 6.1-5.5v1.94c0 .2-.07.48-.22.62-.94.87-4.57 4.2-5.88 5.3-.3.26-.77.44-1.26.45h-.04c-.46 0-.9-.16-1.26-.44-1.2-1.02-4.38-3.92-5.62-5.06l-.28-.25c-.14-.14-.22-.42-.22-.62v-1.94c1.38 1.26 5.08 4.6 6.12 5.5.36.28.8.43 1.26.44h.04ZM40 5l-5.84 14.46h-2.43L25.89 5h2.16a.9.9 0 0 1 .9.61l3.41 8.82a18.8 18.8 0 0 1 .62 2.02 19.44 19.44 0 0 1 .57-2.02l3.39-8.82c.05-.15.16-.3.31-.42a.9.9 0 0 1 .58-.19H40Zm17.18 0v14.46H54.8v-9.34c0-.37.02-.78.06-1.21l-4.37 8.21c-.21.4-.53.59-.95.59h-.38c-.43 0-.75-.2-.95-.59L43.8 8.88a22.96 22.96 0 0 1 .07 1.24v9.34H41.5V5h2.03l.3.01c.1 0 .17.02.24.05.07.03.13.07.19.13a1 1 0 0 1 .17.24l4.33 8.03a16.97 16.97 0 0 1 .6 1.36 14.34 14.34 0 0 1 .6-1.38l4.28-8.01c.05-.1.1-.18.17-.24.06-.06.12-.1.19-.13a.9.9 0 0 1 .24-.05l.3-.01h2.04Zm8.88 13.73a4.5 4.5 0 0 0 1.82-.35 3.96 3.96 0 0 0 2.22-2.47c.2-.57.3-1.19.3-1.85V5.31h1.02v8.75c0 .78-.12 1.51-.37 2.19a4.88 4.88 0 0 1-2.76 2.95c-.66.29-1.4.43-2.23.43-.82 0-1.57-.14-2.24-.43a5.01 5.01 0 0 1-2.75-2.95 6.37 6.37 0 0 1-.37-2.19V5.31h1.03v8.74c0 .66.1 1.28.3 1.85a3.98 3.98 0 0 0 2.21 2.47c.53.24 1.14.36 1.82.36Zm10.38.73h-1.03V5.31h1.03v14.15ZM1.73 36v-5.17l-.67-.07a.6.6 0 0 1-.21-.1.23.23 0 0 1-.08-.18v-.44h.96v-.59c0-.34.05-.65.14-.92a1.79 1.79 0 0 1 1.08-1.11 2.45 2.45 0 0 1 1.62-.02l-.03.53c0 .1-.06.15-.16.16H4c-.18 0-.35.03-.5.08a.95.95 0 0 0-.39.23c-.1.11-.19.25-.25.43-.05.18-.08.4-.08.65v.56h1.75v.78H2.8V36H1.73Zm6.17-6.17c.45 0 .85.07 1.2.22a2.57 2.57 0 0 1 1.5 1.62c.13.38.2.81.2 1.29s-.07.91-.2 1.3a2.57 2.57 0 0 1-1.49 1.61c-.36.14-.76.21-1.2.21-.45 0-.86-.07-1.22-.21a2.57 2.57 0 0 1-1.5-1.62c-.12-.38-.19-.81-.19-1.3 0-.47.07-.9.2-1.28a2.57 2.57 0 0 1 1.5-1.62c.35-.15.76-.22 1.2-.22Zm0 5.42c.6 0 1.05-.2 1.35-.6.3-.4.44-.97.44-1.69s-.15-1.28-.44-1.69c-.3-.4-.75-.6-1.35-.6-.3 0-.57.05-.8.15-.22.1-.4.26-.56.45-.15.2-.26.44-.33.73-.08.28-.11.6-.11.96 0 .72.15 1.29.44 1.69.3.4.76.6 1.36.6Zm5.26-4.11c.2-.42.43-.74.71-.97.28-.24.62-.36 1.03-.36.13 0 .25.02.36.05.12.02.23.07.32.13l-.08.8c-.02.1-.08.15-.18.15l-.24-.04a1.7 1.7 0 0 0-.88.05c-.15.05-.29.14-.4.25-.12.1-.23.24-.32.4-.1.17-.18.35-.26.56V36h-1.07v-6.08h.61c.12 0 .2.02.24.07.05.04.08.12.1.23l.06.92Zm13.73-3.82L23.39 36h-1.46l-3.5-8.68h1.29a.54.54 0 0 1 .54.37l2.04 5.3a11.31 11.31 0 0 1 .37 1.21 11.65 11.65 0 0 1 .35-1.22l2.03-5.29c.03-.1.1-.18.19-.25.1-.08.21-.12.35-.12h1.3Zm2.2 2.52V36H27.6v-6.16h1.49Zm.2-1.79c0 .13-.02.25-.08.36a1 1 0 0 1-.51.5.96.96 0 0 1-.73 0 1.02 1.02 0 0 1-.5-.5.96.96 0 0 1 0-.73.93.93 0 0 1 .86-.58.9.9 0 0 1 .37.08c.12.05.22.11.3.2a.94.94 0 0 1 .3.67Zm5.72 3.1a.68.68 0 0 1-.13.13c-.04.03-.1.05-.18.05a.42.42 0 0 1-.22-.07 3.95 3.95 0 0 0-.62-.31c-.14-.05-.3-.07-.51-.07-.26 0-.5.04-.69.14-.2.1-.36.23-.49.4-.13.18-.22.4-.29.64-.06.25-.1.53-.1.85 0 .33.04.62.1.88.08.25.18.47.32.64.13.18.29.3.48.4.18.09.4.13.63.13a1.6 1.6 0 0 0 .94-.27l.26-.2a.4.4 0 0 1 .25-.09.3.3 0 0 1 .27.14l.43.54a2.76 2.76 0 0 1-1.77.96c-.22.03-.43.05-.65.05a2.57 2.57 0 0 1-1.96-.83c-.25-.28-.45-.6-.6-1-.14-.4-.21-.85-.21-1.35 0-.45.06-.87.2-1.25a2.61 2.61 0 0 1 1.51-1.67c.37-.16.8-.24 1.28-.24.46 0 .86.07 1.2.22.35.15.66.36.94.64l-.4.54Zm3.43 4.95c-.54 0-.95-.15-1.24-.45-.28-.3-.42-.73-.42-1.26v-3.44h-.63a.29.29 0 0 1-.2-.07c-.06-.06-.09-.13-.09-.24v-.59l.99-.16.31-1.68a.33.33 0 0 1 .12-.18.34.34 0 0 1 .21-.07h.77v1.94h1.64v1.05h-1.64v3.34c0 .2.05.34.14.45.1.1.22.16.39.16a.73.73 0 0 0 .39-.1l.12-.07a.2.2 0 0 1 .11-.03c.05 0 .08.01.11.03l.09.1.44.72c-.21.18-.46.32-.74.4-.28.1-.57.15-.87.15Zm5.09-6.35c.46 0 .87.07 1.24.22a2.7 2.7 0 0 1 1.58 1.63c.14.39.22.83.22 1.31 0 .49-.08.93-.22 1.32-.14.4-.35.73-.62 1-.26.28-.58.49-.96.64-.37.15-.78.22-1.24.22a3.4 3.4 0 0 1-1.25-.22 2.71 2.71 0 0 1-1.59-1.64 3.8 3.8 0 0 1-.21-1.32c0-.48.07-.92.21-1.31a2.75 2.75 0 0 1 1.58-1.63c.38-.15.8-.22 1.26-.22Zm0 5.2c.51 0 .89-.17 1.13-.52.25-.34.38-.84.38-1.5a2.6 2.6 0 0 0-.38-1.53c-.24-.34-.62-.52-1.13-.52-.52 0-.9.18-1.16.53-.25.35-.37.85-.37 1.51s.12 1.17.37 1.51c.25.35.64.52 1.16.52Zm5.56-4.04c.2-.37.42-.65.69-.86.26-.21.57-.32.94-.32.28 0 .5.06.68.19l-.1 1.1a.3.3 0 0 1-.09.16.24.24 0 0 1-.15.04 1.8 1.8 0 0 1-.27-.03 2.01 2.01 0 0 0-.34-.03c-.16 0-.3.03-.44.08a1.1 1.1 0 0 0-.34.2c-.1.1-.2.2-.27.33-.08.13-.15.27-.22.44V36H47.7v-6.16h.87c.15 0 .26.03.31.09.06.05.1.15.13.29l.09.7Zm4.62-1.07V36h-1.49v-6.16h1.49Zm.2-1.79c0 .13-.02.25-.07.36a1 1 0 0 1-.51.5.96.96 0 0 1-.74 0 1.02 1.02 0 0 1-.5-.5.96.96 0 0 1 0-.73.93.93 0 0 1 .86-.58.9.9 0 0 1 .38.08c.11.05.21.11.3.2a.94.94 0 0 1 .28.67Zm4.56 5.32a7.8 7.8 0 0 0-1.08.12c-.29.05-.52.12-.7.2a.92.92 0 0 0-.38.3.64.64 0 0 0-.11.36c0 .26.07.45.23.56.15.11.35.17.6.17.3 0 .57-.06.79-.17.22-.1.44-.28.65-.5v-1.04Zm-3.4-2.67c.71-.65 1.57-.97 2.56-.97.36 0 .68.06.97.18a1.99 1.99 0 0 1 1.16 1.24c.1.3.16.61.16.96V36h-.67a.7.7 0 0 1-.33-.06c-.07-.04-.13-.13-.18-.26l-.13-.44c-.16.14-.3.26-.46.37a2.8 2.8 0 0 1-.97.43 2.77 2.77 0 0 1-1.32-.05 1.62 1.62 0 0 1-.57-.31 1.41 1.41 0 0 1-.38-.53 1.85 1.85 0 0 1-.05-1.18c.05-.16.14-.3.25-.45.12-.14.28-.27.46-.4a3 3 0 0 1 .7-.32 9.19 9.19 0 0 1 2.2-.33v-.36c0-.41-.09-.71-.26-.91-.18-.2-.43-.3-.76-.3a1.84 1.84 0 0 0-1.02.28l-.33.18c-.1.06-.2.09-.32.09-.1 0-.2-.03-.27-.08a.72.72 0 0 1-.17-.2l-.26-.47Zm11.49 4.32V36h-4.88v-8.6h1.16v7.62h3.72Zm3.16-5.2c.44 0 .84.08 1.2.23a2.57 2.57 0 0 1 1.49 1.62c.13.38.2.81.2 1.29s-.07.91-.2 1.3a2.57 2.57 0 0 1-1.49 1.61c-.36.14-.76.21-1.2.21-.45 0-.85-.07-1.21-.21a2.57 2.57 0 0 1-1.5-1.62c-.13-.38-.2-.81-.2-1.3 0-.47.07-.9.2-1.28.14-.39.33-.72.59-1 .25-.26.55-.47.9-.62.37-.15.77-.22 1.22-.22Zm0 5.43c.6 0 1.05-.2 1.34-.6.3-.4.45-.97.45-1.69s-.15-1.28-.45-1.69c-.3-.4-.74-.6-1.34-.6-.3 0-.57.05-.8.15-.22.1-.4.26-.56.45-.15.2-.26.44-.34.73-.07.28-.1.6-.1.96 0 .72.14 1.29.44 1.69.3.4.75.6 1.36.6Zm6.33-2.22c.22 0 .4-.03.57-.09.16-.06.3-.14.41-.25.12-.11.2-.24.26-.39.05-.15.08-.31.08-.5 0-.37-.11-.66-.34-.88-.23-.22-.55-.33-.98-.33-.43 0-.76.1-.99.33-.22.22-.34.51-.34.89 0 .18.03.34.09.5a1.1 1.1 0 0 0 .67.63c.16.06.35.09.57.09Zm1.93 3.3a.51.51 0 0 0-.13-.36.84.84 0 0 0-.34-.22 8.57 8.57 0 0 0-1.73-.2 7.5 7.5 0 0 1-.62-.05c-.23.1-.41.23-.56.4a.8.8 0 0 0-.1.92c.07.12.18.22.32.3.14.1.32.16.54.21a3.5 3.5 0 0 0 1.55 0c.23-.05.42-.12.57-.22.16-.1.29-.21.37-.34a.8.8 0 0 0 .13-.44Zm1.08-6.17v.4c0 .13-.08.21-.25.25l-.69.09c.14.26.2.56.2.88a1.86 1.86 0 0 1-1.36 1.82 3.07 3.07 0 0 1-1.72.04c-.12.08-.22.16-.29.25a.44.44 0 0 0-.1.27c0 .15.06.26.17.33.12.08.28.13.47.16a5 5 0 0 0 .66.06 16.56 16.56 0 0 1 1.5.13c.26.05.48.12.67.22.19.1.34.24.46.41.12.18.18.4.18.69 0 .26-.07.5-.2.75s-.31.46-.56.65c-.24.2-.54.34-.9.46a4.57 4.57 0 0 1-2.36.04c-.33-.09-.6-.2-.82-.36a1.56 1.56 0 0 1-.5-.51c-.1-.2-.16-.4-.16-.6 0-.3.1-.56.28-.77.19-.2.45-.37.77-.5a1.15 1.15 0 0 1-.43-.32.88.88 0 0 1-.15-.54c0-.09.01-.18.04-.27.04-.1.08-.2.15-.28a1.55 1.55 0 0 1 .58-.5c-.3-.16-.53-.39-.7-.66-.17-.28-.25-.6-.25-.97 0-.3.05-.57.16-.8.12-.25.28-.46.48-.63.2-.17.45-.3.73-.4a3 3 0 0 1 2.3.21h1.64Zm4.65.76a.24.24 0 0 1-.23.14.42.42 0 0 1-.2-.07 3.59 3.59 0 0 0-.67-.3 1.8 1.8 0 0 0-1.03 0c-.14.05-.27.11-.37.2a.87.87 0 0 0-.23.27.75.75 0 0 0-.08.35c0 .15.04.28.13.39.1.1.21.19.36.27.15.07.32.14.5.2a13.63 13.63 0 0 1 1.16.4c.2.08.36.18.5.3a1.33 1.33 0 0 1 .5 1.07 2 2 0 0 1-.15.78c-.1.24-.25.44-.45.62-.2.17-.43.3-.72.4a3.1 3.1 0 0 1-2.14-.05 2.97 2.97 0 0 1-.87-.53l.25-.41c.04-.05.07-.1.12-.12a.3.3 0 0 1 .17-.04.4.4 0 0 1 .22.08l.3.19a1.91 1.91 0 0 0 1.03.27c.2 0 .38-.03.54-.08.16-.06.29-.13.4-.22a.96.96 0 0 0 .3-.7c0-.17-.05-.31-.14-.42-.09-.11-.2-.2-.36-.28a2.6 2.6 0 0 0-.5-.2l-.59-.19c-.2-.06-.39-.14-.58-.22a2.14 2.14 0 0 1-.5-.3 1.45 1.45 0 0 1-.36-.46c-.1-.19-.14-.41-.14-.67a1.6 1.6 0 0 1 .57-1.23c.18-.16.4-.3.68-.39.26-.1.57-.14.91-.14a2.84 2.84 0 0 1 1.9.7l-.23.4Z"}),Qr("defs",{children:Qr("path",{d:"M0 0h85v38H0z"})})]})},Ri=function(){return Qr("svg",{viewBox:"0 0 15 17",fill:"currentColor",children:Qr("path",{d:"M6.11767 7.47586C6.47736 7.75563 6.91931 7.90898 7.37503 7.91213H7.42681C7.90756 7.90474 8.38832 7.71987 8.67677 7.46846C10.1856 6.18921 14.5568 2.18138 14.5568 2.18138C15.7254 1.09438 12.4637 0.00739 7.42681 0H7.36764C2.3308 0.00739 -0.930935 1.09438 0.237669 2.18138C0.237669 2.18138 4.60884 6.18921 6.11767 7.47586ZM8.67677 9.64243C8.31803 9.92483 7.87599 10.0808 7.41941 10.0861H7.37503C6.91845 10.0808 6.47641 9.92483 6.11767 9.64243C5.0822 8.75513 1.38409 5.42018 0.000989555 4.14832V6.07829C0.000989555 6.29273 0.0823481 6.57372 0.222877 6.70682L0.293316 6.7712L0.293344 6.77122C1.33784 7.72579 4.83903 10.9255 6.11767 12.0161C6.47641 12.2985 6.91845 12.4545 7.37503 12.4597H7.41941C7.90756 12.4449 8.38092 12.2601 8.67677 12.0161C9.9859 10.9069 13.6249 7.57198 14.5642 6.70682C14.7121 6.57372 14.7861 6.29273 14.7861 6.07829V4.14832C12.7662 5.99804 10.7297 7.82949 8.67677 9.64243ZM7.41941 14.6263C7.87513 14.6232 8.31708 14.4698 8.67677 14.19C10.7298 12.3746 12.7663 10.5407 14.7861 8.68853V10.6259C14.7861 10.8329 14.7121 11.1139 14.5642 11.247C13.6249 12.1196 9.9859 15.4471 8.67677 16.5563C8.38092 16.8077 7.90756 16.9926 7.41941 17H7.37503C6.91931 16.9968 6.47736 16.8435 6.11767 16.5637C4.91427 15.5373 1.74219 12.6364 0.502294 11.5025C0.393358 11.4029 0.299337 11.3169 0.222877 11.247C0.0823481 11.1139 0.000989555 10.8329 0.000989555 10.6259V8.68853C1.38409 9.95303 5.0822 13.2953 6.11767 14.1827C6.47641 14.4651 6.91845 14.6211 7.37503 14.6263H7.41941Z"})})},Ii=function(){return Qr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Qr("path",{d:"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z"})})},ji=function(){return Qr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Qr("path",{d:"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"})})},zi=function(){return Qr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Qr("path",{d:"M12 5V2L8 6l4 4V7c3.31 0 6 2.69 6 6 0 2.97-2.17 5.43-5 5.91v2.02c3.95-.49 7-3.85 7-7.93 0-4.42-3.58-8-8-8zm-6 8c0-1.65.67-3.15 1.76-4.24L6.34 7.34C4.9 8.79 4 10.79 4 13c0 4.08 3.05 7.44 7 7.93v-2.02c-2.83-.48-5-2.94-5-5.91z"})})},Hi=function(){return Qr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Qr("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"})})},Ui=function(){return Qr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Qr("path",{d:"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"})})},Vi=function(){return Qr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Qr("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"})})},Wi=function(){return Qr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Qr("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"})})},Zi=function(){return Qr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Qr("path",{d:"M7.41 8.59 12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z"})})},Yi=function(){return Qr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Qr("path",{d:"m7 10 5 5 5-5z"})})},qi=function(){return Qr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Qr("path",{d:"M8 5v14l11-7z"})})},Gi=function(){return Qr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Qr("path",{d:"m3.5 18.49 6-6.01 4 4L22 6.92l-1.41-1.41-7.09 7.97-4-4L2 16.99z"})})},Qi=function(){return Qr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Qr("path",{d:"M10 10.02h5V21h-5zM17 21h3c1.1 0 2-.9 2-2v-9h-5v11zm3-18H5c-1.1 0-2 .9-2 2v3h19V5c0-1.1-.9-2-2-2zM3 19c0 1.1.9 2 2 2h3V10H3v9z"})})},Ji=function(){return Qr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Qr("path",{d:"M9.4 16.6 4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0 4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z"})})},Ki=function(){return Qr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Qr("path",{d:"M8.9999 14.7854L18.8928 4.8925C19.0803 4.70497 19.3347 4.59961 19.5999 4.59961C19.8651 4.59961 20.1195 4.70497 20.307 4.8925L21.707 6.2925C22.0975 6.68303 22.0975 7.31619 21.707 7.70672L9.70701 19.7067C9.31648 20.0972 8.68332 20.0972 8.2928 19.7067L2.6928 14.1067C2.50526 13.9192 2.3999 13.6648 2.3999 13.3996C2.3999 13.1344 2.50526 12.88 2.6928 12.6925L4.0928 11.2925C4.48332 10.902 5.11648 10.902 5.50701 11.2925L8.9999 14.7854Z"})})},Xi=function(){return Qr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Qr("path",{d:"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"})})},eo=function(){return Qr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Qr("path",{d:"M20 9H4v2h16V9zM4 15h16v-2H4v2z"})})},to=function(){return Qr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:[Qr("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M21 5C19.89 4.65 18.67 4.5 17.5 4.5C15.55 4.5 13.45 4.9 12 6C10.55 4.9 8.45 4.5 6.5 4.5C5.33 4.5 4.11 4.65 3 5C2.25 5.25 1.6 5.55 1 6V20.6C1 20.85 1.25 21.1 1.5 21.1C1.6 21.1 1.65 21.1 1.75 21.05C3.15 20.3 4.85 20 6.5 20C8.2 20 10.65 20.65 12 21.5C13.35 20.65 15.8 20 17.5 20C19.15 20 20.85 20.3 22.25 21.05C22.35 21.1 22.4 21.1 22.5 21.1C22.75 21.1 23 20.85 23 20.6V6C22.4 5.55 21.75 5.25 21 5ZM21 18.5C19.9 18.15 18.7 18 17.5 18C15.8 18 13.35 18.65 12 19.5C10.65 18.65 8.2 18 6.5 18C5.3 18 4.1 18.15 3 18.5V7C4.1 6.65 5.3 6.5 6.5 6.5C8.2 6.5 10.65 7.15 12 8C13.35 7.15 15.8 6.5 17.5 6.5C18.7 6.5 19.9 6.65 21 7V18.5Z"}),Qr("path",{d:"M17.5 10.5C18.38 10.5 19.23 10.59 20 10.76V9.24C19.21 9.09 18.36 9 17.5 9C15.8 9 14.26 9.29 13 9.83V11.49C14.13 10.85 15.7 10.5 17.5 10.5ZM13 12.49V14.15C14.13 13.51 15.7 13.16 17.5 13.16C18.38 13.16 19.23 13.25 20 13.42V11.9C19.21 11.75 18.36 11.66 17.5 11.66C15.8 11.66 14.26 11.96 13 12.49ZM17.5 14.33C15.8 14.33 14.26 14.62 13 15.16V16.82C14.13 16.18 15.7 15.83 17.5 15.83C18.38 15.83 19.23 15.92 20 16.09V14.57C19.21 14.41 18.36 14.33 17.5 14.33Z"}),Qr("path",{d:"M6.5 10.5C5.62 10.5 4.77 10.59 4 10.76V9.24C4.79 9.09 5.64 9 6.5 9C8.2 9 9.74 9.29 11 9.83V11.49C9.87 10.85 8.3 10.5 6.5 10.5ZM11 12.49V14.15C9.87 13.51 8.3 13.16 6.5 13.16C5.62 13.16 4.77 13.25 4 13.42V11.9C4.79 11.75 5.64 11.66 6.5 11.66C8.2 11.66 9.74 11.96 11 12.49ZM6.5 14.33C8.2 14.33 9.74 14.62 11 15.16V16.82C9.87 16.18 8.3 15.83 6.5 15.83C5.62 15.83 4.77 15.92 4 16.09V14.57C4.79 14.41 5.64 14.33 6.5 14.33Z"})]})},no=function(){return Qr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Qr("path",{d:"M12 2C6.49 2 2 6.49 2 12s4.49 10 10 10 10-4.49 10-10S17.51 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm3-8c0 1.66-1.34 3-3 3s-3-1.34-3-3 1.34-3 3-3 3 1.34 3 3z"})})},ro=function(){return Qr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Qr("path",{d:"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"})})},io=function(){return Qr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Qr("path",{d:"M3 14h4v-4H3v4zm0 5h4v-4H3v4zM3 9h4V5H3v4zm5 5h13v-4H8v4zm0 5h13v-4H8v4zM8 5v4h13V5H8z"})})},oo=function(){return Qr("svg",{viewBox:"0 0 16 16",fill:Ur("color-error"),children:Qr("path",{d:"M13.5095 4L8.50952 1H7.50952L2.50952 4L2.01953 4.85999V10.86L2.50952 11.71L7.50952 14.71H8.50952L13.5095 11.71L13.9995 10.86V4.85999L13.5095 4ZM7.50952 13.5601L3.00952 10.86V5.69995L7.50952 8.15002V13.5601ZM3.26953 4.69995L8.00952 1.85999L12.7495 4.69995L8.00952 7.29004L3.26953 4.69995ZM13.0095 10.86L8.50952 13.5601V8.15002L13.0095 5.69995V10.86Z"})})},ao=function(){return Qr("svg",{viewBox:"0 0 16 16",fill:Ur("color-primary"),children:Qr("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M2 5H4V4H1.5L1 4.5V12.5L1.5 13H4V12H2V5ZM14.5 4H12V5H14V12H12V13H14.5L15 12.5V4.5L14.5 4ZM11.76 6.56995L12 7V9.51001L11.7 9.95996L7.19995 11.96H6.73999L4.23999 10.46L4 10.03V7.53003L4.30005 7.06995L8.80005 5.06995H9.26001L11.76 6.56995ZM5 9.70996L6.5 10.61V9.28003L5 8.38V9.70996ZM5.57996 7.56006L7.03003 8.43005L10.42 6.93005L8.96997 6.06006L5.57996 7.56006ZM7.53003 10.73L11.03 9.17004V7.77002L7.53003 9.31995V10.73Z"})})},uo=function(){return Qr("svg",{viewBox:"0 0 16 16",fill:Ur("color-warning"),children:Qr("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M14 2H8L7 3V6H8V3H14V8H10V9H14L15 8V3L14 2ZM9 6H13V7H9.41L9 6.59V6ZM7 7H2L1 8V13L2 14H8L9 13V8L8 7H7ZM8 13H2V8H8V9V13ZM3 9H7V10H3V9ZM3 11H7V12H3V11ZM9 4H13V5H9V4Z"})})},lo=function(){return Qr("svg",{viewBox:"0 0 16 16",fill:Ur("color-primary"),children:Qr("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M7 3L8 2H14L15 3V8L14 9H10V8H14V3H8V6H7V3ZM9 9V8L8 7H7H2L1 8V13L2 14H8L9 13V9ZM8 8V9V13H2V8H7H8ZM9.41421 7L9 6.58579V6H13V7H9.41421ZM9 4H13V5H9V4ZM7 10H3V11H7V10Z"})})},co=n(123),so=n.n(co);function fo(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var po=["to","isNavLink","children"],ho=function(e){var t=e.to,n=e.isNavLink,r=e.children,i=fo(e,po);return n?Qr(Dr,Cr(Cr({to:t},i),{},{children:r})):Qr("div",Cr(Cr({},i),{},{children:r}))},vo=function(e){var t,n=e.activeItem,r=e.item,i=e.color,o=void 0===i?Ur("color-primary"):i,a=e.activeNavRef,u=e.onChange,l=e.isNavLink;return Qr(ho,{className:so()(xr({"vm-tabs-item":!0,"vm-tabs-item_active":n===r.value},r.className||"",r.className)),isNavLink:l,to:r.value,style:{color:o},onClick:(t=r.value,function(){u&&u(t)}),ref:n===r.value?a:void 0,children:[r.icon&&Qr("div",{className:so()({"vm-tabs-item__icon":!0,"vm-tabs-item__icon_single":!r.label}),children:r.icon}),r.label]})},mo="undefined"!==typeof window?ae:oe;var go=function(e,t,n,r){var i=ue(t);mo((function(){i.current=t}),[t]),oe((function(){var t,o=null!==(t=null===n||void 0===n?void 0:n.current)&&void 0!==t?t:window;if(o&&o.addEventListener){var a=function(e){return i.current(e)};return o.addEventListener(e,a,r),function(){o.removeEventListener(e,a,r)}}}),[e,n,r])},yo=function(){var e=Lt(re({width:0,height:0}),2),t=e[0],n=e[1],r=function(){n({width:window.innerWidth,height:window.innerHeight})};return go("resize",r),mo(r,[]),t},_o=function(e){var t=e.activeItem,n=e.items,r=e.color,i=void 0===r?Ur("color-primary"):r,o=e.onChange,a=e.indicatorPlacement,u=void 0===a?"bottom":a,l=e.isNavLink,c=yo(),s=ue(null),f=Lt(re({left:0,width:0,bottom:0}),2),p=f[0],d=f[1];return oe((function(){var e;if((null===(e=s.current)||void 0===e?void 0:e.base)instanceof HTMLElement){var t=s.current.base,n=t.offsetLeft,r=t.offsetWidth,i=t.offsetHeight;d({left:n,width:r,bottom:"top"===u?i-2:0})}}),[c,t,s,n]),Qr("div",{className:"vm-tabs",children:[n.map((function(e){return Qr(vo,{activeItem:t,item:e,onChange:o,color:i,activeNavRef:s,isNavLink:l},e.value)})),Qr("div",{className:"vm-tabs__indicator",style:Cr(Cr({},p),{},{borderColor:i})})]})},bo=[{value:"chart",icon:Qr(Gi,{}),label:"Graph",prometheusCode:0},{value:"code",icon:Qr(Ji,{}),label:"JSON",prometheusCode:3},{value:"table",icon:Qr(Qi,{}),label:"Table",prometheusCode:1}],Do=$r("g0.tab",0),wo=bo.find((function(e){return e.prometheusCode===+Do||e.value===Do})),Ao=Ir("SERIES_LIMITS"),ko={displayType:(null===wo||void 0===wo?void 0:wo.value)||"chart",nocache:!1,isTracingEnabled:!1,seriesLimits:Ao?JSON.parse(Ao):Lr,tableCompact:Ir("TABLE_COMPACT")||!1};function xo(e,t){switch(t.type){case"SET_DISPLAY_TYPE":return Cr(Cr({},e),{},{displayType:t.payload});case"SET_SERIES_LIMITS":return Rr("SERIES_LIMITS",JSON.stringify(t.payload)),Cr(Cr({},e),{},{seriesLimits:t.payload});case"TOGGLE_QUERY_TRACING":return Cr(Cr({},e),{},{isTracingEnabled:!e.isTracingEnabled});case"TOGGLE_NO_CACHE":return Cr(Cr({},e),{},{nocache:!e.nocache});case"TOGGLE_TABLE_COMPACT":return Rr("TABLE_COMPACT",!e.tableCompact),Cr(Cr({},e),{},{tableCompact:!e.tableCompact});default:throw new Error}}var Eo=U({}),Co={customStep:$r("g0.step_input",""),yaxis:{limits:{enable:!1,range:{1:[0,0]}}},isHistogram:!1};function So(e,t){switch(t.type){case"TOGGLE_ENABLE_YAXIS_LIMITS":return Cr(Cr({},e),{},{yaxis:Cr(Cr({},e.yaxis),{},{limits:Cr(Cr({},e.yaxis.limits),{},{enable:!e.yaxis.limits.enable})})});case"SET_CUSTOM_STEP":return Cr(Cr({},e),{},{customStep:t.payload});case"SET_YAXIS_LIMITS":return Cr(Cr({},e),{},{yaxis:Cr(Cr({},e.yaxis),{},{limits:Cr(Cr({},e.yaxis.limits),{},{range:t.payload})})});case"SET_IS_HISTOGRAM":return Cr(Cr({},e),{},{isHistogram:t.payload});default:throw new Error}}var Fo=U({}),Mo={windows:"Windows",mac:"Mac OS",linux:"Linux"},Oo=function(){return(Object.values(Mo).find((function(e){return navigator.userAgent.indexOf(e)>=0}))||"unknown")===Mo.mac};function To(){var e=yo(),t=function(){var e=function(){var e=["Android","webOS","iPhone","iPad","iPod","BlackBerry","Windows Phone"].map((function(e){return navigator.userAgent.match(new RegExp(e,"i"))}));return e.some((function(e){return e}))}(),t=window.innerWidth<500;return e||t},n=Lt(re(t()),2),r=n[0],i=n[1];return oe((function(){i(t())}),[e]),{isMobile:r}}var Bo={success:Qr(Wi,{}),error:Qr(Vi,{}),warning:Qr(Ui,{}),info:Qr(Hi,{})},Po=function(e){var t,n=e.variant,r=e.children,i=Kr().isDarkTheme,o=To().isMobile;return Qr("div",{className:so()((t={"vm-alert":!0},xr(t,"vm-alert_".concat(n),n),xr(t,"vm-alert_dark",i),xr(t,"vm-alert_mobile",o),t)),children:[Qr("div",{className:"vm-alert__icon",children:Bo[n||"info"]}),Qr("div",{className:"vm-alert__content",children:r})]})},No=U({showInfoMessage:function(){}}),Lo={dashboardsSettings:[],dashboardsLoading:!1,dashboardsError:""};function $o(e,t){switch(t.type){case"SET_DASHBOARDS_SETTINGS":return Cr(Cr({},e),{},{dashboardsSettings:t.payload});case"SET_DASHBOARDS_LOADING":return Cr(Cr({},e),{},{dashboardsLoading:t.payload});case"SET_DASHBOARDS_ERROR":return Cr(Cr({},e),{},{dashboardsError:t.payload});default:throw new Error}}var Ro=U({}),Io=function(){for(var e=arguments.length,t=new Array(e),n=0;n=128?"#000000":"#FFFFFF"}(Ur("color-".concat(e)));Vr("".concat(e,"-text"),r),t===Uo.length-1&&(l({type:"SET_DARK_THEME"}),n(!0))}))},v=function(){var e=Ir("THEME")||Hr.system,t=f[e];Object.entries(t).forEach((function(e){var t=Lt(e,2),n=t[0],r=t[1];Vr(n,r)})),h(),r&&(Uo.forEach((function(e){var t=o[e];t&&Vr("color-".concat(e),t)})),h())};return oe((function(){d(),v()}),[f]),oe(d,[c]),oe((function(){var e=Wr()?jo:zo;f[Hr.system]!==e?p((function(t){return Cr(Cr({},t),{},xr({},Hr.system,e))})):v()}),[a,u]),oe((function(){r&&l({type:"SET_THEME",payload:Hr.light})}),[]),null};function Wo(){Wo=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",a=i.asyncIterator||"@@asyncIterator",u=i.toStringTag||"@@toStringTag";function l(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(S){l=function(e,t,n){return e[t]=n}}function c(e,t,n,i){var o=t&&t.prototype instanceof p?t:p,a=Object.create(o.prototype),u=new x(i||[]);return r(a,"_invoke",{value:D(e,n,u)}),a}function s(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(S){return{type:"throw",arg:S}}}e.wrap=c;var f={};function p(){}function d(){}function h(){}var v={};l(v,o,(function(){return this}));var m=Object.getPrototypeOf,g=m&&m(m(E([])));g&&g!==t&&n.call(g,o)&&(v=g);var y=h.prototype=p.prototype=Object.create(v);function _(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function b(e,t){function i(r,o,a,u){var l=s(e[r],e,o);if("throw"!==l.type){var c=l.arg,f=c.value;return f&&"object"==zt(f)&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){i("next",e,a,u)}),(function(e){i("throw",e,a,u)})):t.resolve(f).then((function(e){c.value=e,a(c)}),(function(e){return i("throw",e,a,u)}))}u(l.arg)}var o;r(this,"_invoke",{value:function(e,n){function r(){return new t((function(t,r){i(e,n,t,r)}))}return o=o?o.then(r,r):r()}})}function D(e,t,n){var r="suspendedStart";return function(i,o){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===i)throw o;return C()}for(n.method=i,n.arg=o;;){var a=n.delegate;if(a){var u=w(a,n);if(u){if(u===f)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var l=s(e,t,n);if("normal"===l.type){if(r=n.done?"completed":"suspendedYield",l.arg===f)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(r="completed",n.method="throw",n.arg=l.arg)}}}function w(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,w(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),f;var i=s(r,e.iterator,t.arg);if("throw"===i.type)return t.method="throw",t.arg=i.arg,t.delegate=null,f;var o=i.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function A(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function k(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function x(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(A,this),this.reset(!0)}function E(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,i=function t(){for(;++r=0;--i){var o=this.tryEntries[i],a=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var u=n.call(o,"catchLoc"),l=n.call(o,"finallyLoc");if(u&&l){if(this.prev=0;--r){var i=this.tryEntries[r];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),k(n),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var i=r.arg;k(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:E(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},e}function Zo(e,t,n,r,i,o,a){try{var u=e[o](a),l=u.value}catch(c){return void n(c)}u.done?t(l):Promise.resolve(l).then(r,i)}function Yo(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var o=e.apply(t,n);function a(e){Zo(o,r,i,a,u,"next",e)}function u(e){Zo(o,r,i,a,u,"throw",e)}a(void 0)}))}}var qo=function(){var e=fe(No).showInfoMessage;return function(){var t=Yo(Wo().mark((function t(n,r){var i;return Wo().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(null!==(i=navigator)&&void 0!==i&&i.clipboard){t.next=4;break}return e({text:"Clipboard not supported",type:"error"}),console.warn("Clipboard not supported"),t.abrupt("return",!1);case 4:return t.prev=4,t.next=7,navigator.clipboard.writeText(n);case 7:return r&&e({text:r,type:"success"}),t.abrupt("return",!0);case 11:return t.prev=11,t.t0=t.catch(4),t.t0 instanceof Error&&e({text:"".concat(t.t0.name,": ").concat(t.t0.message),type:"error"}),console.warn("Copy failed",t.t0),t.abrupt("return",!1);case 16:case"end":return t.stop()}}),t,null,[[4,11]])})));return function(e,n){return t.apply(this,arguments)}}()},Go=function(e){var t,n=e.variant,r=void 0===n?"contained":n,i=e.color,o=void 0===i?"primary":i,a=e.size,u=void 0===a?"medium":a,l=e.ariaLabel,c=e.children,s=e.endIcon,f=e.startIcon,p=e.fullWidth,d=void 0!==p&&p,h=e.className,v=e.disabled,m=e.onClick,g=e.onMouseDown;return Qr("button",{className:so()((xr(t={"vm-button":!0},"vm-button_".concat(r,"_").concat(o),!0),xr(t,"vm-button_".concat(u),u),xr(t,"vm-button_icon",(f||s)&&!c),xr(t,"vm-button_full-width",d),xr(t,"vm-button_with-icon",f||s),xr(t,"vm-button_disabled",v),xr(t,h||"",h),t)),disabled:v,"aria-label":l,onClick:m,onMouseDown:g,children:Qr(_,{children:[f&&Qr("span",{className:"vm-button__start-icon",children:f}),c&&Qr("span",{children:c}),s&&Qr("span",{className:"vm-button__end-icon",children:s})]})})},Qo=function(e){var t=e.data,n=qo(),r=ce((function(){return JSON.stringify(t,null,2)}),[t]),i=function(){var e=Yo(Wo().mark((function e(){return Wo().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,n(r,"Formatted JSON has been copied");case 2:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return Qr("div",{className:"vm-json-view",children:[Qr("div",{className:"vm-json-view__copy",children:Qr(Go,{variant:"outlined",onClick:i,children:"Copy JSON"})}),Qr("pre",{className:"vm-json-view__code",children:Qr("code",{children:r})})]})},Jo=function(e){var t=e.children,n=e.title,r=e.open,i=e.placement,o=void 0===i?"bottom-center":i,a=e.offset,u=void 0===a?{top:6,left:0}:a,l=To().isMobile,c=Lt(re(!1),2),s=c[0],f=c[1],p=Lt(re({width:0,height:0}),2),d=p[0],h=p[1],v=ue(null),m=ue(null),g=function(){return f(!1)};oe((function(){if(m.current&&s)return h({width:m.current.clientWidth,height:m.current.clientHeight}),window.addEventListener("scroll",g),function(){window.removeEventListener("scroll",g)}}),[s,n]);var y=ce((function(){var e,t=null===v||void 0===v||null===(e=v.current)||void 0===e?void 0:e.base;if(!t||!s)return{};var n=t.getBoundingClientRect(),r={top:0,left:0},i="bottom-right"===o||"top-right"===o,a="bottom-left"===o||"top-left"===o,l=null===o||void 0===o?void 0:o.includes("top"),c=(null===u||void 0===u?void 0:u.top)||0,f=(null===u||void 0===u?void 0:u.left)||0;r.left=n.left-(d.width-n.width)/2+f,r.top=n.height+n.top+c,i&&(r.left=n.right-d.width),a&&(r.left=n.left+f),l&&(r.top=n.top-d.height-c);var p=window,h=p.innerWidth,m=p.innerHeight,g=r.top+d.height+20>m,y=r.top-20<0,_=r.left+d.width+20>h,b=r.left-20<0;return g&&(r.top=n.top-d.height-c),y&&(r.top=n.height+n.top+c),_&&(r.left=n.right-d.width-f),b&&(r.left=n.left+f),r.top<0&&(r.top=20),r.left<0&&(r.left=20),r}),[v,o,s,d]),b=function(){"boolean"!==typeof r&&f(!0)},D=function(){f(!1)};return oe((function(){"boolean"===typeof r&&f(r)}),[r]),oe((function(){var e,t=null===v||void 0===v||null===(e=v.current)||void 0===e?void 0:e.base;if(t)return t.addEventListener("mouseenter",b),t.addEventListener("mouseleave",D),function(){t.removeEventListener("mouseenter",b),t.removeEventListener("mouseleave",D)}}),[v]),Qr(_,{children:[Qr(_,{ref:v,children:t}),!l&&s&&At.createPortal(Qr("div",{className:"vm-tooltip",ref:m,style:y,children:n}),document.body)]})},Ko=function(e){var t=Lt(re(!!e),2),n=t[0],r=t[1],i=se((function(){return r(!0)}),[]),o=se((function(){return r(!1)}),[]),a=se((function(){return r((function(e){return!e}))}),[]);return{value:n,setValue:r,setTrue:i,setFalse:o,toggle:a}},Xo=function(e,t,n){var r=se((function(r){var i=null===e||void 0===e?void 0:e.current,o=r.target,a=(null===n||void 0===n?void 0:n.current)&&n.current.contains(o);!i||i.contains((null===r||void 0===r?void 0:r.target)||null)||a||t(r)}),[e,t]);go("mousedown",r),go("touchstart",r)},ea=function(e){var t=e.children,n=e.buttonRef,r=e.placement,i=void 0===r?"bottom-left":r,o=e.open,a=void 0!==o&&o,u=e.onClose,l=e.offset,c=void 0===l?{top:6,left:0}:l,s=e.clickOutside,f=void 0===s||s,p=e.fullWidth,d=e.title,h=e.disabledFullScreen,v=To().isMobile,m=Wn(),g=Un(),y=Lt(re({width:0,height:0}),2),b=y[0],D=y[1],w=Ko(!1),A=w.value,k=w.setValue,x=w.setFalse,E=ue(null);oe((function(){k(a)}),[a]),oe((function(){return!A&&u&&u(),A&&v&&!h&&(document.body.style.overflow="hidden"),function(){document.body.style.overflow="auto"}}),[A]),oe((function(){var e,t;D({width:(null===E||void 0===E||null===(e=E.current)||void 0===e?void 0:e.clientWidth)||0,height:(null===E||void 0===E||null===(t=E.current)||void 0===t?void 0:t.clientHeight)||0}),k(!1)}),[E]);var C=ce((function(){var e=n.current;if(!e||!A)return{};var t=e.getBoundingClientRect(),r={top:0,left:0,width:"auto"},o="bottom-right"===i||"top-right"===i,a=null===i||void 0===i?void 0:i.includes("top"),u=(null===c||void 0===c?void 0:c.top)||0,l=(null===c||void 0===c?void 0:c.left)||0;r.left=r.left=t.left+l,r.top=t.height+t.top+u,o&&(r.left=t.right-b.width),a&&(r.top=t.top-b.height-u);var s=window,f=s.innerWidth,d=s.innerHeight,h=r.top+b.height+20>d,v=r.top-20<0,m=r.left+b.width+20>f,g=r.left-20<0;return h&&(r.top=t.top-b.height-u),v&&(r.top=t.height+t.top+u),m&&(r.left=t.right-b.width-l),g&&(r.left=t.left+l),p&&(r.width="".concat(t.width,"px")),r.top<0&&(r.top=20),r}),[n,i,A,t,p]);f&&Xo(E,(function(){return k(!1)}),n),oe((function(){if(E.current&&A&&(!v||h)){var e=E.current.getBoundingClientRect(),t=e.right,n=e.width;if(t>window.innerWidth){var r=window.innerWidth-20-n;E.current.style.left=re[n]?1:0}var sa,fa,pa,da=function(e){var t=e.rows,n=e.columns,r=e.defaultOrderBy,i=e.copyToClipboard,o=e.paginationOffset,a=Lt(re(r),2),u=a[0],l=a[1],c=Lt(re("desc"),2),s=c[0],f=c[1],p=Lt(re(null),2),d=p[0],h=p[1],v=ce((function(){var e=o.startIndex,n=o.endIndex;return function(e,t){var n=e.map((function(e,t){return[e,t]}));return n.sort((function(e,n){var r=t(e[0],n[0]);return 0!==r?r:e[1]-n[1]})),n.map((function(e){return e[0]}))}(t,function(e,t){return"desc"===e?function(e,n){return ca(e,n,t)}:function(e,n){return-ca(e,n,t)}}(s,u)).slice(e,n)}),[t,u,s,o]),m=function(e,t){return Yo(Wo().mark((function n(){return Wo().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(d!==t){n.next=2;break}return n.abrupt("return");case 2:return n.prev=2,n.next=5,navigator.clipboard.writeText(String(e));case 5:h(t),n.next=11;break;case 8:n.prev=8,n.t0=n.catch(2),console.error(n.t0);case 11:case"end":return n.stop()}}),n,null,[[2,8]])})))};return oe((function(){if(null!==d){var e=setTimeout((function(){return h(null)}),2e3);return function(){return clearTimeout(e)}}}),[d]),Qr("table",{className:"vm-table",children:[Qr("thead",{className:"vm-table-header",children:Qr("tr",{className:"vm-table__row vm-table__row_header",children:[n.map((function(e){return Qr("th",{className:"vm-table-cell vm-table-cell_header vm-table-cell_sort",onClick:(t=e.key,function(){f((function(e){return"asc"===e&&u===t?"desc":"asc"})),l(t)}),children:Qr("div",{className:"vm-table-cell__content",children:[Qr("div",{children:String(e.title||e.key)}),Qr("div",{className:so()({"vm-table__sort-icon":!0,"vm-table__sort-icon_active":u===e.key,"vm-table__sort-icon_desc":"desc"===s&&u===e.key}),children:Qr(Yi,{})})]})},String(e.key));var t})),i&&Qr("th",{className:"vm-table-cell vm-table-cell_header"})]})}),Qr("tbody",{className:"vm-table-body",children:v.map((function(e,t){return Qr("tr",{className:"vm-table__row",children:[n.map((function(t){return Qr("td",{className:so()(xr({"vm-table-cell":!0},"".concat(t.className),t.className)),children:e[t.key]||"-"},String(t.key))})),i&&Qr("td",{className:"vm-table-cell vm-table-cell_right",children:e[i]&&Qr("div",{className:"vm-table-cell__content",children:Qr(Jo,{title:d===t?"Copied":"Copy row",children:Qr(Go,{variant:"text",color:d===t?"success":"gray",size:"small",startIcon:Qr(d===t?Ki:Xi,{}),onClick:m(e[i],t),ariaLabel:"copy row"})})})})]},t)}))})]})},ha=function(e){var t=e.page,n=e.length,r=e.limit,i=e.onChange,o=To().isMobile,a=function(e){return function(){i(+t+e),window.scrollTo(0,0)}};return Qr("div",{className:so()({"vm-pagination":!0,"vm-pagination_mobile":o}),children:[t>1&&Qr(Go,{variant:"text",onClick:a(-1),startIcon:Qr("div",{className:"vm-pagination__icon vm-pagination__icon_prev",children:Qr(Zi,{})}),children:"Previous"}),n>=r&&Qr(Go,{variant:"text",onClick:a(1),endIcon:Qr("div",{className:"vm-pagination__icon vm-pagination__icon_next",children:Qr(Zi,{})}),children:"Next"})]})},va=function(e){var t=e.logs,n=e.limitRows,r=e.displayColumns,i=e.tableCompact,o=e.columns,a=ia().setSearchParamsFromKeys,u=Lt(ra(1,"page"),2),l=u[0],c=u[1],s=function(e){switch(e){case"time":return"vm-table-cell_logs-time";case"data":return"vm-table-cell_logs vm-table-cell_pre";default:return"vm-table-cell_logs"}},f=ce((function(){var e=(l-1)*Number(n);return{startIndex:e,endIndex:e+Number(n)}}),[l,n]),p=ce((function(){return i?[{key:"data",title:"Data",className:s("data")}]:o.map((function(e){return{key:e,title:e,className:s(e)}}))}),[i,o]),d=ce((function(){return null===r||void 0===r||!r.length||i?p:p.filter((function(e){return r.includes(e.key)}))}),[p,r,i]);return Qr(_,{children:[Qr(da,{rows:t,columns:d,defaultOrderBy:"time",copyToClipboard:"data",paginationOffset:f}),Qr(ha,{page:l,limit:+n,length:t.slice(f.startIndex,f.endIndex).length,onChange:function(e){c(e),a({page:e})}})]})},ma=function(e){var t=e.defaultExpanded,n=void 0!==t&&t,r=e.onChange,i=e.title,o=e.children,a=Lt(re(n),2),u=a[0],l=a[1];return oe((function(){r&&r(u)}),[u]),Qr(_,{children:[Qr("header",{className:"vm-accordion-header ".concat(u&&"vm-accordion-header_open"),onClick:function(){l((function(e){return!e}))},children:[i,Qr("div",{className:"vm-accordion-header__arrow ".concat(u&&"vm-accordion-header__arrow_open"),children:Qr(Zi,{})})]}),u&&Qr("section",{className:"vm-accordion-section",children:o},"content")]})},ga=function(e){var t=e.logs,n=e.columns,r=ce((function(){var e=["_msg","time","data","_time"],r=n.filter((function(t){return!e.includes(t)}));return function(e,t){var n=e.reduce((function(e,n){var r=t.map((function(e){return"".concat(e,": ").concat(n[e]||"-")})).join("|");return(e[r]=e[r]||[]).push(n),e}),{});return Object.entries(n).map((function(e){var t=Lt(e,2),n=t[0],r=t[1];return{keys:n.split("|"),values:r}}))}(t,r)}),[t]);return Qr("div",{className:"vm-explore-logs-body-content",children:r.map((function(e){return Qr("div",{className:"vm-explore-logs-body-content-group",children:Qr(ma,{defaultExpanded:!0,title:Qr("div",{className:"vm-explore-logs-body-content-group-keys",children:[Qr("span",{className:"vm-explore-logs-body-content-group-keys__title",children:"Group by:"}),e.keys.map((function(e){return Qr("div",{className:"vm-explore-logs-body-content-group-keys__key",children:e},e)}))]}),children:Qr("div",{className:"vm-explore-logs-body-content-group-rows",children:e.values.map((function(e){return Qr("div",{className:"vm-explore-logs-body-content-group-rows-item",children:[Qr("div",{className:"vm-explore-logs-body-content-group-rows-item__time",children:e.time}),Qr("div",{className:"vm-explore-logs-body-content-group-rows-item__msg",children:e._msg})]},"".concat(e._msg).concat(e._time))}))})})},e.keys.join(""))}))})},ya=function(e){return e.group="group",e.table="table",e.json="json",e}(ya||{}),_a=[{label:"Group",value:ya.group,icon:Qr(io,{})},{label:"Table",value:ya.table,icon:Qr(Qi,{})},{label:"JSON",value:ya.json,icon:Qr(Ji,{})}],ba=function(e){var t=e.data,n=To().isMobile,r=Mi().timezone,i=ia().setSearchParamsFromKeys,o=Lt(ra(Ir("LOGS_LIMIT")||50,"limit"),2),a=o[0],u=o[1],l=Lt(ra(ya.group,"view"),2),c=l[0],s=l[1],f=Lt(re([]),2),p=f[0],d=f[1],h=Ko(!1),v=h.value,m=h.toggle,g=ce((function(){return t.map((function(e){return Cr({time:xt()(e._time).tz().format("MMM DD, YYYY \nHH:mm:ss.SSS"),data:JSON.stringify(e,null,2)},e)}))}),[t,r]),y=ce((function(){if(null===g||void 0===g||!g.length)return[];var e,t=["data","_time"],n=new Set,r=$t(g);try{for(r.s();!(e=r.n()).done;){var i=e.value;for(var o in i)n.add(o)}}catch(a){r.e(a)}finally{r.f()}return Array.from(n).filter((function(e){return!t.includes(e)}))}),[g]);return Qr("div",{className:so()({"vm-explore-logs-body":!0,"vm-block":!0,"vm-block_mobile":n}),children:[Qr("div",{className:so()({"vm-explore-logs-body-header":!0,"vm-section-header":!0,"vm-explore-logs-body-header_mobile":n}),children:[Qr("div",{className:"vm-section-header__tabs",children:Qr(_o,{activeItem:String(c),items:_a,onChange:function(e){s(e),i({view:e})}})}),c===ya.table&&Qr("div",{className:"vm-explore-logs-body-header__settings",children:[Qr(na,{limit:+a,onChange:function(e){u(e),i({limit:e}),Rr("LOGS_LIMIT","".concat(e))}}),Qr(la,{columns:y,defaultColumns:p,onChangeColumns:d,tableCompact:v,toggleTableCompact:m})]})]}),Qr("div",{className:so()({"vm-explore-logs-body__table":!0,"vm-explore-logs-body__table_mobile":n}),children:!!t.length&&Qr(_,{children:[c===ya.table&&Qr(va,{logs:g,limitRows:+a,displayColumns:p,tableCompact:v,columns:y}),c===ya.group&&Qr(ga,{logs:g,columns:y}),c===ya.json&&Qr(Qo,{data:t})]})})]})},Da=1e3,wa=function(e){var t=e.containerStyles,n=void 0===t?{}:t,r=e.message,i=Kr().isDarkTheme;return Qr("div",{className:so()({"vm-spinner":!0,"vm-spinner_dark":i}),style:n&&{},children:[Qr("div",{className:"half-circle-spinner",children:[Qr("div",{className:"circle circle-1"}),Qr("div",{className:"circle circle-2"})]}),r&&Qr("div",{className:"vm-spinner__message",children:r})]})},Aa=function(e){var t=e.error,n=e.warning,r=e.info,i=ue(null),o=Lt(re(!1),2),a=o[0],u=o[1],l=Lt(re(!1),2),c=l[0],s=l[1],f=ce((function(){return t?"ERROR: ":n?"WARNING: ":""}),[t,n]),p="".concat(f).concat(t||n||r),d=function(){var e=i.current;if(e){var t=e.offsetWidth,n=e.scrollWidth,r=e.offsetHeight,o=e.scrollHeight;u(t+1=u?u:t+1,type:xa.keyboard}}))}if("Enter"===t){var l=S[w.index];l&&v(l.value),s||C()}"Escape"===t&&C()}),[w,S,C,v,s]);return oe((function(){E(n.length>=u)}),[n]),go("keydown",O),oe((function(){if(b.current&&w.type!==xa.mouse){var e=b.current.childNodes[w.index];null!==e&&void 0!==e&&e.scrollIntoView&&e.scrollIntoView({block:"center"})}}),[w,S]),oe((function(){A({index:-1})}),[S]),oe((function(){m&&m(x)}),[x]),oe((function(){g&&g(S)}),[S]),Qr(ea,{open:x,buttonRef:i,placement:"bottom-left",onClose:C,fullWidth:l,title:y?p:void 0,disabledFullScreen:d,offset:h,children:[Qr("div",{className:so()({"vm-autocomplete":!0,"vm-autocomplete_mobile":y&&!d}),ref:b,children:[F&&Qr("div",{className:"vm-autocomplete__no-options",children:f}),S.map((function(e,t){return Qr("div",{className:so()({"vm-list-item":!0,"vm-list-item_mobile":y,"vm-list-item_active":t===w.index,"vm-list-item_multiselect":s,"vm-list-item_multiselect_selected":null===s||void 0===s?void 0:s.includes(e.value),"vm-list-item_with-icon":e.icon}),id:"$autocomplete$".concat(e.value),onClick:(r=e.value,function(){o||(v(r),s||C())}),onMouseEnter:(n=t,function(){A({index:n,type:xa.mouse})}),onMouseLeave:M,children:[(null===s||void 0===s?void 0:s.includes(e.value))&&Qr(Ki,{}),Qr(_,{children:e.icon}),Qr("span",{children:e.value})]},"".concat(t).concat(e.value));var n,r}))]}),(null===(t=S[w.index])||void 0===t?void 0:t.description)&&Qr("div",{className:"vm-autocomplete-info",children:[Qr("div",{className:"vm-autocomplete-info__type",children:S[w.index].type}),Qr("div",{className:"vm-autocomplete-info__description",dangerouslySetInnerHTML:{__html:S[w.index].description||""}})]})]})},Ca=function(e){return e[e.metric=0]="metric",e[e.label=1]="label",e[e.value=2]="value",e}(Ca||{}),Sa=(xr(sa={},Ca.metric,Qr(oo,{})),xr(sa,Ca.label,Qr(uo,{})),xr(sa,Ca.value,Qr(lo,{})),sa),Fa="u-off",Ma="u-label",Oa="width",Ta="height",Ba="top",Pa="bottom",Na="left",La="right",$a="#000",Ra=$a+"0",Ia="mousemove",ja="mousedown",za="mouseup",Ha="mouseenter",Ua="mouseleave",Va="dblclick",Wa="change",Za="dppxchange",Ya="--",qa="undefined"!=typeof window,Ga=qa?document:null,Qa=qa?window:null,Ja=qa?navigator:null;function Ka(e,t){if(null!=t){var n=e.classList;!n.contains(t)&&n.add(t)}}function Xa(e,t){var n=e.classList;n.contains(t)&&n.remove(t)}function eu(e,t,n){e.style[t]=n+"px"}function tu(e,t,n,r){var i=Ga.createElement(e);return null!=t&&Ka(i,t),null!=n&&n.insertBefore(i,r),i}function nu(e,t){return tu("div",e,t)}var ru=new WeakMap;function iu(e,t,n,r,i){var o="translate("+t+"px,"+n+"px)";o!=ru.get(e)&&(e.style.transform=o,ru.set(e,o),t<0||n<0||t>r||n>i?Ka(e,Fa):Xa(e,Fa))}var ou=new WeakMap;function au(e,t,n){var r=t+n;r!=ou.get(e)&&(ou.set(e,r),e.style.background=t,e.style.borderColor=n)}var uu=new WeakMap;function lu(e,t,n,r){var i=t+""+n;i!=uu.get(e)&&(uu.set(e,i),e.style.height=n+"px",e.style.width=t+"px",e.style.marginLeft=r?-t/2+"px":0,e.style.marginTop=r?-n/2+"px":0)}var cu={passive:!0},su=Cr(Cr({},cu),{},{capture:!0});function fu(e,t,n,r){t.addEventListener(e,n,r?su:cu)}function pu(e,t,n,r){t.removeEventListener(e,n,r?su:cu)}function du(e,t,n,r){var i;n=n||0;for(var o=(r=r||t.length-1)<=2147483647;r-n>1;)t[i=o?n+r>>1:Fu((n+r)/2)]=t&&i<=n;i+=r)if(null!=e[i])return i;return-1}function vu(e,t,n,r){var i=Nu(e),o=Nu(t),a=10==n?Lu:$u;e==t&&(-1==i?(e*=n,t/=n):(e/=n,t*=n));var u=1==o?Ou:Fu,l=(1==i?Fu:Ou)(a(Su(e))),c=u(a(Su(t))),s=Pu(n,l),f=Pu(n,c);return 10==n&&(l<0&&(s=Ku(s,-l)),c<0&&(f=Ku(f,-c))),r||2==n?(e=s*i,t=f*o):(e=Ju(e,s),t=Qu(t,f)),[e,t]}function mu(e,t,n,r){var i=vu(e,t,n,r);return 0==e&&(i[0]=0),0==t&&(i[1]=0),i}qa&&function e(){var t=devicePixelRatio;fa!=t&&(fa=t,pa&&pu(Wa,pa,e),pa=matchMedia("(min-resolution: ".concat(fa-.001,"dppx) and (max-resolution: ").concat(fa+.001,"dppx)")),fu(Wa,pa,e),Qa.dispatchEvent(new CustomEvent(Za)))}();var gu=.1,yu={mode:3,pad:gu},_u={pad:0,soft:null,mode:0},bu={min:_u,max:_u};function Du(e,t,n,r){return ll(n)?Au(e,t,n):(_u.pad=n,_u.soft=r?0:null,_u.mode=r?3:0,Au(e,t,bu))}function wu(e,t){return null==e?t:e}function Au(e,t,n){var r=n.min,i=n.max,o=wu(r.pad,0),a=wu(i.pad,0),u=wu(r.hard,-Iu),l=wu(i.hard,Iu),c=wu(r.soft,Iu),s=wu(i.soft,-Iu),f=wu(r.mode,0),p=wu(i.mode,0),d=t-e,h=Lu(d),v=Bu(Su(e),Su(t)),m=Lu(v),g=Su(m-h);(d<1e-9||g>10)&&(d=0,0!=e&&0!=t||(d=1e-9,2==f&&c!=Iu&&(o=0),2==p&&s!=-Iu&&(a=0)));var y=d||v||1e3,_=Lu(y),b=Pu(10,Fu(_)),D=Ku(Ju(e-y*(0==d?0==e?.1:1:o),b/10),9),w=e>=c&&(1==f||3==f&&D<=c||2==f&&D>=c)?c:Iu,A=Bu(u,D=w?w:Tu(w,D)),k=Ku(Qu(t+y*(0==d?0==t?.1:1:a),b/10),9),x=t<=s&&(1==p||3==p&&k>=s||2==p&&k<=s)?s:-Iu,E=Tu(l,k>x&&t<=x?x:Bu(x,k));return A==E&&0==A&&(E=100),[A,E]}var ku=new Intl.NumberFormat(qa?Ja.language:"en-US"),xu=function(e){return ku.format(e)},Eu=Math,Cu=Eu.PI,Su=Eu.abs,Fu=Eu.floor,Mu=Eu.round,Ou=Eu.ceil,Tu=Eu.min,Bu=Eu.max,Pu=Eu.pow,Nu=Eu.sign,Lu=Eu.log10,$u=Eu.log2,Ru=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return Eu.asinh(e/t)},Iu=1/0;function ju(e){return 1+(0|Lu((e^e>>31)-(e>>31)))}function zu(e,t,n){return Tu(Bu(e,t),n)}function Hu(e){return"function"==typeof e?e:function(){return e}}var Uu=function(e){return e},Vu=function(e,t){return t},Wu=function(e){return null},Zu=function(e){return!0},Yu=function(e,t){return e==t},qu=function(e){return Ku(e,14)};function Gu(e,t){return qu(Ku(qu(e/t))*t)}function Qu(e,t){return qu(Ou(qu(e/t))*t)}function Ju(e,t){return qu(Fu(qu(e/t))*t)}function Ku(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(al(e))return e;var n=Math.pow(10,t),r=e*n*(1+Number.EPSILON);return Mu(r)/n}var Xu=new Map;function el(e){return((""+e).split(".")[1]||"").length}function tl(e,t,n,r){for(var i=[],o=r.map(el),a=t;a=0&&a>=0?0:u)+(a>=o[c]?0:o[c]),p=Ku(s,f);i.push(p),Xu.set(p,f)}return i}var nl={},rl=[],il=[null,null],ol=Array.isArray,al=Number.isInteger;function ul(e){return"string"==typeof e}function ll(e){var t=!1;if(null!=e){var n=e.constructor;t=null==n||n==Object}return t}function cl(e){return null!=e&&"object"==typeof e}var sl=Object.getPrototypeOf(Uint8Array);function fl(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ll;if(ol(e)){var r=e.find((function(e){return null!=e}));if(ol(r)||n(r)){t=Array(e.length);for(var i=0;io){for(r=a-1;r>=0&&null==e[r];)e[r--]=null;for(r=a+1;r12?t-12:t},AA:function(e){return e.getHours()>=12?"PM":"AM"},aa:function(e){return e.getHours()>=12?"pm":"am"},a:function(e){return e.getHours()>=12?"p":"a"},mm:function(e){return Dl(e.getMinutes())},m:function(e){return e.getMinutes()},ss:function(e){return Dl(e.getSeconds())},s:function(e){return e.getSeconds()},fff:function(e){return((t=e.getMilliseconds())<10?"00":t<100?"0":"")+t;var t}};function Al(e,t){t=t||bl;for(var n,r=[],i=/\{([a-z]+)\}|[^{]+/gi;n=i.exec(e);)r.push("{"==n[0][0]?wl[n[1]]:n[0]);return function(e){for(var n="",i=0;i=a,v=f>=o&&f=i?i:f,M=_+(Fu(c)-Fu(g))+Qu(g-_,F);d.push(M);for(var O=t(M),T=O.getHours()+O.getMinutes()/n+O.getSeconds()/r,B=f/r,P=p/u.axes[l]._space;!((M=Ku(M+f,1==e?0:3))>s);)if(B>1){var N=Fu(Ku(T+B,6))%24,L=t(M).getHours()-N;L>1&&(L=-1),T=(T+B)%24,Ku(((M-=L*r)-d[d.length-1])/f,3)*P>=.7&&d.push(M)}else d.push(M)}return d}}]}var Hl=Lt(zl(1),3),Ul=Hl[0],Vl=Hl[1],Wl=Hl[2],Zl=Lt(zl(.001),3),Yl=Zl[0],ql=Zl[1],Gl=Zl[2];function Ql(e,t){return e.map((function(e){return e.map((function(n,r){return 0==r||8==r||null==n?n:t(1==r||0==e[8]?n:e[1]+n)}))}))}function Jl(e,t){return function(n,r,i,o,a){var u,l,c,s,f,p,d=t.find((function(e){return a>=e[0]}))||t[t.length-1];return r.map((function(t){var n=e(t),r=n.getFullYear(),i=n.getMonth(),o=n.getDate(),a=n.getHours(),h=n.getMinutes(),v=n.getSeconds(),m=r!=u&&d[2]||i!=l&&d[3]||o!=c&&d[4]||a!=s&&d[5]||h!=f&&d[6]||v!=p&&d[7]||d[1];return u=r,l=i,c=o,s=a,f=h,p=v,m(n)}))}}function Kl(e,t,n){return new Date(e,t,n)}function Xl(e,t){return t(e)}tl(2,-53,53,[1]);function ec(e,t){return function(n,r,i,o){return null==o?Ya:t(e(r))}}var tc={show:!0,live:!0,isolate:!1,mount:function(){},markers:{show:!0,width:2,stroke:function(e,t){var n=e.series[t];return n.width?n.stroke(e,t):n.points.width?n.points.stroke(e,t):null},fill:function(e,t){return e.series[t].fill(e,t)},dash:"solid"},idx:null,idxs:null,values:[]};var nc=[0,0];function rc(e,t,n){return function(e){0==e.button&&n(e)}}function ic(e,t,n){return n}var oc={show:!0,x:!0,y:!0,lock:!1,move:function(e,t,n){return nc[0]=t,nc[1]=n,nc},points:{show:function(e,t){var n=e.cursor.points,r=nu(),i=n.size(e,t);eu(r,Oa,i),eu(r,Ta,i);var o=i/-2;eu(r,"marginLeft",o),eu(r,"marginTop",o);var a=n.width(e,t,i);return a&&eu(r,"borderWidth",a),r},size:function(e,t){return e.series[t].points.size},width:0,stroke:function(e,t){var n=e.series[t].points;return n._stroke||n._fill},fill:function(e,t){var n=e.series[t].points;return n._fill||n._stroke}},bind:{mousedown:rc,mouseup:rc,click:rc,dblclick:rc,mousemove:ic,mouseleave:ic,mouseenter:ic},drag:{setScale:!0,x:!0,y:!1,dist:0,uni:null,click:function(e,t){t.stopPropagation(),t.stopImmediatePropagation()},_x:!1,_y:!1},focus:{prox:-1,bias:0},left:-10,top:-10,idx:null,dataIdx:function(e,t,n){return n},idxs:null},ac={show:!0,stroke:"rgba(0,0,0,0.07)",width:2},uc=pl({},ac,{filter:Vu}),lc=pl({},uc,{size:10}),cc=pl({},ac,{show:!1}),sc='12px system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"',fc="bold "+sc,pc={show:!0,scale:"x",stroke:$a,space:50,gap:5,size:50,labelGap:0,labelSize:30,labelFont:fc,side:2,grid:uc,ticks:lc,border:cc,font:sc,rotate:0},dc={show:!0,scale:"x",auto:!1,sorted:1,min:Iu,max:-Iu,idxs:[]};function hc(e,t,n,r,i){return t.map((function(e){return null==e?"":xu(e)}))}function vc(e,t,n,r,i,o,a){for(var u=[],l=Xu.get(i)||0,c=n=a?n:Ku(Qu(n,i),l);c<=r;c=Ku(c+i,l))u.push(Object.is(c,-0)?0:c);return u}function mc(e,t,n,r,i,o,a){var u=[],l=e.scales[e.axes[t].scale].log,c=Fu((10==l?Lu:$u)(n));i=Pu(l,c),10==l&&c<0&&(i=Ku(i,-c));var s=n;do{u.push(s),s+=i,10==l&&(s=Ku(s,Xu.get(i))),s>=i*l&&(i=s)}while(s<=r);return u}function gc(e,t,n,r,i,o,a){var u=e.scales[e.axes[t].scale].asinh,l=r>u?mc(e,t,Bu(u,n),r,i):[u],c=r>=0&&n<=0?[0]:[];return(n<-u?mc(e,t,Bu(u,-r),-n,i):[u]).reverse().map((function(e){return-e})).concat(c,l)}var yc=/./,_c=/[12357]/,bc=/[125]/,Dc=/1/;function wc(e,t,n,r,i){var o=e.axes[n],a=o.scale,u=e.scales[a];if(3==u.distr&&2==u.log)return t;var l=e.valToPos,c=o._space,s=l(10,a),f=l(9,a)-s>=c?yc:l(7,a)-s>=c?_c:l(5,a)-s>=c?bc:Dc;return t.map((function(e){return 4==u.distr&&0==e||f.test(e)?e:null}))}function Ac(e,t,n,r){return null==r?Ya:null==t?"":xu(t)}var kc={show:!0,scale:"y",stroke:$a,space:30,gap:5,size:50,labelGap:0,labelSize:30,labelFont:fc,side:3,grid:uc,ticks:lc,border:cc,font:sc,rotate:0};var xc={scale:null,auto:!0,sorted:0,min:Iu,max:-Iu},Ec=function(e,t,n,r,i){return i},Cc={show:!0,auto:!0,sorted:0,gaps:Ec,alpha:1,facets:[pl({},xc,{scale:"x"}),pl({},xc,{scale:"y"})]},Sc={scale:"y",auto:!0,sorted:0,show:!0,spanGaps:!1,gaps:Ec,alpha:1,points:{show:function(e,t){var n=e.series[0],r=n.scale,i=n.idxs,o=e._data[0],a=e.valToPos(o[i[0]],r,!0),u=e.valToPos(o[i[1]],r,!0),l=Su(u-a)/(e.series[t].points.space*fa);return i[1]-i[0]<=l},filter:null},values:null,min:Iu,max:-Iu,idxs:[],path:null,clip:null};function Fc(e,t,n,r,i){return n/10}var Mc={time:!0,auto:!0,distr:1,log:10,asinh:1,min:null,max:null,dir:1,ori:0},Oc=pl({},Mc,{time:!1,ori:1}),Tc={};function Bc(e,t){var n=Tc[e];return n||(n={key:e,plots:[],sub:function(e){n.plots.push(e)},unsub:function(e){n.plots=n.plots.filter((function(t){return t!=e}))},pub:function(e,t,r,i,o,a,u){for(var l=0;l0){a=new Path2D;for(var u=0==t?Yc:qc,l=n,c=0;cs[0]){var f=s[0]-l;f>0&&u(a,l,r,f,r+o),l=s[1]}}var p=n+i-l;p>0&&u(a,l,r,p,r+o)}return a}function jc(e,t,n,r,i,o,a){for(var u=[],l=e.length,c=1==i?n:r;c>=n&&c<=r;c+=i){if(null===t[c]){var s=c,f=c;if(1==i)for(;++c<=r&&null===t[c];)f=c;else for(;--c>=n&&null===t[c];)f=c;var p=o(e[s]),d=f==s?p:o(e[f]),h=s-i;p=a<=0&&h>=0&&h=0&&v>=0&&v=p&&u.push([p,d])}}return u}function zc(e){return 0==e?Uu:1==e?Mu:function(t){return Gu(t,e)}}function Hc(e){var t=0==e?Uc:Vc,n=0==e?function(e,t,n,r,i,o){e.arcTo(t,n,r,i,o)}:function(e,t,n,r,i,o){e.arcTo(n,t,i,r,o)},r=0==e?function(e,t,n,r,i){e.rect(t,n,r,i)}:function(e,t,n,r,i){e.rect(n,t,i,r)};return function(e,i,o,a,u){var l=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,c=arguments.length>6&&void 0!==arguments[6]?arguments[6]:0;0==l&&0==c?r(e,i,o,a,u):(l=Tu(l,a/2,u/2),c=Tu(c,a/2,u/2),t(e,i+l,o),n(e,i+a,o,i+a,o+u,l),n(e,i+a,o+u,i,o+u,c),n(e,i,o+u,i,o,c),n(e,i,o,i+a,o,l),e.closePath())}}var Uc=function(e,t,n){e.moveTo(t,n)},Vc=function(e,t,n){e.moveTo(n,t)},Wc=function(e,t,n){e.lineTo(t,n)},Zc=function(e,t,n){e.lineTo(n,t)},Yc=Hc(0),qc=Hc(1),Gc=function(e,t,n,r,i,o){e.arc(t,n,r,i,o)},Qc=function(e,t,n,r,i,o){e.arc(n,t,r,i,o)},Jc=function(e,t,n,r,i,o,a){e.bezierCurveTo(t,n,r,i,o,a)},Kc=function(e,t,n,r,i,o,a){e.bezierCurveTo(n,t,i,r,a,o)};function Xc(e){return function(e,t,n,r,i){return Nc(e,t,(function(t,o,a,u,l,c,s,f,p,d,h){var v,m,g=t.pxRound,y=t.points;0==u.ori?(v=Uc,m=Gc):(v=Vc,m=Qc);var _=Ku(y.width*fa,3),b=(y.size-y.width)/2*fa,D=Ku(2*b,3),w=new Path2D,A=new Path2D,k=e.bbox,x=k.left,E=k.top,C=k.width,S=k.height;Yc(A,x-D,E-D,C+2*D,S+2*D);var F=function(e){if(null!=a[e]){var t=g(c(o[e],u,d,f)),n=g(s(a[e],l,h,p));v(w,t+b,n),m(w,t,n,b,0,2*Cu)}};if(i)i.forEach(F);else for(var M=n;M<=r;M++)F(M);return{stroke:_>0?w:null,fill:w,clip:A,flags:2|Pc}}))}}function es(e){return function(t,n,r,i,o,a){r!=i&&(o!=r&&a!=r&&e(t,n,r),o!=i&&a!=i&&e(t,n,i),e(t,n,a))}}var ts=es(Wc),ns=es(Zc);function rs(e){var t=wu(null===e||void 0===e?void 0:e.alignGaps,0);return function(e,n,r,i){return Nc(e,n,(function(o,a,u,l,c,s,f,p,d,h,v){var m,g,y=o.pxRound,_=function(e){return y(s(e,l,h,p))},b=function(e){return y(f(e,c,v,d))};0==l.ori?(m=Wc,g=ts):(m=Zc,g=ns);for(var D,w,A,k=l.dir*(0==l.ori?1:-1),x={stroke:new Path2D,fill:null,clip:null,band:null,gaps:null,flags:Pc},E=x.stroke,C=Iu,S=-Iu,F=_(a[1==k?r:i]),M=hu(u,r,i,1*k),O=hu(u,r,i,-1*k),T=_(a[M]),B=_(a[O]),P=!1,N=1==k?r:i;N>=r&&N<=i;N+=k){var L=_(a[N]),$=u[N];L==F?null!=$?(w=b($),C==Iu&&(m(E,L,w),D=w),C=Tu(w,C),S=Bu(w,S)):null===$&&(P=!0):(C!=Iu&&(g(E,F,C,S,D,w),A=F),null!=$?(m(E,L,w=b($)),C=S=D=w):(C=Iu,S=-Iu,null===$&&(P=!0)),F=L)}C!=Iu&&C!=S&&A!=F&&g(E,F,C,S,D,w);var R=Lt(Lc(e,n),2),I=R[0],j=R[1];if(null!=o.fill||0!=I){var z=x.fill=new Path2D(E),H=b(o.fillTo(e,n,o.min,o.max,I));m(z,B,H),m(z,T,H)}if(!o.spanGaps){var U,V=[];P&&(U=V).push.apply(U,It(jc(a,u,r,i,k,_,t))),x.gaps=V=o.gaps(e,n,r,i,V),x.clip=Ic(V,l.ori,p,d,h,v)}return 0!=j&&(x.band=2==j?[Rc(e,n,r,i,E,-1),Rc(e,n,r,i,E,1)]:Rc(e,n,r,i,E,j)),x}))}}function is(e,t,n,r,i,o){var a=e.length;if(a<2)return null;var u=new Path2D;if(n(u,e[0],t[0]),2==a)r(u,e[1],t[1]);else{for(var l=Array(a),c=Array(a-1),s=Array(a-1),f=Array(a-1),p=0;p0!==c[d]>0?l[d]=0:(l[d]=3*(f[d-1]+f[d])/((2*f[d]+f[d-1])/c[d-1]+(f[d]+2*f[d-1])/c[d]),isFinite(l[d])||(l[d]=0));l[a-1]=c[a-2];for(var h=0;h=i&&o+(l<5?Xu.get(l):0)<=17)return[l,c]}while(++u0?e:t.clamp(r,e,t.min,t.max,t.key)):4==t.distr?Ru(e,t.asinh):e)-t._min)/(t._max-t._min)}function a(e,t,n,r){var i=o(e,t);return r+n*(-1==t.dir?1-i:i)}function u(e,t,n,r){var i=o(e,t);return r+n*(-1==t.dir?i:1-i)}function l(e,t,n,r){return 0==t.ori?a(e,t,n,r):u(e,t,n,r)}r.valToPosH=a,r.valToPosV=u;var c=!1;r.status=0;var s=r.root=nu("uplot");(null!=e.id&&(s.id=e.id),Ka(s,e.class),e.title)&&(nu("u-title",s).textContent=e.title);var f=tu("canvas"),p=r.ctx=f.getContext("2d"),d=nu("u-wrap",s);fu("click",d,(function(e){(Dt!=gt||wt!=yt)&&St.click(r,e)}),!0);var h=r.under=nu("u-under",d);d.appendChild(f);var v=r.over=nu("u-over",d),m=+wu((e=fl(e)).pxAlign,1),g=zc(m);(e.plugins||[]).forEach((function(t){t.opts&&(e=t.opts(r,e)||e)}));var y=e.ms||.001,_=r.series=1==i?cs(e.series||[],dc,Sc,!1):function(e,t){return e.map((function(e,n){return 0==n?null:pl({},t,e)}))}(e.series||[null],Cc),b=r.axes=cs(e.axes||[],pc,kc,!0),D=r.scales={},w=r.bands=e.bands||[];w.forEach((function(e){e.fill=Hu(e.fill||null),e.dir=wu(e.dir,-1)}));var A=2==i?_[1].facets[0].scale:_[0].scale,k={axes:function(){for(var e=function(){var e=b[t];if(!e.show||!e._show)return"continue";var n,i,o=e.side,a=o%2,u=e.stroke(r,t),c=0==o||3==o?-1:1;if(e.label){var s=e.labelGap*c,f=Mu((e._lpos+s)*fa);Xe(e.labelFont[0],u,"center",2==o?Ba:Pa),p.save(),1==a?(n=i=0,p.translate(f,Mu(pe+he/2)),p.rotate((3==o?-Cu:Cu)/2)):(n=Mu(fe+de/2),i=f),p.fillText(e.label,n,i),p.restore()}var d=Lt(e._found,2),h=d[0],v=d[1];if(0==v)return"continue";var m=D[e.scale],y=0==a?de:he,_=0==a?fe:pe,w=Mu(e.gap*fa),A=e._splits,k=2==m.distr?A.map((function(e){return qe[e]})):A,x=2==m.distr?qe[A[1]]-qe[A[0]]:h,E=e.ticks,C=e.border,S=E.show?Mu(E.size*fa):0,F=e._rotate*-Cu/180,M=g(e._pos*fa),O=M+(S+w)*c;i=0==a?O:0,n=1==a?O:0,Xe(e.font[0],u,1==e.align?Na:2==e.align?La:F>0?Na:F<0?La:0==a?"center":3==o?La:Na,F||1==a?"middle":2==o?Ba:Pa);for(var T=1.5*e.font[1],B=A.map((function(e){return g(l(e,m,y,_))})),P=e._values,N=0;N0&&(_.forEach((function(e,n){if(n>0&&e.show&&null==e._paths){var o=2==i?[0,t[n][0].length-1]:function(e){var t=zu(We-1,0,Te-1),n=zu(Ze+1,0,Te-1);for(;null==e[t]&&t>0;)t--;for(;null==e[n]&&n0&&e.show){He!=e.alpha&&(p.globalAlpha=He=e.alpha),tt(t,!1),e._paths&&nt(t,!1),tt(t,!0);var n=e._paths?e._paths.gaps:null,i=e.points.show(r,t,We,Ze,n),o=e.points.filter(r,t,i,n);(i||o)&&(e.points._paths=e.points.paths(r,t,We,Ze,o),nt(t,!0)),1!=He&&(p.globalAlpha=He=1),ln("drawSeries",t)}})))}},x=(e.drawOrder||["axes","series"]).map((function(e){return k[e]}));function E(t){var n=D[t];if(null==n){var r=(e.scales||nl)[t]||nl;if(null!=r.from)E(r.from),D[t]=pl({},D[r.from],r,{key:t});else{(n=D[t]=pl({},t==A?Mc:Oc,r)).key=t;var o=n.time,a=n.range,u=ol(a);if((t!=A||2==i&&!o)&&(!u||null!=a[0]&&null!=a[1]||(a={min:null==a[0]?yu:{mode:1,hard:a[0],soft:a[0]},max:null==a[1]?yu:{mode:1,hard:a[1],soft:a[1]}},u=!1),!u&&ll(a))){var l=a;a=function(e,t,n){return null==t?il:Du(t,n,l)}}n.range=Hu(a||(o?ps:t==A?3==n.distr?vs:4==n.distr?gs:fs:3==n.distr?hs:4==n.distr?ms:ds)),n.auto=Hu(!u&&n.auto),n.clamp=Hu(n.clamp||Fc),n._min=n._max=null}}}for(var C in E("x"),E("y"),1==i&&_.forEach((function(e){E(e.scale)})),b.forEach((function(e){E(e.scale)})),e.scales)E(C);var S,F,M=D[A],O=M.distr;0==M.ori?(Ka(s,"u-hz"),S=a,F=u):(Ka(s,"u-vt"),S=u,F=a);var T={};for(var B in D){var P=D[B];null==P.min&&null==P.max||(T[B]={min:P.min,max:P.max},P.min=P.max=null)}var N,L=e.tzDate||function(e){return new Date(Mu(e/y))},$=e.fmtDate||Al,R=1==y?Wl(L):Gl(L),I=Jl(L,Ql(1==y?Vl:ql,$)),j=ec(L,Xl("{YYYY}-{MM}-{DD} {h}:{mm}{aa}",$)),z=[],H=r.legend=pl({},tc,e.legend),U=H.show,V=H.markers;H.idxs=z,V.width=Hu(V.width),V.dash=Hu(V.dash),V.stroke=Hu(V.stroke),V.fill=Hu(V.fill);var W,Z=[],Y=[],q=!1,G={};if(H.live){var Q=_[1]?_[1].values:null;for(var J in W=(q=null!=Q)?Q(r,1,0):{_:0})G[J]=Ya}if(U)if(N=tu("table","u-legend",s),H.mount(r,N),q){var K=tu("tr","u-thead",N);for(var X in tu("th",null,K),W)tu("th",Ma,K).textContent=X}else Ka(N,"u-inline"),H.live&&Ka(N,"u-live");var ee={show:!0},te={show:!1};var ne=new Map;function re(e,t,n){var i=ne.get(t)||{},o=ke.bind[e](r,t,n);o&&(fu(e,t,i[e]=o),ne.set(t,i))}function ie(e,t,n){var r=ne.get(t)||{};for(var i in r)null!=e&&i!=e||(pu(i,t,r[i]),delete r[i]);null==e&&ne.delete(t)}var oe=0,ae=0,ue=0,le=0,ce=0,se=0,fe=0,pe=0,de=0,he=0;r.bbox={};var ve=!1,me=!1,ge=!1,ye=!1,_e=!1,be=!1;function De(e,t,n){(n||e!=r.width||t!=r.height)&&we(e,t),st(!1),ge=!0,me=!0,ke.left>=0&&(ye=be=!0),kt()}function we(e,t){r.width=oe=ue=e,r.height=ae=le=t,ce=se=0,function(){var e=!1,t=!1,n=!1,r=!1;b.forEach((function(i,o){if(i.show&&i._show){var a=i.side,u=a%2,l=i._size+(null!=i.label?i.labelSize:0);l>0&&(u?(ue-=l,3==a?(ce+=l,r=!0):n=!0):(le-=l,0==a?(se+=l,e=!0):t=!0))}})),Me[0]=e,Me[1]=n,Me[2]=t,Me[3]=r,ue-=Ve[1]+Ve[3],ce+=Ve[3],le-=Ve[2]+Ve[0],se+=Ve[0]}(),function(){var e=ce+ue,t=se+le,n=ce,r=se;function i(i,o){switch(i){case 1:return(e+=o)-o;case 2:return(t+=o)-o;case 3:return(n-=o)+o;case 0:return(r-=o)+o}}b.forEach((function(e,t){if(e.show&&e._show){var n=e.side;e._pos=i(n,e._size),null!=e.label&&(e._lpos=i(n,e.labelSize))}}))}();var n=r.bbox;fe=n.left=Gu(ce*fa,.5),pe=n.top=Gu(se*fa,.5),de=n.width=Gu(ue*fa,.5),he=n.height=Gu(le*fa,.5)}var Ae=3;r.setSize=function(e){De(e.width,e.height)};var ke=r.cursor=pl({},oc,{drag:{y:2==i}},e.cursor);ke.idxs=z,ke._lock=!1;var xe=ke.points;xe.show=Hu(xe.show),xe.size=Hu(xe.size),xe.stroke=Hu(xe.stroke),xe.width=Hu(xe.width),xe.fill=Hu(xe.fill);var Ee=r.focus=pl({},e.focus||{alpha:.3},ke.focus);0!=Ee.bias&&(Ee.prox=1e5);var Ce=Ee.prox>=0,Se=[null];function Fe(e,t){if(1==i||t>0){var n=1==i&&D[e.scale].time,o=e.value;e.value=n?ul(o)?ec(L,Xl(o,$)):o||j:o||Ac,e.label=e.label||(n?"Time":"Value")}if(t>0){e.width=null==e.width?1:e.width,e.paths=e.paths||us||Wu,e.fillTo=Hu(e.fillTo||$c),e.pxAlign=+wu(e.pxAlign,m),e.pxRound=zc(e.pxAlign),e.stroke=Hu(e.stroke||null),e.fill=Hu(e.fill||null),e._stroke=e._fill=e._paths=e._focus=null;var a=Ku((3+2*(Bu(1,e.width)||1))*1,3),u=e.points=pl({},{size:a,width:Bu(1,.2*a),stroke:e.stroke,space:2*a,paths:ls,_stroke:null,_fill:null},e.points);u.show=Hu(u.show),u.filter=Hu(u.filter),u.fill=Hu(u.fill),u.stroke=Hu(u.stroke),u.paths=Hu(u.paths),u.pxAlign=e.pxAlign}if(U){var l=function(e,t){if(0==t&&(q||!H.live||2==i))return il;var n=[],o=tu("tr","u-series",N,N.childNodes[t]);Ka(o,e.class),e.show||Ka(o,Fa);var a=tu("th",null,o);if(V.show){var u=nu("u-marker",a);if(t>0){var l=V.width(r,t);l&&(u.style.border=l+"px "+V.dash(r,t)+" "+V.stroke(r,t)),u.style.background=V.fill(r,t)}}var c=nu(Ma,a);for(var s in c.textContent=e.label,t>0&&(V.show||(c.style.color=e.width>0?V.stroke(r,t):V.fill(r,t)),re("click",a,(function(t){if(!ke._lock){var n=_.indexOf(e);if((t.ctrlKey||t.metaKey)!=H.isolate){var r=_.some((function(e,t){return t>0&&t!=n&&e.show}));_.forEach((function(e,t){t>0&&It(t,r?t==n?ee:te:ee,!0,cn.setSeries)}))}else It(n,{show:!e.show},!0,cn.setSeries)}})),Ce&&re(Ha,a,(function(t){ke._lock||It(_.indexOf(e),jt,!0,cn.setSeries)}))),W){var f=tu("td","u-value",o);f.textContent="--",n.push(f)}return[o,n]}(e,t);Z.splice(t,0,l[0]),Y.splice(t,0,l[1]),H.values.push(null)}if(ke.show){z.splice(t,0,null);var c=function(e,t){if(t>0){var n=ke.points.show(r,t);if(n)return Ka(n,"u-cursor-pt"),Ka(n,e.class),iu(n,-10,-10,ue,le),v.insertBefore(n,Se[t]),n}}(e,t);c&&Se.splice(t,0,c)}ln("addSeries",t)}r.addSeries=function(e,t){t=null==t?_.length:t,e=1==i?ss(e,t,dc,Sc):ss(e,t,null,Cc),_.splice(t,0,e),Fe(_[t],t)},r.delSeries=function(e){if(_.splice(e,1),U){H.values.splice(e,1),Y.splice(e,1);var t=Z.splice(e,1)[0];ie(null,t.firstChild),t.remove()}ke.show&&(z.splice(e,1),Se.length>1&&Se.splice(e,1)[0].remove()),ln("delSeries",e)};var Me=[!1,!1,!1,!1];function Oe(e,t,n,r){var i=Lt(n,4),o=i[0],a=i[1],u=i[2],l=i[3],c=t%2,s=0;return 0==c&&(l||a)&&(s=0==t&&!o||2==t&&!u?Mu(pc.size/3):0),1==c&&(o||u)&&(s=1==t&&!a||3==t&&!l?Mu(kc.size/2):0),s}var Te,Be,Pe,Ne,Le,$e,Re,Ie,je,ze,He,Ue=r.padding=(e.padding||[Oe,Oe,Oe,Oe]).map((function(e){return Hu(wu(e,Oe))})),Ve=r._padding=Ue.map((function(e,t){return e(r,t,Me,0)})),We=null,Ze=null,Ye=1==i?_[0].idxs:null,qe=null,Ge=!1;function Qe(e,n){if(t=null==e?[]:fl(e,cl),2==i){Te=0;for(var o=1;o<_.length;o++)Te+=t[o][0].length;r.data=t=e}else if(null==t[0]&&(t[0]=[]),r.data=t.slice(),qe=t[0],Te=qe.length,2==O){t[0]=Array(Te);for(var a=0;a=0,be=!0,kt()}}function Je(){var e,n;if(Ge=!0,1==i)if(Te>0){if(We=Ye[0]=0,Ze=Ye[1]=Te-1,e=t[0][We],n=t[0][Ze],2==O)e=We,n=Ze;else if(1==Te)if(3==O){var r=Lt(vu(e,e,M.log,!1),2);e=r[0],n=r[1]}else if(4==O){var o=Lt(mu(e,e,M.log,!1),2);e=o[0],n=o[1]}else if(M.time)n=e+Mu(86400/y);else{var a=Lt(Du(e,n,gu,!0),2);e=a[0],n=a[1]}}else We=Ye[0]=e=null,Ze=Ye[1]=n=null;Rt(A,e,n)}function Ke(e,t,n,r,i,o){var a,u,l,c,s;null!==(a=e)&&void 0!==a||(e=Ra),null!==(u=n)&&void 0!==u||(n=rl),null!==(l=r)&&void 0!==l||(r="butt"),null!==(c=i)&&void 0!==c||(i=Ra),null!==(s=o)&&void 0!==s||(o="round"),e!=Be&&(p.strokeStyle=Be=e),i!=Pe&&(p.fillStyle=Pe=i),t!=Ne&&(p.lineWidth=Ne=t),o!=$e&&(p.lineJoin=$e=o),r!=Re&&(p.lineCap=Re=r),n!=Le&&p.setLineDash(Le=n)}function Xe(e,t,n,r){t!=Pe&&(p.fillStyle=Pe=t),e!=Ie&&(p.font=Ie=e),n!=je&&(p.textAlign=je=n),r!=ze&&(p.textBaseline=ze=r)}function et(e,t,n,i){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;if(i.length>0&&e.auto(r,Ge)&&(null==t||null==t.min)){var a=wu(We,0),u=wu(Ze,i.length-1),l=null==n.min?3==e.distr?function(e,t,n){for(var r=Iu,i=-Iu,o=t;o<=n;o++)e[o]>0&&(r=Tu(r,e[o]),i=Bu(i,e[o]));return[r==Iu?1:r,i==-Iu?10:i]}(i,a,u):function(e,t,n,r){var i=Iu,o=-Iu;if(1==r)i=e[t],o=e[n];else if(-1==r)i=e[n],o=e[t];else for(var a=t;a<=n;a++)null!=e[a]&&(i=Tu(i,e[a]),o=Bu(o,e[a]));return[i,o]}(i,a,u,o):[n.min,n.max];e.min=Tu(e.min,n.min=l[0]),e.max=Bu(e.max,n.max=l[1])}}function tt(e,t){var n=t?_[e].points:_[e];n._stroke=n.stroke(r,e),n._fill=n.fill(r,e)}function nt(e,n){var i=n?_[e].points:_[e],o=i._stroke,a=i._fill,u=i._paths,l=u.stroke,c=u.fill,s=u.clip,f=u.flags,d=null,h=Ku(i.width*fa,3),v=h%2/2;n&&null==a&&(a=h>0?"#fff":o);var m=1==i.pxAlign;if(m&&p.translate(v,v),!n){var g=fe,y=pe,b=de,D=he,A=h*fa/2;0==i.min&&(D+=A),0==i.max&&(y-=A,D+=A),(d=new Path2D).rect(g,y,b,D)}n?it(o,h,i.dash,i.cap,a,l,c,f,s):function(e,n,i,o,a,u,l,c,s,f,p){var d=!1;w.forEach((function(h,v){if(h.series[0]==e){var m,g=_[h.series[1]],y=t[h.series[1]],b=(g._paths||nl).band;ol(b)&&(b=1==h.dir?b[0]:b[1]);var D=null;g.show&&b&&function(e,t,n){for(t=wu(t,0),n=wu(n,e.length-1);t<=n;){if(null!=e[t])return!0;t++}return!1}(y,We,Ze)?(D=h.fill(r,v)||u,m=g._paths.clip):b=null,it(n,i,o,a,D,l,c,s,f,p,m,b),d=!0}})),d||it(n,i,o,a,u,l,c,s,f,p)}(e,o,h,i.dash,i.cap,a,l,c,f,d,s),m&&p.translate(-v,-v)}r.setData=Qe;var rt=2|Pc;function it(e,t,n,r,i,o,a,u,l,c,s,f){Ke(e,t,n,r,i),(l||c||f)&&(p.save(),l&&p.clip(l),c&&p.clip(c)),f?(u&rt)==rt?(p.clip(f),s&&p.clip(s),at(i,a),ot(e,o,t)):2&u?(at(i,a),p.clip(f),ot(e,o,t)):u&Pc&&(p.save(),p.clip(f),s&&p.clip(s),at(i,a),p.restore(),ot(e,o,t)):(at(i,a),ot(e,o,t)),(l||c||f)&&p.restore()}function ot(e,t,n){n>0&&(t instanceof Map?t.forEach((function(e,t){p.strokeStyle=Be=t,p.stroke(e)})):null!=t&&e&&p.stroke(t))}function at(e,t){t instanceof Map?t.forEach((function(e,t){p.fillStyle=Pe=t,p.fill(e)})):null!=t&&e&&p.fill(t)}function ut(e,t,n,r,i,o,a,u,l,c){var s=a%2/2;1==m&&p.translate(s,s),Ke(u,a,l,c,u),p.beginPath();var f,d,h,v,g=i+(0==r||3==r?-o:o);0==n?(d=i,v=g):(f=i,h=g);for(var y=0;y0&&(t._paths=null,e&&(1==i?(t.min=null,t.max=null):t.facets.forEach((function(e){e.min=null,e.max=null}))))}))}var ft,pt,dt,ht,vt,mt,gt,yt,_t,bt,Dt,wt,At=!1;function kt(){At||(hl(xt),At=!0)}function xt(){ve&&(!function(){var e=fl(D,cl);for(var n in e){var o=e[n],a=T[n];if(null!=a&&null!=a.min)pl(o,a),n==A&&st(!0);else if(n!=A||2==i)if(0==Te&&null==o.from){var u=o.range(r,null,null,n);o.min=u[0],o.max=u[1]}else o.min=Iu,o.max=-Iu}if(Te>0)for(var l in _.forEach((function(n,o){if(1==i){var a=n.scale,u=e[a],l=T[a];if(0==o){var c=u.range(r,u.min,u.max,a);u.min=c[0],u.max=c[1],We=du(u.min,t[0]),(Ze=du(u.max,t[0]))-We>1&&(t[0][We]u.max&&Ze--),n.min=qe[We],n.max=qe[Ze]}else n.show&&n.auto&&et(u,l,n,t[o],n.sorted);n.idxs[0]=We,n.idxs[1]=Ze}else if(o>0&&n.show&&n.auto){var s=Lt(n.facets,2),f=s[0],p=s[1],d=f.scale,h=p.scale,v=Lt(t[o],2),m=v[0],g=v[1];et(e[d],T[d],f,m,f.sorted),et(e[h],T[h],p,g,p.sorted),n.min=p.min,n.max=p.max}})),e){var c=e[l],s=T[l];if(null==c.from&&(null==s||null==s.min)){var f=c.range(r,c.min==Iu?null:c.min,c.max==-Iu?null:c.max,l);c.min=f[0],c.max=f[1]}}for(var p in e){var d=e[p];if(null!=d.from){var h=e[d.from];if(null==h.min)d.min=d.max=null;else{var v=d.range(r,h.min,h.max,p);d.min=v[0],d.max=v[1]}}}var m={},g=!1;for(var y in e){var b=e[y],w=D[y];if(w.min!=b.min||w.max!=b.max){w.min=b.min,w.max=b.max;var k=w.distr;w._min=3==k?Lu(w.min):4==k?Ru(w.min,w.asinh):w.min,w._max=3==k?Lu(w.max):4==k?Ru(w.max,w.asinh):w.max,m[y]=g=!0}}if(g){for(var x in _.forEach((function(e,t){2==i?t>0&&m.y&&(e._paths=null):m[e.scale]&&(e._paths=null)})),m)ge=!0,ln("setScale",x);ke.show&&ke.left>=0&&(ye=be=!0)}for(var E in T)T[E]=null}(),ve=!1),ge&&(!function(){for(var e=!1,t=0;!e;){var n=lt(++t),i=ct(t);(e=t==Ae||n&&i)||(we(r.width,r.height),me=!0)}}(),ge=!1),me&&(eu(h,Na,ce),eu(h,Ba,se),eu(h,Oa,ue),eu(h,Ta,le),eu(v,Na,ce),eu(v,Ba,se),eu(v,Oa,ue),eu(v,Ta,le),eu(d,Oa,oe),eu(d,Ta,ae),f.width=Mu(oe*fa),f.height=Mu(ae*fa),b.forEach((function(e){var t=e._el,n=e._show,r=e._size,i=e._pos,o=e.side;if(null!=t)if(n){var a=o%2==1;eu(t,a?"left":"top",i-(3===o||0===o?r:0)),eu(t,a?"width":"height",r),eu(t,a?"top":"left",a?se:ce),eu(t,a?"height":"width",a?le:ue),Xa(t,Fa)}else Ka(t,Fa)})),Be=Pe=Ne=$e=Re=Ie=je=ze=Le=null,He=1,Qt(!0),ln("setSize"),me=!1),oe>0&&ae>0&&(p.clearRect(0,0,f.width,f.height),ln("drawClear"),x.forEach((function(e){return e()})),ln("draw")),Pt.show&&_e&&($t(Pt),_e=!1),ke.show&&ye&&(qt(null,!0,!1),ye=!1),H.show&&H.live&&be&&(Zt(),be=!1),c||(c=!0,r.status=1,ln("ready")),Ge=!1,At=!1}function Et(e,n){var i=D[e];if(null==i.from){if(0==Te){var o=i.range(r,n.min,n.max,e);n.min=o[0],n.max=o[1]}if(n.min>n.max){var a=n.min;n.min=n.max,n.max=a}if(Te>1&&null!=n.min&&null!=n.max&&n.max-n.min<1e-16)return;e==A&&2==i.distr&&Te>0&&(n.min=du(n.min,t[0]),n.max=du(n.max,t[0]),n.min==n.max&&n.max++),T[e]=n,ve=!0,kt()}}r.redraw=function(e,t){ge=t||!1,!1!==e?Rt(A,M.min,M.max):kt()},r.setScale=Et;var Ct=!1,St=ke.drag,Ft=St.x,Mt=St.y;ke.show&&(ke.x&&(ft=nu("u-cursor-x",v)),ke.y&&(pt=nu("u-cursor-y",v)),0==M.ori?(dt=ft,ht=pt):(dt=pt,ht=ft),Dt=ke.left,wt=ke.top);var Ot,Tt,Bt,Pt=r.select=pl({show:!0,over:!0,left:0,width:0,top:0,height:0},e.select),Nt=Pt.show?nu("u-select",Pt.over?v:h):null;function $t(e,t){if(Pt.show){for(var n in e)Pt[n]=e[n],n in Xt&&eu(Nt,n,e[n]);!1!==t&&ln("setSelect")}}function Rt(e,t,n){Et(e,{min:t,max:n})}function It(e,t,n,o){null!=t.focus&&function(e){if(e!=Bt){var t=null==e,n=1!=Ee.alpha;_.forEach((function(r,i){var o=t||0==i||i==e;r._focus=t?null:o,n&&function(e,t){_[e].alpha=t,ke.show&&Se[e]&&(Se[e].style.opacity=t);U&&Z[e]&&(Z[e].style.opacity=t)}(i,o?1:Ee.alpha)})),Bt=e,n&&kt()}}(e),null!=t.show&&_.forEach((function(n,r){r>0&&(e==r||null==e)&&(n.show=t.show,function(e,t){var n=_[e],r=U?Z[e]:null;n.show?r&&Xa(r,Fa):(r&&Ka(r,Fa),Se.length>1&&iu(Se[e],-10,-10,ue,le))}(r,t.show),Rt(2==i?n.facets[1].scale:n.scale,null,null),kt())})),!1!==n&&ln("setSeries",e,t),o&&pn("setSeries",r,e,t)}r.setSelect=$t,r.setSeries=It,r.addBand=function(e,t){e.fill=Hu(e.fill||null),e.dir=wu(e.dir,-1),t=null==t?w.length:t,w.splice(t,0,e)},r.setBand=function(e,t){pl(w[e],t)},r.delBand=function(e){null==e?w.length=0:w.splice(e,1)};var jt={focus:!0};function zt(e,t,n){var r=D[t];n&&(e=e/fa-(1==r.ori?se:ce));var i=ue;1==r.ori&&(e=(i=le)-e),-1==r.dir&&(e=i-e);var o=r._min,a=o+(r._max-o)*(e/i),u=r.distr;return 3==u?Pu(10,a):4==u?function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return Eu.sinh(e)*t}(a,r.asinh):a}function Ht(e,t){eu(Nt,Na,Pt.left=e),eu(Nt,Oa,Pt.width=t)}function Ut(e,t){eu(Nt,Ba,Pt.top=e),eu(Nt,Ta,Pt.height=t)}U&&Ce&&fu(Ua,N,(function(e){ke._lock||null!=Bt&&It(null,jt,!0,cn.setSeries)})),r.valToIdx=function(e){return du(e,t[0])},r.posToIdx=function(e,n){return du(zt(e,A,n),t[0],We,Ze)},r.posToVal=zt,r.valToPos=function(e,t,n){return 0==D[t].ori?a(e,D[t],n?de:ue,n?fe:0):u(e,D[t],n?he:le,n?pe:0)},r.batch=function(e){e(r),kt()},r.setCursor=function(e,t,n){Dt=e.left,wt=e.top,qt(null,t,n)};var Vt=0==M.ori?Ht:Ut,Wt=1==M.ori?Ht:Ut;function Zt(e,t){null!=e&&(e.idxs?e.idxs.forEach((function(e,t){z[t]=e})):function(e){return void 0===e}(e.idx)||z.fill(e.idx),H.idx=z[0]);for(var n=0;n<_.length;n++)(n>0||1==i&&!q)&&Yt(n,z[n]);U&&H.live&&function(){if(U&&H.live)for(var e=2==i?1:0;e<_.length;e++)if(0!=e||!q){var t=H.values[e],n=0;for(var r in t)Y[e][n++].firstChild.nodeValue=t[r]}}(),be=!1,!1!==t&&ln("setLegend")}function Yt(e,n){var i,o,a=_[e],u=0==e&&2==O?qe:t[e];o=q?null!==(i=a.values(r,e,n))&&void 0!==i?i:G:null==(o=a.value(r,null==n?null:u[n],e,n))?G:{_:o},H.values[e]=o}function qt(e,n,o){_t=Dt,bt=wt;var a,u=Lt(ke.move(r,Dt,wt),2);Dt=u[0],wt=u[1],ke.show&&(dt&&iu(dt,Mu(Dt),0,ue,le),ht&&iu(ht,0,Mu(wt),ue,le));var l=We>Ze;Ot=Iu;var c=0==M.ori?ue:le,s=1==M.ori?ue:le;if(Dt<0||0==Te||l){a=null;for(var f=0;f<_.length;f++)f>0&&Se.length>1&&iu(Se[f],-10,-10,ue,le);Ce&&It(null,jt,!0,null==e&&cn.setSeries),H.live&&(z.fill(a),be=!0)}else{var p,d;1==i&&(a=du(p=zt(0==M.ori?Dt:wt,A),t[0],We,Ze),d=S(t[0][a],M,c,0));for(var h=2==i?1:0;h<_.length;h++){var v=_[h],m=z[h],g=1==i?t[h][m]:t[h][1][m],y=ke.dataIdx(r,h,a,p),b=1==i?t[h][y]:t[h][1][y];be=be||b!=g||y!=m,z[h]=y;var w=Qu(y==a?d:S(1==i?t[0][y]:t[h][0][y],M,c,0),1);if(h>0&&v.show){var k=null==b?-10:Qu(F(b,1==i?D[v.scale]:D[v.facets[1].scale],s,0),1);if(Ce&&k>=0&&1==i){var x=Su(k-wt),E=Ee.bias;if(0!=E){var C=zt(1==M.ori?Dt:wt,v.scale),O=C>=0?1:-1;O==(b>=0?1:-1)&&x=C:b<=C:1==E?b<=C:b>=C)&&(Ot=x,Tt=h)}else x1){au(Se[h],ke.points.fill(r,h),ke.points.stroke(r,h));var P=void 0,N=void 0,L=void 0,$=void 0,R=!0,I=ke.points.bbox;if(null!=I){R=!1;var j=I(r,h);L=j.left,$=j.top,P=j.width,N=j.height}else L=T,$=B,P=N=ke.points.size(r,h);lu(Se[h],P,N,R),iu(Se[h],L,$,ue,le)}}}}if(ke.idx=a,ke.left=Dt,ke.top=wt,be&&(H.idx=a,Zt()),Pt.show&&Ct)if(null!=e){var U=Lt(cn.scales,2),V=U[0],W=U[1],Z=Lt(cn.match,2),Y=Z[0],q=Z[1],G=Lt(e.cursor.sync.scales,2),Q=G[0],J=G[1],K=e.cursor.drag;if(Ft=K._x,Mt=K._y,Ft||Mt){var X,ee,te,ne,re,ie=e.select,oe=ie.left,ae=ie.top,ce=ie.width,se=ie.height,fe=e.scales[V].ori,pe=e.posToVal,de=null!=V&&Y(V,Q),he=null!=W&&q(W,J);de&&Ft?(0==fe?(X=oe,ee=ce):(X=ae,ee=se),te=D[V],ne=S(pe(X,Q),te,c,0),re=S(pe(X+ee,Q),te,c,0),Vt(Tu(ne,re),Su(re-ne))):Vt(0,c),he&&Mt?(1==fe?(X=oe,ee=ce):(X=ae,ee=se),te=D[W],ne=F(pe(X,J),te,s,0),re=F(pe(X+ee,J),te,s,0),Wt(Tu(ne,re),Su(re-ne))):Wt(0,s)}else en()}else{var ve=Su(_t-vt),me=Su(bt-mt);if(1==M.ori){var ge=ve;ve=me,me=ge}Ft=St.x&&ve>=St.dist,Mt=St.y&&me>=St.dist;var ye,_e,De=St.uni;null!=De?Ft&&Mt&&(Mt=me>=De,(Ft=ve>=De)||Mt||(me>ve?Mt=!0:Ft=!0)):St.x&&St.y&&(Ft||Mt)&&(Ft=Mt=!0),Ft&&(0==M.ori?(ye=gt,_e=Dt):(ye=yt,_e=wt),Vt(Tu(ye,_e),Su(_e-ye)),Mt||Wt(0,s)),Mt&&(1==M.ori?(ye=gt,_e=Dt):(ye=yt,_e=wt),Wt(Tu(ye,_e),Su(_e-ye)),Ft||Vt(0,c)),Ft||Mt||(Vt(0,0),Wt(0,0))}if(St._x=Ft,St._y=Mt,null==e){if(o){if(null!=sn){var we=Lt(cn.scales,2),Ae=we[0],xe=we[1];cn.values[0]=null!=Ae?zt(0==M.ori?Dt:wt,Ae):null,cn.values[1]=null!=xe?zt(1==M.ori?Dt:wt,xe):null}pn(Ia,r,Dt,wt,ue,le,a)}if(Ce){var Fe=o&&cn.setSeries,Me=Ee.prox;null==Bt?Ot<=Me&&It(Tt,jt,!0,Fe):Ot>Me?It(null,jt,!0,Fe):Tt!=Bt&&It(Tt,jt,!0,Fe)}}!1!==n&&ln("setCursor")}r.setLegend=Zt;var Gt=null;function Qt(e){!0===e?Gt=null:ln("syncRect",Gt=v.getBoundingClientRect())}function Jt(e,t,n,r,i,o,a){ke._lock||Ct&&null!=e&&0==e.movementX&&0==e.movementY||(Kt(e,t,n,r,i,o,a,!1,null!=e),null!=e?qt(null,!0,!0):qt(t,!0,!1))}function Kt(e,t,n,i,o,a,u,c,s){if(null==Gt&&Qt(!1),null!=e)n=e.clientX-Gt.left,i=e.clientY-Gt.top;else{if(n<0||i<0)return Dt=-10,void(wt=-10);var f=Lt(cn.scales,2),p=f[0],d=f[1],h=t.cursor.sync,v=Lt(h.values,2),m=v[0],g=v[1],y=Lt(h.scales,2),_=y[0],b=y[1],w=Lt(cn.match,2),A=w[0],k=w[1],x=t.axes[0].side%2==1,E=0==M.ori?ue:le,C=1==M.ori?ue:le,S=x?a:o,F=x?o:a,O=x?i:n,T=x?n:i;if(n=null!=_?A(p,_)?l(m,D[p],E,0):-10:E*(O/S),i=null!=b?k(d,b)?l(g,D[d],C,0):-10:C*(T/F),1==M.ori){var B=n;n=i,i=B}}if(s&&((n<=1||n>=ue-1)&&(n=Gu(n,ue)),(i<=1||i>=le-1)&&(i=Gu(i,le))),c){vt=n,mt=i;var P=Lt(ke.move(r,n,i),2);gt=P[0],yt=P[1]}else Dt=n,wt=i}var Xt={width:0,height:0,left:0,top:0};function en(){$t(Xt,!1)}function tn(e,t,n,i,o,a,u){Ct=!0,Ft=Mt=St._x=St._y=!1,Kt(e,t,n,i,o,a,0,!0,!1),null!=e&&(re(za,Ga,nn),pn(ja,r,gt,yt,ue,le,null))}function nn(e,t,n,i,o,a,u){Ct=St._x=St._y=!1,Kt(e,t,n,i,o,a,0,!1,!0);var l=Pt.left,c=Pt.top,s=Pt.width,f=Pt.height,p=s>0||f>0;if(p&&$t(Pt),St.setScale&&p){var d=l,h=s,v=c,m=f;if(1==M.ori&&(d=c,h=f,v=l,m=s),Ft&&Rt(A,zt(d,A),zt(d+h,A)),Mt)for(var g in D){var y=D[g];g!=A&&null==y.from&&y.min!=Iu&&Rt(g,zt(v+m,g),zt(v,g))}en()}else ke.lock&&(ke._lock=!ke._lock,ke._lock||qt(null,!0,!1));null!=e&&(ie(za,Ga),pn(za,r,Dt,wt,ue,le,null))}function rn(e,t,n,i,o,a,u){Je(),en(),null!=e&&pn(Va,r,Dt,wt,ue,le,null)}function on(){b.forEach(bs),De(r.width,r.height,!0)}fu(Za,Qa,on);var an={};an.mousedown=tn,an.mousemove=Jt,an.mouseup=nn,an.dblclick=rn,an.setSeries=function(e,t,n,r){It(n,r,!0,!1)},ke.show&&(re(ja,v,tn),re(Ia,v,Jt),re(Ha,v,Qt),re(Ua,v,(function(e,t,n,r,i,o,a){if(!ke._lock){var u=Ct;if(Ct){var l,c,s=!0,f=!0;0==M.ori?(l=Ft,c=Mt):(l=Mt,c=Ft),l&&c&&(s=Dt<=10||Dt>=ue-10,f=wt<=10||wt>=le-10),l&&s&&(Dt=Dt=3&&10==i.log?wc:Vu)),e.font=_s(e.font),e.labelFont=_s(e.labelFont),e._size=e.size(r,null,t,0),e._space=e._rotate=e._incrs=e._found=e._splits=e._values=null,e._size>0&&(Me[t]=!0,e._el=nu("u-axis",d))}})),n?n instanceof HTMLElement?(n.appendChild(s),dn()):n(r,dn):dn(),r}Ds.assign=pl,Ds.fmtNum=xu,Ds.rangeNum=Du,Ds.rangeLog=vu,Ds.rangeAsinh=mu,Ds.orient=Nc,Ds.pxRatio=fa,Ds.join=function(e,t){for(var n=new Set,r=0;r=a&&B<=u;B+=S){var P=s[B];if(null!=P){var N=A(c[B]),L=k(P);1==t?x(C,N,F):x(C,O,L),x(C,N,L),F=L,O=N}}var $=O;i&&1==t&&x(C,$=D+w,F);var R=Lt(Lc(e,o),2),I=R[0],j=R[1];if(null!=l.fill||0!=I){var z=E.fill=new Path2D(C),H=k(l.fillTo(e,o,l.min,l.max,I));x(z,$,H),x(z,T,H)}if(!l.spanGaps){var U,V=[];(U=V).push.apply(U,It(jc(c,s,a,u,S,A,r)));var W=l.width*fa/2,Z=n||1==t?W:-W,Y=n||-1==t?-W:W;V.forEach((function(e){e[0]+=Z,e[1]+=Y})),E.gaps=V=l.gaps(e,o,a,u,V),E.clip=Ic(V,f.ori,v,m,g,y)}return 0!=j&&(E.band=2==j?[Rc(e,o,a,u,C,-1),Rc(e,o,a,u,C,1)]:Rc(e,o,a,u,C,j)),E}))}},ws.bars=function(e){var t=wu((e=e||nl).size,[.6,Iu,1]),n=e.align||0,r=(e.gap||0)*fa,i=e.radius,o=Hu(i=null==i?[0,0]:"number"==typeof i?[i,0]:i),a=1-t[0],u=wu(t[1],Iu)*fa,l=wu(t[2],1)*fa,c=wu(e.disp,nl),s=wu(e.each,(function(e){})),f=c.fill,p=c.stroke;return function(e,t,i,d){return Nc(e,t,(function(h,v,m,g,y,_,b,D,w,A,k){var x,E,C=h.pxRound;if(0==g.ori){var S=Lt(o(e,t),2);x=S[0],E=S[1]}else{var F=Lt(o(e,t),2);E=F[0],x=F[1]}var M,O,T=g.dir*(0==g.ori?1:-1),B=y.dir*(1==y.ori?1:-1),P=0==g.ori?Yc:qc,N=0==g.ori?s:function(e,t,n,r,i,o,a){s(e,t,n,i,r,a,o)},L=Lt(Lc(e,t),2),$=L[0],R=L[1],I=3==y.distr?1==$?y.max:y.min:0,j=b(I,y,k,w),z=C(h.width*fa),H=!1,U=null,V=null,W=null,Z=null;null==f||0!=z&&null==p||(H=!0,U=f.values(e,t,i,d),V=new Map,new Set(U).forEach((function(e){null!=e&&V.set(e,new Path2D)})),z>0&&(W=p.values(e,t,i,d),Z=new Map,new Set(W).forEach((function(e){null!=e&&Z.set(e,new Path2D)}))));var Y=c.x0,q=c.size;if(null!=Y&&null!=q){v=Y.values(e,t,i,d),2==Y.unit&&(v=v.map((function(t){return e.posToVal(D+t*A,g.key,!0)})));var G=q.values(e,t,i,d);O=C((O=2==q.unit?G[0]*A:_(G[0],g,A,D)-_(0,g,A,D))-z),M=1==T?-z/2:O+z/2}else{var Q=A;if(v.length>1)for(var J=null,K=0,X=1/0;K=i&&se<=d;se+=T){var fe=m[se];if(void 0!==fe){var pe=_(2!=g.distr||null!=c?v[se]:se,g,A,D),de=b(wu(fe,I),y,k,w);null!=ue&&null!=fe&&(j=b(ue[se],y,k,w));var he=C(pe-M),ve=C(Bu(de,j)),me=C(Tu(de,j)),ge=ve-me;if(null!=fe){var ye=fe<0?ce:le,_e=fe<0?le:ce;H?(z>0&&null!=W[se]&&P(Z.get(W[se]),he,me+Fu(z/2),O,Bu(0,ge-z),ye,_e),null!=U[se]&&P(V.get(U[se]),he,me+Fu(z/2),O,Bu(0,ge-z),ye,_e)):P(re,he,me+Fu(z/2),O,Bu(0,ge-z),ye,_e),N(e,t,se,he-z/2,me,O+z,ge)}0!=R&&(B*R==1?(ve=me,me=te):(me=ve,ve=te),P(ie,he-z/2,me,O+z,Bu(0,ge=ve-me),0,0))}}return z>0&&(ne.stroke=H?Z:re),ne.fill=H?V:re,ne}))}},ws.spline=function(e){return function(e,t){var n=wu(null===t||void 0===t?void 0:t.alignGaps,0);return function(t,r,i,o){return Nc(t,r,(function(a,u,l,c,s,f,p,d,h,v,m){var g,y,_,b=a.pxRound,D=function(e){return b(f(e,c,v,d))},w=function(e){return b(p(e,s,m,h))};0==c.ori?(g=Uc,_=Wc,y=Jc):(g=Vc,_=Zc,y=Kc);var A=c.dir*(0==c.ori?1:-1);i=hu(l,i,o,1),o=hu(l,i,o,-1);for(var k=D(u[1==A?i:o]),x=k,E=[],C=[],S=1==A?i:o;S>=i&&S<=o;S+=A)if(null!=l[S]){var F=D(u[S]);E.push(x=F),C.push(w(l[S]))}var M={stroke:e(E,C,g,_,y,b),fill:null,clip:null,band:null,gaps:null,flags:Pc},O=M.stroke,T=Lt(Lc(t,r),2),B=T[0],P=T[1];if(null!=a.fill||0!=B){var N=M.fill=new Path2D(O),L=w(a.fillTo(t,r,a.min,a.max,B));_(N,x,L),_(N,k,L)}if(!a.spanGaps){var $,R=[];($=R).push.apply($,It(jc(u,l,i,o,A,D,n))),M.gaps=R=a.gaps(t,r,i,o,R),M.clip=Ic(R,c.ori,d,h,v,m)}return 0!=P&&(M.band=2==P?[Rc(t,r,i,o,O,-1),Rc(t,r,i,o,O,1)]:Rc(t,r,i,o,O,P)),M}))}}(is,e)};!function(e,t,n){for(var r=[],i=0;i"']/,Ms=new RegExp(Fs.source,"g"),Os=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,Ts=new RegExp(Os.source,"g"),Bs={"&":"&","<":"<",">":">",'"':""","'":"'"},Ps=function(e){return Bs[e]};function Ns(e,t){if(t){if(Fs.test(e))return e.replace(Ms,Ps)}else if(Os.test(e))return e.replace(Ts,Ps);return e}var Ls=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function $s(e){return e.replace(Ls,(function(e,t){return"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""}))}var Rs=/(^|[^\[])\^/g;function Is(e,t){e="string"===typeof e?e:e.source,t=t||"";var n={replace:function(t,r){return r=(r=r.source||r).replace(Rs,"$1"),e=e.replace(t,r),n},getRegex:function(){return new RegExp(e,t)}};return n}var js=/[^\w:]/g,zs=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function Hs(e,t,n){if(e){var r;try{r=decodeURIComponent($s(n)).replace(js,"").toLowerCase()}catch(c){return null}if(0===r.indexOf("javascript:")||0===r.indexOf("vbscript:")||0===r.indexOf("data:"))return null}t&&!zs.test(n)&&(n=function(e,t){Us[" "+e]||(Vs.test(e)?Us[" "+e]=e+"/":Us[" "+e]=Gs(e,"/",!0));e=Us[" "+e];var n=-1===e.indexOf(":");return"//"===t.substring(0,2)?n?t:e.replace(Ws,"$1")+t:"/"===t.charAt(0)?n?t:e.replace(Zs,"$1")+t:e+t}(t,n));try{n=encodeURI(n).replace(/%25/g,"%")}catch(c){return null}return n}var Us={},Vs=/^[^:]+:\/*[^/]*$/,Ws=/^([^:]+:)[\s\S]*$/,Zs=/^([^:]+:\/*[^/]*)[\s\S]*$/;var Ys={exec:function(){}};function qs(e,t){var n=e.replace(/\|/g,(function(e,t,n){for(var r=!1,i=t;--i>=0&&"\\"===n[i];)r=!r;return r?"|":" |"})).split(/ \|/),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n[n.length-1].trim()&&n.pop(),n.length>t)n.splice(t);else for(;n.length0)return{type:"space",raw:t[0]}}},{key:"code",value:function(e){var t=this.rules.block.code.exec(e);if(t){var n=t[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?n:Gs(n,"\n")}}}},{key:"fences",value:function(e){var t=this.rules.block.fences.exec(e);if(t){var n=t[0],r=function(e,t){var n=e.match(/^(\s+)(?:```)/);if(null===n)return t;var r=n[1];return t.split("\n").map((function(e){var t=e.match(/^\s+/);return null===t?e:Lt(t,1)[0].length>=r.length?e.slice(r.length):e})).join("\n")}(n,t[3]||"");return{type:"code",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline._escapes,"$1"):t[2],text:r}}}},{key:"heading",value:function(e){var t=this.rules.block.heading.exec(e);if(t){var n=t[2].trim();if(/#$/.test(n)){var r=Gs(n,"#");this.options.pedantic?n=r.trim():r&&!/ $/.test(r)||(n=r.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}},{key:"hr",value:function(e){var t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:t[0]}}},{key:"blockquote",value:function(e){var t=this.rules.block.blockquote.exec(e);if(t){var n=t[0].replace(/^ *>[ \t]?/gm,""),r=this.lexer.state.top;this.lexer.state.top=!0;var i=this.lexer.blockTokens(n);return this.lexer.state.top=r,{type:"blockquote",raw:t[0],tokens:i,text:n}}}},{key:"list",value:function(e){var t=this.rules.block.list.exec(e);if(t){var n,r,i,o,a,u,l,c,s,f,p,d,h=t[1].trim(),v=h.length>1,m={type:"list",raw:"",ordered:v,start:v?+h.slice(0,-1):"",loose:!1,items:[]};h=v?"\\d{1,9}\\".concat(h.slice(-1)):"\\".concat(h),this.options.pedantic&&(h=v?h:"[*+-]");for(var g=new RegExp("^( {0,3}".concat(h,")((?:[\t ][^\\n]*)?(?:\\n|$))"));e&&(d=!1,t=g.exec(e))&&!this.rules.block.hr.test(e);){if(n=t[0],e=e.substring(n.length),c=t[2].split("\n",1)[0].replace(/^\t+/,(function(e){return" ".repeat(3*e.length)})),s=e.split("\n",1)[0],this.options.pedantic?(o=2,p=c.trimLeft()):(o=(o=t[2].search(/[^ ]/))>4?1:o,p=c.slice(o),o+=t[1].length),u=!1,!c&&/^ *$/.test(s)&&(n+=s+"\n",e=e.substring(s.length+1),d=!0),!d)for(var y=new RegExp("^ {0,".concat(Math.min(3,o-1),"}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))")),_=new RegExp("^ {0,".concat(Math.min(3,o-1),"}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)")),b=new RegExp("^ {0,".concat(Math.min(3,o-1),"}(?:```|~~~)")),D=new RegExp("^ {0,".concat(Math.min(3,o-1),"}#"));e&&(s=f=e.split("\n",1)[0],this.options.pedantic&&(s=s.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),!b.test(s))&&!D.test(s)&&!y.test(s)&&!_.test(e);){if(s.search(/[^ ]/)>=o||!s.trim())p+="\n"+s.slice(o);else{if(u)break;if(c.search(/[^ ]/)>=4)break;if(b.test(c))break;if(D.test(c))break;if(_.test(c))break;p+="\n"+s}u||s.trim()||(u=!0),n+=f+"\n",e=e.substring(f.length+1),c=s.slice(o)}m.loose||(l?m.loose=!0:/\n *\n *$/.test(n)&&(l=!0)),this.options.gfm&&(r=/^\[[ xX]\] /.exec(p))&&(i="[ ] "!==r[0],p=p.replace(/^\[[ xX]\] +/,"")),m.items.push({type:"list_item",raw:n,task:!!r,checked:i,loose:!1,text:p}),m.raw+=n}m.items[m.items.length-1].raw=n.trimRight(),m.items[m.items.length-1].text=p.trimRight(),m.raw=m.raw.trimRight();var w=m.items.length;for(a=0;a0&&A.some((function(e){return/\n.*\n/.test(e.raw)}));m.loose=k}if(m.loose)for(a=0;a$/,"$1").replace(this.rules.inline._escapes,"$1"):"",i=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline._escapes,"$1"):t[3];return{type:"def",tag:n,raw:t[0],href:r,title:i}}}},{key:"table",value:function(e){var t=this.rules.block.table.exec(e);if(t){var n={type:"table",header:qs(t[1]).map((function(e){return{text:e}})),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),rows:t[3]&&t[3].trim()?t[3].replace(/\n[ \t]*$/,"").split("\n"):[]};if(n.header.length===n.align.length){n.raw=t[0];var r,i,o,a,u=n.align.length;for(r=0;r/i.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?"text":"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(t[0]):Ns(t[0]):t[0]}}},{key:"link",value:function(e){var t=this.rules.inline.link.exec(e);if(t){var n=t[2].trim();if(!this.options.pedantic&&/^$/.test(n))return;var r=Gs(n.slice(0,-1),"\\");if((n.length-r.length)%2===0)return}else{var i=function(e,t){if(-1===e.indexOf(t[1]))return-1;for(var n=e.length,r=0,i=0;i-1){var o=(0===t[0].indexOf("!")?5:4)+t[1].length+i;t[2]=t[2].substring(0,i),t[0]=t[0].substring(0,o).trim(),t[3]=""}}var a=t[2],u="";if(this.options.pedantic){var l=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(a);l&&(a=l[1],u=l[3])}else u=t[3]?t[3].slice(1,-1):"";return a=a.trim(),/^$/.test(n)?a.slice(1):a.slice(1,-1)),Qs(t,{href:a?a.replace(this.rules.inline._escapes,"$1"):a,title:u?u.replace(this.rules.inline._escapes,"$1"):u},t[0],this.lexer)}}},{key:"reflink",value:function(e,t){var n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){var r=(n[2]||n[1]).replace(/\s+/g," ");if(!(r=t[r.toLowerCase()])){var i=n[0].charAt(0);return{type:"text",raw:i,text:i}}return Qs(n,r,n[0],this.lexer)}}},{key:"emStrong",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",r=this.rules.inline.emStrong.lDelim.exec(e);if(r&&((!r[3]||!n.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\uDE3F\uDE40\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\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDF50-\uDF59\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\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46]|\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\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD834[\uDEC0-\uDED3\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\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD40-\uDD49\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB\uDEF0-\uDEF9]|\uD839[\uDCD0-\uDCEB\uDCF0-\uDCF9\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-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])/))&&(!(r[1]||r[2]||"")||!n||this.rules.inline.punctuation.exec(n)))){var i,o,a=r[0].length-1,u=a,l=0,c="*"===r[0][0]?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(c.lastIndex=0,t=t.slice(-1*e.length+a);null!=(r=c.exec(t));)if(i=r[1]||r[2]||r[3]||r[4]||r[5]||r[6])if(o=i.length,r[3]||r[4])u+=o;else if(!((r[5]||r[6])&&a%3)||(a+o)%3){if(!((u-=o)>0)){o=Math.min(o,o+u+l);var s=e.slice(0,a+r.index+o+1);if(Math.min(a,o)%2){var f=s.slice(1,-1);return{type:"em",raw:s,text:f,tokens:this.lexer.inlineTokens(f)}}var p=s.slice(2,-2);return{type:"strong",raw:s,text:p,tokens:this.lexer.inlineTokens(p)}}}else l+=o}}},{key:"codespan",value:function(e){var t=this.rules.inline.code.exec(e);if(t){var n=t[2].replace(/\n/g," "),r=/[^ ]/.test(n),i=/^ /.test(n)&&/ $/.test(n);return r&&i&&(n=n.substring(1,n.length-1)),n=Ns(n,!0),{type:"codespan",raw:t[0],text:n}}}},{key:"br",value:function(e){var t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}},{key:"del",value:function(e){var t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}},{key:"autolink",value:function(e,t){var n,r,i=this.rules.inline.autolink.exec(e);if(i)return r="@"===i[2]?"mailto:"+(n=Ns(this.options.mangle?t(i[1]):i[1])):n=Ns(i[1]),{type:"link",raw:i[0],text:n,href:r,tokens:[{type:"text",raw:n,text:n}]}}},{key:"url",value:function(e,t){var n;if(n=this.rules.inline.url.exec(e)){var r,i;if("@"===n[2])i="mailto:"+(r=Ns(this.options.mangle?t(n[0]):n[0]));else{var o;do{o=n[0],n[0]=this.rules.inline._backpedal.exec(n[0])[0]}while(o!==n[0]);r=Ns(n[0]),i="www."===n[1]?"http://"+n[0]:n[0]}return{type:"link",raw:n[0],text:r,href:i,tokens:[{type:"text",raw:r,text:r}]}}}},{key:"inlineText",value:function(e,t){var n,r=this.rules.inline.text.exec(e);if(r)return n=this.lexer.state.inRawBlock?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(r[0]):Ns(r[0]):r[0]:Ns(this.options.smartypants?t(r[0]):r[0]),{type:"text",raw:r[0],text:n}}}]),e}(),Ks={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]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,table:Ys,lheading:/^((?:(?!^bull ).|\n(?!\n|bull ))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\.|[^\[\]\\])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};Ks.def=Is(Ks.def).replace("label",Ks._label).replace("title",Ks._title).getRegex(),Ks.bullet=/(?:[*+-]|\d{1,9}[.)])/,Ks.listItemStart=Is(/^( *)(bull) */).replace("bull",Ks.bullet).getRegex(),Ks.list=Is(Ks.list).replace(/bull/g,Ks.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+Ks.def.source+")").getRegex(),Ks._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",Ks._comment=/|$)/,Ks.html=Is(Ks.html,"i").replace("comment",Ks._comment).replace("tag",Ks._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Ks.lheading=Is(Ks.lheading).replace(/bull/g,Ks.bullet).getRegex(),Ks.paragraph=Is(Ks._paragraph).replace("hr",Ks.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",")|<(?:script|pre|style|textarea|!--)").replace("tag",Ks._tag).getRegex(),Ks.blockquote=Is(Ks.blockquote).replace("paragraph",Ks.paragraph).getRegex(),Ks.normal=Cr({},Ks),Ks.gfm=Cr(Cr({},Ks.normal),{},{table:"^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),Ks.gfm.table=Is(Ks.gfm.table).replace("hr",Ks.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",")|<(?:script|pre|style|textarea|!--)").replace("tag",Ks._tag).getRegex(),Ks.gfm.paragraph=Is(Ks._paragraph).replace("hr",Ks.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("table",Ks.gfm.table).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Ks._tag).getRegex(),Ks.pedantic=Cr(Cr({},Ks.normal),{},{html:Is("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",Ks._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:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:Ys,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:Is(Ks.normal._paragraph).replace("hr",Ks.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",Ks.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});var Xs={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:Ys,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\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:Ys,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\.5&&(n="x"+n.toString(16)),r+="&#"+n+";";return r}Xs._punctuation="\\p{P}$+<=>`^|~",Xs.punctuation=Is(Xs.punctuation,"u").replace(/punctuation/g,Xs._punctuation).getRegex(),Xs.blockSkip=/\[[^[\]]*?\]\([^\(\)]*?\)|`[^`]*?`|<[^<>]*?>/g,Xs.anyPunctuation=/\\[punct]/g,Xs._escapes=/\\([punct])/g,Xs._comment=Is(Ks._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),Xs.emStrong.lDelim=Is(Xs.emStrong.lDelim,"u").replace(/punct/g,Xs._punctuation).getRegex(),Xs.emStrong.rDelimAst=Is(Xs.emStrong.rDelimAst,"gu").replace(/punct/g,Xs._punctuation).getRegex(),Xs.emStrong.rDelimUnd=Is(Xs.emStrong.rDelimUnd,"gu").replace(/punct/g,Xs._punctuation).getRegex(),Xs.anyPunctuation=Is(Xs.anyPunctuation,"gu").replace(/punct/g,Xs._punctuation).getRegex(),Xs._escapes=Is(Xs._escapes,"gu").replace(/punct/g,Xs._punctuation).getRegex(),Xs._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,Xs._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])?)+(?![-_])/,Xs.autolink=Is(Xs.autolink).replace("scheme",Xs._scheme).replace("email",Xs._email).getRegex(),Xs._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,Xs.tag=Is(Xs.tag).replace("comment",Xs._comment).replace("attribute",Xs._attribute).getRegex(),Xs._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,Xs._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,Xs._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,Xs.link=Is(Xs.link).replace("label",Xs._label).replace("href",Xs._href).replace("title",Xs._title).getRegex(),Xs.reflink=Is(Xs.reflink).replace("label",Xs._label).replace("ref",Ks._label).getRegex(),Xs.nolink=Is(Xs.nolink).replace("ref",Ks._label).getRegex(),Xs.reflinkSearch=Is(Xs.reflinkSearch,"g").replace("reflink",Xs.reflink).replace("nolink",Xs.nolink).getRegex(),Xs.normal=Cr({},Xs),Xs.pedantic=Cr(Cr({},Xs.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:Is(/^!?\[(label)\]\((.*?)\)/).replace("label",Xs._label).getRegex(),reflink:Is(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Xs._label).getRegex()}),Xs.gfm=Cr(Cr({},Xs.normal),{},{escape:Is(Xs.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]*?(?:(?=[\\1&&void 0!==arguments[1]?arguments[1]:[];e=this.options.pedantic?e.replace(/\t/g," ").replace(/^ +$/gm,""):e.replace(/^( *)(\t+)/gm,(function(e,t,n){return t+" ".repeat(n.length)}));for(var u=function(){if(o.options.extensions&&o.options.extensions.block&&o.options.extensions.block.some((function(n){return!!(t=n.call({lexer:o},e,a))&&(e=e.substring(t.raw.length),a.push(t),!0)})))return"continue";if(t=o.tokenizer.space(e))return e=e.substring(t.raw.length),1===t.raw.length&&a.length>0?a[a.length-1].raw+="\n":a.push(t),"continue";if(t=o.tokenizer.code(e))return e=e.substring(t.raw.length),!(n=a[a.length-1])||"paragraph"!==n.type&&"text"!==n.type?a.push(t):(n.raw+="\n"+t.raw,n.text+="\n"+t.text,o.inlineQueue[o.inlineQueue.length-1].src=n.text),"continue";if(t=o.tokenizer.fences(e))return e=e.substring(t.raw.length),a.push(t),"continue";if(t=o.tokenizer.heading(e))return e=e.substring(t.raw.length),a.push(t),"continue";if(t=o.tokenizer.hr(e))return e=e.substring(t.raw.length),a.push(t),"continue";if(t=o.tokenizer.blockquote(e))return e=e.substring(t.raw.length),a.push(t),"continue";if(t=o.tokenizer.list(e))return e=e.substring(t.raw.length),a.push(t),"continue";if(t=o.tokenizer.html(e))return e=e.substring(t.raw.length),a.push(t),"continue";if(t=o.tokenizer.def(e))return e=e.substring(t.raw.length),!(n=a[a.length-1])||"paragraph"!==n.type&&"text"!==n.type?o.tokens.links[t.tag]||(o.tokens.links[t.tag]={href:t.href,title:t.title}):(n.raw+="\n"+t.raw,n.text+="\n"+t.raw,o.inlineQueue[o.inlineQueue.length-1].src=n.text),"continue";if(t=o.tokenizer.table(e))return e=e.substring(t.raw.length),a.push(t),"continue";if(t=o.tokenizer.lheading(e))return e=e.substring(t.raw.length),a.push(t),"continue";if(r=e,o.options.extensions&&o.options.extensions.startBlock){var u,l=1/0,c=e.slice(1);o.options.extensions.startBlock.forEach((function(e){"number"===typeof(u=e.call({lexer:this},c))&&u>=0&&(l=Math.min(l,u))})),l<1/0&&l>=0&&(r=e.substring(0,l+1))}if(o.state.top&&(t=o.tokenizer.paragraph(r)))return n=a[a.length-1],i&&"paragraph"===n.type?(n.raw+="\n"+t.raw,n.text+="\n"+t.text,o.inlineQueue.pop(),o.inlineQueue[o.inlineQueue.length-1].src=n.text):a.push(t),i=r.length!==e.length,e=e.substring(t.raw.length),"continue";if(t=o.tokenizer.text(e))return e=e.substring(t.raw.length),(n=a[a.length-1])&&"text"===n.type?(n.raw+="\n"+t.raw,n.text+="\n"+t.text,o.inlineQueue.pop(),o.inlineQueue[o.inlineQueue.length-1].src=n.text):a.push(t),"continue";if(e){var s="Infinite loop on byte: "+e.charCodeAt(0);if(o.options.silent)return console.error(s),"break";throw new Error(s)}};e;){var l=u();if("continue"!==l&&"break"===l)break}return this.state.top=!0,a}},{key:"inline",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return this.inlineQueue.push({src:e,tokens:t}),t}},{key:"inlineTokens",value:function(e){var t,n,r,i,o,a,u=this,l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],c=e;if(this.tokens.links){var s=Object.keys(this.tokens.links);if(s.length>0)for(;null!=(i=this.tokenizer.rules.inline.reflinkSearch.exec(c));)s.includes(i[0].slice(i[0].lastIndexOf("[")+1,-1))&&(c=c.slice(0,i.index)+"["+"a".repeat(i[0].length-2)+"]"+c.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(i=this.tokenizer.rules.inline.blockSkip.exec(c));)c=c.slice(0,i.index)+"["+"a".repeat(i[0].length-2)+"]"+c.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;null!=(i=this.tokenizer.rules.inline.anyPunctuation.exec(c));)c=c.slice(0,i.index)+"++"+c.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(var f=function(){if(o||(a=""),o=!1,u.options.extensions&&u.options.extensions.inline&&u.options.extensions.inline.some((function(n){return!!(t=n.call({lexer:u},e,l))&&(e=e.substring(t.raw.length),l.push(t),!0)})))return"continue";if(t=u.tokenizer.escape(e))return e=e.substring(t.raw.length),l.push(t),"continue";if(t=u.tokenizer.tag(e))return e=e.substring(t.raw.length),(n=l[l.length-1])&&"text"===t.type&&"text"===n.type?(n.raw+=t.raw,n.text+=t.text):l.push(t),"continue";if(t=u.tokenizer.link(e))return e=e.substring(t.raw.length),l.push(t),"continue";if(t=u.tokenizer.reflink(e,u.tokens.links))return e=e.substring(t.raw.length),(n=l[l.length-1])&&"text"===t.type&&"text"===n.type?(n.raw+=t.raw,n.text+=t.text):l.push(t),"continue";if(t=u.tokenizer.emStrong(e,c,a))return e=e.substring(t.raw.length),l.push(t),"continue";if(t=u.tokenizer.codespan(e))return e=e.substring(t.raw.length),l.push(t),"continue";if(t=u.tokenizer.br(e))return e=e.substring(t.raw.length),l.push(t),"continue";if(t=u.tokenizer.del(e))return e=e.substring(t.raw.length),l.push(t),"continue";if(t=u.tokenizer.autolink(e,tf))return e=e.substring(t.raw.length),l.push(t),"continue";if(!u.state.inLink&&(t=u.tokenizer.url(e,tf)))return e=e.substring(t.raw.length),l.push(t),"continue";if(r=e,u.options.extensions&&u.options.extensions.startInline){var i,s=1/0,f=e.slice(1);u.options.extensions.startInline.forEach((function(e){"number"===typeof(i=e.call({lexer:this},f))&&i>=0&&(s=Math.min(s,i))})),s<1/0&&s>=0&&(r=e.substring(0,s+1))}if(t=u.tokenizer.inlineText(r,ef))return e=e.substring(t.raw.length),"_"!==t.raw.slice(-1)&&(a=t.raw.slice(-1)),o=!0,(n=l[l.length-1])&&"text"===n.type?(n.raw+=t.raw,n.text+=t.text):l.push(t),"continue";if(e){var p="Infinite loop on byte: "+e.charCodeAt(0);if(u.options.silent)return console.error(p),"break";throw new Error(p)}};e;){var p=f();if("continue"!==p&&"break"===p)break}return l}}],[{key:"rules",get:function(){return{block:Ks,inline:Xs}}},{key:"lex",value:function(t,n){return new e(n).lex(t)}},{key:"lexInline",value:function(t,n){return new e(n).inlineTokens(t)}}]),e}(),rf=function(){function e(t){jt(this,e),this.options=t||Cs}return Vt(e,[{key:"code",value:function(e,t,n){var r=(t||"").match(/\S*/)[0];if(this.options.highlight){var i=this.options.highlight(e,r);null!=i&&i!==e&&(n=!0,e=i)}return e=e.replace(/\n$/,"")+"\n",r?'
'+(n?e:Ns(e,!0))+"
\n":"
"+(n?e:Ns(e,!0))+"
\n"}},{key:"blockquote",value:function(e){return"
\n".concat(e,"
\n")}},{key:"html",value:function(e,t){return e}},{key:"heading",value:function(e,t,n,r){if(this.options.headerIds){var i=this.options.headerPrefix+r.slug(n);return"').concat(e,"\n")}return"").concat(e,"\n")}},{key:"hr",value:function(){return this.options.xhtml?"
\n":"
\n"}},{key:"list",value:function(e,t,n){var r=t?"ol":"ul";return"<"+r+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+"\n"}},{key:"listitem",value:function(e){return"
  • ".concat(e,"
  • \n")}},{key:"checkbox",value:function(e){return" "}},{key:"paragraph",value:function(e){return"

    ".concat(e,"

    \n")}},{key:"table",value:function(e,t){return t&&(t="".concat(t,"")),"\n\n"+e+"\n"+t+"
    \n"}},{key:"tablerow",value:function(e){return"\n".concat(e,"\n")}},{key:"tablecell",value:function(e,t){var n=t.header?"th":"td";return(t.align?"<".concat(n,' align="').concat(t.align,'">'):"<".concat(n,">"))+e+"\n")}},{key:"strong",value:function(e){return"".concat(e,"")}},{key:"em",value:function(e){return"".concat(e,"")}},{key:"codespan",value:function(e){return"".concat(e,"")}},{key:"br",value:function(){return this.options.xhtml?"
    ":"
    "}},{key:"del",value:function(e){return"".concat(e,"")}},{key:"link",value:function(e,t,n){if(null===(e=Hs(this.options.sanitize,this.options.baseUrl,e)))return n;var r='"}},{key:"image",value:function(e,t,n){if(null===(e=Hs(this.options.sanitize,this.options.baseUrl,e)))return n;var r='').concat(n,'":">"}},{key:"text",value:function(e){return e}}]),e}(),of=function(){function e(){jt(this,e)}return Vt(e,[{key:"strong",value:function(e){return e}},{key:"em",value:function(e){return e}},{key:"codespan",value:function(e){return e}},{key:"del",value:function(e){return e}},{key:"html",value:function(e){return e}},{key:"text",value:function(e){return e}},{key:"link",value:function(e,t,n){return""+n}},{key:"image",value:function(e,t,n){return""+n}},{key:"br",value:function(){return""}}]),e}(),af=function(){function e(){jt(this,e),this.seen={}}return Vt(e,[{key:"serialize",value:function(e){return e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")}},{key:"getNextSafeSlug",value:function(e,t){var n=e,r=0;if(this.seen.hasOwnProperty(n)){r=this.seen[e];do{n=e+"-"+ ++r}while(this.seen.hasOwnProperty(n))}return t||(this.seen[e]=r,this.seen[n]=0),n}},{key:"slug",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.serialize(e);return this.getNextSafeSlug(n,t.dryrun)}}]),e}(),uf=function(){function e(t){jt(this,e),this.options=t||Cs,this.options.renderer=this.options.renderer||new rf,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new of,this.slugger=new af}return Vt(e,[{key:"parse",value:function(e){var t,n,r,i,o,a,u,l,c,s,f,p,d,h,v,m,g,y,_,b=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],D="",w=e.length;for(t=0;t0&&"paragraph"===v.tokens[0].type?(v.tokens[0].text=y+" "+v.tokens[0].text,v.tokens[0].tokens&&v.tokens[0].tokens.length>0&&"text"===v.tokens[0].tokens[0].type&&(v.tokens[0].tokens[0].text=y+" "+v.tokens[0].tokens[0].text)):v.tokens.unshift({type:"text",text:y}):h+=y),h+=this.parse(v.tokens,d),c+=this.renderer.listitem(h,g,m);D+=this.renderer.list(c,f,p);continue;case"html":D+=this.renderer.html(s.text,s.block);continue;case"paragraph":D+=this.renderer.paragraph(this.parseInline(s.tokens));continue;case"text":for(c=s.tokens?this.parseInline(s.tokens):s.text;t+1";return t?Promise.resolve(i):n?void n(null,i):i}if(t)return Promise.reject(r);if(!n)throw r;n(r)}}var hf=new ff(Cs);function vf(e,t,n){return hf.parse(e,t,n)}vf.options=vf.setOptions=function(e){return hf.setOptions(e),vf.defaults=hf.defaults,Ss(vf.defaults),vf},vf.getDefaults=Es,vf.defaults=Cs,vf.use=function(){return hf.use.apply(hf,arguments),vf.defaults=hf.defaults,Ss(vf.defaults),vf},vf.walkTokens=function(e,t){return hf.walkTokens(e,t)},vf.parseInline=hf.parseInline,vf.Parser=uf,vf.parser=uf.parse,vf.Renderer=rf,vf.TextRenderer=of,vf.Lexer=nf,vf.lexer=nf.lex,vf.Tokenizer=Js,vf.Slugger=af,vf.Hooks=lf,vf.parse=vf;vf.options,vf.setOptions,vf.use,vf.walkTokens,vf.parseInline,uf.parse,nf.lex;var mf=n.p+"static/media/MetricsQL.957b90ab4cb4852eec26.md",gf=function(e){var t='$1 target="_blank" class="'.concat("vm-link vm-link_colored",'" $2').concat("https://docs.victoriametrics.com/MetricsQL.html","#");return e.replace(/(1,c=n||a,s="ArrowDown"===t,f="Enter"===t;"ArrowUp"===t&&c&&(e.preventDefault(),i()),s&&c&&(e.preventDefault(),o()),f&&d&&e.preventDefault(),!f||u||l&&!c||d||(e.preventDefault(),r())},onChange:n,onChangeCaret:function(e){g(e)},disabled:f,inputmode:"search"}),a&&Qr(Df,{value:t,anchorEl:y,caretPosition:m,onSelect:function(e){n(e)},onFoundOptions:function(e){h(!!e.length)}})]})},xf=function(e){var t=e.query,n=e.onChange,r=e.onRun,i=To().isMobile;return Qr("div",{className:so()({"vm-explore-logs-header":!0,"vm-block":!0,"vm-block_mobile":i}),children:[Qr("div",{className:"vm-explore-logs-header__input",children:Qr(kf,{value:t,autocomplete:!1,onArrowUp:function(){return null},onArrowDown:function(){return null},onEnter:r,onChange:n,label:"Log query"})}),Qr("div",{className:"vm-explore-logs-header-bottom",children:[Qr("div",{className:"vm-explore-logs-header-bottom-helpful",children:[Qr("a",{className:"vm-link vm-link_with-icon",target:"_blank",href:"https://docs.victoriametrics.com/VictoriaLogs/LogsQL.html",rel:"help noreferrer",children:[Qr(Hi,{}),"Query language docs"]}),Qr("a",{className:"vm-link vm-link_with-icon",target:"_blank",href:"https://docs.victoriametrics.com/VictoriaLogs/",rel:"help noreferrer",children:[Qr(to,{}),"Documentation"]})]}),Qr("div",{className:"vm-explore-logs-header-bottom__execute",children:Qr(Go,{startIcon:Qr(qi,{}),onClick:r,fullWidth:!0,children:"Execute Query"})})]})]})};var Ef,Cf=function(e){var t=ue();return oe((function(){t.current=e}),[e]),t.current},Sf=function(){var e=Kr().serverUrl,t=ia().setSearchParamsFromKeys,n=Lt(ra("","query"),2),r=n[0],i=n[1],o=Cf(r),a=function(e,t){var n=Lt(re([]),2),r=n[0],i=n[1],o=Lt(re(!1),2),a=o[0],u=o[1],l=Lt(re(),2),s=l[0],f=l[1],p=ce((function(){return function(e){return"".concat(e,"/select/logsql/query")}(e)}),[e]),d=ce((function(){return{method:"POST",headers:{Accept:"application/stream+json; charset=utf-8","Content-Type":"application/x-www-form-urlencoded"},body:"query=".concat(encodeURIComponent(t.trim()))}}),[t]);return{logs:r,isLoading:a,error:s,fetchLogs:se(Yo(Wo().mark((function e(){var t,n,r,o,a,l,s,h,v,m;return Wo().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return u(!0),f(void 0),e.prev=2,e.next=5,fetch(p,d);case 5:if((t=e.sent).ok&&t.body){e.next=14;break}return e.next=9,t.text();case 9:return n=e.sent,f(n),i([]),u(!1),e.abrupt("return");case 14:r=t.body.getReader(),o=new TextDecoder("utf-8"),a=[];case 17:if(!r){e.next=33;break}return e.next=20,r.read();case 20:if(l=e.sent,s=l.done,h=l.value,!s){e.next=25;break}return e.abrupt("break",33);case 25:if(v=o.decode(h,{stream:!0}).split("\n"),a.push.apply(a,It(v)),a.length>Da&&a.splice(0,a.length-Da),!(a.length>=Da)){e.next=31;break}return r.cancel(),e.abrupt("break",33);case 31:e.next=17;break;case 33:m=a.map((function(e){try{return JSON.parse(e)}catch(c){return""}})).filter((function(e){return e})),i(m),e.next=42;break;case 37:e.prev=37,e.t0=e.catch(2),console.error(e.t0),i([]),e.t0 instanceof Error&&f("".concat(e.t0.name,": ").concat(e.t0.message));case 42:u(!1);case 43:case"end":return e.stop()}}),e,null,[[2,37]])}))),[p,d])}}(e,r),u=a.logs,l=a.isLoading,s=a.error,f=a.fetchLogs,p=function(){f(),t(o&&r!==o?{query:r,page:1}:{query:r})};return oe((function(){r&&p()}),[]),Qr("div",{className:"vm-explore-logs",children:[Qr(xf,{query:r,onChange:i,onRun:p}),l&&Qr(wa,{}),s&&Qr(Po,{variant:"error",children:s}),Qr(ba,{data:u})]})},Ff={home:"/",metrics:"/metrics",dashboards:"/dashboards",cardinality:"/cardinality",topQueries:"/top-queries",trace:"/trace",withTemplate:"/expand-with-exprs",relabel:"/relabeling",logs:"/logs",activeQueries:"/active-queries",icons:"/icons"},Mf={header:{tenant:!0,stepControl:!1,timeSelector:!1,executionControls:!1}},Of=(xr(Ef={},Ff.home,Cr({title:"Query"},Mf)),xr(Ef,Ff.metrics,{title:"Explore Prometheus metrics",header:{tenant:!0,stepControl:!0,timeSelector:!0}}),xr(Ef,Ff.cardinality,{title:"Explore cardinality",header:{tenant:!0,cardinalityDatePicker:!0}}),xr(Ef,Ff.topQueries,{title:"Top queries",header:{tenant:!0}}),xr(Ef,Ff.trace,{title:"Trace analyzer",header:{}}),xr(Ef,Ff.dashboards,Cr({title:"Dashboards"},Mf)),xr(Ef,Ff.withTemplate,{title:"WITH templates",header:{}}),xr(Ef,Ff.relabel,{title:"Metric relabel debug",header:{}}),xr(Ef,Ff.logs,{title:"Logs Explorer",header:{}}),xr(Ef,Ff.activeQueries,{title:"Active Queries",header:{}}),xr(Ef,Ff.icons,{title:"Icons",header:{}}),Ef),Tf=Ff,Bf=function(e){var t=e.activeMenu,n=e.label,r=e.value,i=e.color;return Qr(Dr,{className:so()({"vm-header-nav-item":!0,"vm-header-nav-item_active":t===r}),style:{color:i},to:r,children:n})},Pf=function(e){var t=e.activeMenu,n=e.label,r=e.color,i=e.background,o=e.submenu,a=e.direction,u=Un().pathname,l=Lt(re(null),2),c=l[0],s=l[1],f=ue(null),p=Ko(!1),d=p.value,h=p.setFalse,v=p.setTrue,m=function(){c&&clearTimeout(c);var e=setTimeout(h,300);s(e)};return oe((function(){h()}),[u]),"column"===a?Qr(_,{children:o.map((function(e){return Qr(Bf,{activeMenu:t,value:e.value||"",label:e.label||""},e.value)}))}):Qr("div",{className:so()({"vm-header-nav-item":!0,"vm-header-nav-item_sub":!0,"vm-header-nav-item_open":d,"vm-header-nav-item_active":o.find((function(e){return e.value===t}))}),style:{color:r},onMouseEnter:function(){v(),c&&clearTimeout(c)},onMouseLeave:m,ref:f,children:[n,Qr(Yi,{}),Qr(ea,{open:d,placement:"bottom-left",offset:{top:12,left:0},onClose:h,buttonRef:f,children:Qr("div",{className:"vm-header-nav-item-submenu",style:{background:i},onMouseLeave:m,onMouseEnter:function(){c&&clearTimeout(c)},children:o.map((function(e){return Qr(Bf,{activeMenu:t,value:e.value||"",label:e.label||"",color:r},e.value)}))})})]})},Nf=[{label:Of[Tf.logs].title,value:Tf.home}],Lf=(Of[Tf.home].title,Of[Tf.metrics].title,Of[Tf.cardinality].title,Of[Tf.topQueries].title,Of[Tf.activeQueries].title,Of[Tf.trace].title,Of[Tf.withTemplate].title,Of[Tf.relabel].title,function(e){var t=e.color,n=e.background,r=e.direction,i=Fr(),o=fe(Ro).state.dashboardsSettings,a=Un().pathname,u=Lt(re(a),2),l=u[0],c=u[1],s=ce((function(){return Nf}),[i,o]);return oe((function(){c(a)}),[a]),Qr("nav",{className:so()(xr({"vm-header-nav":!0},"vm-header-nav_".concat(r),r)),children:s.map((function(e){return e.submenu?Qr(Pf,{activeMenu:l,label:e.label||"",submenu:e.submenu,color:t,background:n,direction:r},e.label):Qr(Bf,{activeMenu:l,value:e.value||"",label:e.label||"",color:t},e.value)}))})}),$f=function(e){var t=e.title,n=e.children,r=e.onClose,i=e.className,o=e.isOpen,a=void 0===o||o,u=To().isMobile,l=Wn(),c=Un(),s=se((function(e){a&&"Escape"===e.key&&r()}),[a]),f=function(e){e.stopPropagation()},p=se((function(){a&&(l(c,{replace:!0}),r())}),[a,c,r]);return oe((function(){if(a)return document.body.style.overflow="hidden",function(){document.body.style.overflow="auto"}}),[a]),go("popstate",p),go("keyup",s),At.createPortal(Qr("div",{className:so()(xr({"vm-modal":!0,"vm-modal_mobile":u},"".concat(i),i)),onMouseDown:r,children:Qr("div",{className:"vm-modal-content",children:[Qr("div",{className:"vm-modal-content-header",onMouseDown:f,children:[t&&Qr("div",{className:"vm-modal-content-header__title",children:t}),Qr("div",{className:"vm-modal-header__close",children:Qr(Go,{variant:"text",size:"small",onClick:r,ariaLabel:"close",children:Qr(ji,{})})})]}),Qr("div",{className:"vm-modal-content-body",onMouseDown:f,children:n})]})}),document.body)},Rf=Qr("code",{children:Oo()?"Cmd":"Ctrl"}),If=[{title:"Zoom in",description:Qr(_,{children:["To zoom in, hold down the ",Rf," + ",Qr("code",{children:"scroll up"}),", or press the ",Qr("code",{children:"+"}),". Also, you can zoom in on a range on the graph by holding down your mouse button and selecting the range."]})},{title:"Zoom out",description:Qr(_,{children:["To zoom out, hold down the ",Rf," + ",Qr("code",{children:"scroll down"}),", or press the ",Qr("code",{children:"-"}),"."]})},{title:"Move horizontal axis",description:Qr(_,{children:["To move the graph, hold down the ",Rf," + ",Qr("code",{children:"drag"})," the graph to the right or left."]})},{title:"Fixing a tooltip",description:Qr(_,{children:["To fix the tooltip, ",Qr("code",{children:"click"})," mouse when it's open. Then, you can drag the fixed tooltip by ",Qr("code",{children:"clicking"})," and ",Qr("code",{children:"dragging"})," on the ",Qr(eo,{})," icon."]})},{title:"Set a custom range for the vertical axis",description:Qr(_,{children:["To set a custom range for the vertical axis, click on the ",Qr(Ii,{})," icon located in the upper right corner of the graph, activate the toggle, and set the values."]})}],jf=[{title:"Show/hide a legend item",description:Qr(_,{children:[Qr("code",{children:"click"})," on a legend item to isolate it on the graph.",Rf," + ",Qr("code",{children:"click"})," on a legend item to remove it from the graph. To revert to the previous state, click again."]})},{title:"Copy label key-value pairs",description:Qr(_,{children:[Qr("code",{children:"click"})," on a label key-value pair to save it to the clipboard."]})},{title:"Collapse/Expand the legend group",description:Qr(_,{children:[Qr("code",{children:"click"})," on the group name (e.g. ",Qr("b",{children:'Query 1: {__name__!=""}'}),") to collapse or expand the legend."]})}],zf=(If.concat(jf),Oo(),Oo(),function(e){var t=e.open;return Qr("button",{className:so()({"vm-menu-burger":!0,"vm-menu-burger_opened":t}),"aria-label":"menu",children:Qr("span",{})})}),Hf=function(e){var t=e.background,n=e.color,r=Un().pathname,i=To().isMobile,o=ue(null),a=Ko(!1),u=a.value,l=a.toggle,c=a.setFalse;return oe(c,[r]),Xo(o,c),Qr("div",{className:"vm-header-sidebar",ref:o,children:[Qr("div",{className:so()({"vm-header-sidebar-button":!0,"vm-header-sidebar-button_open":u}),onClick:l,children:Qr(zf,{open:u})}),Qr("div",{className:so()({"vm-header-sidebar-menu":!0,"vm-header-sidebar-menu_open":u}),children:[Qr("div",{children:Qr(Lf,{color:n,background:t,direction:"column"})}),Qr("div",{className:"vm-header-sidebar-menu-settings",children:!i&&!1})]})]})},Uf=["controlsComponent","isMobile"],Vf=function(e){var t=e.controlsComponent,n=e.isMobile,r=fo(e,Uf),i=Fr(),o=Un().pathname,a=function(){var e=Sr().useTenantID,t=Fr(),n=Kr().serverUrl,r=Lt(re(!1),2),i=r[0],o=r[1],a=Lt(re(),2),u=a[0],l=a[1],c=Lt(re([]),2),s=c[0],f=c[1],p=ce((function(){return"".concat(n.replace(/^(.+)(\/select.+)/,"$1"),"/admin/tenants")}),[n]),d=ce((function(){return!!Or(n)}),[n]),h=t?!e:!d;return oe((function(){if(!h){var e=function(){var e=Yo(Wo().mark((function e(){var t,n,r;return Wo().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o(!0),e.prev=1,e.next=4,fetch(p);case 4:return t=e.sent,e.next=7,t.json();case 7:n=e.sent,r=n.data||[],f(r.sort((function(e,t){return e.localeCompare(t)}))),t.ok?l(void 0):l("".concat(n.errorType,"\r\n").concat(null===n||void 0===n?void 0:n.error)),e.next=16;break;case 13:e.prev=13,e.t0=e.catch(1),e.t0 instanceof Error&&l("".concat(e.t0.name,": ").concat(e.t0.message));case 16:o(!1);case 17:case"end":return e.stop()}}),e,null,[[1,13]])})));return function(){return e.apply(this,arguments)}}();e().catch(console.error)}}),[p]),{accountIds:s,isLoading:i,error:u}}(),u=a.accountIds,l=Ko(!1),c=l.value,s=l.toggle,f=l.setFalse,p=ce((function(){return(Of[o]||{}).header||{}}),[o]),d=Qr(t,Cr(Cr({},r),{},{isMobile:n,accountIds:u,headerSetup:p}));return n?Qr(_,{children:[Qr("div",{children:Qr(Go,{className:so()({"vm-header-button":!i}),startIcon:Qr(ro,{}),onClick:s,ariaLabel:"controls"})}),Qr($f,{title:"Controls",onClose:f,isOpen:c,className:so()({"vm-header-controls-modal":!0,"vm-header-controls-modal_open":c}),children:d})]}):d},Wf=function(e){var t=e.controlsComponent,n="true",r=To().isMobile,i=ce((function(){return window.innerWidth<1e3}),[yo()]),o=Kr().isDarkTheme,a=Fr(),u=ce((function(){return Ur(o?"color-background-block":"color-primary")}),[o]),l=ce((function(){var e=Sr().headerStyles,t=void 0===e?{}:e,n=t.background,r=void 0===n?a?"#FFF":u:n,i=t.color;return{background:r,color:void 0===i?a?u:"#FFF":i}}),[u]),c=l.background,s=l.color,f=Wn(),p=function(){f({pathname:Tf.home}),window.location.reload()};return Qr("header",{className:so()({"vm-header":!0,"vm-header_app":a,"vm-header_dark":o,"vm-header_sidebar":i,"vm-header_mobile":r}),style:{background:c,color:s},children:[i?Qr(Hf,{background:c,color:s}):Qr(_,{children:[!a&&Qr("div",{className:so()({"vm-header-logo":!0,"vm-header-logo_logs":n}),onClick:p,style:{color:s},children:Qr(n?$i:Li,{})}),Qr(Lf,{color:s,background:c})]}),i&&Qr("div",{className:so()({"vm-header-logo":!0,"vm-header-logo_mobile":!0,"vm-header-logo_logs":n}),onClick:p,style:{color:s},children:Qr(n?$i:Li,{})}),Qr(Vf,{controlsComponent:t,displaySidebar:i,isMobile:r})]})},Zf=function(){var e=To().isMobile,t="2019-".concat(xt()().format("YYYY"));return Qr("footer",{className:"vm-footer",children:[Qr("a",{className:"vm-link vm-footer__website",target:"_blank",href:"https://victoriametrics.com/",rel:"me noreferrer",children:[Qr(Ri,{}),"victoriametrics.com"]}),Qr("a",{className:"vm-link vm-footer__link",target:"_blank",href:"https://docs.victoriametrics.com/MetricsQL.html",rel:"help noreferrer",children:[Qr(Ji,{}),"MetricsQL"]}),Qr("a",{className:"vm-link vm-footer__link",target:"_blank",href:"https://docs.victoriametrics.com/#vmui",rel:"help noreferrer",children:[Qr(to,{}),e?"Docs":"Documentation"]}),Qr("a",{className:"vm-link vm-footer__link",target:"_blank",href:"https://github.com/VictoriaMetrics/VictoriaMetrics/issues/new/choose",rel:"noreferrer",children:[Qr(no,{}),e?"New issue":"Create an issue"]}),Qr("div",{className:"vm-footer__copyright",children:["\xa9 ",t," VictoriaMetrics"]})]})},Yf=function(e){var t=e.serverUrl,n=e.stateServerUrl,r=e.onChange,i=e.onEnter,o=Lt(re(""),2),a=o[0],u=o[1];return oe((function(){n||u(zr.emptyServer),function(e){var t;try{t=new URL(e)}catch(y){return!1}return"http:"===t.protocol||"https:"===t.protocol}(n)||u(zr.validServer)}),[n]),Qr(ka,{autofocus:!0,label:"Server URL",value:t,error:a,onChange:function(e){r(e||""),u("")},onEnter:i,inputmode:"url"})},qf=[{label:"Graph",type:"chart"},{label:"JSON",type:"code"},{label:"Table",type:"table"}],Gf=function(e){var t=e.limits,n=e.onChange,r=e.onEnter,i=To().isMobile,o=Lt(re({table:"",chart:"",code:""}),2),a=o[0],u=o[1],l=function(e){return function(r){!function(e,r){var i=e||"";u((function(e){return Cr(Cr({},e),{},xr({},r,+i<0?zr.positiveNumber:""))})),n(Cr(Cr({},t),{},xr({},r,i||1/0)))}(r,e)}};return Qr("div",{className:"vm-limits-configurator",children:[Qr("div",{className:"vm-server-configurator__title",children:["Series limits by tabs",Qr(Jo,{title:"Set to 0 to disable the limit",children:Qr(Go,{variant:"text",color:"primary",size:"small",startIcon:Qr(Hi,{})})}),Qr("div",{className:"vm-limits-configurator-title__reset",children:Qr(Go,{variant:"text",color:"primary",size:"small",startIcon:Qr(zi,{}),onClick:function(){n(Lr)},children:"Reset limits"})})]}),Qr("div",{className:so()({"vm-limits-configurator__inputs":!0,"vm-limits-configurator__inputs_mobile":i}),children:qf.map((function(e){return Qr("div",{children:Qr(ka,{label:e.label,value:t[e.type],error:a[e.type],onChange:l(e.type),onEnter:r,type:"number"})},e.type)}))})]})},Qf=function(e){var t=e.timezoneState,n=e.onChange,r=To().isMobile,i=yi(),o=Lt(re(""),2),a=o[0],u=o[1],l=ue(null),s=Ko(!1),f=s.value,p=s.toggle,d=s.setFalse,h=ce((function(){if(!a)return i;try{return yi(a)}catch(c){return{}}}),[a,i]),v=ce((function(){return Object.keys(h)}),[h]),m=ce((function(){return{region:xt().tz.guess(),utc:gi(xt().tz.guess())}}),[]),g=ce((function(){return{region:t,utc:gi(t)}}),[t]),y=function(e){return function(){!function(e){n(e.region),u(""),d()}(e)}};return Qr("div",{className:"vm-timezones",children:[Qr("div",{className:"vm-server-configurator__title",children:"Time zone"}),Qr("div",{className:"vm-timezones-item vm-timezones-item_selected",onClick:p,ref:l,children:[Qr("div",{className:"vm-timezones-item__title",children:g.region}),Qr("div",{className:"vm-timezones-item__utc",children:g.utc}),Qr("div",{className:so()({"vm-timezones-item__icon":!0,"vm-timezones-item__icon_open":f}),children:Qr(Yi,{})})]}),Qr(ea,{open:f,buttonRef:l,placement:"bottom-left",onClose:d,fullWidth:!0,title:r?"Time zone":void 0,children:Qr("div",{className:so()({"vm-timezones-list":!0,"vm-timezones-list_mobile":r}),children:[Qr("div",{className:"vm-timezones-list-header",children:[Qr("div",{className:"vm-timezones-list-header__search",children:Qr(ka,{autofocus:!0,label:"Search",value:a,onChange:function(e){u(e)}})}),Qr("div",{className:"vm-timezones-item vm-timezones-list-group-options__item",onClick:y(m),children:[Qr("div",{className:"vm-timezones-item__title",children:["Browser Time (",m.region,")"]}),Qr("div",{className:"vm-timezones-item__utc",children:m.utc})]})]}),v.map((function(e){return Qr("div",{className:"vm-timezones-list-group",children:Qr(ma,{defaultExpanded:!0,title:Qr("div",{className:"vm-timezones-list-group__title",children:e}),children:Qr("div",{className:"vm-timezones-list-group-options",children:h[e]&&h[e].map((function(e){return Qr("div",{className:"vm-timezones-item vm-timezones-list-group-options__item",onClick:y(e),children:[Qr("div",{className:"vm-timezones-item__title",children:e.region}),Qr("div",{className:"vm-timezones-item__utc",children:e.utc})]},e.search)}))})})},e)}))]})})]})},Jf=function(e){var t=e.options,n=e.value,r=e.label,i=e.onChange,o=ue(null),a=Lt(re({width:"0px",left:"0px",borderRadius:"0px"}),2),u=a[0],l=a[1],c=function(e){return function(){i(e)}};return oe((function(){if(o.current){var e=t.findIndex((function(e){return e.value===n})),r=o.current.getBoundingClientRect().width,i=e*r,a="0";0===e&&(a="16px 0 0 16px"),e===t.length-1&&(a="10px",i-=1,a="0 16px 16px 0"),0!==e&&e!==t.length-1&&(r+=1,i-=1),l({width:"".concat(r,"px"),left:"".concat(i,"px"),borderRadius:a})}else l({width:"0px",left:"0px",borderRadius:"0px"})}),[o,n,t]),Qr("div",{className:"vm-toggles",children:[r&&Qr("label",{className:"vm-toggles__label",children:r}),Qr("div",{className:"vm-toggles-group",style:{gridTemplateColumns:"repeat(".concat(t.length,", 1fr)")},children:[u.borderRadius&&Qr("div",{className:"vm-toggles-group__highlight",style:u}),t.map((function(e,t){return Qr("div",{className:so()({"vm-toggles-group-item":!0,"vm-toggles-group-item_first":0===t,"vm-toggles-group-item_active":e.value===n,"vm-toggles-group-item_icon":e.icon&&e.title}),onClick:c(e.value),ref:e.value===n?o:null,children:[e.icon,e.title]},e.value)}))]})]})},Kf=Object.values(Hr).map((function(e){return{title:e,value:e}})),Xf=function(e){var t=e.theme,n=e.onChange,r=To().isMobile;return Qr("div",{className:so()({"vm-theme-control":!0,"vm-theme-control_mobile":r}),children:[Qr("div",{className:"vm-server-configurator__title",children:"Theme preferences"}),Qr("div",{className:"vm-theme-control__toggle",children:Qr(Jf,{options:Kf,value:t,onChange:function(e){n(e)}})},"".concat(r))]})},ep="Settings",tp=function(){var e=To().isMobile,t=Fr(),n=Kr(),r=n.serverUrl,i=n.theme,o=Mi().timezone,a=fe(Eo).state.seriesLimits,u=Xr(),l=fe(Fi).dispatch,c=fe(Eo).dispatch,s=Lt(re(r),2),f=s[0],p=s[1],d=Lt(re(a),2),h=d[0],v=d[1],m=Lt(re(o),2),g=m[0],y=m[1],b=Ko(!1),D=b.value,w=b.setTrue,A=b.setFalse,k=function(){A(),p(r),v(a),y(o)},x=function(){var e=Or(f);""!==e&&u({type:"SET_TENANT_ID",payload:e}),u({type:"SET_SERVER",payload:f}),l({type:"SET_TIMEZONE",payload:g}),c({type:"SET_SERIES_LIMITS",payload:h}),A()};oe((function(){r!==f&&p(r)}),[r]);var E=[{show:!t&&!1,component:Qr(Yf,{stateServerUrl:r,serverUrl:f,onChange:p,onEnter:x})},{show:!1,component:Qr(Gf,{limits:h,onChange:v,onEnter:x})},{show:!0,component:Qr(Qf,{timezoneState:g,onChange:y})},{show:!t,component:Qr(Xf,{theme:i,onChange:function(e){u({type:"SET_THEME",payload:e})}})}].filter((function(e){return e.show}));return Qr(_,{children:[e?Qr("div",{className:"vm-mobile-option",onClick:w,children:[Qr("span",{className:"vm-mobile-option__icon",children:Qr(Ii,{})}),Qr("div",{className:"vm-mobile-option-text",children:Qr("span",{className:"vm-mobile-option-text__label",children:ep})}),Qr("span",{className:"vm-mobile-option__arrow",children:Qr(Zi,{})})]}):Qr(Jo,{title:ep,children:Qr(Go,{className:so()({"vm-header-button":!t}),variant:"contained",color:"primary",startIcon:Qr(Ii,{}),onClick:w,ariaLabel:"settings"})}),D&&Qr($f,{title:ep,onClose:k,children:Qr("div",{className:so()({"vm-server-configurator":!0,"vm-server-configurator_mobile":e}),children:[E.map((function(e,t){return Qr("div",{className:"vm-server-configurator__input",children:e.component},t)})),Qr("div",{className:"vm-server-configurator-footer",children:[Qr(Go,{color:"error",variant:"outlined",onClick:k,children:"Cancel"}),Qr(Go,{color:"primary",variant:"contained",onClick:x,children:"Apply"})]})]})})]})},np=function(e){var t=e.isMobile;return Qr("div",{className:so()({"vm-header-controls":!0,"vm-header-controls_mobile":t}),children:Qr(tp,{})})},rp=function(){var e=Fr(),t=To().isMobile;return oe((function(){var e,t="vmui for VictoriaLogs",n=null===(e=Of[Tf.logs])||void 0===e?void 0:e.title;document.title=n?"".concat(n," - ").concat(t):t}),[Un().pathname]),Qr("section",{className:"vm-container",children:[Qr(Wf,{controlsComponent:np}),Qr("div",{className:so()({"vm-container-body":!0,"vm-container-body_mobile":t,"vm-container-body_app":e}),children:Qr(ar,{})}),!e&&Qr(Zf,{})]})},ip=function(){var e=Lt(re(!1),2),t=e[0],n=e[1];return Qr(_,{children:Qr(gr,{children:Qr(Io,{children:Qr(_,{children:[Qr(Vo,{onLoaded:n}),t&&Qr(cr,{children:Qr(ur,{path:"/",element:Qr(rp,{}),children:Qr(ur,{path:"/",element:Qr(Sf,{})})})})]})})})})},op=function(e){e&&n.e(522).then(n.bind(n,522)).then((function(t){var n=t.getCLS,r=t.getFID,i=t.getFCP,o=t.getLCP,a=t.getTTFB;n(e),r(e),i(e),o(e),a(e)}))},ap=document.getElementById("root");ap&&Qe(Qr(ip,{}),ap),op()}()}(); \ No newline at end of file diff --git a/app/vlselect/vmui/static/js/main.41b816cc.js.LICENSE.txt b/app/vlselect/vmui/static/js/main.02178f4b.js.LICENSE.txt similarity index 100% rename from app/vlselect/vmui/static/js/main.41b816cc.js.LICENSE.txt rename to app/vlselect/vmui/static/js/main.02178f4b.js.LICENSE.txt diff --git a/app/vlselect/vmui/static/js/main.41b816cc.js b/app/vlselect/vmui/static/js/main.41b816cc.js deleted file mode 100644 index 4d183009e..000000000 --- a/app/vlselect/vmui/static/js/main.41b816cc.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see main.41b816cc.js.LICENSE.txt */ -!function(){var e={680:function(e,t,n){"use strict";var r=n(476),o=n(962),i=o(r("String.prototype.indexOf"));e.exports=function(e,t){var n=r(e,!!t);return"function"===typeof n&&i(e,".prototype.")>-1?o(n):n}},962:function(e,t,n){"use strict";var r=n(199),o=n(476),i=o("%Function.prototype.apply%"),a=o("%Function.prototype.call%"),c=o("%Reflect.apply%",!0)||r.call(a,i),l=o("%Object.getOwnPropertyDescriptor%",!0),u=o("%Object.defineProperty%",!0),s=o("%Math.max%");if(u)try{u({},"a",{value:1})}catch(d){u=null}e.exports=function(e){var t=c(r,a,arguments);l&&u&&(l(t,"length").configurable&&u(t,"length",{value:1+s(0,e.length-(arguments.length-1))}));return t};var f=function(){return c(r,i,arguments)};u?u(e.exports,"apply",{value:f}):e.exports.apply=f},123:function(e,t){var n;!function(){"use strict";var r={}.hasOwnProperty;function o(){for(var e=[],t=0;t=t?e:""+Array(t+1-r.length).join(n)+e},_={s:y,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),r=Math.floor(n/60),o=n%60;return(t<=0?"+":"-")+y(r,2,"0")+":"+y(o,2,"0")},m:function e(t,n){if(t.date()1)return e(a[0])}else{var c=t.name;b[c]=t,o=c}return!r&&o&&(g=o),o||!r&&g},S=function(e,t){if(w(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new E(n)},x=_;x.l=A,x.i=w,x.w=function(e,t){return S(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var E=function(){function m(e){this.$L=A(e.locale,null,!0),this.parse(e)}var y=m.prototype;return y.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(x.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var r=t.match(h);if(r){var o=r[2]-1||0,i=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],o,r[3]||1,r[4]||0,r[5]||0,r[6]||0,i)):new Date(r[1],o,r[3]||1,r[4]||0,r[5]||0,r[6]||0,i)}}return new Date(t)}(e),this.$x=e.x||{},this.init()},y.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},y.$utils=function(){return x},y.isValid=function(){return!(this.$d.toString()===p)},y.isSame=function(e,t){var n=S(e);return this.startOf(t)<=n&&n<=this.endOf(t)},y.isAfter=function(e,t){return S(e)=0&&(i[f]=parseInt(s,10))}var d=i[3],p=24===d?0:d,h=i[0]+"-"+i[1]+"-"+i[2]+" "+p+":"+i[4]+":"+i[5]+":000",v=+t;return(o.utc(h).valueOf()-(v-=v%1e3))/6e4},l=r.prototype;l.tz=function(e,t){void 0===e&&(e=i);var n=this.utcOffset(),r=this.toDate(),a=r.toLocaleString("en-US",{timeZone:e}),c=Math.round((r-new Date(a))/1e3/60),l=o(a).$set("millisecond",this.$ms).utcOffset(15*-Math.round(r.getTimezoneOffset()/15)-c,!0);if(t){var u=l.utcOffset();l=l.add(n-u,"minute")}return l.$x.$timezone=e,l},l.offsetName=function(e){var t=this.$x.$timezone||o.tz.guess(),n=a(this.valueOf(),t,{timeZoneName:e}).find((function(e){return"timezonename"===e.type.toLowerCase()}));return n&&n.value};var u=l.startOf;l.startOf=function(e,t){if(!this.$x||!this.$x.$timezone)return u.call(this,e,t);var n=o(this.format("YYYY-MM-DD HH:mm:ss:SSS"));return u.call(n,e,t).tz(this.$x.$timezone,!0)},o.tz=function(e,t,n){var r=n&&t,a=n||t||i,l=c(+o(),a);if("string"!=typeof e)return o(e).tz(a);var u=function(e,t,n){var r=e-60*t*1e3,o=c(r,n);if(t===o)return[r,t];var i=c(r-=60*(o-t)*1e3,n);return o===i?[r,o]:[e-60*Math.min(o,i)*1e3,Math.max(o,i)]}(o.utc(e,r).valueOf(),l,a),s=u[0],f=u[1],d=o(s).utcOffset(f);return d.$x.$timezone=a,d},o.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},o.tz.setDefault=function(e){i=e}}}()},635:function(e){e.exports=function(){"use strict";var e="minute",t=/[+-]\d\d(?::?\d\d)?/g,n=/([+-]|\d\d)/g;return function(r,o,i){var a=o.prototype;i.utc=function(e){return new o({date:e,utc:!0,args:arguments})},a.utc=function(t){var n=i(this.toDate(),{locale:this.$L,utc:!0});return t?n.add(this.utcOffset(),e):n},a.local=function(){return i(this.toDate(),{locale:this.$L,utc:!1})};var c=a.parse;a.parse=function(e){e.utc&&(this.$u=!0),this.$utils().u(e.$offset)||(this.$offset=e.$offset),c.call(this,e)};var l=a.init;a.init=function(){if(this.$u){var e=this.$d;this.$y=e.getUTCFullYear(),this.$M=e.getUTCMonth(),this.$D=e.getUTCDate(),this.$W=e.getUTCDay(),this.$H=e.getUTCHours(),this.$m=e.getUTCMinutes(),this.$s=e.getUTCSeconds(),this.$ms=e.getUTCMilliseconds()}else l.call(this)};var u=a.utcOffset;a.utcOffset=function(r,o){var i=this.$utils().u;if(i(r))return this.$u?0:i(this.$offset)?u.call(this):this.$offset;if("string"==typeof r&&(r=function(e){void 0===e&&(e="");var r=e.match(t);if(!r)return null;var o=(""+r[0]).match(n)||["-",0,0],i=o[0],a=60*+o[1]+ +o[2];return 0===a?0:"+"===i?a:-a}(r),null===r))return this;var a=Math.abs(r)<=16?60*r:r,c=this;if(o)return c.$offset=a,c.$u=0===r,c;if(0!==r){var l=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(c=this.local().add(a+l,e)).$offset=a,c.$x.$localOffset=l}else c=this.utc();return c};var s=a.format;a.format=function(e){var t=e||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return s.call(this,t)},a.valueOf=function(){var e=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*e},a.isUTC=function(){return!!this.$u},a.toISOString=function(){return this.toDate().toISOString()},a.toString=function(){return this.toDate().toUTCString()};var f=a.toDate;a.toDate=function(e){return"s"===e&&this.$offset?i(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():f.call(this)};var d=a.diff;a.diff=function(e,t,n){if(e&&this.$u===e.$u)return d.call(this,e,t,n);var r=this.local(),o=i(e).local();return d.call(r,o,t,n)}}}()},781:function(e){"use strict";var t=Array.prototype.slice,n=Object.prototype.toString;e.exports=function(e){var r=this;if("function"!==typeof r||"[object Function]"!==n.call(r))throw new TypeError("Function.prototype.bind called on incompatible "+r);for(var o,i=t.call(arguments,1),a=Math.max(0,r.length-i.length),c=[],l=0;l1&&"boolean"!==typeof t)throw new a('"allowMissing" argument must be a boolean');if(null===k(/^%?[^%]*%?$/,e))throw new o("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var n=function(e){var t=E(e,0,1),n=E(e,-1);if("%"===t&&"%"!==n)throw new o("invalid intrinsic syntax, expected closing `%`");if("%"===n&&"%"!==t)throw new o("invalid intrinsic syntax, expected opening `%`");var r=[];return x(e,C,(function(e,t,n,o){r[r.length]=n?x(o,O,"$1"):t||e})),r}(e),r=n.length>0?n[0]:"",i=N("%"+r+"%",t),c=i.name,u=i.value,s=!1,f=i.alias;f&&(r=f[0],S(n,A([0,1],f)));for(var d=1,p=!0;d=n.length){var _=l(u,h);u=(p=!!_)&&"get"in _&&!("originalValue"in _.get)?_.get:u[h]}else p=w(u,h),u=u[h];p&&!s&&(m[c]=u)}}return u}},593:function(e){"use strict";var t={foo:{}},n=Object;e.exports=function(){return{__proto__:t}.foo===t.foo&&!({__proto__:null}instanceof n)}},520:function(e,t,n){"use strict";var r="undefined"!==typeof Symbol&&Symbol,o=n(541);e.exports=function(){return"function"===typeof r&&("function"===typeof Symbol&&("symbol"===typeof r("foo")&&("symbol"===typeof Symbol("bar")&&o())))}},541:function(e){"use strict";e.exports=function(){if("function"!==typeof Symbol||"function"!==typeof Object.getOwnPropertySymbols)return!1;if("symbol"===typeof Symbol.iterator)return!0;var e={},t=Symbol("test"),n=Object(t);if("string"===typeof t)return!1;if("[object Symbol]"!==Object.prototype.toString.call(t))return!1;if("[object Symbol]"!==Object.prototype.toString.call(n))return!1;for(t in e[t]=42,e)return!1;if("function"===typeof Object.keys&&0!==Object.keys(e).length)return!1;if("function"===typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;var r=Object.getOwnPropertySymbols(e);if(1!==r.length||r[0]!==t)return!1;if(!Object.prototype.propertyIsEnumerable.call(e,t))return!1;if("function"===typeof Object.getOwnPropertyDescriptor){var o=Object.getOwnPropertyDescriptor(e,t);if(42!==o.value||!0!==o.enumerable)return!1}return!0}},838:function(e,t,n){"use strict";var r=n(199);e.exports=r.call(Function.call,Object.prototype.hasOwnProperty)},7:function(e,t,n){var r="__lodash_hash_undefined__",o=1/0,i="[object Function]",a="[object GeneratorFunction]",c="[object Symbol]",l=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,u=/^\w*$/,s=/^\./,f=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,d=/\\(\\)?/g,p=/^\[object .+?Constructor\]$/,h="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,v="object"==typeof self&&self&&self.Object===Object&&self,m=h||v||Function("return this")();var y=Array.prototype,_=Function.prototype,g=Object.prototype,b=m["__core-js_shared__"],w=function(){var e=/[^.]+$/.exec(b&&b.keys&&b.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}(),A=_.toString,S=g.hasOwnProperty,x=g.toString,E=RegExp("^"+A.call(S).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),k=m.Symbol,C=y.splice,O=F(m,"Map"),N=F(Object,"create"),P=k?k.prototype:void 0,M=P?P.toString:void 0;function T(e){var t=-1,n=e?e.length:0;for(this.clear();++t-1},j.prototype.set=function(e,t){var n=this.__data__,r=D(n,e);return r<0?n.push([e,t]):n[r][1]=t,this},L.prototype.clear=function(){this.__data__={hash:new T,map:new(O||j),string:new T}},L.prototype.delete=function(e){return R(this,e).delete(e)},L.prototype.get=function(e){return R(this,e).get(e)},L.prototype.has=function(e){return R(this,e).has(e)},L.prototype.set=function(e,t){return R(this,e).set(e,t),this};var U=B((function(e){var t;e=null==(t=e)?"":function(e){if("string"==typeof e)return e;if(V(e))return M?M.call(e):"";var t=e+"";return"0"==t&&1/e==-o?"-0":t}(t);var n=[];return s.test(e)&&n.push(""),e.replace(f,(function(e,t,r,o){n.push(r?o.replace(d,"$1"):t||e)})),n}));function H(e){if("string"==typeof e||V(e))return e;var t=e+"";return"0"==t&&1/e==-o?"-0":t}function B(e,t){if("function"!=typeof e||t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function n(){var r=arguments,o=t?t.apply(this,r):r[0],i=n.cache;if(i.has(o))return i.get(o);var a=e.apply(this,r);return n.cache=i.set(o,a),a};return n.cache=new(B.Cache||L),n}B.Cache=L;var z=Array.isArray;function W(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function V(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&x.call(e)==c}e.exports=function(e,t,n){var r=null==e?void 0:$(e,t);return void 0===r?n:r}},154:function(e,t,n){var r="function"===typeof Map&&Map.prototype,o=Object.getOwnPropertyDescriptor&&r?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,i=r&&o&&"function"===typeof o.get?o.get:null,a=r&&Map.prototype.forEach,c="function"===typeof Set&&Set.prototype,l=Object.getOwnPropertyDescriptor&&c?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,u=c&&l&&"function"===typeof l.get?l.get:null,s=c&&Set.prototype.forEach,f="function"===typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,d="function"===typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,p="function"===typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,h=Boolean.prototype.valueOf,v=Object.prototype.toString,m=Function.prototype.toString,y=String.prototype.match,_=String.prototype.slice,g=String.prototype.replace,b=String.prototype.toUpperCase,w=String.prototype.toLowerCase,A=RegExp.prototype.test,S=Array.prototype.concat,x=Array.prototype.join,E=Array.prototype.slice,k=Math.floor,C="function"===typeof BigInt?BigInt.prototype.valueOf:null,O=Object.getOwnPropertySymbols,N="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?Symbol.prototype.toString:null,P="function"===typeof Symbol&&"object"===typeof Symbol.iterator,M="function"===typeof Symbol&&Symbol.toStringTag&&(typeof Symbol.toStringTag===P||"symbol")?Symbol.toStringTag:null,T=Object.prototype.propertyIsEnumerable,j=("function"===typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(e){return e.__proto__}:null);function L(e,t){if(e===1/0||e===-1/0||e!==e||e&&e>-1e3&&e<1e3||A.call(/e/,t))return t;var n=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"===typeof e){var r=e<0?-k(-e):k(e);if(r!==e){var o=String(r),i=_.call(t,o.length+1);return g.call(o,n,"$&_")+"."+g.call(g.call(i,/([0-9]{3})/g,"$&_"),/_$/,"")}}return g.call(t,n,"$&_")}var D=n(654),$=D.custom,I=B($)?$:null;function R(e,t,n){var r="double"===(n.quoteStyle||t)?'"':"'";return r+e+r}function F(e){return g.call(String(e),/"/g,""")}function U(e){return"[object Array]"===V(e)&&(!M||!("object"===typeof e&&M in e))}function H(e){return"[object RegExp]"===V(e)&&(!M||!("object"===typeof e&&M in e))}function B(e){if(P)return e&&"object"===typeof e&&e instanceof Symbol;if("symbol"===typeof e)return!0;if(!e||"object"!==typeof e||!N)return!1;try{return N.call(e),!0}catch(t){}return!1}e.exports=function e(t,n,r,o){var c=n||{};if(W(c,"quoteStyle")&&"single"!==c.quoteStyle&&"double"!==c.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(W(c,"maxStringLength")&&("number"===typeof c.maxStringLength?c.maxStringLength<0&&c.maxStringLength!==1/0:null!==c.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var l=!W(c,"customInspect")||c.customInspect;if("boolean"!==typeof l&&"symbol"!==l)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(W(c,"indent")&&null!==c.indent&&"\t"!==c.indent&&!(parseInt(c.indent,10)===c.indent&&c.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(W(c,"numericSeparator")&&"boolean"!==typeof c.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var v=c.numericSeparator;if("undefined"===typeof t)return"undefined";if(null===t)return"null";if("boolean"===typeof t)return t?"true":"false";if("string"===typeof t)return Z(t,c);if("number"===typeof t){if(0===t)return 1/0/t>0?"0":"-0";var b=String(t);return v?L(t,b):b}if("bigint"===typeof t){var A=String(t)+"n";return v?L(t,A):A}var k="undefined"===typeof c.depth?5:c.depth;if("undefined"===typeof r&&(r=0),r>=k&&k>0&&"object"===typeof t)return U(t)?"[Array]":"[Object]";var O=function(e,t){var n;if("\t"===e.indent)n="\t";else{if(!("number"===typeof e.indent&&e.indent>0))return null;n=x.call(Array(e.indent+1)," ")}return{base:n,prev:x.call(Array(t+1),n)}}(c,r);if("undefined"===typeof o)o=[];else if(Y(o,t)>=0)return"[Circular]";function $(t,n,i){if(n&&(o=E.call(o)).push(n),i){var a={depth:c.depth};return W(c,"quoteStyle")&&(a.quoteStyle=c.quoteStyle),e(t,a,r+1,o)}return e(t,c,r+1,o)}if("function"===typeof t&&!H(t)){var z=function(e){if(e.name)return e.name;var t=y.call(m.call(e),/^function\s*([\w$]+)/);if(t)return t[1];return null}(t),G=X(t,$);return"[Function"+(z?": "+z:" (anonymous)")+"]"+(G.length>0?" { "+x.call(G,", ")+" }":"")}if(B(t)){var ee=P?g.call(String(t),/^(Symbol\(.*\))_[^)]*$/,"$1"):N.call(t);return"object"!==typeof t||P?ee:q(ee)}if(function(e){if(!e||"object"!==typeof e)return!1;if("undefined"!==typeof HTMLElement&&e instanceof HTMLElement)return!0;return"string"===typeof e.nodeName&&"function"===typeof e.getAttribute}(t)){for(var te="<"+w.call(String(t.nodeName)),ne=t.attributes||[],re=0;re"}if(U(t)){if(0===t.length)return"[]";var oe=X(t,$);return O&&!function(e){for(var t=0;t=0)return!1;return!0}(oe)?"["+Q(oe,O)+"]":"[ "+x.call(oe,", ")+" ]"}if(function(e){return"[object Error]"===V(e)&&(!M||!("object"===typeof e&&M in e))}(t)){var ie=X(t,$);return"cause"in Error.prototype||!("cause"in t)||T.call(t,"cause")?0===ie.length?"["+String(t)+"]":"{ ["+String(t)+"] "+x.call(ie,", ")+" }":"{ ["+String(t)+"] "+x.call(S.call("[cause]: "+$(t.cause),ie),", ")+" }"}if("object"===typeof t&&l){if(I&&"function"===typeof t[I]&&D)return D(t,{depth:k-r});if("symbol"!==l&&"function"===typeof t.inspect)return t.inspect()}if(function(e){if(!i||!e||"object"!==typeof e)return!1;try{i.call(e);try{u.call(e)}catch(te){return!0}return e instanceof Map}catch(t){}return!1}(t)){var ae=[];return a&&a.call(t,(function(e,n){ae.push($(n,t,!0)+" => "+$(e,t))})),J("Map",i.call(t),ae,O)}if(function(e){if(!u||!e||"object"!==typeof e)return!1;try{u.call(e);try{i.call(e)}catch(t){return!0}return e instanceof Set}catch(n){}return!1}(t)){var ce=[];return s&&s.call(t,(function(e){ce.push($(e,t))})),J("Set",u.call(t),ce,O)}if(function(e){if(!f||!e||"object"!==typeof e)return!1;try{f.call(e,f);try{d.call(e,d)}catch(te){return!0}return e instanceof WeakMap}catch(t){}return!1}(t))return K("WeakMap");if(function(e){if(!d||!e||"object"!==typeof e)return!1;try{d.call(e,d);try{f.call(e,f)}catch(te){return!0}return e instanceof WeakSet}catch(t){}return!1}(t))return K("WeakSet");if(function(e){if(!p||!e||"object"!==typeof e)return!1;try{return p.call(e),!0}catch(t){}return!1}(t))return K("WeakRef");if(function(e){return"[object Number]"===V(e)&&(!M||!("object"===typeof e&&M in e))}(t))return q($(Number(t)));if(function(e){if(!e||"object"!==typeof e||!C)return!1;try{return C.call(e),!0}catch(t){}return!1}(t))return q($(C.call(t)));if(function(e){return"[object Boolean]"===V(e)&&(!M||!("object"===typeof e&&M in e))}(t))return q(h.call(t));if(function(e){return"[object String]"===V(e)&&(!M||!("object"===typeof e&&M in e))}(t))return q($(String(t)));if(!function(e){return"[object Date]"===V(e)&&(!M||!("object"===typeof e&&M in e))}(t)&&!H(t)){var le=X(t,$),ue=j?j(t)===Object.prototype:t instanceof Object||t.constructor===Object,se=t instanceof Object?"":"null prototype",fe=!ue&&M&&Object(t)===t&&M in t?_.call(V(t),8,-1):se?"Object":"",de=(ue||"function"!==typeof t.constructor?"":t.constructor.name?t.constructor.name+" ":"")+(fe||se?"["+x.call(S.call([],fe||[],se||[]),": ")+"] ":"");return 0===le.length?de+"{}":O?de+"{"+Q(le,O)+"}":de+"{ "+x.call(le,", ")+" }"}return String(t)};var z=Object.prototype.hasOwnProperty||function(e){return e in this};function W(e,t){return z.call(e,t)}function V(e){return v.call(e)}function Y(e,t){if(e.indexOf)return e.indexOf(t);for(var n=0,r=e.length;nt.maxStringLength){var n=e.length-t.maxStringLength,r="... "+n+" more character"+(n>1?"s":"");return Z(_.call(e,0,t.maxStringLength),t)+r}return R(g.call(g.call(e,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,G),"single",t)}function G(e){var t=e.charCodeAt(0),n={8:"b",9:"t",10:"n",12:"f",13:"r"}[t];return n?"\\"+n:"\\x"+(t<16?"0":"")+b.call(t.toString(16))}function q(e){return"Object("+e+")"}function K(e){return e+" { ? }"}function J(e,t,n,r){return e+" ("+t+") {"+(r?Q(n,r):x.call(n,", "))+"}"}function Q(e,t){if(0===e.length)return"";var n="\n"+t.prev+t.base;return n+x.call(e,","+n)+"\n"+t.prev}function X(e,t){var n=U(e),r=[];if(n){r.length=e.length;for(var o=0;o-1?e.split(","):e},u=function(e,t,n,r){if(e){var i=n.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,a=/(\[[^[\]]*])/g,c=n.depth>0&&/(\[[^[\]]*])/.exec(i),u=c?i.slice(0,c.index):i,s=[];if(u){if(!n.plainObjects&&o.call(Object.prototype,u)&&!n.allowPrototypes)return;s.push(u)}for(var f=0;n.depth>0&&null!==(c=a.exec(i))&&f=0;--i){var a,c=e[i];if("[]"===c&&n.parseArrays)a=[].concat(o);else{a=n.plainObjects?Object.create(null):{};var u="["===c.charAt(0)&&"]"===c.charAt(c.length-1)?c.slice(1,-1):c,s=parseInt(u,10);n.parseArrays||""!==u?!isNaN(s)&&c!==u&&String(s)===u&&s>=0&&n.parseArrays&&s<=n.arrayLimit?(a=[])[s]=o:"__proto__"!==u&&(a[u]=o):a={0:o}}o=a}return o}(s,t,n,r)}};e.exports=function(e,t){var n=function(e){if(!e)return a;if(null!==e.decoder&&void 0!==e.decoder&&"function"!==typeof e.decoder)throw new TypeError("Decoder has to be a function.");if("undefined"!==typeof e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var t="undefined"===typeof e.charset?a.charset:e.charset;return{allowDots:"undefined"===typeof e.allowDots?a.allowDots:!!e.allowDots,allowPrototypes:"boolean"===typeof e.allowPrototypes?e.allowPrototypes:a.allowPrototypes,allowSparse:"boolean"===typeof e.allowSparse?e.allowSparse:a.allowSparse,arrayLimit:"number"===typeof e.arrayLimit?e.arrayLimit:a.arrayLimit,charset:t,charsetSentinel:"boolean"===typeof e.charsetSentinel?e.charsetSentinel:a.charsetSentinel,comma:"boolean"===typeof e.comma?e.comma:a.comma,decoder:"function"===typeof e.decoder?e.decoder:a.decoder,delimiter:"string"===typeof e.delimiter||r.isRegExp(e.delimiter)?e.delimiter:a.delimiter,depth:"number"===typeof e.depth||!1===e.depth?+e.depth:a.depth,ignoreQueryPrefix:!0===e.ignoreQueryPrefix,interpretNumericEntities:"boolean"===typeof e.interpretNumericEntities?e.interpretNumericEntities:a.interpretNumericEntities,parameterLimit:"number"===typeof e.parameterLimit?e.parameterLimit:a.parameterLimit,parseArrays:!1!==e.parseArrays,plainObjects:"boolean"===typeof e.plainObjects?e.plainObjects:a.plainObjects,strictNullHandling:"boolean"===typeof e.strictNullHandling?e.strictNullHandling:a.strictNullHandling}}(t);if(""===e||null===e||"undefined"===typeof e)return n.plainObjects?Object.create(null):{};for(var s="string"===typeof e?function(e,t){var n,u={__proto__:null},s=t.ignoreQueryPrefix?e.replace(/^\?/,""):e,f=t.parameterLimit===1/0?void 0:t.parameterLimit,d=s.split(t.delimiter,f),p=-1,h=t.charset;if(t.charsetSentinel)for(n=0;n-1&&(m=i(m)?[m]:m),o.call(u,v)?u[v]=r.combine(u[v],m):u[v]=m}return u}(e,n):e,f=n.plainObjects?Object.create(null):{},d=Object.keys(s),p=0;p0?x.join(",")||null:void 0}];else if(l(d))N=d;else{var M=Object.keys(x);N=v?M.sort(v):M}for(var T=a&&l(x)&&1===x.length?n+"[]":n,j=0;j0?w+b:""}},837:function(e,t,n){"use strict";var r=n(609),o=Object.prototype.hasOwnProperty,i=Array.isArray,a=function(){for(var e=[],t=0;t<256;++t)e.push("%"+((t<16?"0":"")+t.toString(16)).toUpperCase());return e}(),c=function(e,t){for(var n=t&&t.plainObjects?Object.create(null):{},r=0;r1;){var t=e.pop(),n=t.obj[t.prop];if(i(n)){for(var r=[],o=0;o=48&&s<=57||s>=65&&s<=90||s>=97&&s<=122||i===r.RFC1738&&(40===s||41===s)?l+=c.charAt(u):s<128?l+=a[s]:s<2048?l+=a[192|s>>6]+a[128|63&s]:s<55296||s>=57344?l+=a[224|s>>12]+a[128|s>>6&63]+a[128|63&s]:(u+=1,s=65536+((1023&s)<<10|1023&c.charCodeAt(u)),l+=a[240|s>>18]+a[128|s>>12&63]+a[128|s>>6&63]+a[128|63&s])}return l},isBuffer:function(e){return!(!e||"object"!==typeof e)&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},maybeMap:function(e,t){if(i(e)){for(var n=[],r=0;r2&&(c.children=arguments.length>3?t.call(arguments,2):r),"function"==typeof e&&null!=e.defaultProps)for(a in e.defaultProps)void 0===c[a]&&(c[a]=e.defaultProps[a]);return y(e,c,o,i,null)}function y(e,t,n,i,a){var c={type:e,props:t,key:n,ref:i,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==a?++o:a};return null==a&&null!=r.vnode&&r.vnode(c),c}function _(){return{current:null}}function g(e){return e.children}function b(e,t){this.props=e,this.context=t}function w(e,t){if(null==t)return e.__?w(e.__,e.__.__k.indexOf(e)+1):null;for(var n;tt&&i.sort(l));x.__r=0}function E(e,t,n,r,o,i,a,c,l,u,d){var h,v,m,_,b,w,A,S,x,E,C=0,P=r&&r.__k||f,M=P.length,T=M,j=t.length;for(n.__k=[],h=0;h0?y(_.type,_.props,_.key,_.ref?_.ref:null,_.__v):_)&&(_.__=n,_.__b=n.__b+1,-1===(S=N(_,P,A=h+C,T))?m=s:(m=P[S]||s,P[S]=void 0,T--),L(e,_,m,o,i,a,c,l,u,d),b=_.__e,(v=_.ref)&&m.ref!=v&&(m.ref&&I(m.ref,null,_),d.push(v,_.__c||b,_)),null!=b&&(null==w&&(w=b),E=!(x=m===s||null===m.__v)&&S===A,x?-1==S&&C--:S!==A&&(S===A+1?(C++,E=!0):S>A?T>j-A?(C+=S-A,E=!0):C--:C=S(null!=l?1:0))for(;a>=0||c=0){if((l=t[a])&&o==l.key&&i===l.type)return a;a--}if(c2&&(l.children=arguments.length>3?t.call(arguments,2):r),y(e.type,l,o||e.key,i||e.ref,null)}function z(e,t){var n={__c:t="__cC"+u++,__:e,Consumer:function(e,t){return e.children(t)},Provider:function(e){var n,r;return this.getChildContext||(n=[],(r={})[t]=this,this.getChildContext=function(){return r},this.shouldComponentUpdate=function(e){this.props.value!==e.value&&n.some((function(e){e.__e=!0,S(e)}))},this.sub=function(e){n.push(e);var t=e.componentWillUnmount;e.componentWillUnmount=function(){n.splice(n.indexOf(e),1),t&&t.call(e)}}),e.children}};return n.Provider.__=n.Consumer.contextType=n}t=f.slice,r={__e:function(e,t,n,r){for(var o,i,a;t=t.__;)if((o=t.__c)&&!o.__)try{if((i=o.constructor)&&null!=i.getDerivedStateFromError&&(o.setState(i.getDerivedStateFromError(e)),a=o.__d),null!=o.componentDidCatch&&(o.componentDidCatch(e,r||{}),a=o.__d),a)return o.__E=o}catch(t){e=t}throw e}},o=0,b.prototype.setState=function(e,t){var n;n=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=h({},this.state),"function"==typeof e&&(e=e(h({},n),this.props)),e&&h(n,e),null!=e&&this.__v&&(t&&this._sb.push(t),S(this))},b.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),S(this))},b.prototype.render=g,i=[],c="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,l=function(e,t){return e.__v.__b-t.__v.__b},x.__r=0,u=0;var W,V,Y,Z,G=0,q=[],K=[],J=r.__b,Q=r.__r,X=r.diffed,ee=r.__c,te=r.unmount;function ne(e,t){r.__h&&r.__h(V,e,G||t),G=0;var n=V.__H||(V.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({__V:K}),n.__[e]}function re(e){return G=1,oe(we,e)}function oe(e,t,n){var r=ne(W++,2);if(r.t=e,!r.__c&&(r.__=[n?n(t):we(void 0,t),function(e){var t=r.__N?r.__N[0]:r.__[0],n=r.t(t,e);t!==n&&(r.__N=[n,r.__[1]],r.__c.setState({}))}],r.__c=V,!V.u)){var o=function(e,t,n){if(!r.__c.__H)return!0;var o=r.__c.__H.__.filter((function(e){return e.__c}));if(o.every((function(e){return!e.__N})))return!i||i.call(this,e,t,n);var a=!1;return o.forEach((function(e){if(e.__N){var t=e.__[0];e.__=e.__N,e.__N=void 0,t!==e.__[0]&&(a=!0)}})),!(!a&&r.__c.props===e)&&(!i||i.call(this,e,t,n))};V.u=!0;var i=V.shouldComponentUpdate,a=V.componentWillUpdate;V.componentWillUpdate=function(e,t,n){if(this.__e){var r=i;i=void 0,o(e,t,n),i=r}a&&a.call(this,e,t,n)},V.shouldComponentUpdate=o}return r.__N||r.__}function ie(e,t){var n=ne(W++,3);!r.__s&&be(n.__H,t)&&(n.__=e,n.i=t,V.__H.__h.push(n))}function ae(e,t){var n=ne(W++,4);!r.__s&&be(n.__H,t)&&(n.__=e,n.i=t,V.__h.push(n))}function ce(e){return G=5,ue((function(){return{current:e}}),[])}function le(e,t,n){G=6,ae((function(){return"function"==typeof e?(e(t()),function(){return e(null)}):e?(e.current=t(),function(){return e.current=null}):void 0}),null==n?n:n.concat(e))}function ue(e,t){var n=ne(W++,7);return be(n.__H,t)?(n.__V=e(),n.i=t,n.__h=e,n.__V):n.__}function se(e,t){return G=8,ue((function(){return e}),t)}function fe(e){var t=V.context[e.__c],n=ne(W++,9);return n.c=e,t?(null==n.__&&(n.__=!0,t.sub(V)),t.props.value):e.__}function de(e,t){r.useDebugValue&&r.useDebugValue(t?t(e):e)}function pe(e){var t=ne(W++,10),n=re();return t.__=e,V.componentDidCatch||(V.componentDidCatch=function(e,r){t.__&&t.__(e,r),n[1](e)}),[n[0],function(){n[1](void 0)}]}function he(){var e=ne(W++,11);if(!e.__){for(var t=V.__v;null!==t&&!t.__m&&null!==t.__;)t=t.__;var n=t.__m||(t.__m=[0,0]);e.__="P"+n[0]+"-"+n[1]++}return e.__}function ve(){for(var e;e=q.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(_e),e.__H.__h.forEach(ge),e.__H.__h=[]}catch(c){e.__H.__h=[],r.__e(c,e.__v)}}r.__b=function(e){V=null,J&&J(e)},r.__r=function(e){Q&&Q(e),W=0;var t=(V=e.__c).__H;t&&(Y===V?(t.__h=[],V.__h=[],t.__.forEach((function(e){e.__N&&(e.__=e.__N),e.__V=K,e.__N=e.i=void 0}))):(t.__h.forEach(_e),t.__h.forEach(ge),t.__h=[],W=0)),Y=V},r.diffed=function(e){X&&X(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(1!==q.push(t)&&Z===r.requestAnimationFrame||((Z=r.requestAnimationFrame)||ye)(ve)),t.__H.__.forEach((function(e){e.i&&(e.__H=e.i),e.__V!==K&&(e.__=e.__V),e.i=void 0,e.__V=K}))),Y=V=null},r.__c=function(e,t){t.some((function(e){try{e.__h.forEach(_e),e.__h=e.__h.filter((function(e){return!e.__||ge(e)}))}catch(o){t.some((function(e){e.__h&&(e.__h=[])})),t=[],r.__e(o,e.__v)}})),ee&&ee(e,t)},r.unmount=function(e){te&&te(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach((function(e){try{_e(e)}catch(e){t=e}})),n.__H=void 0,t&&r.__e(t,n.__v))};var me="function"==typeof requestAnimationFrame;function ye(e){var t,n=function(){clearTimeout(r),me&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,100);me&&(t=requestAnimationFrame(n))}function _e(e){var t=V,n=e.__c;"function"==typeof n&&(e.__c=void 0,n()),V=t}function ge(e){var t=V;e.__c=e.__(),V=t}function be(e,t){return!e||e.length!==t.length||t.some((function(t,n){return t!==e[n]}))}function we(e,t){return"function"==typeof t?t(e):t}function Ae(e,t){for(var n in t)e[n]=t[n];return e}function Se(e,t){for(var n in e)if("__source"!==n&&!(n in t))return!0;for(var r in t)if("__source"!==r&&e[r]!==t[r])return!0;return!1}function xe(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t}function Ee(e){this.props=e}function ke(e,t){function n(e){var n=this.props.ref,r=n==e.ref;return!r&&n&&(n.call?n(null):n.current=null),t?!t(this.props,e)||!r:Se(this.props,e)}function r(t){return this.shouldComponentUpdate=n,m(e,t)}return r.displayName="Memo("+(e.displayName||e.name)+")",r.prototype.isReactComponent=!0,r.__f=!0,r}(Ee.prototype=new b).isPureReactComponent=!0,Ee.prototype.shouldComponentUpdate=function(e,t){return Se(this.props,e)||Se(this.state,t)};var Ce=r.__b;r.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),Ce&&Ce(e)};var Oe="undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.forward_ref")||3911;function Ne(e){function t(t){var n=Ae({},t);return delete n.ref,e(n,t.ref||null)}return t.$$typeof=Oe,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName="ForwardRef("+(e.displayName||e.name)+")",t}var Pe=function(e,t){return null==e?null:C(C(e).map(t))},Me={map:Pe,forEach:Pe,count:function(e){return e?C(e).length:0},only:function(e){var t=C(e);if(1!==t.length)throw"Children.only";return t[0]},toArray:C},Te=r.__e;r.__e=function(e,t,n,r){if(e.then)for(var o,i=t;i=i.__;)if((o=i.__c)&&o.__c)return null==t.__e&&(t.__e=n.__e,t.__k=n.__k),o.__c(e,t);Te(e,t,n,r)};var je=r.unmount;function Le(e,t,n){return e&&(e.__c&&e.__c.__H&&(e.__c.__H.__.forEach((function(e){"function"==typeof e.__c&&e.__c()})),e.__c.__H=null),null!=(e=Ae({},e)).__c&&(e.__c.__P===n&&(e.__c.__P=t),e.__c=null),e.__k=e.__k&&e.__k.map((function(e){return Le(e,t,n)}))),e}function De(e,t,n){return e&&(e.__v=null,e.__k=e.__k&&e.__k.map((function(e){return De(e,t,n)})),e.__c&&e.__c.__P===t&&(e.__e&&n.insertBefore(e.__e,e.__d),e.__c.__e=!0,e.__c.__P=n)),e}function $e(){this.__u=0,this.t=null,this.__b=null}function Ie(e){var t=e.__.__c;return t&&t.__a&&t.__a(e)}function Re(e){var t,n,r;function o(o){if(t||(t=e()).then((function(e){n=e.default||e}),(function(e){r=e})),r)throw r;if(!n)throw t;return m(n,o)}return o.displayName="Lazy",o.__f=!0,o}function Fe(){this.u=null,this.o=null}r.unmount=function(e){var t=e.__c;t&&t.__R&&t.__R(),t&&!0===e.__h&&(e.type=null),je&&je(e)},($e.prototype=new b).__c=function(e,t){var n=t.__c,r=this;null==r.t&&(r.t=[]),r.t.push(n);var o=Ie(r.__v),i=!1,a=function(){i||(i=!0,n.__R=null,o?o(c):c())};n.__R=a;var c=function(){if(! --r.__u){if(r.state.__a){var e=r.state.__a;r.__v.__k[0]=De(e,e.__c.__P,e.__c.__O)}var t;for(r.setState({__a:r.__b=null});t=r.t.pop();)t.forceUpdate()}},l=!0===t.__h;r.__u++||l||r.setState({__a:r.__b=r.__v.__k[0]}),e.then(a,a)},$e.prototype.componentWillUnmount=function(){this.t=[]},$e.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var n=document.createElement("div"),r=this.__v.__k[0].__c;this.__v.__k[0]=Le(this.__b,n,r.__O=r.__P)}this.__b=null}var o=t.__a&&m(g,null,e.fallback);return o&&(o.__h=null),[m(g,null,t.__a?null:e.children),o]};var Ue=function(e,t,n){if(++n[1]===n[0]&&e.o.delete(t),e.props.revealOrder&&("t"!==e.props.revealOrder[0]||!e.o.size))for(n=e.u;n;){for(;n.length>3;)n.pop()();if(n[1]>>1,1),t.i.removeChild(e)}}),U(m(He,{context:t.context},e.__v),t.l)):t.l&&t.componentWillUnmount()}function ze(e,t){var n=m(Be,{__v:e,i:t});return n.containerInfo=t,n}(Fe.prototype=new b).__a=function(e){var t=this,n=Ie(t.__v),r=t.o.get(e);return r[0]++,function(o){var i=function(){t.props.revealOrder?(r.push(o),Ue(t,e,r)):o()};n?n(i):i()}},Fe.prototype.render=function(e){this.u=null,this.o=new Map;var t=C(e.children);e.revealOrder&&"b"===e.revealOrder[0]&&t.reverse();for(var n=t.length;n--;)this.o.set(t[n],this.u=[1,0,this.u]);return e.children},Fe.prototype.componentDidUpdate=Fe.prototype.componentDidMount=function(){var e=this;this.o.forEach((function(t,n){Ue(e,n,t)}))};var We="undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103,Ve=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,Ye=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,Ze=/[A-Z0-9]/g,Ge="undefined"!=typeof document,qe=function(e){return("undefined"!=typeof Symbol&&"symbol"==typeof Symbol()?/fil|che|rad/:/fil|che|ra/).test(e)};function Ke(e,t,n){return null==t.__k&&(t.textContent=""),U(e,t),"function"==typeof n&&n(),e?e.__c:null}function Je(e,t,n){return H(e,t),"function"==typeof n&&n(),e?e.__c:null}b.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach((function(e){Object.defineProperty(b.prototype,e,{configurable:!0,get:function(){return this["UNSAFE_"+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})}));var Qe=r.event;function Xe(){}function et(){return this.cancelBubble}function tt(){return this.defaultPrevented}r.event=function(e){return Qe&&(e=Qe(e)),e.persist=Xe,e.isPropagationStopped=et,e.isDefaultPrevented=tt,e.nativeEvent=e};var nt,rt={enumerable:!1,configurable:!0,get:function(){return this.class}},ot=r.vnode;r.vnode=function(e){"string"==typeof e.type&&function(e){var t=e.props,n=e.type,r={};for(var o in t){var i=t[o];if(!("value"===o&&"defaultValue"in t&&null==i||Ge&&"children"===o&&"noscript"===n||"class"===o||"className"===o)){var a=o.toLowerCase();"defaultValue"===o&&"value"in t&&null==t.value?o="value":"download"===o&&!0===i?i="":"ondoubleclick"===a?o="ondblclick":"onchange"!==a||"input"!==n&&"textarea"!==n||qe(t.type)?"onfocus"===a?o="onfocusin":"onblur"===a?o="onfocusout":Ye.test(o)?o=a:-1===n.indexOf("-")&&Ve.test(o)?o=o.replace(Ze,"-$&").toLowerCase():null===i&&(i=void 0):a=o="oninput","oninput"===a&&r[o=a]&&(o="oninputCapture"),r[o]=i}}"select"==n&&r.multiple&&Array.isArray(r.value)&&(r.value=C(t.children).forEach((function(e){e.props.selected=-1!=r.value.indexOf(e.props.value)}))),"select"==n&&null!=r.defaultValue&&(r.value=C(t.children).forEach((function(e){e.props.selected=r.multiple?-1!=r.defaultValue.indexOf(e.props.value):r.defaultValue==e.props.value}))),t.class&&!t.className?(r.class=t.class,Object.defineProperty(r,"className",rt)):(t.className&&!t.class||t.class&&t.className)&&(r.class=r.className=t.className),e.props=r}(e),e.$$typeof=We,ot&&ot(e)};var it=r.__r;r.__r=function(e){it&&it(e),nt=e.__c};var at=r.diffed;r.diffed=function(e){at&&at(e);var t=e.props,n=e.__e;null!=n&&"textarea"===e.type&&"value"in t&&t.value!==n.value&&(n.value=null==t.value?"":t.value),nt=null};var ct={ReactCurrentDispatcher:{current:{readContext:function(e){return nt.__n[e.__c].props.value}}}},lt="17.0.2";function ut(e){return m.bind(null,e)}function st(e){return!!e&&e.$$typeof===We}function ft(e){return st(e)?B.apply(null,arguments):e}function dt(e){return!!e.__k&&(U(null,e),!0)}function pt(e){return e&&(e.base||1===e.nodeType&&e)||null}var ht=function(e,t){return e(t)},vt=function(e,t){return e(t)},mt=g;function yt(e){e()}function _t(e){return e}function gt(){return[!1,yt]}var bt=ae;function wt(e,t){var n=t(),r=re({h:{__:n,v:t}}),o=r[0].h,i=r[1];return ae((function(){o.__=n,o.v=t,xe(o.__,t())||i({h:o})}),[e,n,t]),ie((function(){return xe(o.__,o.v())||i({h:o}),e((function(){xe(o.__,o.v())||i({h:o})}))}),[e]),n}var At,St={useState:re,useId:he,useReducer:oe,useEffect:ie,useLayoutEffect:ae,useInsertionEffect:bt,useTransition:gt,useDeferredValue:_t,useSyncExternalStore:wt,startTransition:yt,useRef:ce,useImperativeHandle:le,useMemo:ue,useCallback:se,useContext:fe,useDebugValue:de,version:"17.0.2",Children:Me,render:Ke,hydrate:Je,unmountComponentAtNode:dt,createPortal:ze,createElement:m,createContext:z,createFactory:ut,cloneElement:ft,createRef:_,Fragment:g,isValidElement:st,findDOMNode:pt,Component:b,PureComponent:Ee,memo:ke,forwardRef:Ne,flushSync:vt,unstable_batchedUpdates:ht,StrictMode:mt,Suspense:$e,SuspenseList:Fe,lazy:Re,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:ct},xt=n(658),Et=n.n(xt),kt=n(443),Ct=n.n(kt),Ot=n(446),Nt=n.n(Ot),Pt=n(635),Mt=n.n(Pt);function Tt(e){if(Array.isArray(e))return e}function jt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},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 i,a=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){c=!0,i=e},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw i}}}}function Rt(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function Ft(e){return function(e){if(Array.isArray(e))return jt(e)}(e)||Rt(e)||Lt(e)||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 Ut(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Ht(e){return Ht="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ht(e)}function Bt(e){var t=function(e,t){if("object"!==Ht(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!==Ht(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===Ht(t)?t:String(t)}function zt(e,t){for(var n=0;n=0&&(t.hash=e.substr(n),e=e.substr(0,n));var r=e.indexOf("?");r>=0&&(t.search=e.substr(r),e=e.substr(0,r)),e&&(t.pathname=e)}return t}function un(e,t,n,r){void 0===r&&(r={});var o=r,i=o.window,a=void 0===i?document.defaultView:i,c=o.v5Compat,l=void 0!==c&&c,u=a.history,s=At.Pop,f=null,d=p();function p(){return(u.state||{idx:null}).idx}function h(){s=At.Pop;var e=p(),t=null==e?null:e-d;d=e,f&&f({action:s,location:m.location,delta:t})}function v(e){var t="null"!==a.location.origin?a.location.origin:a.location.href,n="string"===typeof e?e:cn(e);return nn(t,"No window.location.(origin|href) available to create URL for href: "+n),new URL(n,t)}null==d&&(d=0,u.replaceState(Xt({},u.state,{idx:d}),""));var m={get action(){return s},get location(){return e(a,u)},listen:function(e){if(f)throw new Error("A history only accepts one active listener");return a.addEventListener(tn,h),f=e,function(){a.removeEventListener(tn,h),f=null}},createHref:function(e){return t(a,e)},createURL:v,encodeLocation:function(e){var t=v(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:function(e,t){s=At.Push;var r=an(m.location,e,t);n&&n(r,e);var o=on(r,d=p()+1),i=m.createHref(r);try{u.pushState(o,"",i)}catch(c){if(c instanceof DOMException&&"DataCloneError"===c.name)throw c;a.location.assign(i)}l&&f&&f({action:s,location:m.location,delta:1})},replace:function(e,t){s=At.Replace;var r=an(m.location,e,t);n&&n(r,e);var o=on(r,d=p()),i=m.createHref(r);u.replaceState(o,"",i),l&&f&&f({action:s,location:m.location,delta:0})},go:function(e){return u.go(e)}};return m}!function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"}(en||(en={}));new Set(["lazy","caseSensitive","path","id","index","children"]);function sn(e,t,n){void 0===n&&(n="/");var r=xn(("string"===typeof t?ln(t):t).pathname||"/",n);if(null==r)return null;var o=fn(e);!function(e){e.sort((function(e,t){return e.score!==t.score?t.score-e.score:function(e,t){var n=e.length===t.length&&e.slice(0,-1).every((function(e,n){return e===t[n]}));return n?e[e.length-1]-t[t.length-1]:0}(e.routesMeta.map((function(e){return e.childrenIndex})),t.routesMeta.map((function(e){return e.childrenIndex})))}))}(o);for(var i=null,a=0;null==i&&a0&&(nn(!0!==e.index,'Index routes must not have child routes. Please remove all child routes from route path "'+c+'".'),fn(e.children,t,l,c)),(null!=e.path||e.index)&&t.push({path:c,score:bn(c,e.index),routesMeta:l})};return e.forEach((function(e,t){var n;if(""!==e.path&&null!=(n=e.path)&&n.includes("?")){var r,i=It(dn(e.path));try{for(i.s();!(r=i.n()).done;){var a=r.value;o(e,t,a)}}catch(c){i.e(c)}finally{i.f()}}else o(e,t)})),t}function dn(e){var t=e.split("/");if(0===t.length)return[];var n,r=Tt(n=t)||Rt(n)||Lt(n)||Dt(),o=r[0],i=r.slice(1),a=o.endsWith("?"),c=o.replace(/\?$/,"");if(0===i.length)return a?[c,""]:[c];var l=dn(i.join("/")),u=[];return u.push.apply(u,Ft(l.map((function(e){return""===e?c:[c,e].join("/")})))),a&&u.push.apply(u,Ft(l)),u.map((function(t){return e.startsWith("/")&&""===t?"/":t}))}var pn=/^:\w+$/,hn=3,vn=2,mn=1,yn=10,_n=-2,gn=function(e){return"*"===e};function bn(e,t){var n=e.split("/"),r=n.length;return n.some(gn)&&(r+=_n),t&&(r+=vn),n.filter((function(e){return!gn(e)})).reduce((function(e,t){return e+(pn.test(t)?hn:""===t?mn:yn)}),r)}function wn(e,t){for(var n=e.routesMeta,r={},o="/",i=[],a=0;a and the router will parse it for you.'}function kn(e){return e.filter((function(e,t){return 0===t||e.route.path&&e.route.path.length>0}))}function Cn(e,t,n,r){var o;void 0===r&&(r=!1),"string"===typeof e?o=ln(e):(nn(!(o=Xt({},e)).pathname||!o.pathname.includes("?"),En("?","pathname","search",o)),nn(!o.pathname||!o.pathname.includes("#"),En("#","pathname","hash",o)),nn(!o.search||!o.search.includes("#"),En("#","search","hash",o)));var i,a=""===e||""===o.pathname,c=a?"/":o.pathname;if(r||null==c)i=n;else{var l=t.length-1;if(c.startsWith("..")){for(var u=c.split("/");".."===u[0];)u.shift(),l-=1;o.pathname=u.join("/")}i=l>=0?t[l]:"/"}var s=function(e,t){void 0===t&&(t="/");var n="string"===typeof e?ln(e):e,r=n.pathname,o=n.search,i=void 0===o?"":o,a=n.hash,c=void 0===a?"":a,l=r?r.startsWith("/")?r:function(e,t){var n=t.replace(/\/+$/,"").split("/");return e.split("/").forEach((function(e){".."===e?n.length>1&&n.pop():"."!==e&&n.push(e)})),n.length>1?n.join("/"):"/"}(r,t):t;return{pathname:l,search:Pn(i),hash:Mn(c)}}(o,i),f=c&&"/"!==c&&c.endsWith("/"),d=(a||"."===c)&&n.endsWith("/");return s.pathname.endsWith("/")||!f&&!d||(s.pathname+="/"),s}var On=function(e){return e.join("/").replace(/\/\/+/g,"/")},Nn=function(e){return e.replace(/\/+$/,"").replace(/^\/*/,"/")},Pn=function(e){return e&&"?"!==e?e.startsWith("?")?e:"?"+e:""},Mn=function(e){return e&&"#"!==e?e.startsWith("#")?e:"#"+e:""};Error;function Tn(e){return null!=e&&"number"===typeof e.status&&"string"===typeof e.statusText&&"boolean"===typeof e.internal&&"data"in e}var jn=["post","put","patch","delete"],Ln=(new Set(jn),["get"].concat(jn));new Set(Ln),new Set([301,302,303,307,308]),new Set([307,308]);Symbol("deferred");function Dn(){return Dn=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||nn(!1),i=i.slice(0,Math.min(i.length,c+1))}return i.reduceRight((function(e,r,o){var c=r.route.id?null==a?void 0:a[r.route.id]:null,l=null;n&&(l=r.route.errorElement||Qn);var u=t.concat(i.slice(0,o+1)),s=function(){var t;return t=c?l:r.route.Component?m(r.route.Component,null):r.route.element?r.route.element:e,m(er,{match:r,routeContext:{outlet:e,matches:u,isDataRoute:null!=n},children:t})};return n&&(r.route.ErrorBoundary||r.route.errorElement||0===o)?m(Xn,{location:n.location,revalidation:n.revalidation,component:l,error:c,children:s(),routeContext:{outlet:null,matches:u,isDataRoute:!0}}):s()}),null)}function nr(e){var t=fe($n);return t||nn(!1),t}function rr(e){var t=fe(In);return t||nn(!1),t}function or(e){var t=function(e){var t=fe(Un);return t||nn(!1),t}(),n=t.matches[t.matches.length-1];return n.route.id||nn(!1),n.route.id}!function(e){e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate"}(Kn||(Kn={})),function(e){e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId"}(Jn||(Jn={}));var ir;function ar(e){return function(e){var t=fe(Un).outlet;return t?m(Yn.Provider,{value:e},t):t}(e.context)}function cr(e){nn(!1)}function lr(e){var t=e.basename,n=void 0===t?"/":t,r=e.children,o=void 0===r?null:r,i=e.location,a=e.navigationType,c=void 0===a?At.Pop:a,l=e.navigator,u=e.static,s=void 0!==u&&u;Bn()&&nn(!1);var f=n.replace(/^\/*/,"/"),d=ue((function(){return{basename:f,navigator:l,static:s}}),[f,l,s]);"string"===typeof i&&(i=ln(i));var p=i,h=p.pathname,v=void 0===h?"/":h,y=p.search,_=void 0===y?"":y,g=p.hash,b=void 0===g?"":g,w=p.state,A=void 0===w?null:w,S=p.key,x=void 0===S?"default":S,E=ue((function(){var e=xn(v,f);return null==e?null:{location:{pathname:e,search:_,hash:b,state:A,key:x},navigationType:c}}),[f,v,_,b,A,x,c]);return null==E?null:m(Rn.Provider,{value:d},m(Fn.Provider,{children:o,value:E}))}function ur(e){var t=e.children,n=e.location;return Gn(sr(t),n)}!function(e){e[e.pending=0]="pending",e[e.success=1]="success",e[e.error=2]="error"}(ir||(ir={}));new Promise((function(){}));function sr(e,t){void 0===t&&(t=[]);var n=[];return Me.forEach(e,(function(e,r){if(st(e)){var o=[].concat(Ft(t),[r]);if(e.type!==g){e.type!==cr&&nn(!1),e.props.index&&e.props.children&&nn(!1);var i={id:e.props.id||o.join("-"),caseSensitive:e.props.caseSensitive,element:e.props.element,Component:e.props.Component,index:e.props.index,path:e.props.path,loader:e.props.loader,action:e.props.action,errorElement:e.props.errorElement,ErrorBoundary:e.props.ErrorBoundary,hasErrorBoundary:null!=e.props.ErrorBoundary||null!=e.props.errorElement,shouldRevalidate:e.props.shouldRevalidate,handle:e.props.handle,lazy:e.props.lazy};e.props.children&&(i.children=sr(e.props.children,o)),n.push(i)}else n.push.apply(n,sr(e.props.children,o))}})),n}function fr(){return fr=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(o[n]=e[n]);return o}function pr(e){return void 0===e&&(e=""),new URLSearchParams("string"===typeof e||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((function(t,n){var r=e[n];return t.concat(Array.isArray(r)?r.map((function(e){return[n,e]})):[[n,r]])}),[]))}new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);var hr=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset"],vr=["aria-current","caseSensitive","className","end","style","to","children"];var mr=e.startTransition;function yr(e){var t=e.basename,n=e.children,r=e.future,o=e.window,i=ce();null==i.current&&(i.current=function(e){return void 0===e&&(e={}),un((function(e,t){var n=ln(e.location.hash.substr(1)),r=n.pathname,o=void 0===r?"/":r,i=n.search,a=void 0===i?"":i,c=n.hash;return an("",{pathname:o,search:a,hash:void 0===c?"":c},t.state&&t.state.usr||null,t.state&&t.state.key||"default")}),(function(e,t){var n=e.document.querySelector("base"),r="";if(n&&n.getAttribute("href")){var o=e.location.href,i=o.indexOf("#");r=-1===i?o:o.slice(0,i)}return r+"#"+("string"===typeof t?t:cn(t))}),(function(e,t){rn("/"===e.pathname.charAt(0),"relative pathnames are not supported in hash history.push("+JSON.stringify(t)+")")}),e)}({window:o,v5Compat:!0}));var a=i.current,c=$t(re({action:a.action,location:a.location}),2),l=c[0],u=c[1],s=(r||{}).v7_startTransition,f=se((function(e){s&&mr?mr((function(){return u(e)})):u(e)}),[u,s]);return ae((function(){return a.listen(f)}),[a,f]),m(lr,{basename:t,children:n,location:l.location,navigationType:l.action,navigator:a})}var _r="undefined"!==typeof window&&"undefined"!==typeof window.document&&"undefined"!==typeof window.document.createElement,gr=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,br=Ne((function(e,t){var n,r=e.onClick,o=e.relative,i=e.reloadDocument,a=e.replace,c=e.state,l=e.target,s=e.to,f=e.preventScrollReset,d=dr(e,hr),p=fe(Rn).basename,h=!1;if("string"===typeof s&&gr.test(s)&&(n=s,_r))try{var v=new URL(window.location.href),y=s.startsWith("//")?new URL(v.protocol+s):new URL(s),_=xn(y.pathname,p);y.origin===v.origin&&null!=_?s=_+y.search+y.hash:h=!0}catch(u){}var g=function(e,t){var n=(void 0===t?{}:t).relative;Bn()||nn(!1);var r=fe(Rn),o=r.basename,i=r.navigator,a=Zn(e,{relative:n}),c=a.hash,l=a.pathname,u=a.search,s=l;return"/"!==o&&(s="/"===l?o:On([o,l])),i.createHref({pathname:s,search:u,hash:c})}(s,{relative:o}),b=function(e,t){var n=void 0===t?{}:t,r=n.target,o=n.replace,i=n.state,a=n.preventScrollReset,c=n.relative,l=Vn(),u=zn(),s=Zn(e,{relative:c});return se((function(t){if(function(e,t){return 0===e.button&&(!t||"_self"===t)&&!function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)}(t,r)){t.preventDefault();var n=void 0!==o?o:cn(u)===cn(s);l(e,{replace:n,state:i,preventScrollReset:a,relative:c})}}),[u,l,s,o,i,r,e,a,c])}(s,{replace:a,state:c,target:l,preventScrollReset:f,relative:o});return m("a",fr({},d,{href:n||g,onClick:h||i?r:function(e){r&&r(e),e.defaultPrevented||b(e)},ref:t,target:l}))}));var wr=Ne((function(e,t){var n=e["aria-current"],r=void 0===n?"page":n,o=e.caseSensitive,i=void 0!==o&&o,a=e.className,c=void 0===a?"":a,l=e.end,u=void 0!==l&&l,s=e.style,f=e.to,d=e.children,p=dr(e,vr),h=Zn(f,{relative:p.relative}),v=zn(),y=fe(In),_=fe(Rn).navigator,g=_.encodeLocation?_.encodeLocation(h).pathname:h.pathname,b=v.pathname,w=y&&y.navigation&&y.navigation.location?y.navigation.location.pathname:null;i||(b=b.toLowerCase(),w=w?w.toLowerCase():null,g=g.toLowerCase());var A,S=b===g||!u&&b.startsWith(g)&&"/"===b.charAt(g.length),x=null!=w&&(w===g||!u&&w.startsWith(g)&&"/"===w.charAt(g.length)),E=S?r:void 0;A="function"===typeof c?c({isActive:S,isPending:x}):[c,S?"active":null,x?"pending":null].filter(Boolean).join(" ");var k="function"===typeof s?s({isActive:S,isPending:x}):s;return m(br,fr({},p,{"aria-current":E,className:A,ref:t,style:k,to:f}),"function"===typeof d?d({isActive:S,isPending:x}):d)}));var Ar,Sr;function xr(e){var t=ce(pr(e)),n=ce(!1),r=zn(),o=ue((function(){return function(e,t){var n=pr(e);if(t){var r,o=It(t.keys());try{var i=function(){var e=r.value;n.has(e)||t.getAll(e).forEach((function(t){n.append(e,t)}))};for(o.s();!(r=o.n()).done;)i()}catch(a){o.e(a)}finally{o.f()}}return n}(r.search,n.current?null:t.current)}),[r.search]),i=Vn(),a=se((function(e,t){var r=pr("function"===typeof e?e(o):e);n.current=!0,i("?"+r,t)}),[i,o]);return[o,a]}(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher"})(Ar||(Ar={})),function(e){e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"}(Sr||(Sr={}));function Er(e,t,n){return(t=Bt(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function kr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Cr(e){for(var t=1;t=100&&(n=r-r%10),e<100&&e>=10&&(n=r-r%5),e<10&&e>=1&&(n=r),e<1&&e>.01&&(n=Math.round(40*e)/40);var o=function(e){return ho(Et().duration(e,"seconds").asMilliseconds())}(n||.001);return o.replace(/\s/g,"")},uo=function(e){var t=e.match(/\d+/g),n=e.match(/[a-zA-Z]+/g);if(n&&t&&co.includes(n[0]))return Er({},n[0],t[0])},so=function(e,t){return lo(e/(t?ro:no))},fo=function(e,t){var n=(t||Et()().toDate()).valueOf()/1e3,r=function(e){var t=ao.map((function(e){return e.short})).join("|"),n=new RegExp("\\d+[".concat(t,"]+"),"g"),r=(e.match(n)||[]).reduce((function(e,t){var n=uo(t);return n?Cr(Cr({},e),n):Cr({},e)}),{});return Et().duration(r).asSeconds()}(e);return{start:n-r,end:n,step:so(r),date:po(t||Et()().toDate())}},po=function(e){return Et().tz(e).utc().format(to)},ho=function(e){var t=Math.floor(e%1e3),n=Math.floor(e/1e3%60),r=Math.floor(e/1e3/60%60),o=Math.floor(e/1e3/3600%24),i=Math.floor(e/864e5),a=["d","h","m","s","ms"],c=[i,o,r,n,t].map((function(e,t){return e?"".concat(e).concat(a[t]):""}));return c.filter((function(e){return e})).join("")},vo=function(e){var t=Et()(1e3*e);return t.isValid()?t.toDate():new Date},mo=[{title:"Last 5 minutes",duration:"5m"},{title:"Last 15 minutes",duration:"15m"},{title:"Last 30 minutes",duration:"30m",isDefault:!0},{title:"Last 1 hour",duration:"1h"},{title:"Last 3 hours",duration:"3h"},{title:"Last 6 hours",duration:"6h"},{title:"Last 12 hours",duration:"12h"},{title:"Last 24 hours",duration:"24h"},{title:"Last 2 days",duration:"2d"},{title:"Last 7 days",duration:"7d"},{title:"Last 30 days",duration:"30d"},{title:"Last 90 days",duration:"90d"},{title:"Last 180 days",duration:"180d"},{title:"Last 1 year",duration:"1y"},{title:"Yesterday",duration:"1d",until:function(){return Et()().tz().subtract(1,"day").endOf("day").toDate()}},{title:"Today",duration:"1d",until:function(){return Et()().tz().endOf("day").toDate()}}].map((function(e){return Cr({id:e.title.replace(/\s/g,"_").toLocaleLowerCase(),until:e.until?e.until:function(){return Et()().tz().toDate()}},e)})),yo=function(e){var t,n=e.relativeTimeId,r=e.defaultDuration,o=e.defaultEndInput,i=null===(t=mo.find((function(e){return e.isDefault})))||void 0===t?void 0:t.id,a=n||Ir("g0.relative_time",i),c=mo.find((function(e){return e.id===a}));return{relativeTimeId:c?a:"none",duration:c?c.duration:r,endInput:c?c.until():o}},_o=function(e){var t=Et()().tz(e);return"UTC".concat(t.format("Z"))},go=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=new RegExp(e,"i");return io.reduce((function(n,r){var o=(r.match(/^(.*?)\//)||[])[1]||"unknown",i=_o(r),a=i.replace(/UTC|0/,""),c=r.replace(/[/_]/g," "),l={region:r,utc:i,search:"".concat(r," ").concat(i," ").concat(c," ").concat(a)},u=!e||e&&t.test(l.search);return u&&n[o]?n[o].push(l):u&&(n[o]=[l]),n}),{})},bo=function(e){Et().tz.setDefault(e)},wo=Fr("TIMEZONE")||Et().tz.guess();bo(wo);var Ao,So=Ir("g0.range_input"),xo=yo({defaultDuration:So||"1h",defaultEndInput:(Ao=Ir("g0.end_input",Et()().utc().format(to)),Et()(Ao).utcOffset(0,!0).toDate()),relativeTimeId:So?Ir("g0.relative_time","none"):void 0}),Eo=xo.duration,ko=xo.endInput,Co=xo.relativeTimeId,Oo={duration:Eo,period:fo(Eo,ko),relativeTime:Co,timezone:wo};function No(e,t){switch(t.type){case"SET_DURATION":return Cr(Cr({},e),{},{duration:t.payload,period:fo(t.payload,vo(e.period.end)),relativeTime:"none"});case"SET_RELATIVE_TIME":return Cr(Cr({},e),{},{duration:t.payload.duration,period:fo(t.payload.duration,t.payload.until),relativeTime:t.payload.id});case"SET_PERIOD":var n=function(e){var t=e.to.valueOf()-e.from.valueOf();return ho(t)}(t.payload);return Cr(Cr({},e),{},{duration:n,period:fo(n,t.payload.to),relativeTime:"none"});case"RUN_QUERY":var r=yo({relativeTimeId:e.relativeTime,defaultDuration:e.duration,defaultEndInput:vo(e.period.end)}),o=r.duration,i=r.endInput;return Cr(Cr({},e),{},{period:fo(o,i)});case"RUN_QUERY_TO_NOW":return Cr(Cr({},e),{},{period:fo(e.duration)});case"SET_TIMEZONE":return bo(t.payload),Rr("TIMEZONE",t.payload),Cr(Cr({},e),{},{timezone:t.payload});default:throw new Error}}var Po=z({}),Mo=function(){return fe(Po).state},To=function(e){var t=e.map((function(e){return e.values[e.index]})),n=function(e){var t=Fr(e);return t?JSON.parse(t):[]}("QUERY_HISTORY");n[0]||(n[0]=[]);var r=n[0];t.forEach((function(e){!r.includes(e)&&e&&r.unshift(e),r.length>100&&r.shift()})),Rr("QUERY_HISTORY",JSON.stringify(n))},jo=function(){var e,t=(null===(e=(window.location.hash.split("?")[1]||"").match(/g\d+\.expr/g))||void 0===e?void 0:e.length)||1;return new Array(t>4?4:t).fill(1).map((function(e,t){return Ir("g".concat(t,".expr"),"")}))}(),Lo={query:jo,queryHistory:jo.map((function(e){return{index:0,values:[e]}})),autocomplete:Fr("AUTOCOMPLETE")||!1};function Do(e,t){switch(t.type){case"SET_QUERY":return Cr(Cr({},e),{},{query:t.payload.map((function(e){return e}))});case"SET_QUERY_HISTORY":return To(t.payload),Cr(Cr({},e),{},{queryHistory:t.payload});case"SET_QUERY_HISTORY_BY_INDEX":return e.queryHistory.splice(t.payload.queryNumber,1,t.payload.value),Cr(Cr({},e),{},{queryHistory:e.queryHistory});case"TOGGLE_AUTOCOMPLETE":return Rr("AUTOCOMPLETE",!e.autocomplete),Cr(Cr({},e),{},{autocomplete:!e.autocomplete});default:throw new Error}}var $o=z({}),Io=function(){return Kr("svg",{viewBox:"0 0 74 24",fill:"currentColor",children:Kr("path",{d:"M6.12 10.48c.36.28.8.43 1.26.43h.05c.48 0 .96-.19 1.25-.44 1.5-1.28 5.88-5.29 5.88-5.29C15.73 4.1 12.46 3.01 7.43 3h-.06C2.33 3-.93 4.1.24 5.18c0 0 4.37 4 5.88 5.3Zm2.56 2.16c-.36.28-.8.44-1.26.45h-.04c-.46 0-.9-.17-1.26-.45-1.04-.88-4.74-4.22-6.12-5.5v1.94c0 .21.08.5.22.63l.07.06c1.05.96 4.55 4.16 5.83 5.25.36.28.8.43 1.26.44h.04c.49-.02.96-.2 1.26-.44 1.3-1.11 4.94-4.45 5.88-5.31.15-.14.23-.42.23-.63V7.15a454.94 454.94 0 0 1-6.11 5.5Zm-1.26 4.99c.46 0 .9-.16 1.26-.44a454.4 454.4 0 0 0 6.1-5.5v1.94c0 .2-.07.48-.22.62-.94.87-4.57 4.2-5.88 5.3-.3.26-.77.44-1.26.45h-.04c-.46 0-.9-.16-1.26-.44-1.2-1.02-4.38-3.92-5.62-5.06l-.28-.25c-.14-.14-.22-.42-.22-.62v-1.94c1.38 1.26 5.08 4.6 6.12 5.5.36.28.8.43 1.26.44h.04ZM35 5l-5.84 14.46h-2.43L20.89 5h2.16a.9.9 0 0 1 .9.61l3.41 8.82a18.8 18.8 0 0 1 .62 2.02 19.44 19.44 0 0 1 .57-2.02l3.39-8.82c.05-.15.16-.3.31-.42a.9.9 0 0 1 .58-.19H35Zm17.18 0v14.46H49.8v-9.34c0-.37.02-.78.06-1.21l-4.37 8.21c-.21.4-.53.59-.95.59h-.38c-.43 0-.75-.2-.95-.59L38.8 8.88a22.96 22.96 0 0 1 .07 1.24v9.34H36.5V5h2.03l.3.01c.1 0 .17.02.24.05.07.03.13.07.19.13a1 1 0 0 1 .17.24l4.33 8.03a16.97 16.97 0 0 1 .6 1.36 14.34 14.34 0 0 1 .6-1.38l4.28-8.01c.05-.1.1-.18.17-.24.06-.06.12-.1.19-.13a.9.9 0 0 1 .24-.05l.3-.01h2.04Zm8.88 13.73a4.5 4.5 0 0 0 1.82-.35 3.96 3.96 0 0 0 2.22-2.47c.2-.57.3-1.19.3-1.85V5.31h1.02v8.75c0 .78-.12 1.51-.37 2.19a4.88 4.88 0 0 1-2.76 2.95c-.66.29-1.4.43-2.23.43-.82 0-1.57-.14-2.24-.43a5.01 5.01 0 0 1-2.75-2.95 6.37 6.37 0 0 1-.37-2.19V5.31h1.03v8.74c0 .66.1 1.28.3 1.85a3.98 3.98 0 0 0 2.21 2.47c.53.24 1.14.36 1.82.36Zm10.38.73h-1.03V5.31h1.03v14.15Z"})})},Ro=function(){return Kr("svg",{viewBox:"0 0 85 38",fill:"currentColor",children:[Kr("path",{d:"M11.12 10.48c.36.28.8.43 1.26.43h.05c.48 0 .96-.19 1.25-.44 1.5-1.28 5.88-5.29 5.88-5.29 1.17-1.09-2.1-2.17-7.13-2.18h-.06c-5.04 0-8.3 1.1-7.13 2.18 0 0 4.37 4 5.88 5.3Zm2.56 2.16c-.36.28-.8.44-1.26.45h-.04c-.46 0-.9-.17-1.26-.45-1.04-.88-4.74-4.22-6.12-5.5v1.94c0 .21.08.5.22.63l.07.06c1.05.96 4.55 4.16 5.83 5.25.36.28.8.43 1.26.44h.04c.49-.02.96-.2 1.26-.44 1.3-1.11 4.94-4.45 5.88-5.31.15-.14.23-.42.23-.63V7.15a455.13 455.13 0 0 1-6.11 5.5Zm-1.26 4.99c.46 0 .9-.16 1.26-.44 2.05-1.82 4.09-3.65 6.1-5.5v1.94c0 .2-.07.48-.22.62-.94.87-4.57 4.2-5.88 5.3-.3.26-.77.44-1.26.45h-.04c-.46 0-.9-.16-1.26-.44-1.2-1.02-4.38-3.92-5.62-5.06l-.28-.25c-.14-.14-.22-.42-.22-.62v-1.94c1.38 1.26 5.08 4.6 6.12 5.5.36.28.8.43 1.26.44h.04ZM40 5l-5.84 14.46h-2.43L25.89 5h2.16a.9.9 0 0 1 .9.61l3.41 8.82a18.8 18.8 0 0 1 .62 2.02 19.44 19.44 0 0 1 .57-2.02l3.39-8.82c.05-.15.16-.3.31-.42a.9.9 0 0 1 .58-.19H40Zm17.18 0v14.46H54.8v-9.34c0-.37.02-.78.06-1.21l-4.37 8.21c-.21.4-.53.59-.95.59h-.38c-.43 0-.75-.2-.95-.59L43.8 8.88a22.96 22.96 0 0 1 .07 1.24v9.34H41.5V5h2.03l.3.01c.1 0 .17.02.24.05.07.03.13.07.19.13a1 1 0 0 1 .17.24l4.33 8.03a16.97 16.97 0 0 1 .6 1.36 14.34 14.34 0 0 1 .6-1.38l4.28-8.01c.05-.1.1-.18.17-.24.06-.06.12-.1.19-.13a.9.9 0 0 1 .24-.05l.3-.01h2.04Zm8.88 13.73a4.5 4.5 0 0 0 1.82-.35 3.96 3.96 0 0 0 2.22-2.47c.2-.57.3-1.19.3-1.85V5.31h1.02v8.75c0 .78-.12 1.51-.37 2.19a4.88 4.88 0 0 1-2.76 2.95c-.66.29-1.4.43-2.23.43-.82 0-1.57-.14-2.24-.43a5.01 5.01 0 0 1-2.75-2.95 6.37 6.37 0 0 1-.37-2.19V5.31h1.03v8.74c0 .66.1 1.28.3 1.85a3.98 3.98 0 0 0 2.21 2.47c.53.24 1.14.36 1.82.36Zm10.38.73h-1.03V5.31h1.03v14.15ZM1.73 36v-5.17l-.67-.07a.6.6 0 0 1-.21-.1.23.23 0 0 1-.08-.18v-.44h.96v-.59c0-.34.05-.65.14-.92a1.79 1.79 0 0 1 1.08-1.11 2.45 2.45 0 0 1 1.62-.02l-.03.53c0 .1-.06.15-.16.16H4c-.18 0-.35.03-.5.08a.95.95 0 0 0-.39.23c-.1.11-.19.25-.25.43-.05.18-.08.4-.08.65v.56h1.75v.78H2.8V36H1.73Zm6.17-6.17c.45 0 .85.07 1.2.22a2.57 2.57 0 0 1 1.5 1.62c.13.38.2.81.2 1.29s-.07.91-.2 1.3a2.57 2.57 0 0 1-1.49 1.61c-.36.14-.76.21-1.2.21-.45 0-.86-.07-1.22-.21a2.57 2.57 0 0 1-1.5-1.62c-.12-.38-.19-.81-.19-1.3 0-.47.07-.9.2-1.28a2.57 2.57 0 0 1 1.5-1.62c.35-.15.76-.22 1.2-.22Zm0 5.42c.6 0 1.05-.2 1.35-.6.3-.4.44-.97.44-1.69s-.15-1.28-.44-1.69c-.3-.4-.75-.6-1.35-.6-.3 0-.57.05-.8.15-.22.1-.4.26-.56.45-.15.2-.26.44-.33.73-.08.28-.11.6-.11.96 0 .72.15 1.29.44 1.69.3.4.76.6 1.36.6Zm5.26-4.11c.2-.42.43-.74.71-.97.28-.24.62-.36 1.03-.36.13 0 .25.02.36.05.12.02.23.07.32.13l-.08.8c-.02.1-.08.15-.18.15l-.24-.04a1.7 1.7 0 0 0-.88.05c-.15.05-.29.14-.4.25-.12.1-.23.24-.32.4-.1.17-.18.35-.26.56V36h-1.07v-6.08h.61c.12 0 .2.02.24.07.05.04.08.12.1.23l.06.92Zm13.73-3.82L23.39 36h-1.46l-3.5-8.68h1.29a.54.54 0 0 1 .54.37l2.04 5.3a11.31 11.31 0 0 1 .37 1.21 11.65 11.65 0 0 1 .35-1.22l2.03-5.29c.03-.1.1-.18.19-.25.1-.08.21-.12.35-.12h1.3Zm2.2 2.52V36H27.6v-6.16h1.49Zm.2-1.79c0 .13-.02.25-.08.36a1 1 0 0 1-.51.5.96.96 0 0 1-.73 0 1.02 1.02 0 0 1-.5-.5.96.96 0 0 1 0-.73.93.93 0 0 1 .86-.58.9.9 0 0 1 .37.08c.12.05.22.11.3.2a.94.94 0 0 1 .3.67Zm5.72 3.1a.68.68 0 0 1-.13.13c-.04.03-.1.05-.18.05a.42.42 0 0 1-.22-.07 3.95 3.95 0 0 0-.62-.31c-.14-.05-.3-.07-.51-.07-.26 0-.5.04-.69.14-.2.1-.36.23-.49.4-.13.18-.22.4-.29.64-.06.25-.1.53-.1.85 0 .33.04.62.1.88.08.25.18.47.32.64.13.18.29.3.48.4.18.09.4.13.63.13a1.6 1.6 0 0 0 .94-.27l.26-.2a.4.4 0 0 1 .25-.09.3.3 0 0 1 .27.14l.43.54a2.76 2.76 0 0 1-1.77.96c-.22.03-.43.05-.65.05a2.57 2.57 0 0 1-1.96-.83c-.25-.28-.45-.6-.6-1-.14-.4-.21-.85-.21-1.35 0-.45.06-.87.2-1.25a2.61 2.61 0 0 1 1.51-1.67c.37-.16.8-.24 1.28-.24.46 0 .86.07 1.2.22.35.15.66.36.94.64l-.4.54Zm3.43 4.95c-.54 0-.95-.15-1.24-.45-.28-.3-.42-.73-.42-1.26v-3.44h-.63a.29.29 0 0 1-.2-.07c-.06-.06-.09-.13-.09-.24v-.59l.99-.16.31-1.68a.33.33 0 0 1 .12-.18.34.34 0 0 1 .21-.07h.77v1.94h1.64v1.05h-1.64v3.34c0 .2.05.34.14.45.1.1.22.16.39.16a.73.73 0 0 0 .39-.1l.12-.07a.2.2 0 0 1 .11-.03c.05 0 .08.01.11.03l.09.1.44.72c-.21.18-.46.32-.74.4-.28.1-.57.15-.87.15Zm5.09-6.35c.46 0 .87.07 1.24.22a2.7 2.7 0 0 1 1.58 1.63c.14.39.22.83.22 1.31 0 .49-.08.93-.22 1.32-.14.4-.35.73-.62 1-.26.28-.58.49-.96.64-.37.15-.78.22-1.24.22a3.4 3.4 0 0 1-1.25-.22 2.71 2.71 0 0 1-1.59-1.64 3.8 3.8 0 0 1-.21-1.32c0-.48.07-.92.21-1.31a2.75 2.75 0 0 1 1.58-1.63c.38-.15.8-.22 1.26-.22Zm0 5.2c.51 0 .89-.17 1.13-.52.25-.34.38-.84.38-1.5a2.6 2.6 0 0 0-.38-1.53c-.24-.34-.62-.52-1.13-.52-.52 0-.9.18-1.16.53-.25.35-.37.85-.37 1.51s.12 1.17.37 1.51c.25.35.64.52 1.16.52Zm5.56-4.04c.2-.37.42-.65.69-.86.26-.21.57-.32.94-.32.28 0 .5.06.68.19l-.1 1.1a.3.3 0 0 1-.09.16.24.24 0 0 1-.15.04 1.8 1.8 0 0 1-.27-.03 2.01 2.01 0 0 0-.34-.03c-.16 0-.3.03-.44.08a1.1 1.1 0 0 0-.34.2c-.1.1-.2.2-.27.33-.08.13-.15.27-.22.44V36H47.7v-6.16h.87c.15 0 .26.03.31.09.06.05.1.15.13.29l.09.7Zm4.62-1.07V36h-1.49v-6.16h1.49Zm.2-1.79c0 .13-.02.25-.07.36a1 1 0 0 1-.51.5.96.96 0 0 1-.74 0 1.02 1.02 0 0 1-.5-.5.96.96 0 0 1 0-.73.93.93 0 0 1 .86-.58.9.9 0 0 1 .38.08c.11.05.21.11.3.2a.94.94 0 0 1 .28.67Zm4.56 5.32a7.8 7.8 0 0 0-1.08.12c-.29.05-.52.12-.7.2a.92.92 0 0 0-.38.3.64.64 0 0 0-.11.36c0 .26.07.45.23.56.15.11.35.17.6.17.3 0 .57-.06.79-.17.22-.1.44-.28.65-.5v-1.04Zm-3.4-2.67c.71-.65 1.57-.97 2.56-.97.36 0 .68.06.97.18a1.99 1.99 0 0 1 1.16 1.24c.1.3.16.61.16.96V36h-.67a.7.7 0 0 1-.33-.06c-.07-.04-.13-.13-.18-.26l-.13-.44c-.16.14-.3.26-.46.37a2.8 2.8 0 0 1-.97.43 2.77 2.77 0 0 1-1.32-.05 1.62 1.62 0 0 1-.57-.31 1.41 1.41 0 0 1-.38-.53 1.85 1.85 0 0 1-.05-1.18c.05-.16.14-.3.25-.45.12-.14.28-.27.46-.4a3 3 0 0 1 .7-.32 9.19 9.19 0 0 1 2.2-.33v-.36c0-.41-.09-.71-.26-.91-.18-.2-.43-.3-.76-.3a1.84 1.84 0 0 0-1.02.28l-.33.18c-.1.06-.2.09-.32.09-.1 0-.2-.03-.27-.08a.72.72 0 0 1-.17-.2l-.26-.47Zm11.49 4.32V36h-4.88v-8.6h1.16v7.62h3.72Zm3.16-5.2c.44 0 .84.08 1.2.23a2.57 2.57 0 0 1 1.49 1.62c.13.38.2.81.2 1.29s-.07.91-.2 1.3a2.57 2.57 0 0 1-1.49 1.61c-.36.14-.76.21-1.2.21-.45 0-.85-.07-1.21-.21a2.57 2.57 0 0 1-1.5-1.62c-.13-.38-.2-.81-.2-1.3 0-.47.07-.9.2-1.28.14-.39.33-.72.59-1 .25-.26.55-.47.9-.62.37-.15.77-.22 1.22-.22Zm0 5.43c.6 0 1.05-.2 1.34-.6.3-.4.45-.97.45-1.69s-.15-1.28-.45-1.69c-.3-.4-.74-.6-1.34-.6-.3 0-.57.05-.8.15-.22.1-.4.26-.56.45-.15.2-.26.44-.34.73-.07.28-.1.6-.1.96 0 .72.14 1.29.44 1.69.3.4.75.6 1.36.6Zm6.33-2.22c.22 0 .4-.03.57-.09.16-.06.3-.14.41-.25.12-.11.2-.24.26-.39.05-.15.08-.31.08-.5 0-.37-.11-.66-.34-.88-.23-.22-.55-.33-.98-.33-.43 0-.76.1-.99.33-.22.22-.34.51-.34.89 0 .18.03.34.09.5a1.1 1.1 0 0 0 .67.63c.16.06.35.09.57.09Zm1.93 3.3a.51.51 0 0 0-.13-.36.84.84 0 0 0-.34-.22 8.57 8.57 0 0 0-1.73-.2 7.5 7.5 0 0 1-.62-.05c-.23.1-.41.23-.56.4a.8.8 0 0 0-.1.92c.07.12.18.22.32.3.14.1.32.16.54.21a3.5 3.5 0 0 0 1.55 0c.23-.05.42-.12.57-.22.16-.1.29-.21.37-.34a.8.8 0 0 0 .13-.44Zm1.08-6.17v.4c0 .13-.08.21-.25.25l-.69.09c.14.26.2.56.2.88a1.86 1.86 0 0 1-1.36 1.82 3.07 3.07 0 0 1-1.72.04c-.12.08-.22.16-.29.25a.44.44 0 0 0-.1.27c0 .15.06.26.17.33.12.08.28.13.47.16a5 5 0 0 0 .66.06 16.56 16.56 0 0 1 1.5.13c.26.05.48.12.67.22.19.1.34.24.46.41.12.18.18.4.18.69 0 .26-.07.5-.2.75s-.31.46-.56.65c-.24.2-.54.34-.9.46a4.57 4.57 0 0 1-2.36.04c-.33-.09-.6-.2-.82-.36a1.56 1.56 0 0 1-.5-.51c-.1-.2-.16-.4-.16-.6 0-.3.1-.56.28-.77.19-.2.45-.37.77-.5a1.15 1.15 0 0 1-.43-.32.88.88 0 0 1-.15-.54c0-.09.01-.18.04-.27.04-.1.08-.2.15-.28a1.55 1.55 0 0 1 .58-.5c-.3-.16-.53-.39-.7-.66-.17-.28-.25-.6-.25-.97 0-.3.05-.57.16-.8.12-.25.28-.46.48-.63.2-.17.45-.3.73-.4a3 3 0 0 1 2.3.21h1.64Zm4.65.76a.24.24 0 0 1-.23.14.42.42 0 0 1-.2-.07 3.59 3.59 0 0 0-.67-.3 1.8 1.8 0 0 0-1.03 0c-.14.05-.27.11-.37.2a.87.87 0 0 0-.23.27.75.75 0 0 0-.08.35c0 .15.04.28.13.39.1.1.21.19.36.27.15.07.32.14.5.2a13.63 13.63 0 0 1 1.16.4c.2.08.36.18.5.3a1.33 1.33 0 0 1 .5 1.07 2 2 0 0 1-.15.78c-.1.24-.25.44-.45.62-.2.17-.43.3-.72.4a3.1 3.1 0 0 1-2.14-.05 2.97 2.97 0 0 1-.87-.53l.25-.41c.04-.05.07-.1.12-.12a.3.3 0 0 1 .17-.04.4.4 0 0 1 .22.08l.3.19a1.91 1.91 0 0 0 1.03.27c.2 0 .38-.03.54-.08.16-.06.29-.13.4-.22a.96.96 0 0 0 .3-.7c0-.17-.05-.31-.14-.42-.09-.11-.2-.2-.36-.28a2.6 2.6 0 0 0-.5-.2l-.59-.19c-.2-.06-.39-.14-.58-.22a2.14 2.14 0 0 1-.5-.3 1.45 1.45 0 0 1-.36-.46c-.1-.19-.14-.41-.14-.67a1.6 1.6 0 0 1 .57-1.23c.18-.16.4-.3.68-.39.26-.1.57-.14.91-.14a2.84 2.84 0 0 1 1.9.7l-.23.4Z"}),Kr("defs",{children:Kr("path",{d:"M0 0h85v38H0z"})})]})},Fo=function(){return Kr("svg",{viewBox:"0 0 15 17",fill:"currentColor",children:Kr("path",{d:"M6.11767 7.47586C6.47736 7.75563 6.91931 7.90898 7.37503 7.91213H7.42681C7.90756 7.90474 8.38832 7.71987 8.67677 7.46846C10.1856 6.18921 14.5568 2.18138 14.5568 2.18138C15.7254 1.09438 12.4637 0.00739 7.42681 0H7.36764C2.3308 0.00739 -0.930935 1.09438 0.237669 2.18138C0.237669 2.18138 4.60884 6.18921 6.11767 7.47586ZM8.67677 9.64243C8.31803 9.92483 7.87599 10.0808 7.41941 10.0861H7.37503C6.91845 10.0808 6.47641 9.92483 6.11767 9.64243C5.0822 8.75513 1.38409 5.42018 0.000989555 4.14832V6.07829C0.000989555 6.29273 0.0823481 6.57372 0.222877 6.70682L0.293316 6.7712L0.293344 6.77122C1.33784 7.72579 4.83903 10.9255 6.11767 12.0161C6.47641 12.2985 6.91845 12.4545 7.37503 12.4597H7.41941C7.90756 12.4449 8.38092 12.2601 8.67677 12.0161C9.9859 10.9069 13.6249 7.57198 14.5642 6.70682C14.7121 6.57372 14.7861 6.29273 14.7861 6.07829V4.14832C12.7662 5.99804 10.7297 7.82949 8.67677 9.64243ZM7.41941 14.6263C7.87513 14.6232 8.31708 14.4698 8.67677 14.19C10.7298 12.3746 12.7663 10.5407 14.7861 8.68853V10.6259C14.7861 10.8329 14.7121 11.1139 14.5642 11.247C13.6249 12.1196 9.9859 15.4471 8.67677 16.5563C8.38092 16.8077 7.90756 16.9926 7.41941 17H7.37503C6.91931 16.9968 6.47736 16.8435 6.11767 16.5637C4.91427 15.5373 1.74219 12.6364 0.502294 11.5025C0.393358 11.4029 0.299337 11.3169 0.222877 11.247C0.0823481 11.1139 0.000989555 10.8329 0.000989555 10.6259V8.68853C1.38409 9.95303 5.0822 13.2953 6.11767 14.1827C6.47641 14.4651 6.91845 14.6211 7.37503 14.6263H7.41941Z"})})},Uo=function(){return Kr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Kr("path",{d:"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z"})})},Ho=function(){return Kr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Kr("path",{d:"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"})})},Bo=function(){return Kr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Kr("path",{d:"M12 5V2L8 6l4 4V7c3.31 0 6 2.69 6 6 0 2.97-2.17 5.43-5 5.91v2.02c3.95-.49 7-3.85 7-7.93 0-4.42-3.58-8-8-8zm-6 8c0-1.65.67-3.15 1.76-4.24L6.34 7.34C4.9 8.79 4 10.79 4 13c0 4.08 3.05 7.44 7 7.93v-2.02c-2.83-.48-5-2.94-5-5.91z"})})},zo=function(){return Kr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Kr("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"})})},Wo=function(){return Kr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Kr("path",{d:"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"})})},Vo=function(){return Kr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Kr("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"})})},Yo=function(){return Kr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Kr("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"})})},Zo=function(){return Kr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Kr("path",{d:"M7.41 8.59 12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z"})})},Go=function(){return Kr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Kr("path",{d:"m7 10 5 5 5-5z"})})},qo=function(){return Kr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Kr("path",{d:"M8 5v14l11-7z"})})},Ko=function(){return Kr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Kr("path",{d:"m3.5 18.49 6-6.01 4 4L22 6.92l-1.41-1.41-7.09 7.97-4-4L2 16.99z"})})},Jo=function(){return Kr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Kr("path",{d:"M10 10.02h5V21h-5zM17 21h3c1.1 0 2-.9 2-2v-9h-5v11zm3-18H5c-1.1 0-2 .9-2 2v3h19V5c0-1.1-.9-2-2-2zM3 19c0 1.1.9 2 2 2h3V10H3v9z"})})},Qo=function(){return Kr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Kr("path",{d:"M9.4 16.6 4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0 4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z"})})},Xo=function(){return Kr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Kr("path",{d:"M8.9999 14.7854L18.8928 4.8925C19.0803 4.70497 19.3347 4.59961 19.5999 4.59961C19.8651 4.59961 20.1195 4.70497 20.307 4.8925L21.707 6.2925C22.0975 6.68303 22.0975 7.31619 21.707 7.70672L9.70701 19.7067C9.31648 20.0972 8.68332 20.0972 8.2928 19.7067L2.6928 14.1067C2.50526 13.9192 2.3999 13.6648 2.3999 13.3996C2.3999 13.1344 2.50526 12.88 2.6928 12.6925L4.0928 11.2925C4.48332 10.902 5.11648 10.902 5.50701 11.2925L8.9999 14.7854Z"})})},ei=function(){return Kr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Kr("path",{d:"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"})})},ti=function(){return Kr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Kr("path",{d:"M20 9H4v2h16V9zM4 15h16v-2H4v2z"})})},ni=function(){return Kr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:[Kr("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M21 5C19.89 4.65 18.67 4.5 17.5 4.5C15.55 4.5 13.45 4.9 12 6C10.55 4.9 8.45 4.5 6.5 4.5C5.33 4.5 4.11 4.65 3 5C2.25 5.25 1.6 5.55 1 6V20.6C1 20.85 1.25 21.1 1.5 21.1C1.6 21.1 1.65 21.1 1.75 21.05C3.15 20.3 4.85 20 6.5 20C8.2 20 10.65 20.65 12 21.5C13.35 20.65 15.8 20 17.5 20C19.15 20 20.85 20.3 22.25 21.05C22.35 21.1 22.4 21.1 22.5 21.1C22.75 21.1 23 20.85 23 20.6V6C22.4 5.55 21.75 5.25 21 5ZM21 18.5C19.9 18.15 18.7 18 17.5 18C15.8 18 13.35 18.65 12 19.5C10.65 18.65 8.2 18 6.5 18C5.3 18 4.1 18.15 3 18.5V7C4.1 6.65 5.3 6.5 6.5 6.5C8.2 6.5 10.65 7.15 12 8C13.35 7.15 15.8 6.5 17.5 6.5C18.7 6.5 19.9 6.65 21 7V18.5Z"}),Kr("path",{d:"M17.5 10.5C18.38 10.5 19.23 10.59 20 10.76V9.24C19.21 9.09 18.36 9 17.5 9C15.8 9 14.26 9.29 13 9.83V11.49C14.13 10.85 15.7 10.5 17.5 10.5ZM13 12.49V14.15C14.13 13.51 15.7 13.16 17.5 13.16C18.38 13.16 19.23 13.25 20 13.42V11.9C19.21 11.75 18.36 11.66 17.5 11.66C15.8 11.66 14.26 11.96 13 12.49ZM17.5 14.33C15.8 14.33 14.26 14.62 13 15.16V16.82C14.13 16.18 15.7 15.83 17.5 15.83C18.38 15.83 19.23 15.92 20 16.09V14.57C19.21 14.41 18.36 14.33 17.5 14.33Z"}),Kr("path",{d:"M6.5 10.5C5.62 10.5 4.77 10.59 4 10.76V9.24C4.79 9.09 5.64 9 6.5 9C8.2 9 9.74 9.29 11 9.83V11.49C9.87 10.85 8.3 10.5 6.5 10.5ZM11 12.49V14.15C9.87 13.51 8.3 13.16 6.5 13.16C5.62 13.16 4.77 13.25 4 13.42V11.9C4.79 11.75 5.64 11.66 6.5 11.66C8.2 11.66 9.74 11.96 11 12.49ZM6.5 14.33C8.2 14.33 9.74 14.62 11 15.16V16.82C9.87 16.18 8.3 15.83 6.5 15.83C5.62 15.83 4.77 15.92 4 16.09V14.57C4.79 14.41 5.64 14.33 6.5 14.33Z"})]})},ri=function(){return Kr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Kr("path",{d:"M12 2C6.49 2 2 6.49 2 12s4.49 10 10 10 10-4.49 10-10S17.51 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm3-8c0 1.66-1.34 3-3 3s-3-1.34-3-3 1.34-3 3-3 3 1.34 3 3z"})})},oi=function(){return Kr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Kr("path",{d:"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"})})},ii=function(){return Kr("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Kr("path",{d:"M3 14h4v-4H3v4zm0 5h4v-4H3v4zM3 9h4V5H3v4zm5 5h13v-4H8v4zm0 5h13v-4H8v4zM8 5v4h13V5H8z"})})},ai=n(123),ci=n.n(ai);function li(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var ui=["to","isNavLink","children"],si=function(e){var t=e.to,n=e.isNavLink,r=e.children,o=li(e,ui);return n?Kr(wr,Cr(Cr({to:t},o),{},{children:r})):Kr("div",Cr(Cr({},o),{},{children:r}))},fi=function(e){var t,n=e.activeItem,r=e.item,o=e.color,i=void 0===o?zr("color-primary"):o,a=e.activeNavRef,c=e.onChange,l=e.isNavLink;return Kr(si,{className:ci()(Er({"vm-tabs-item":!0,"vm-tabs-item_active":n===r.value},r.className||"",r.className)),isNavLink:l,to:r.value,style:{color:i},onClick:(t=r.value,function(){c&&c(t)}),ref:n===r.value?a:void 0,children:[r.icon&&Kr("div",{className:ci()({"vm-tabs-item__icon":!0,"vm-tabs-item__icon_single":!r.label}),children:r.icon}),r.label]})},di="undefined"!==typeof window?ae:ie;var pi=function(e,t,n,r){var o=ce(t);di((function(){o.current=t}),[t]),ie((function(){var t,i=null!==(t=null===n||void 0===n?void 0:n.current)&&void 0!==t?t:window;if(i&&i.addEventListener){var a=function(e){return o.current(e)};return i.addEventListener(e,a,r),function(){i.removeEventListener(e,a,r)}}}),[e,n,r])},hi=function(){var e=$t(re({width:0,height:0}),2),t=e[0],n=e[1],r=function(){n({width:window.innerWidth,height:window.innerHeight})};return pi("resize",r),di(r,[]),t},vi=function(e){var t=e.activeItem,n=e.items,r=e.color,o=void 0===r?zr("color-primary"):r,i=e.onChange,a=e.indicatorPlacement,c=void 0===a?"bottom":a,l=e.isNavLink,u=hi(),s=ce(null),f=$t(re({left:0,width:0,bottom:0}),2),d=f[0],p=f[1];return ie((function(){var e;if((null===(e=s.current)||void 0===e?void 0:e.base)instanceof HTMLElement){var t=s.current.base,n=t.offsetLeft,r=t.offsetWidth,o=t.offsetHeight;p({left:n,width:r,bottom:"top"===c?o-2:0})}}),[u,t,s,n]),Kr("div",{className:"vm-tabs",children:[n.map((function(e){return Kr(fi,{activeItem:t,item:e,onChange:i,color:o,activeNavRef:s,isNavLink:l},e.value)})),Kr("div",{className:"vm-tabs__indicator",style:Cr(Cr({},d),{},{borderColor:o})})]})},mi=[{value:"chart",icon:Kr(Ko,{}),label:"Graph",prometheusCode:0},{value:"code",icon:Kr(Qo,{}),label:"JSON",prometheusCode:3},{value:"table",icon:Kr(Jo,{}),label:"Table",prometheusCode:1}],yi=Ir("g0.tab",0),_i=mi.find((function(e){return e.prometheusCode===+yi||e.value===yi})),gi=Fr("SERIES_LIMITS"),bi={displayType:(null===_i||void 0===_i?void 0:_i.value)||"chart",nocache:!1,isTracingEnabled:!1,seriesLimits:gi?JSON.parse(gi):$r,tableCompact:Fr("TABLE_COMPACT")||!1};function wi(e,t){switch(t.type){case"SET_DISPLAY_TYPE":return Cr(Cr({},e),{},{displayType:t.payload});case"SET_SERIES_LIMITS":return Rr("SERIES_LIMITS",JSON.stringify(t.payload)),Cr(Cr({},e),{},{seriesLimits:t.payload});case"TOGGLE_QUERY_TRACING":return Cr(Cr({},e),{},{isTracingEnabled:!e.isTracingEnabled});case"TOGGLE_NO_CACHE":return Cr(Cr({},e),{},{nocache:!e.nocache});case"TOGGLE_TABLE_COMPACT":return Rr("TABLE_COMPACT",!e.tableCompact),Cr(Cr({},e),{},{tableCompact:!e.tableCompact});default:throw new Error}}var Ai=z({}),Si={customStep:Ir("g0.step_input",""),yaxis:{limits:{enable:!1,range:{1:[0,0]}}},isHistogram:!1};function xi(e,t){switch(t.type){case"TOGGLE_ENABLE_YAXIS_LIMITS":return Cr(Cr({},e),{},{yaxis:Cr(Cr({},e.yaxis),{},{limits:Cr(Cr({},e.yaxis.limits),{},{enable:!e.yaxis.limits.enable})})});case"SET_CUSTOM_STEP":return Cr(Cr({},e),{},{customStep:t.payload});case"SET_YAXIS_LIMITS":return Cr(Cr({},e),{},{yaxis:Cr(Cr({},e.yaxis),{},{limits:Cr(Cr({},e.yaxis.limits),{},{range:t.payload})})});case"SET_IS_HISTOGRAM":return Cr(Cr({},e),{},{isHistogram:t.payload});default:throw new Error}}var Ei=z({}),ki={windows:"Windows",mac:"Mac OS",linux:"Linux"},Ci=function(){return(Object.values(ki).find((function(e){return navigator.userAgent.indexOf(e)>=0}))||"unknown")===ki.mac};function Oi(){var e=hi(),t=function(){var e=function(){var e=["Android","webOS","iPhone","iPad","iPod","BlackBerry","Windows Phone"].map((function(e){return navigator.userAgent.match(new RegExp(e,"i"))}));return e.some((function(e){return e}))}(),t=window.innerWidth<500;return e||t},n=$t(re(t()),2),r=n[0],o=n[1];return ie((function(){o(t())}),[e]),{isMobile:r}}var Ni={success:Kr(Yo,{}),error:Kr(Vo,{}),warning:Kr(Wo,{}),info:Kr(zo,{})},Pi=function(e){var t,n=e.variant,r=e.children,o=Qr().isDarkTheme,i=Oi().isMobile;return Kr("div",{className:ci()((t={"vm-alert":!0},Er(t,"vm-alert_".concat(n),n),Er(t,"vm-alert_dark",o),Er(t,"vm-alert_mobile",i),t)),children:[Kr("div",{className:"vm-alert__icon",children:Ni[n||"info"]}),Kr("div",{className:"vm-alert__content",children:r})]})},Mi=z({showInfoMessage:function(){}}),Ti={dashboardsSettings:[],dashboardsLoading:!1,dashboardsError:""};function ji(e,t){switch(t.type){case"SET_DASHBOARDS_SETTINGS":return Cr(Cr({},e),{},{dashboardsSettings:t.payload});case"SET_DASHBOARDS_LOADING":return Cr(Cr({},e),{},{dashboardsLoading:t.payload});case"SET_DASHBOARDS_ERROR":return Cr(Cr({},e),{},{dashboardsError:t.payload});default:throw new Error}}var Li=z({}),Di=function(){for(var e=arguments.length,t=new Array(e),n=0;n=128?"#000000":"#FFFFFF"}(zr("color-".concat(e)));Wr("".concat(e,"-text"),r),t===Fi.length-1&&(l({type:"SET_DARK_THEME"}),n(!0))}))},v=function(){var e=Fr("THEME")||Br.system,t=f[e];Object.entries(t).forEach((function(e){var t=$t(e,2),n=t[0],r=t[1];Wr(n,r)})),h(),r&&(Fi.forEach((function(e){var t=i[e];t&&Wr("color-".concat(e),t)})),h())};return ie((function(){p(),v()}),[f]),ie(p,[u]),ie((function(){var e=Vr()?$i:Ii;f[Br.system]!==e?d((function(t){return Cr(Cr({},t),{},Er({},Br.system,e))})):v()}),[a,c]),ie((function(){r&&l({type:"SET_THEME",payload:Br.light})}),[]),null};function Hi(){Hi=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function l(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(O){l=function(e,t,n){return e[t]=n}}function u(e,t,n,o){var i=t&&t.prototype instanceof d?t:d,a=Object.create(i.prototype),c=new E(o||[]);return r(a,"_invoke",{value:w(e,n,c)}),a}function s(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(O){return{type:"throw",arg:O}}}e.wrap=u;var f={};function d(){}function p(){}function h(){}var v={};l(v,i,(function(){return this}));var m=Object.getPrototypeOf,y=m&&m(m(k([])));y&&y!==t&&n.call(y,i)&&(v=y);var _=h.prototype=d.prototype=Object.create(v);function g(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function b(e,t){function o(r,i,a,c){var l=s(e[r],e,i);if("throw"!==l.type){var u=l.arg,f=u.value;return f&&"object"==Ht(f)&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){o("next",e,a,c)}),(function(e){o("throw",e,a,c)})):t.resolve(f).then((function(e){u.value=e,a(u)}),(function(e){return o("throw",e,a,c)}))}c(l.arg)}var i;r(this,"_invoke",{value:function(e,n){function r(){return new t((function(t,r){o(e,n,t,r)}))}return i=i?i.then(r,r):r()}})}function w(e,t,n){var r="suspendedStart";return function(o,i){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw i;return C()}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var c=A(a,n);if(c){if(c===f)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var l=s(e,t,n);if("normal"===l.type){if(r=n.done?"completed":"suspendedYield",l.arg===f)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(r="completed",n.method="throw",n.arg=l.arg)}}}function A(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,A(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),f;var o=s(r,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,f;var i=o.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function S(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function x(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function E(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(S,this),this.reset(!0)}function k(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,o=function t(){for(;++r=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var c=n.call(i,"catchLoc"),l=n.call(i,"finallyLoc");if(c&&l){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),x(n),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;x(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:k(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},e}function Bi(e,t,n,r,o,i,a){try{var c=e[i](a),l=c.value}catch(u){return void n(u)}c.done?t(l):Promise.resolve(l).then(r,o)}function zi(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var i=e.apply(t,n);function a(e){Bi(i,r,o,a,c,"next",e)}function c(e){Bi(i,r,o,a,c,"throw",e)}a(void 0)}))}}var Wi=function(){var e=fe(Mi).showInfoMessage;return function(){var t=zi(Hi().mark((function t(n,r){var o;return Hi().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(null!==(o=navigator)&&void 0!==o&&o.clipboard){t.next=4;break}return e({text:"Clipboard not supported",type:"error"}),console.warn("Clipboard not supported"),t.abrupt("return",!1);case 4:return t.prev=4,t.next=7,navigator.clipboard.writeText(n);case 7:return r&&e({text:r,type:"success"}),t.abrupt("return",!0);case 11:return t.prev=11,t.t0=t.catch(4),t.t0 instanceof Error&&e({text:"".concat(t.t0.name,": ").concat(t.t0.message),type:"error"}),console.warn("Copy failed",t.t0),t.abrupt("return",!1);case 16:case"end":return t.stop()}}),t,null,[[4,11]])})));return function(e,n){return t.apply(this,arguments)}}()},Vi=function(e){var t,n=e.variant,r=void 0===n?"contained":n,o=e.color,i=void 0===o?"primary":o,a=e.size,c=void 0===a?"medium":a,l=e.ariaLabel,u=e.children,s=e.endIcon,f=e.startIcon,d=e.fullWidth,p=void 0!==d&&d,h=e.className,v=e.disabled,m=e.onClick,y=e.onMouseDown;return Kr("button",{className:ci()((Er(t={"vm-button":!0},"vm-button_".concat(r,"_").concat(i),!0),Er(t,"vm-button_".concat(c),c),Er(t,"vm-button_icon",(f||s)&&!u),Er(t,"vm-button_full-width",p),Er(t,"vm-button_with-icon",f||s),Er(t,"vm-button_disabled",v),Er(t,h||"",h),t)),disabled:v,"aria-label":l,onClick:m,onMouseDown:y,children:Kr(g,{children:[f&&Kr("span",{className:"vm-button__start-icon",children:f}),u&&Kr("span",{children:u}),s&&Kr("span",{className:"vm-button__end-icon",children:s})]})})},Yi=function(e){var t=e.data,n=Wi(),r=ue((function(){return JSON.stringify(t,null,2)}),[t]),o=function(){var e=zi(Hi().mark((function e(){return Hi().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,n(r,"Formatted JSON has been copied");case 2:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return Kr("div",{className:"vm-json-view",children:[Kr("div",{className:"vm-json-view__copy",children:Kr(Vi,{variant:"outlined",onClick:o,children:"Copy JSON"})}),Kr("pre",{className:"vm-json-view__code",children:Kr("code",{children:r})})]})},Zi=function(e){var t=e.children,n=e.title,r=e.open,o=e.placement,i=void 0===o?"bottom-center":o,a=e.offset,c=void 0===a?{top:6,left:0}:a,l=Oi().isMobile,u=$t(re(!1),2),s=u[0],f=u[1],d=$t(re({width:0,height:0}),2),p=d[0],h=d[1],v=ce(null),m=ce(null),y=function(){return f(!1)};ie((function(){if(m.current&&s)return h({width:m.current.clientWidth,height:m.current.clientHeight}),window.addEventListener("scroll",y),function(){window.removeEventListener("scroll",y)}}),[s,n]);var _=ue((function(){var e,t=null===v||void 0===v||null===(e=v.current)||void 0===e?void 0:e.base;if(!t||!s)return{};var n=t.getBoundingClientRect(),r={top:0,left:0},o="bottom-right"===i||"top-right"===i,a="bottom-left"===i||"top-left"===i,l=null===i||void 0===i?void 0:i.includes("top"),u=(null===c||void 0===c?void 0:c.top)||0,f=(null===c||void 0===c?void 0:c.left)||0;r.left=n.left-(p.width-n.width)/2+f,r.top=n.height+n.top+u,o&&(r.left=n.right-p.width),a&&(r.left=n.left+f),l&&(r.top=n.top-p.height-u);var d=window,h=d.innerWidth,m=d.innerHeight,y=r.top+p.height+20>m,_=r.top-20<0,g=r.left+p.width+20>h,b=r.left-20<0;return y&&(r.top=n.top-p.height-u),_&&(r.top=n.height+n.top+u),g&&(r.left=n.right-p.width-f),b&&(r.left=n.left+f),r.top<0&&(r.top=20),r.left<0&&(r.left=20),r}),[v,i,s,p]),b=function(){"boolean"!==typeof r&&f(!0)},w=function(){f(!1)};return ie((function(){"boolean"===typeof r&&f(r)}),[r]),ie((function(){var e,t=null===v||void 0===v||null===(e=v.current)||void 0===e?void 0:e.base;if(t)return t.addEventListener("mouseenter",b),t.addEventListener("mouseleave",w),function(){t.removeEventListener("mouseenter",b),t.removeEventListener("mouseleave",w)}}),[v]),Kr(g,{children:[Kr(g,{ref:v,children:t}),!l&&s&&St.createPortal(Kr("div",{className:"vm-tooltip",ref:m,style:_,children:n}),document.body)]})},Gi=function(e){var t=$t(re(!!e),2),n=t[0],r=t[1],o=se((function(){return r(!0)}),[]),i=se((function(){return r(!1)}),[]),a=se((function(){return r((function(e){return!e}))}),[]);return{value:n,setValue:r,setTrue:o,setFalse:i,toggle:a}},qi=function(e,t,n){var r=se((function(r){var o=null===e||void 0===e?void 0:e.current,i=r.target,a=(null===n||void 0===n?void 0:n.current)&&n.current.contains(i);!o||o.contains((null===r||void 0===r?void 0:r.target)||null)||a||t(r)}),[e,t]);pi("mousedown",r),pi("touchstart",r)},Ki=function(e){var t=e.children,n=e.buttonRef,r=e.placement,o=void 0===r?"bottom-left":r,i=e.open,a=void 0!==i&&i,c=e.onClose,l=e.offset,u=void 0===l?{top:6,left:0}:l,s=e.clickOutside,f=void 0===s||s,d=e.fullWidth,p=e.title,h=e.disabledFullScreen,v=Oi().isMobile,m=Vn(),y=zn(),_=$t(re({width:0,height:0}),2),b=_[0],w=_[1],A=Gi(!1),S=A.value,x=A.setValue,E=A.setFalse,k=ce(null);ie((function(){x(a)}),[a]),ie((function(){return!S&&c&&c(),S&&v&&!h&&(document.body.style.overflow="hidden"),function(){document.body.style.overflow="auto"}}),[S]),ie((function(){var e,t;w({width:(null===k||void 0===k||null===(e=k.current)||void 0===e?void 0:e.clientWidth)||0,height:(null===k||void 0===k||null===(t=k.current)||void 0===t?void 0:t.clientHeight)||0}),x(!1)}),[k]);var C=ue((function(){var e=n.current;if(!e||!S)return{};var t=e.getBoundingClientRect(),r={top:0,left:0,width:"auto"},i="bottom-right"===o||"top-right"===o,a=null===o||void 0===o?void 0:o.includes("top"),c=(null===u||void 0===u?void 0:u.top)||0,l=(null===u||void 0===u?void 0:u.left)||0;r.left=r.left=t.left+l,r.top=t.height+t.top+c,i&&(r.left=t.right-b.width),a&&(r.top=t.top-b.height-c);var s=window,f=s.innerWidth,p=s.innerHeight,h=r.top+b.height+20>p,v=r.top-20<0,m=r.left+b.width+20>f,y=r.left-20<0;return h&&(r.top=t.top-b.height-c),v&&(r.top=t.height+t.top+c),m&&(r.left=t.right-b.width-l),y&&(r.left=t.left+l),d&&(r.width="".concat(t.width,"px")),r.top<0&&(r.top=20),r}),[n,o,S,t,d]);f&&qi(k,(function(){return x(!1)}),n),ie((function(){if(k.current&&S&&(!v||h)){var e=k.current.getBoundingClientRect(),t=e.right,n=e.width;if(t>window.innerWidth){var r=window.innerWidth-20-n;k.current.style.left=re[n]?1:0}var aa=function(e){var t=e.rows,n=e.columns,r=e.defaultOrderBy,o=e.copyToClipboard,i=e.paginationOffset,a=$t(re(r),2),c=a[0],l=a[1],u=$t(re("desc"),2),s=u[0],f=u[1],d=$t(re(null),2),p=d[0],h=d[1],v=ue((function(){var e=i.startIndex,n=i.endIndex;return function(e,t){var n=e.map((function(e,t){return[e,t]}));return n.sort((function(e,n){var r=t(e[0],n[0]);return 0!==r?r:e[1]-n[1]})),n.map((function(e){return e[0]}))}(t,function(e,t){return"desc"===e?function(e,n){return ia(e,n,t)}:function(e,n){return-ia(e,n,t)}}(s,c)).slice(e,n)}),[t,c,s,i]),m=function(e,t){return zi(Hi().mark((function n(){return Hi().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(p!==t){n.next=2;break}return n.abrupt("return");case 2:return n.prev=2,n.next=5,navigator.clipboard.writeText(String(e));case 5:h(t),n.next=11;break;case 8:n.prev=8,n.t0=n.catch(2),console.error(n.t0);case 11:case"end":return n.stop()}}),n,null,[[2,8]])})))};return ie((function(){if(null!==p){var e=setTimeout((function(){return h(null)}),2e3);return function(){return clearTimeout(e)}}}),[p]),Kr("table",{className:"vm-table",children:[Kr("thead",{className:"vm-table-header",children:Kr("tr",{className:"vm-table__row vm-table__row_header",children:[n.map((function(e){return Kr("th",{className:"vm-table-cell vm-table-cell_header vm-table-cell_sort",onClick:(t=e.key,function(){f((function(e){return"asc"===e&&c===t?"desc":"asc"})),l(t)}),children:Kr("div",{className:"vm-table-cell__content",children:[Kr("div",{children:String(e.title||e.key)}),Kr("div",{className:ci()({"vm-table__sort-icon":!0,"vm-table__sort-icon_active":c===e.key,"vm-table__sort-icon_desc":"desc"===s&&c===e.key}),children:Kr(Go,{})})]})},String(e.key));var t})),o&&Kr("th",{className:"vm-table-cell vm-table-cell_header"})]})}),Kr("tbody",{className:"vm-table-body",children:v.map((function(e,t){return Kr("tr",{className:"vm-table__row",children:[n.map((function(t){return Kr("td",{className:ci()(Er({"vm-table-cell":!0},"".concat(t.className),t.className)),children:e[t.key]||"-"},String(t.key))})),o&&Kr("td",{className:"vm-table-cell vm-table-cell_right",children:e[o]&&Kr("div",{className:"vm-table-cell__content",children:Kr(Zi,{title:p===t?"Copied":"Copy row",children:Kr(Vi,{variant:"text",color:p===t?"success":"gray",size:"small",startIcon:Kr(p===t?Xo:ei,{}),onClick:m(e[o],t),ariaLabel:"copy row"})})})})]},t)}))})]})},ca=function(e){var t=e.page,n=e.length,r=e.limit,o=e.onChange,i=Oi().isMobile,a=function(e){return function(){o(+t+e),window.scrollTo(0,0)}};return Kr("div",{className:ci()({"vm-pagination":!0,"vm-pagination_mobile":i}),children:[t>1&&Kr(Vi,{variant:"text",onClick:a(-1),startIcon:Kr("div",{className:"vm-pagination__icon vm-pagination__icon_prev",children:Kr(Zo,{})}),children:"Previous"}),n>=r&&Kr(Vi,{variant:"text",onClick:a(1),endIcon:Kr("div",{className:"vm-pagination__icon vm-pagination__icon_next",children:Kr(Zo,{})}),children:"Next"})]})},la=function(e){var t=e.logs,n=e.limitRows,r=e.displayColumns,o=e.tableCompact,i=e.columns,a=ea().setSearchParamsFromKeys,c=$t(Xi(1,"page"),2),l=c[0],u=c[1],s=function(e){switch(e){case"time":return"vm-table-cell_logs-time";case"data":return"vm-table-cell_logs vm-table-cell_pre";default:return"vm-table-cell_logs"}},f=ue((function(){var e=(l-1)*Number(n);return{startIndex:e,endIndex:e+Number(n)}}),[l,n]),d=ue((function(){return o?[{key:"data",title:"Data",className:s("data")}]:i.map((function(e){return{key:e,title:e,className:s(e)}}))}),[o,i]),p=ue((function(){return null===r||void 0===r||!r.length||o?d:d.filter((function(e){return r.includes(e.key)}))}),[d,r,o]);return Kr(g,{children:[Kr(aa,{rows:t,columns:p,defaultOrderBy:"time",copyToClipboard:"data",paginationOffset:f}),Kr(ca,{page:l,limit:+n,length:t.slice(f.startIndex,f.endIndex).length,onChange:function(e){u(e),a({page:e})}})]})},ua=function(e){var t=e.defaultExpanded,n=void 0!==t&&t,r=e.onChange,o=e.title,i=e.children,a=$t(re(n),2),c=a[0],l=a[1];return ie((function(){r&&r(c)}),[c]),Kr(g,{children:[Kr("header",{className:"vm-accordion-header ".concat(c&&"vm-accordion-header_open"),onClick:function(){l((function(e){return!e}))},children:[o,Kr("div",{className:"vm-accordion-header__arrow ".concat(c&&"vm-accordion-header__arrow_open"),children:Kr(Zo,{})})]}),c&&Kr("section",{className:"vm-accordion-section",children:i},"content")]})},sa=function(e){var t=e.logs,n=e.columns,r=ue((function(){var e=["_msg","time","data","_time"],r=n.filter((function(t){return!e.includes(t)}));return function(e,t){var n=e.reduce((function(e,n){var r=t.map((function(e){return"".concat(e,": ").concat(n[e]||"-")})).join("|");return(e[r]=e[r]||[]).push(n),e}),{});return Object.entries(n).map((function(e){var t=$t(e,2),n=t[0],r=t[1];return{keys:n.split("|"),values:r}}))}(t,r)}),[t]);return Kr("div",{className:"vm-explore-logs-body-content",children:r.map((function(e){return Kr("div",{className:"vm-explore-logs-body-content-group",children:Kr(ua,{defaultExpanded:!0,title:Kr("div",{className:"vm-explore-logs-body-content-group-keys",children:[Kr("span",{className:"vm-explore-logs-body-content-group-keys__title",children:"Group by:"}),e.keys.map((function(e){return Kr("div",{className:"vm-explore-logs-body-content-group-keys__key",children:e},e)}))]}),children:Kr("div",{className:"vm-explore-logs-body-content-group-rows",children:e.values.map((function(e){return Kr("div",{className:"vm-explore-logs-body-content-group-rows-item",children:[Kr("div",{className:"vm-explore-logs-body-content-group-rows-item__time",children:e.time}),Kr("div",{className:"vm-explore-logs-body-content-group-rows-item__msg",children:e._msg})]},"".concat(e._msg).concat(e._time))}))})})},e.keys.join(""))}))})},fa=function(e){return e.group="group",e.table="table",e.json="json",e}(fa||{}),da=[{label:"Group",value:fa.group,icon:Kr(ii,{})},{label:"Table",value:fa.table,icon:Kr(Jo,{})},{label:"JSON",value:fa.json,icon:Kr(Qo,{})}],pa=function(e){var t=e.data,n=Oi().isMobile,r=Mo().timezone,o=ea().setSearchParamsFromKeys,i=$t(Xi(Fr("LOGS_LIMIT")||50,"limit"),2),a=i[0],c=i[1],l=$t(Xi(fa.group,"view"),2),u=l[0],s=l[1],f=$t(re([]),2),d=f[0],p=f[1],h=Gi(!1),v=h.value,m=h.toggle,y=ue((function(){return t.map((function(e){return Cr({time:Et()(e._time).tz().format("MMM DD, YYYY \nHH:mm:ss.SSS"),data:JSON.stringify(e,null,2)},e)}))}),[t,r]),_=ue((function(){if(null===y||void 0===y||!y.length)return[];var e,t=["data","_time"],n=new Set,r=It(y);try{for(r.s();!(e=r.n()).done;){var o=e.value;for(var i in o)n.add(i)}}catch(a){r.e(a)}finally{r.f()}return Array.from(n).filter((function(e){return!t.includes(e)}))}),[y]);return Kr("div",{className:ci()({"vm-explore-logs-body":!0,"vm-block":!0,"vm-block_mobile":n}),children:[Kr("div",{className:ci()({"vm-explore-logs-body-header":!0,"vm-section-header":!0,"vm-explore-logs-body-header_mobile":n}),children:[Kr("div",{className:"vm-section-header__tabs",children:Kr(vi,{activeItem:String(u),items:da,onChange:function(e){s(e),o({view:e})}})}),u===fa.table&&Kr("div",{className:"vm-explore-logs-body-header__settings",children:[Kr(Qi,{limit:+a,onChange:function(e){c(e),o({limit:e}),Rr("LOGS_LIMIT","".concat(e))}}),Kr(oa,{columns:_,defaultColumns:d,onChangeColumns:p,tableCompact:v,toggleTableCompact:m})]})]}),Kr("div",{className:ci()({"vm-explore-logs-body__table":!0,"vm-explore-logs-body__table_mobile":n}),children:!!t.length&&Kr(g,{children:[u===fa.table&&Kr(la,{logs:y,limitRows:+a,displayColumns:d,tableCompact:v,columns:_}),u===fa.group&&Kr(sa,{logs:y,columns:_}),u===fa.json&&Kr(Yi,{data:t})]})})]})},ha=1e3,va=function(e){var t=e.containerStyles,n=void 0===t?{}:t,r=e.message,o=Qr().isDarkTheme;return Kr("div",{className:ci()({"vm-spinner":!0,"vm-spinner_dark":o}),style:n&&{},children:[Kr("div",{className:"half-circle-spinner",children:[Kr("div",{className:"circle circle-1"}),Kr("div",{className:"circle circle-2"})]}),r&&Kr("div",{className:"vm-spinner__message",children:r})]})},ma=function(e){var t=e.error,n=e.warning,r=e.info,o=ce(null),i=$t(re(!1),2),a=i[0],c=i[1],l=$t(re(!1),2),u=l[0],s=l[1],f=ue((function(){return t?"ERROR: ":n?"WARNING: ":""}),[t,n]),d="".concat(f).concat(t||n||r),p=function(){var e=o.current;if(e){var t=e.offsetWidth,n=e.scrollWidth,r=e.offsetHeight,i=e.scrollHeight;c(t+1=c?c:e+1}))}if("Enter"===t){var l=C[w];l&&v(l),f||k()}"Escape"===t&&k()}),[w,C,k,v,f]);return ie((function(){var e=(t.match(/[a-zA-Z_:.][a-zA-Z0-9_:.]*/gm)||[]).length;E(t.length>l&&e<=a)}),[t]),pi("keydown",N),ie((function(){if(g.current){var e=g.current.childNodes[w];null!==e&&void 0!==e&&e.scrollIntoView&&e.scrollIntoView({block:"center"})}}),[w,C]),ie((function(){A(-1)}),[C]),ie((function(){m&&m(x)}),[x]),ie((function(){y&&y(C)}),[C]),Kr(Ki,{open:x,buttonRef:r,placement:"bottom-left",onClose:k,fullWidth:s,title:_?p:void 0,disabledFullScreen:h,children:Kr("div",{className:ci()({"vm-autocomplete":!0,"vm-autocomplete_mobile":_&&!h}),ref:g,children:[O&&Kr("div",{className:"vm-autocomplete__no-options",children:d}),C.map((function(e,t){return Kr("div",{className:ci()({"vm-list-item":!0,"vm-list-item_mobile":_,"vm-list-item_active":t===w,"vm-list-item_multiselect":f,"vm-list-item_multiselect_selected":null===f||void 0===f?void 0:f.includes(e)}),id:"$autocomplete$".concat(e),onClick:(n=e,function(){o||(v(n),f||k())}),children:[(null===f||void 0===f?void 0:f.includes(e))&&Kr(Xo,{}),Kr("span",{children:e})]},e);var n}))]})})},ga="No match! \nThis query hasn't selected any time series from database.\nEither the requested metrics are missing in the database,\nor there is a typo in series selector.",ba="The shown results are marked as PARTIAL.\nThe result is marked as partial if one or more vmstorage nodes failed to respond to the query.",wa=function(e){var t=e.value,n=e.onChange,r=e.onEnter,o=e.onArrowUp,i=e.onArrowDown,a=e.autocomplete,c=e.error,l=e.stats,u=e.options,s=e.label,f=e.disabled,d=void 0!==f&&f,p=$t(re(!1),2),h=p[0],v=p[1],m=ce(null),y=[{show:"0"===(null===l||void 0===l?void 0:l.seriesFetched)&&!l.resultLength,text:ga},{show:null===l||void 0===l?void 0:l.isPartial,text:ba}].filter((function(e){return e.show})).map((function(e){return e.text})).join("");return Kr("div",{className:"vm-query-editor",ref:m,children:[Kr(ya,{value:t,label:s,type:"textarea",autofocus:!!t,error:c,warning:y,onKeyDown:function(e){var t=e.key,n=e.ctrlKey,a=e.metaKey,c=e.shiftKey,l=(e.target.value||"").split("\n").length>1,u=n||a,s="ArrowDown"===t,f="Enter"===t;"ArrowUp"===t&&u&&(e.preventDefault(),o()),s&&u&&(e.preventDefault(),i()),f&&h&&e.preventDefault(),!f||c||l&&!u||h||(e.preventDefault(),r())},onChange:n,disabled:d,inputmode:"search"}),a&&Kr(_a,{disabledFullScreen:!0,value:t,options:u,anchor:m,onSelect:function(e){n(e)},onFoundOptions:function(e){v(!!e.length)}})]})},Aa=function(e){var t=e.query,n=e.onChange,r=e.onRun,o=Oi().isMobile;return Kr("div",{className:ci()({"vm-explore-logs-header":!0,"vm-block":!0,"vm-block_mobile":o}),children:[Kr("div",{className:"vm-explore-logs-header__input",children:Kr(wa,{value:t,autocomplete:!1,options:[],onArrowUp:function(){return null},onArrowDown:function(){return null},onEnter:r,onChange:n,label:"Log query"})}),Kr("div",{className:"vm-explore-logs-header-bottom",children:[Kr("div",{className:"vm-explore-logs-header-bottom-helpful",children:[Kr("a",{className:"vm-link vm-link_with-icon",target:"_blank",href:"https://docs.victoriametrics.com/VictoriaLogs/LogsQL.html",rel:"help noreferrer",children:[Kr(zo,{}),"Query language docs"]}),Kr("a",{className:"vm-link vm-link_with-icon",target:"_blank",href:"https://docs.victoriametrics.com/VictoriaLogs/",rel:"help noreferrer",children:[Kr(ni,{}),"Documentation"]})]}),Kr("div",{className:"vm-explore-logs-header-bottom__execute",children:Kr(Vi,{startIcon:Kr(qo,{}),onClick:r,fullWidth:!0,children:"Execute Query"})})]})]})};var Sa,xa=function(e){var t=ce();return ie((function(){t.current=e}),[e]),t.current},Ea=function(){var e=Qr().serverUrl,t=ea().setSearchParamsFromKeys,n=$t(Xi("","query"),2),r=n[0],o=n[1],i=xa(r),a=function(e,t){var n=$t(re([]),2),r=n[0],o=n[1],i=$t(re(!1),2),a=i[0],c=i[1],l=$t(re(),2),s=l[0],f=l[1],d=ue((function(){return function(e){return"".concat(e,"/select/logsql/query")}(e)}),[e]),p=ue((function(){return{method:"POST",headers:{Accept:"application/stream+json; charset=utf-8","Content-Type":"application/x-www-form-urlencoded"},body:"query=".concat(encodeURIComponent(t.trim()))}}),[t]);return{logs:r,isLoading:a,error:s,fetchLogs:se(zi(Hi().mark((function e(){var t,n,r,i,a,l,s,h,v,m;return Hi().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return c(!0),f(void 0),e.prev=2,e.next=5,fetch(d,p);case 5:if((t=e.sent).ok&&t.body){e.next=14;break}return e.next=9,t.text();case 9:return n=e.sent,f(n),o([]),c(!1),e.abrupt("return");case 14:r=t.body.getReader(),i=new TextDecoder("utf-8"),a=[];case 17:if(!r){e.next=33;break}return e.next=20,r.read();case 20:if(l=e.sent,s=l.done,h=l.value,!s){e.next=25;break}return e.abrupt("break",33);case 25:if(v=i.decode(h,{stream:!0}).split("\n"),a.push.apply(a,Ft(v)),a.length>ha&&a.splice(0,a.length-ha),!(a.length>=ha)){e.next=31;break}return r.cancel(),e.abrupt("break",33);case 31:e.next=17;break;case 33:m=a.map((function(e){try{return JSON.parse(e)}catch(u){return""}})).filter((function(e){return e})),o(m),e.next=42;break;case 37:e.prev=37,e.t0=e.catch(2),console.error(e.t0),o([]),e.t0 instanceof Error&&f("".concat(e.t0.name,": ").concat(e.t0.message));case 42:c(!1);case 43:case"end":return e.stop()}}),e,null,[[2,37]])}))),[d,p])}}(e,r),c=a.logs,l=a.isLoading,s=a.error,f=a.fetchLogs,d=function(){f(),t(i&&r!==i?{query:r,page:1}:{query:r})};return ie((function(){r&&d()}),[]),Kr("div",{className:"vm-explore-logs",children:[Kr(Aa,{query:r,onChange:o,onRun:d}),l&&Kr(va,{}),s&&Kr(Pi,{variant:"error",children:s}),Kr(pa,{data:c})]})},ka={home:"/",metrics:"/metrics",dashboards:"/dashboards",cardinality:"/cardinality",topQueries:"/top-queries",trace:"/trace",withTemplate:"/expand-with-exprs",relabel:"/relabeling",logs:"/logs",activeQueries:"/active-queries",icons:"/icons"},Ca={header:{tenant:!0,stepControl:!1,timeSelector:!1,executionControls:!1}},Oa=(Er(Sa={},ka.home,Cr({title:"Query"},Ca)),Er(Sa,ka.metrics,{title:"Explore Prometheus metrics",header:{tenant:!0,stepControl:!0,timeSelector:!0}}),Er(Sa,ka.cardinality,{title:"Explore cardinality",header:{tenant:!0,cardinalityDatePicker:!0}}),Er(Sa,ka.topQueries,{title:"Top queries",header:{tenant:!0}}),Er(Sa,ka.trace,{title:"Trace analyzer",header:{}}),Er(Sa,ka.dashboards,Cr({title:"Dashboards"},Ca)),Er(Sa,ka.withTemplate,{title:"WITH templates",header:{}}),Er(Sa,ka.relabel,{title:"Metric relabel debug",header:{}}),Er(Sa,ka.logs,{title:"Logs Explorer",header:{}}),Er(Sa,ka.activeQueries,{title:"Active Queries",header:{}}),Er(Sa,ka.icons,{title:"Icons",header:{}}),Sa),Na=ka,Pa=function(e){var t=e.activeMenu,n=e.label,r=e.value,o=e.color;return Kr(wr,{className:ci()({"vm-header-nav-item":!0,"vm-header-nav-item_active":t===r}),style:{color:o},to:r,children:n})},Ma=function(e){var t=e.activeMenu,n=e.label,r=e.color,o=e.background,i=e.submenu,a=e.direction,c=zn().pathname,l=$t(re(null),2),u=l[0],s=l[1],f=ce(null),d=Gi(!1),p=d.value,h=d.setFalse,v=d.setTrue,m=function(){u&&clearTimeout(u);var e=setTimeout(h,300);s(e)};return ie((function(){h()}),[c]),"column"===a?Kr(g,{children:i.map((function(e){return Kr(Pa,{activeMenu:t,value:e.value||"",label:e.label||""},e.value)}))}):Kr("div",{className:ci()({"vm-header-nav-item":!0,"vm-header-nav-item_sub":!0,"vm-header-nav-item_open":p,"vm-header-nav-item_active":i.find((function(e){return e.value===t}))}),style:{color:r},onMouseEnter:function(){v(),u&&clearTimeout(u)},onMouseLeave:m,ref:f,children:[n,Kr(Go,{}),Kr(Ki,{open:p,placement:"bottom-left",offset:{top:12,left:0},onClose:h,buttonRef:f,children:Kr("div",{className:"vm-header-nav-item-submenu",style:{background:o},onMouseLeave:m,onMouseEnter:function(){u&&clearTimeout(u)},children:i.map((function(e){return Kr(Pa,{activeMenu:t,value:e.value||"",label:e.label||"",color:r},e.value)}))})})]})},Ta=[{label:Oa[Na.logs].title,value:Na.home}],ja=(Oa[Na.home].title,Oa[Na.metrics].title,Oa[Na.cardinality].title,Oa[Na.topQueries].title,Oa[Na.activeQueries].title,Oa[Na.trace].title,Oa[Na.withTemplate].title,Oa[Na.relabel].title,function(e){var t=e.color,n=e.background,r=e.direction,o=Nr(),i=fe(Li).state.dashboardsSettings,a=zn().pathname,c=$t(re(a),2),l=c[0],u=c[1],s=ue((function(){return Ta}),[o,i]);return ie((function(){u(a)}),[a]),Kr("nav",{className:ci()(Er({"vm-header-nav":!0},"vm-header-nav_".concat(r),r)),children:s.map((function(e){return e.submenu?Kr(Ma,{activeMenu:l,label:e.label||"",submenu:e.submenu,color:t,background:n,direction:r},e.label):Kr(Pa,{activeMenu:l,value:e.value||"",label:e.label||"",color:t},e.value)}))})}),La=function(e){var t=e.title,n=e.children,r=e.onClose,o=e.className,i=e.isOpen,a=void 0===i||i,c=Oi().isMobile,l=Vn(),u=zn(),s=se((function(e){a&&"Escape"===e.key&&r()}),[a]),f=function(e){e.stopPropagation()},d=se((function(){a&&(l(u,{replace:!0}),r())}),[a,u,r]);return ie((function(){if(a)return document.body.style.overflow="hidden",function(){document.body.style.overflow="auto"}}),[a]),pi("popstate",d),pi("keyup",s),St.createPortal(Kr("div",{className:ci()(Er({"vm-modal":!0,"vm-modal_mobile":c},"".concat(o),o)),onMouseDown:r,children:Kr("div",{className:"vm-modal-content",children:[Kr("div",{className:"vm-modal-content-header",onMouseDown:f,children:[t&&Kr("div",{className:"vm-modal-content-header__title",children:t}),Kr("div",{className:"vm-modal-header__close",children:Kr(Vi,{variant:"text",size:"small",onClick:r,ariaLabel:"close",children:Kr(Ho,{})})})]}),Kr("div",{className:"vm-modal-content-body",onMouseDown:f,children:n})]})}),document.body)},Da=Kr("code",{children:Ci()?"Cmd":"Ctrl"}),$a=[{title:"Zoom in",description:Kr(g,{children:["To zoom in, hold down the ",Da," + ",Kr("code",{children:"scroll up"}),", or press the ",Kr("code",{children:"+"}),". Also, you can zoom in on a range on the graph by holding down your mouse button and selecting the range."]})},{title:"Zoom out",description:Kr(g,{children:["To zoom out, hold down the ",Da," + ",Kr("code",{children:"scroll down"}),", or press the ",Kr("code",{children:"-"}),"."]})},{title:"Move horizontal axis",description:Kr(g,{children:["To move the graph, hold down the ",Da," + ",Kr("code",{children:"drag"})," the graph to the right or left."]})},{title:"Fixing a tooltip",description:Kr(g,{children:["To fix the tooltip, ",Kr("code",{children:"click"})," mouse when it's open. Then, you can drag the fixed tooltip by ",Kr("code",{children:"clicking"})," and ",Kr("code",{children:"dragging"})," on the ",Kr(ti,{})," icon."]})},{title:"Set a custom range for the vertical axis",description:Kr(g,{children:["To set a custom range for the vertical axis, click on the ",Kr(Uo,{})," icon located in the upper right corner of the graph, activate the toggle, and set the values."]})}],Ia=[{title:"Show/hide a legend item",description:Kr(g,{children:[Kr("code",{children:"click"})," on a legend item to isolate it on the graph.",Da," + ",Kr("code",{children:"click"})," on a legend item to remove it from the graph. To revert to the previous state, click again."]})},{title:"Copy label key-value pairs",description:Kr(g,{children:[Kr("code",{children:"click"})," on a label key-value pair to save it to the clipboard."]})},{title:"Collapse/Expand the legend group",description:Kr(g,{children:[Kr("code",{children:"click"})," on the group name (e.g. ",Kr("b",{children:'Query 1: {__name__!=""}'}),") to collapse or expand the legend."]})}],Ra=($a.concat(Ia),Ci(),Ci(),function(e){var t=e.open;return Kr("button",{className:ci()({"vm-menu-burger":!0,"vm-menu-burger_opened":t}),"aria-label":"menu",children:Kr("span",{})})}),Fa=function(e){var t=e.background,n=e.color,r=zn().pathname,o=Oi().isMobile,i=ce(null),a=Gi(!1),c=a.value,l=a.toggle,u=a.setFalse;return ie(u,[r]),qi(i,u),Kr("div",{className:"vm-header-sidebar",ref:i,children:[Kr("div",{className:ci()({"vm-header-sidebar-button":!0,"vm-header-sidebar-button_open":c}),onClick:l,children:Kr(Ra,{open:c})}),Kr("div",{className:ci()({"vm-header-sidebar-menu":!0,"vm-header-sidebar-menu_open":c}),children:[Kr("div",{children:Kr(ja,{color:n,background:t,direction:"column"})}),Kr("div",{className:"vm-header-sidebar-menu-settings",children:!o&&!1})]})]})},Ua=["controlsComponent","isMobile"],Ha=function(e){var t=e.controlsComponent,n=e.isMobile,r=li(e,Ua),o=Nr(),i=zn().pathname,a=function(){var e=Or().useTenantID,t=Nr(),n=Qr().serverUrl,r=$t(re(!1),2),o=r[0],i=r[1],a=$t(re(),2),c=a[0],l=a[1],u=$t(re([]),2),s=u[0],f=u[1],d=ue((function(){return"".concat(n.replace(/^(.+)(\/select.+)/,"$1"),"/admin/tenants")}),[n]),p=ue((function(){return!!Mr(n)}),[n]),h=t?!e:!p;return ie((function(){if(!h){var e=function(){var e=zi(Hi().mark((function e(){var t,n,r;return Hi().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i(!0),e.prev=1,e.next=4,fetch(d);case 4:return t=e.sent,e.next=7,t.json();case 7:n=e.sent,r=n.data||[],f(r.sort((function(e,t){return e.localeCompare(t)}))),t.ok?l(void 0):l("".concat(n.errorType,"\r\n").concat(null===n||void 0===n?void 0:n.error)),e.next=16;break;case 13:e.prev=13,e.t0=e.catch(1),e.t0 instanceof Error&&l("".concat(e.t0.name,": ").concat(e.t0.message));case 16:i(!1);case 17:case"end":return e.stop()}}),e,null,[[1,13]])})));return function(){return e.apply(this,arguments)}}();e().catch(console.error)}}),[d]),{accountIds:s,isLoading:o,error:c}}(),c=a.accountIds,l=Gi(!1),u=l.value,s=l.toggle,f=l.setFalse,d=ue((function(){return(Oa[i]||{}).header||{}}),[i]),p=Kr(t,Cr(Cr({},r),{},{isMobile:n,accountIds:c,headerSetup:d}));return n?Kr(g,{children:[Kr("div",{children:Kr(Vi,{className:ci()({"vm-header-button":!o}),startIcon:Kr(oi,{}),onClick:s,ariaLabel:"controls"})}),Kr(La,{title:"Controls",onClose:f,isOpen:u,className:ci()({"vm-header-controls-modal":!0,"vm-header-controls-modal_open":u}),children:p})]}):p},Ba=function(e){var t=e.controlsComponent,n="true",r=Oi().isMobile,o=ue((function(){return window.innerWidth<1e3}),[hi()]),i=Qr().isDarkTheme,a=Nr(),c=ue((function(){return zr(i?"color-background-block":"color-primary")}),[i]),l=ue((function(){var e=Or().headerStyles,t=void 0===e?{}:e,n=t.background,r=void 0===n?a?"#FFF":c:n,o=t.color;return{background:r,color:void 0===o?a?c:"#FFF":o}}),[c]),u=l.background,s=l.color,f=Vn(),d=function(){f({pathname:Na.home}),window.location.reload()};return Kr("header",{className:ci()({"vm-header":!0,"vm-header_app":a,"vm-header_dark":i,"vm-header_sidebar":o,"vm-header_mobile":r}),style:{background:u,color:s},children:[o?Kr(Fa,{background:u,color:s}):Kr(g,{children:[!a&&Kr("div",{className:ci()({"vm-header-logo":!0,"vm-header-logo_logs":n}),onClick:d,style:{color:s},children:Kr(n?Ro:Io,{})}),Kr(ja,{color:s,background:u})]}),o&&Kr("div",{className:ci()({"vm-header-logo":!0,"vm-header-logo_mobile":!0,"vm-header-logo_logs":n}),onClick:d,style:{color:s},children:Kr(n?Ro:Io,{})}),Kr(Ha,{controlsComponent:t,displaySidebar:o,isMobile:r})]})},za=function(){var e=Oi().isMobile,t="2019-".concat(Et()().format("YYYY"));return Kr("footer",{className:"vm-footer",children:[Kr("a",{className:"vm-link vm-footer__website",target:"_blank",href:"https://victoriametrics.com/",rel:"me noreferrer",children:[Kr(Fo,{}),"victoriametrics.com"]}),Kr("a",{className:"vm-link vm-footer__link",target:"_blank",href:"https://docs.victoriametrics.com/MetricsQL.html",rel:"help noreferrer",children:[Kr(Qo,{}),"MetricsQL"]}),Kr("a",{className:"vm-link vm-footer__link",target:"_blank",href:"https://docs.victoriametrics.com/#vmui",rel:"help noreferrer",children:[Kr(ni,{}),e?"Docs":"Documentation"]}),Kr("a",{className:"vm-link vm-footer__link",target:"_blank",href:"https://github.com/VictoriaMetrics/VictoriaMetrics/issues/new/choose",rel:"noreferrer",children:[Kr(ri,{}),e?"New issue":"Create an issue"]}),Kr("div",{className:"vm-footer__copyright",children:["\xa9 ",t," VictoriaMetrics"]})]})},Wa=function(e){var t=e.serverUrl,n=e.stateServerUrl,r=e.onChange,o=e.onEnter,i=$t(re(""),2),a=i[0],c=i[1];return ie((function(){n||c(Hr.emptyServer),function(e){var t;try{t=new URL(e)}catch(_){return!1}return"http:"===t.protocol||"https:"===t.protocol}(n)||c(Hr.validServer)}),[n]),Kr(ya,{autofocus:!0,label:"Server URL",value:t,error:a,onChange:function(e){r(e||""),c("")},onEnter:o,inputmode:"url"})},Va=[{label:"Graph",type:"chart"},{label:"JSON",type:"code"},{label:"Table",type:"table"}],Ya=function(e){var t=e.limits,n=e.onChange,r=e.onEnter,o=Oi().isMobile,i=$t(re({table:"",chart:"",code:""}),2),a=i[0],c=i[1],l=function(e){return function(r){!function(e,r){var o=e||"";c((function(e){return Cr(Cr({},e),{},Er({},r,+o<0?Hr.positiveNumber:""))})),n(Cr(Cr({},t),{},Er({},r,o||1/0)))}(r,e)}};return Kr("div",{className:"vm-limits-configurator",children:[Kr("div",{className:"vm-server-configurator__title",children:["Series limits by tabs",Kr(Zi,{title:"Set to 0 to disable the limit",children:Kr(Vi,{variant:"text",color:"primary",size:"small",startIcon:Kr(zo,{})})}),Kr("div",{className:"vm-limits-configurator-title__reset",children:Kr(Vi,{variant:"text",color:"primary",size:"small",startIcon:Kr(Bo,{}),onClick:function(){n($r)},children:"Reset limits"})})]}),Kr("div",{className:ci()({"vm-limits-configurator__inputs":!0,"vm-limits-configurator__inputs_mobile":o}),children:Va.map((function(e){return Kr("div",{children:Kr(ya,{label:e.label,value:t[e.type],error:a[e.type],onChange:l(e.type),onEnter:r,type:"number"})},e.type)}))})]})},Za=function(e){var t=e.timezoneState,n=e.onChange,r=Oi().isMobile,o=go(),i=$t(re(""),2),a=i[0],c=i[1],l=ce(null),s=Gi(!1),f=s.value,d=s.toggle,p=s.setFalse,h=ue((function(){if(!a)return o;try{return go(a)}catch(u){return{}}}),[a,o]),v=ue((function(){return Object.keys(h)}),[h]),m=ue((function(){return{region:Et().tz.guess(),utc:_o(Et().tz.guess())}}),[]),y=ue((function(){return{region:t,utc:_o(t)}}),[t]),_=function(e){return function(){!function(e){n(e.region),c(""),p()}(e)}};return Kr("div",{className:"vm-timezones",children:[Kr("div",{className:"vm-server-configurator__title",children:"Time zone"}),Kr("div",{className:"vm-timezones-item vm-timezones-item_selected",onClick:d,ref:l,children:[Kr("div",{className:"vm-timezones-item__title",children:y.region}),Kr("div",{className:"vm-timezones-item__utc",children:y.utc}),Kr("div",{className:ci()({"vm-timezones-item__icon":!0,"vm-timezones-item__icon_open":f}),children:Kr(Go,{})})]}),Kr(Ki,{open:f,buttonRef:l,placement:"bottom-left",onClose:p,fullWidth:!0,title:r?"Time zone":void 0,children:Kr("div",{className:ci()({"vm-timezones-list":!0,"vm-timezones-list_mobile":r}),children:[Kr("div",{className:"vm-timezones-list-header",children:[Kr("div",{className:"vm-timezones-list-header__search",children:Kr(ya,{autofocus:!0,label:"Search",value:a,onChange:function(e){c(e)}})}),Kr("div",{className:"vm-timezones-item vm-timezones-list-group-options__item",onClick:_(m),children:[Kr("div",{className:"vm-timezones-item__title",children:["Browser Time (",m.region,")"]}),Kr("div",{className:"vm-timezones-item__utc",children:m.utc})]})]}),v.map((function(e){return Kr("div",{className:"vm-timezones-list-group",children:Kr(ua,{defaultExpanded:!0,title:Kr("div",{className:"vm-timezones-list-group__title",children:e}),children:Kr("div",{className:"vm-timezones-list-group-options",children:h[e]&&h[e].map((function(e){return Kr("div",{className:"vm-timezones-item vm-timezones-list-group-options__item",onClick:_(e),children:[Kr("div",{className:"vm-timezones-item__title",children:e.region}),Kr("div",{className:"vm-timezones-item__utc",children:e.utc})]},e.search)}))})})},e)}))]})})]})},Ga=function(e){var t=e.options,n=e.value,r=e.label,o=e.onChange,i=ce(null),a=$t(re({width:"0px",left:"0px",borderRadius:"0px"}),2),c=a[0],l=a[1],u=function(e){return function(){o(e)}};return ie((function(){if(i.current){var e=t.findIndex((function(e){return e.value===n})),r=i.current.getBoundingClientRect().width,o=e*r,a="0";0===e&&(a="16px 0 0 16px"),e===t.length-1&&(a="10px",o-=1,a="0 16px 16px 0"),0!==e&&e!==t.length-1&&(r+=1,o-=1),l({width:"".concat(r,"px"),left:"".concat(o,"px"),borderRadius:a})}else l({width:"0px",left:"0px",borderRadius:"0px"})}),[i,n,t]),Kr("div",{className:"vm-toggles",children:[r&&Kr("label",{className:"vm-toggles__label",children:r}),Kr("div",{className:"vm-toggles-group",style:{gridTemplateColumns:"repeat(".concat(t.length,", 1fr)")},children:[c.borderRadius&&Kr("div",{className:"vm-toggles-group__highlight",style:c}),t.map((function(e,t){return Kr("div",{className:ci()({"vm-toggles-group-item":!0,"vm-toggles-group-item_first":0===t,"vm-toggles-group-item_active":e.value===n,"vm-toggles-group-item_icon":e.icon&&e.title}),onClick:u(e.value),ref:e.value===n?i:null,children:[e.icon,e.title]},e.value)}))]})]})},qa=Object.values(Br).map((function(e){return{title:e,value:e}})),Ka=function(e){var t=e.theme,n=e.onChange,r=Oi().isMobile;return Kr("div",{className:ci()({"vm-theme-control":!0,"vm-theme-control_mobile":r}),children:[Kr("div",{className:"vm-server-configurator__title",children:"Theme preferences"}),Kr("div",{className:"vm-theme-control__toggle",children:Kr(Ga,{options:qa,value:t,onChange:function(e){n(e)}})},"".concat(r))]})},Ja="Settings",Qa=function(){var e=Oi().isMobile,t=Nr(),n=Qr(),r=n.serverUrl,o=n.theme,i=Mo().timezone,a=fe(Ai).state.seriesLimits,c=Xr(),l=fe(Po).dispatch,u=fe(Ai).dispatch,s=$t(re(r),2),f=s[0],d=s[1],p=$t(re(a),2),h=p[0],v=p[1],m=$t(re(i),2),y=m[0],_=m[1],b=Gi(!1),w=b.value,A=b.setTrue,S=b.setFalse,x=function(){S(),d(r),v(a),_(i)},E=function(){var e=Mr(f);""!==e&&c({type:"SET_TENANT_ID",payload:e}),c({type:"SET_SERVER",payload:f}),l({type:"SET_TIMEZONE",payload:y}),u({type:"SET_SERIES_LIMITS",payload:h}),S()};ie((function(){r!==f&&d(r)}),[r]);var k=[{show:!t&&!1,component:Kr(Wa,{stateServerUrl:r,serverUrl:f,onChange:d,onEnter:E})},{show:!1,component:Kr(Ya,{limits:h,onChange:v,onEnter:E})},{show:!0,component:Kr(Za,{timezoneState:y,onChange:_})},{show:!t,component:Kr(Ka,{theme:o,onChange:function(e){c({type:"SET_THEME",payload:e})}})}].filter((function(e){return e.show}));return Kr(g,{children:[e?Kr("div",{className:"vm-mobile-option",onClick:A,children:[Kr("span",{className:"vm-mobile-option__icon",children:Kr(Uo,{})}),Kr("div",{className:"vm-mobile-option-text",children:Kr("span",{className:"vm-mobile-option-text__label",children:Ja})}),Kr("span",{className:"vm-mobile-option__arrow",children:Kr(Zo,{})})]}):Kr(Zi,{title:Ja,children:Kr(Vi,{className:ci()({"vm-header-button":!t}),variant:"contained",color:"primary",startIcon:Kr(Uo,{}),onClick:A,ariaLabel:"settings"})}),w&&Kr(La,{title:Ja,onClose:x,children:Kr("div",{className:ci()({"vm-server-configurator":!0,"vm-server-configurator_mobile":e}),children:[k.map((function(e,t){return Kr("div",{className:"vm-server-configurator__input",children:e.component},t)})),Kr("div",{className:"vm-server-configurator-footer",children:[Kr(Vi,{color:"error",variant:"outlined",onClick:x,children:"Cancel"}),Kr(Vi,{color:"primary",variant:"contained",onClick:E,children:"Apply"})]})]})})]})},Xa=function(e){var t=e.isMobile;return Kr("div",{className:ci()({"vm-header-controls":!0,"vm-header-controls_mobile":t}),children:Kr(Qa,{})})},ec=function(){var e=Nr(),t=Oi().isMobile;return ie((function(){var e,t="vmui for VictoriaLogs",n=null===(e=Oa[Na.logs])||void 0===e?void 0:e.title;document.title=n?"".concat(n," - ").concat(t):t}),[zn().pathname]),Kr("section",{className:"vm-container",children:[Kr(Ba,{controlsComponent:Xa}),Kr("div",{className:ci()({"vm-container-body":!0,"vm-container-body_mobile":t,"vm-container-body_app":e}),children:Kr(ar,{})}),!e&&Kr(za,{})]})},tc=function(){var e=$t(re(!1),2),t=e[0],n=e[1];return Kr(g,{children:Kr(yr,{children:Kr(Di,{children:Kr(g,{children:[Kr(Ui,{onLoaded:n}),t&&Kr(ur,{children:Kr(cr,{path:"/",element:Kr(ec,{}),children:Kr(cr,{path:"/",element:Kr(Ea,{})})})})]})})})})},nc=function(e){e&&n.e(522).then(n.bind(n,522)).then((function(t){var n=t.getCLS,r=t.getFID,o=t.getFCP,i=t.getLCP,a=t.getTTFB;n(e),r(e),o(e),i(e),a(e)}))},rc=document.getElementById("root");rc&&Ke(Kr(tc,{}),rc),nc()}()}(); \ No newline at end of file diff --git a/app/vlselect/vmui/static/media/Lato-Bold.32360ba4b57802daa4d6.ttf b/app/vlselect/vmui/static/media/Lato-Bold.32360ba4b57802daa4d6.ttf deleted file mode 100644 index 59c46f128..000000000 Binary files a/app/vlselect/vmui/static/media/Lato-Bold.32360ba4b57802daa4d6.ttf and /dev/null differ diff --git a/app/vlselect/vmui/static/media/Lato-Regular.d714fec1633b69a9c2e9.ttf b/app/vlselect/vmui/static/media/Lato-Regular.d714fec1633b69a9c2e9.ttf deleted file mode 100644 index 64ac535cb..000000000 Binary files a/app/vlselect/vmui/static/media/Lato-Regular.d714fec1633b69a9c2e9.ttf and /dev/null differ diff --git a/app/vlselect/vmui/static/media/MetricsQL.957b90ab4cb4852eec26.md b/app/vlselect/vmui/static/media/MetricsQL.957b90ab4cb4852eec26.md new file mode 100644 index 000000000..81df16782 --- /dev/null +++ b/app/vlselect/vmui/static/media/MetricsQL.957b90ab4cb4852eec26.md @@ -0,0 +1,2014 @@ +--- +sort: 14 +weight: 14 +title: MetricsQL +menu: + docs: + parent: "victoriametrics" + weight: 14 +aliases: +- /ExtendedPromQL.html +- /MetricsQL.html +--- + +# MetricsQL + +[VictoriaMetrics](https://github.com/VictoriaMetrics/VictoriaMetrics) implements MetricsQL - +query language inspired by [PromQL](https://prometheus.io/docs/prometheus/latest/querying/basics/). +MetricsQL is backwards-compatible with PromQL, so Grafana dashboards backed by Prometheus datasource should work +the same after switching from Prometheus to VictoriaMetrics. +However, there are some [intentional differences](https://medium.com/@romanhavronenko/victoriametrics-promql-compliance-d4318203f51e) between these two languages. + +[Standalone MetricsQL package](https://godoc.org/github.com/VictoriaMetrics/metricsql) can be used for parsing MetricsQL in external apps. + +If you are unfamiliar with PromQL, then it is suggested reading [this tutorial for beginners](https://medium.com/@valyala/promql-tutorial-for-beginners-9ab455142085). + +The following functionality is implemented differently in MetricsQL compared to PromQL. This improves user experience: + +* MetricsQL takes into account the previous point before the window in square brackets for range functions such as [rate](#rate) and [increase](#increase). + This allows returning the exact results users expect for `increase(metric[$__interval])` queries instead of incomplete results Prometheus returns for such queries. +* MetricsQL doesn't extrapolate range function results. This addresses [this issue from Prometheus](https://github.com/prometheus/prometheus/issues/3746). + See technical details about VictoriaMetrics and Prometheus calculations for [rate](#rate) + and [increase](#increase) [in this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1215#issuecomment-850305711). +* MetricsQL returns the expected non-empty responses for [rate](#rate) with `step` values smaller than scrape interval. + This addresses [this issue from Grafana](https://github.com/grafana/grafana/issues/11451). + See also [this blog post](https://www.percona.com/blog/2020/02/28/better-prometheus-rate-function-with-victoriametrics/). +* MetricsQL treats `scalar` type the same as `instant vector` without labels, since subtle differences between these types usually confuse users. + See [the corresponding Prometheus docs](https://prometheus.io/docs/prometheus/latest/querying/basics/#expression-language-data-types) for details. +* MetricsQL removes all the `NaN` values from the output, so some queries like `(-1)^0.5` return empty results in VictoriaMetrics, + while returning a series of `NaN` values in Prometheus. Note that Grafana doesn't draw any lines or dots for `NaN` values, + so the end result looks the same for both VictoriaMetrics and Prometheus. +* MetricsQL keeps metric names after applying functions, which don't change the meaning of the original time series. + For example, [min_over_time(foo)](#min_over_time) or [round(foo)](#round) leaves `foo` metric name in the result. + See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/674) for details. + +Read more about the differences between PromQL and MetricsQL in [this article](https://medium.com/@romanhavronenko/victoriametrics-promql-compliance-d4318203f51e). + +Other PromQL functionality should work the same in MetricsQL. +[File an issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues) if you notice discrepancies between PromQL and MetricsQL results other than mentioned above. + +## MetricsQL features + +MetricsQL implements [PromQL](https://medium.com/@valyala/promql-tutorial-for-beginners-9ab455142085) +and provides additional functionality mentioned below, which is aimed towards solving practical cases. +Feel free [filing a feature request](https://github.com/VictoriaMetrics/VictoriaMetrics/issues) if you think MetricsQL misses certain useful functionality. + +This functionality can be evaluated at [VictoriaMetrics playground](https://play.victoriametrics.com/select/accounting/1/6a716b0f-38bc-4856-90ce-448fd713e3fe/prometheus/graph/) +or at your own [VictoriaMetrics instance](https://docs.victoriametrics.com/#how-to-start-victoriametrics). + +The list of MetricsQL features on top of PromQL: + +* Graphite-compatible filters can be passed via `{__graphite__="foo.*.bar"}` syntax. + See [these docs](https://docs.victoriametrics.com/#selecting-graphite-metrics). + VictoriaMetrics also can be used as Graphite datasource in Grafana. + See [these docs](https://docs.victoriametrics.com/#graphite-api-usage) for details. + See also [label_graphite_group](#label_graphite_group) function, which can be used for extracting the given groups from Graphite metric name. +* Lookbehind window in square brackets may be omitted. VictoriaMetrics automatically selects the lookbehind window + depending on the current step used for building the graph (e.g. `step` query arg passed to [/api/v1/query_range](https://docs.victoriametrics.com/keyConcepts.html#range-query)). + For instance, the following query is valid in VictoriaMetrics: `rate(node_network_receive_bytes_total)`. + It is equivalent to `rate(node_network_receive_bytes_total[$__interval])` when used in Grafana. +* Numeric values can contain `_` delimiters for better readability. For example, `1_234_567_890` can be used in queries instead of `1234567890`. +* [Series selectors](https://docs.victoriametrics.com/keyConcepts.html#filtering) accept multiple `or` filters. For example, `{env="prod",job="a" or env="dev",job="b"}` + selects series with either `{env="prod",job="a"}` or `{env="dev",job="b"}` labels. + See [these docs](https://docs.victoriametrics.com/keyConcepts.html#filtering-by-multiple-or-filters) for details. +* Support for `group_left(*)` and `group_right(*)` for copying all the labels from time series on the `one` side + of [many-to-one operations](https://prometheus.io/docs/prometheus/latest/querying/operators/#many-to-one-and-one-to-many-vector-matches). + The copied label names may clash with the existing label names, so MetricsQL provides an ability to add prefix to the copied metric names + via `group_left(*) prefix "..."` syntax. + For example, the following query copies all the `namespace`-related labels from `kube_namespace_labels` to `kube_pod_info` series, + while adding `ns_` prefix to the copied labels: `kube_pod_info * on(namespace) group_left(*) prefix "ns_" kube_namespace_labels`. + Labels from the `on()` list aren't copied. +* [Aggregate functions](#aggregate-functions) accept arbitrary number of args. + For example, `avg(q1, q2, q3)` would return the average values for every point across time series returned by `q1`, `q2` and `q3`. +* [@ modifier](https://prometheus.io/docs/prometheus/latest/querying/basics/#modifier) can be put anywhere in the query. + For example, `sum(foo) @ end()` calculates `sum(foo)` at the `end` timestamp of the selected time range `[start ... end]`. +* Arbitrary subexpression can be used as [@ modifier](https://prometheus.io/docs/prometheus/latest/querying/basics/#modifier). + For example, `foo @ (end() - 1h)` calculates `foo` at the `end - 1 hour` timestamp on the selected time range `[start ... end]`. +* [offset](https://prometheus.io/docs/prometheus/latest/querying/basics/#offset-modifier), lookbehind window in square brackets + and `step` value for [subquery](#subqueries) may refer to the current step aka `$__interval` value from Grafana with `[Ni]` syntax. + For instance, `rate(metric[10i] offset 5i)` would return per-second rate over a range covering 10 previous steps with the offset of 5 steps. +* [offset](https://prometheus.io/docs/prometheus/latest/querying/basics/#offset-modifier) may be put anywhere in the query. For instance, `sum(foo) offset 24h`. +* Lookbehind window in square brackets and [offset](https://prometheus.io/docs/prometheus/latest/querying/basics/#offset-modifier) may be fractional. + For instance, `rate(node_network_receive_bytes_total[1.5m] offset 0.5d)`. +* The duration suffix is optional. The duration is in seconds if the suffix is missing. + For example, `rate(m[300] offset 1800)` is equivalent to `rate(m[5m]) offset 30m`. +* The duration can be placed anywhere in the query. For example, `sum_over_time(m[1h]) / 1h` is equivalent to `sum_over_time(m[1h]) / 3600`. +* Numeric values can have `K`, `Ki`, `M`, `Mi`, `G`, `Gi`, `T` and `Ti` suffixes. For example, `8K` is equivalent to `8000`, while `1.2Mi` is equivalent to `1.2*1024*1024`. +* Trailing commas on all the lists are allowed - label filters, function args and with expressions. + For instance, the following queries are valid: `m{foo="bar",}`, `f(a, b,)`, `WITH (x=y,) x`. + This simplifies maintenance of multi-line queries. +* Metric names and label names may contain any unicode letter. For example `температура{город="Киев"}` is a value MetricsQL expression. +* Metric names and labels names may contain escaped chars. For example, `foo\-bar{baz\=aa="b"}` is valid expression. + It returns time series with name `foo-bar` containing label `baz=aa` with value `b`. + Additionally, the following escape sequences are supported: + - `\xXX`, where `XX` is hexadecimal representation of the escaped ascii char. + - `\uXXXX`, where `XXXX` is a hexadecimal representation of the escaped unicode char. +* Aggregate functions support optional `limit N` suffix in order to limit the number of output series. + For example, `sum(x) by (y) limit 3` limits the number of output time series after the aggregation to 3. + All the other time series are dropped. +* [histogram_quantile](#histogram_quantile) accepts optional third arg - `boundsLabel`. + In this case it returns `lower` and `upper` bounds for the estimated percentile. + See [this issue for details](https://github.com/prometheus/prometheus/issues/5706). +* `default` binary operator. `q1 default q2` fills gaps in `q1` with the corresponding values from `q2`. +* `if` binary operator. `q1 if q2` removes values from `q1` for missing values from `q2`. +* `ifnot` binary operator. `q1 ifnot q2` removes values from `q1` for existing values from `q2`. +* `WITH` templates. This feature simplifies writing and managing complex queries. + Go to [WITH templates playground](https://play.victoriametrics.com/select/accounting/1/6a716b0f-38bc-4856-90ce-448fd713e3fe/expand-with-exprs) and try it. +* String literals may be concatenated. This is useful with `WITH` templates: + `WITH (commonPrefix="long_metric_prefix_") {__name__=commonPrefix+"suffix1"} / {__name__=commonPrefix+"suffix2"}`. +* `keep_metric_names` modifier can be applied to all the [rollup functions](#rollup-functions), [transform functions](#transform-functions) and [binary operators](https://prometheus.io/docs/prometheus/latest/querying/operators/#binary-operators). + This modifier prevents from dropping metric names in function results. See [these docs](#keep_metric_names). + +## keep_metric_names + +By default, metric names are dropped after applying functions or [binary operators](https://prometheus.io/docs/prometheus/latest/querying/operators/#binary-operators), +since they may change the meaning of the original time series. +This may result in `duplicate time series` error when the function is applied to multiple time series with different names. +This error can be fixed by applying `keep_metric_names` modifier to the function or binary operator. + +For example: +- `rate({__name__=~"foo|bar"}) keep_metric_names` leaves `foo` and `bar` metric names in the returned time series. +- `({__name__=~"foo|bar"} / 10) keep_metric_names` leaves `foo` and `bar` metric names in the returned time series. + +## MetricsQL functions + +If you are unfamiliar with PromQL, then please read [this tutorial](https://medium.com/@valyala/promql-tutorial-for-beginners-9ab455142085) at first. + +MetricsQL provides the following functions: + +* [Rollup functions](#rollup-functions) +* [Transform functions](#transform-functions) +* [Label manipulation functions](#label-manipulation-functions) +* [Aggregate functions](#aggregate-functions) + +### Rollup functions + +**Rollup functions** (aka range functions or window functions) calculate rollups over **raw samples** +on the given lookbehind window for the [selected time series](https://docs.victoriametrics.com/keyConcepts.html#filtering). +For example, `avg_over_time(temperature[24h])` calculates the average temperature over raw samples for the last 24 hours. + +Additional details: + +* If rollup functions are used for building graphs in Grafana, then the rollup is calculated independently per each point on the graph. + For example, every point for `avg_over_time(temperature[24h])` graph shows the average temperature for the last 24 hours ending at this point. + The interval between points is set as `step` query arg passed by Grafana to [/api/v1/query_range](https://docs.victoriametrics.com/keyConcepts.html#range-query). +* If the given [series selector](https://docs.victoriametrics.com/keyConcepts.html#filtering) returns multiple time series, + then rollups are calculated individually per each returned series. +* If lookbehind window in square brackets is missing, then MetricsQL automatically sets the lookbehind window + to the interval between points on the graph (aka `step` query arg at [/api/v1/query_range](https://docs.victoriametrics.com/keyConcepts.html#range-query), + `$__interval` value from Grafana or `1i` duration in MetricsQL). + For example, `rate(http_requests_total)` is equivalent to `rate(http_requests_total[$__interval])` in Grafana. + It is also equivalent to `rate(http_requests_total[1i])`. +* Every [series selector](https://docs.victoriametrics.com/keyConcepts.html#filtering) in MetricsQL must be wrapped into a rollup function. + Otherwise, it is automatically wrapped into [default_rollup](#default_rollup). For example, `foo{bar="baz"}` + is automatically converted to `default_rollup(foo{bar="baz"}[1i])` before performing the calculations. +* If something other than [series selector](https://docs.victoriametrics.com/keyConcepts.html#filtering) is passed to rollup function, + then the inner arg is automatically converted to a [subquery](#subqueries). +* All the rollup functions accept optional `keep_metric_names` modifier. If it is set, then the function keeps metric names in results. + See [these docs](#keep_metric_names). + +See also [implicit query conversions](#implicit-query-conversions). + +The list of supported rollup functions: + +#### absent_over_time + +`absent_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which returns 1 +if the given lookbehind window `d` doesn't contain raw samples. Otherwise, it returns an empty result. + +This function is supported by PromQL. See also [present_over_time](#present_over_time). + +#### aggr_over_time + +`aggr_over_time(("rollup_func1", "rollup_func2", ...), series_selector[d])` is a [rollup function](#rollup-functions), +which calculates all the listed `rollup_func*` for raw samples on the given lookbehind window `d`. +The calculations are performed individually per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +`rollup_func*` can contain any rollup function. For instance, `aggr_over_time(("min_over_time", "max_over_time", "rate"), m[d])` +would calculate [min_over_time](#min_over_time), [max_over_time](#max_over_time) and [rate](#rate) for `m[d]`. + +#### ascent_over_time + +`ascent_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates +ascent of raw sample values on the given lookbehind window `d`. The calculations are performed individually +per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +This function is useful for tracking height gains in GPS tracking. Metric names are stripped from the resulting rollups. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [descent_over_time](#descent_over_time). + +#### avg_over_time + +`avg_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the average value +over raw samples on the given lookbehind window `d` per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +This function is supported by PromQL. See also [median_over_time](#median_over_time). + +#### changes + +`changes(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the number of times +the raw samples changed on the given lookbehind window `d` per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Unlike `changes()` in Prometheus it takes into account the change from the last sample before the given lookbehind window `d`. +See [this article](https://medium.com/@romanhavronenko/victoriametrics-promql-compliance-d4318203f51e) for details. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [changes_prometheus](#changes_prometheus). + +#### changes_prometheus + +`changes_prometheus(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the number of times +the raw samples changed on the given lookbehind window `d` per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +It doesn't take into account the change from the last sample before the given lookbehind window `d` in the same way as Prometheus does. +See [this article](https://medium.com/@romanhavronenko/victoriametrics-promql-compliance-d4318203f51e) for details. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [changes](#changes). + +#### count_eq_over_time + +`count_eq_over_time(series_selector[d], eq)` is a [rollup function](#rollup-functions), which calculates the number of raw samples +on the given lookbehind window `d`, which are equal to `eq`. It is calculated independently per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [count_over_time](#count_over_time). + +#### count_gt_over_time + +`count_gt_over_time(series_selector[d], gt)` is a [rollup function](#rollup-functions), which calculates the number of raw samples +on the given lookbehind window `d`, which are bigger than `gt`. It is calculated independently per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [count_over_time](#count_over_time). + +#### count_le_over_time + +`count_le_over_time(series_selector[d], le)` is a [rollup function](#rollup-functions), which calculates the number of raw samples +on the given lookbehind window `d`, which don't exceed `le`. It is calculated independently per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [count_over_time](#count_over_time). + +#### count_ne_over_time + +`count_ne_over_time(series_selector[d], ne)` is a [rollup function](#rollup-functions), which calculates the number of raw samples +on the given lookbehind window `d`, which aren't equal to `ne`. It is calculated independently per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [count_over_time](#count_over_time). + +#### count_over_time + +`count_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the number of raw samples +on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [count_le_over_time](#count_le_over_time), [count_gt_over_time](#count_gt_over_time), +[count_eq_over_time](#count_eq_over_time) and [count_ne_over_time](#count_ne_over_time). + +#### decreases_over_time + +`decreases_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the number of raw sample value decreases +over the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [increases_over_time](#increases_over_time). + +#### default_rollup + +`default_rollup(series_selector[d])` is a [rollup function](#rollup-functions), which returns the last raw sample value on the given lookbehind window `d` +per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +#### delta + +`delta(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the difference between +the last sample before the given lookbehind window `d` and the last sample at the given lookbehind window `d` +per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +The behaviour of `delta()` function in MetricsQL is slightly different to the behaviour of `delta()` function in Prometheus. +See [this article](https://medium.com/@romanhavronenko/victoriametrics-promql-compliance-d4318203f51e) for details. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [increase](#increase) and [delta_prometheus](#delta_prometheus). + +#### delta_prometheus + +`delta_prometheus(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the difference between +the first and the last samples at the given lookbehind window `d` per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +The behaviour of `delta_prometheus()` is close to the behaviour of `delta()` function in Prometheus. +See [this article](https://medium.com/@romanhavronenko/victoriametrics-promql-compliance-d4318203f51e) for details. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [delta](#delta). + +#### deriv + +`deriv(series_selector[d])` is a [rollup function](#rollup-functions), which calculates per-second derivative over the given lookbehind window `d` +per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). +The derivative is calculated using linear regression. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [deriv_fast](#deriv_fast) and [ideriv](#ideriv). + +#### deriv_fast + +`deriv_fast(series_selector[d])` is a [rollup function](#rollup-functions), which calculates per-second derivative +using the first and the last raw samples on the given lookbehind window `d` per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [deriv](#deriv) and [ideriv](#ideriv). + +#### descent_over_time + +`descent_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates descent of raw sample values +on the given lookbehind window `d`. The calculations are performed individually per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +This function is useful for tracking height loss in GPS tracking. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [ascent_over_time](#ascent_over_time). + +#### distinct_over_time + +`distinct_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which returns the number of distinct raw sample values +on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +#### duration_over_time + +`duration_over_time(series_selector[d], max_interval)` is a [rollup function](#rollup-functions), which returns the duration in seconds +when time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering) were present +over the given lookbehind window `d`. It is expected that intervals between adjacent samples per each series don't exceed the `max_interval`. +Otherwise, such intervals are considered as gaps and aren't counted. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [lifetime](#lifetime) and [lag](#lag). + +#### first_over_time + +`first_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which returns the first raw sample value +on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +See also [last_over_time](#last_over_time) and [tfirst_over_time](#tfirst_over_time). + +#### geomean_over_time + +`geomean_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates [geometric mean](https://en.wikipedia.org/wiki/Geometric_mean) +over raw samples on the given lookbehind window `d` per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +#### histogram_over_time + +`histogram_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates +[VictoriaMetrics histogram](https://godoc.org/github.com/VictoriaMetrics/metrics#Histogram) over raw samples on the given lookbehind window `d`. +It is calculated individually per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). +The resulting histograms are useful to pass to [histogram_quantile](#histogram_quantile) for calculating quantiles +over multiple [gauges](https://docs.victoriametrics.com/keyConcepts.html#gauge). +For example, the following query calculates median temperature by country over the last 24 hours: + +`histogram_quantile(0.5, sum(histogram_over_time(temperature[24h])) by (vmrange,country))`. + +#### hoeffding_bound_lower + +`hoeffding_bound_lower(phi, series_selector[d])` is a [rollup function](#rollup-functions), which calculates +lower [Hoeffding bound](https://en.wikipedia.org/wiki/Hoeffding%27s_inequality) for the given `phi` in the range `[0...1]`. + +See also [hoeffding_bound_upper](#hoeffding_bound_upper). + +#### hoeffding_bound_upper + +`hoeffding_bound_upper(phi, series_selector[d])` is a [rollup function](#rollup-functions), which calculates +upper [Hoeffding bound](https://en.wikipedia.org/wiki/Hoeffding%27s_inequality) for the given `phi` in the range `[0...1]`. + +See also [hoeffding_bound_lower](#hoeffding_bound_lower). + +#### holt_winters + +`holt_winters(series_selector[d], sf, tf)` is a [rollup function](#rollup-functions), which calculates Holt-Winters value +(aka [double exponential smoothing](https://en.wikipedia.org/wiki/Exponential_smoothing#Double_exponential_smoothing)) for raw samples +over the given lookbehind window `d` using the given smoothing factor `sf` and the given trend factor `tf`. +Both `sf` and `tf` must be in the range `[0...1]`. It is expected that the [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering) +returns time series of [gauge type](https://docs.victoriametrics.com/keyConcepts.html#gauge). + +This function is supported by PromQL. See also [range_linear_regression](#range_linear_regression). + +#### idelta + +`idelta(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the difference between the last two raw samples +on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [delta](#delta). + +#### ideriv + +`ideriv(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the per-second derivative based on the last two raw samples +over the given lookbehind window `d`. The derivative is calculated independently per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [deriv](#deriv). + +#### increase + +`increase(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the increase over the given lookbehind window `d` +per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). +It is expected that the `series_selector` returns time series of [counter type](https://docs.victoriametrics.com/keyConcepts.html#counter). + +Unlike Prometheus, it takes into account the last sample before the given lookbehind window `d` when calculating the result. +See [this article](https://medium.com/@romanhavronenko/victoriametrics-promql-compliance-d4318203f51e) for details. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [increase_pure](#increase_pure), [increase_prometheus](#increase_prometheus) and [delta](#delta). + +#### increase_prometheus + +`increase_prometheus(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the increase +over the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). +It is expected that the `series_selector` returns time series of [counter type](https://docs.victoriametrics.com/keyConcepts.html#counter). +It doesn't take into account the last sample before the given lookbehind window `d` when calculating the result in the same way as Prometheus does. +See [this article](https://medium.com/@romanhavronenko/victoriametrics-promql-compliance-d4318203f51e) for details. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [increase_pure](#increase_pure) and [increase](#increase). + +#### increase_pure + +`increase_pure(series_selector[d])` is a [rollup function](#rollup-functions), which works the same as [increase](#increase) except +of the following corner case - it assumes that [counters](https://docs.victoriametrics.com/keyConcepts.html#counter) always start from 0, +while [increase](#increase) ignores the first value in a series if it is too big. + +#### increases_over_time + +`increases_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the number of raw sample value increases +over the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [decreases_over_time](#decreases_over_time). + +#### integrate + +`integrate(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the integral over raw samples on the given lookbehind window `d` +per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +#### irate + +`irate(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the "instant" per-second increase rate over the last two raw samples +on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). +It is expected that the `series_selector` returns time series of [counter type](https://docs.victoriametrics.com/keyConcepts.html#counter). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [rate](#rate) and [rollup_rate](#rollup_rate). + +#### lag + +`lag(series_selector[d])` is a [rollup function](#rollup-functions), which returns the duration in seconds between the last sample +on the given lookbehind window `d` and the timestamp of the current point. It is calculated independently per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [lifetime](#lifetime) and [duration_over_time](#duration_over_time). + +#### last_over_time + +`last_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which returns the last raw sample value on the given lookbehind window `d` +per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +This function is supported by PromQL. See also [first_over_time](#first_over_time) and [tlast_over_time](#tlast_over_time). + +#### lifetime + +`lifetime(series_selector[d])` is a [rollup function](#rollup-functions), which returns the duration in seconds between the last and the first sample +on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [duration_over_time](#duration_over_time) and [lag](#lag). + +#### mad_over_time + +`mad_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates [median absolute deviation](https://en.wikipedia.org/wiki/Median_absolute_deviation) +over raw samples on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +See also [mad](#mad) and [range_mad](#range_mad). + +#### max_over_time + +`max_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the maximum value over raw samples +on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +This function is supported by PromQL. See also [tmax_over_time](#tmax_over_time). + +#### median_over_time + +`median_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates median value over raw samples +on the given lookbehind window `d` per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +See also [avg_over_time](#avg_over_time). + +#### min_over_time + +`min_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the minimum value over raw samples +on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +This function is supported by PromQL. See also [tmin_over_time](#tmin_over_time). + +#### mode_over_time + +`mode_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates [mode](https://en.wikipedia.org/wiki/Mode_(statistics)) +for raw samples on the given lookbehind window `d`. It is calculated individually per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). It is expected that raw sample values are discrete. + +#### predict_linear + +`predict_linear(series_selector[d], t)` is a [rollup function](#rollup-functions), which calculates the value `t` seconds in the future using +linear interpolation over raw samples on the given lookbehind window `d`. The predicted value is calculated individually per each time series +returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +This function is supported by PromQL. See also [range_linear_regression](#range_linear_regression). + +#### present_over_time + +`present_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which returns 1 if there is at least a single raw sample +on the given lookbehind window `d`. Otherwise, an empty result is returned. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. + +#### quantile_over_time + +`quantile_over_time(phi, series_selector[d])` is a [rollup function](#rollup-functions), which calculates `phi`-quantile over raw samples +on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). +The `phi` value must be in the range `[0...1]`. + +This function is supported by PromQL. See also [quantiles_over_time](#quantiles_over_time). + +#### quantiles_over_time + +`quantiles_over_time("phiLabel", phi1, ..., phiN, series_selector[d])` is a [rollup function](#rollup-functions), which calculates `phi*`-quantiles +over raw samples on the given lookbehind window `d` per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). +The function returns individual series per each `phi*` with `{phiLabel="phi*"}` label. `phi*` values must be in the range `[0...1]`. + +See also [quantile_over_time](#quantile_over_time). + +#### range_over_time + +`range_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates value range over raw samples +on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). +E.g. it calculates `max_over_time(series_selector[d]) - min_over_time(series_selector[d])`. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +#### rate + +`rate(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the average per-second increase rate +over the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). +It is expected that the `series_selector` returns time series of [counter type](https://docs.victoriametrics.com/keyConcepts.html#counter). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [irate](#irate) and [rollup_rate](#rollup_rate). + +#### rate_over_sum + +`rate_over_sum(series_selector[d])` is a [rollup function](#rollup-functions), which calculates per-second rate over the sum of raw samples +on the given lookbehind window `d`. The calculations are performed individually per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +#### resets + +`resets(series_selector[d])` is a [rollup function](#rollup-functions), which returns the number +of [counter](https://docs.victoriametrics.com/keyConcepts.html#counter) resets over the given lookbehind window `d` +per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). +It is expected that the `series_selector` returns time series of [counter type](https://docs.victoriametrics.com/keyConcepts.html#counter). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. + +#### rollup + +`rollup(series_selector[d])` is a [rollup function](#rollup-functions), which calculates `min`, `max` and `avg` values for raw samples +on the given lookbehind window `d` and returns them in time series with `rollup="min"`, `rollup="max"` and `rollup="avg"` additional labels. +These values are calculated individually per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Optional 2nd argument `"min"`, `"max"` or `"avg"` can be passed to keep only one calculation result and without adding a label. + +#### rollup_candlestick + +`rollup_candlestick(series_selector[d])` is a [rollup function](#rollup-functions), which calculates `open`, `high`, `low` and `close` values (aka OHLC) +over raw samples on the given lookbehind window `d` and returns them in time series with `rollup="open"`, `rollup="high"`, `rollup="low"` and `rollup="close"` additional labels. +The calculations are performed individually per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). This function is useful for financial applications. + +Optional 2nd argument `"min"`, `"max"` or `"avg"` can be passed to keep only one calculation result and without adding a label. + +#### rollup_delta + +`rollup_delta(series_selector[d])` is a [rollup function](#rollup-functions), which calculates differences between adjacent raw samples +on the given lookbehind window `d` and returns `min`, `max` and `avg` values for the calculated differences +and returns them in time series with `rollup="min"`, `rollup="max"` and `rollup="avg"` additional labels. +The calculations are performed individually per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Optional 2nd argument `"min"`, `"max"` or `"avg"` can be passed to keep only one calculation result and without adding a label. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [rollup_increase](#rollup_increase). + +#### rollup_deriv + +`rollup_deriv(series_selector[d])` is a [rollup function](#rollup-functions), which calculates per-second derivatives +for adjacent raw samples on the given lookbehind window `d` and returns `min`, `max` and `avg` values for the calculated per-second derivatives +and returns them in time series with `rollup="min"`, `rollup="max"` and `rollup="avg"` additional labels. +The calculations are performed individually per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Optional 2nd argument `"min"`, `"max"` or `"avg"` can be passed to keep only one calculation result and without adding a label. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +#### rollup_increase + +`rollup_increase(series_selector[d])` is a [rollup function](#rollup-functions), which calculates increases for adjacent raw samples +on the given lookbehind window `d` and returns `min`, `max` and `avg` values for the calculated increases +and returns them in time series with `rollup="min"`, `rollup="max"` and `rollup="avg"` additional labels. +The calculations are performed individually per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Optional 2nd argument `"min"`, `"max"` or `"avg"` can be passed to keep only one calculation result and without adding a label. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. See also [rollup_delta](#rollup_delta). + +#### rollup_rate + +`rollup_rate(series_selector[d])` is a [rollup function](#rollup-functions), which calculates per-second change rates for adjacent raw samples +on the given lookbehind window `d` and returns `min`, `max` and `avg` values for the calculated per-second change rates +and returns them in time series with `rollup="min"`, `rollup="max"` and `rollup="avg"` additional labels. + +See [this article](https://valyala.medium.com/why-irate-from-prometheus-doesnt-capture-spikes-45f9896d7832) in order to understand better +when to use `rollup_rate()`. + +Optional 2nd argument `"min"`, `"max"` or `"avg"` can be passed to keep only one calculation result and without adding a label. + +The calculations are performed individually per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +#### rollup_scrape_interval + +`rollup_scrape_interval(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the interval in seconds between +adjacent raw samples on the given lookbehind window `d` and returns `min`, `max` and `avg` values for the calculated interval +and returns them in time series with `rollup="min"`, `rollup="max"` and `rollup="avg"` additional labels. +The calculations are performed individually per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Optional 2nd argument `"min"`, `"max"` or `"avg"` can be passed to keep only one calculation result and without adding a label. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. See also [scrape_interval](#scrape_interval). + +#### scrape_interval + +`scrape_interval(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the average interval in seconds between raw samples +on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [rollup_scrape_interval](#rollup_scrape_interval). + +#### share_gt_over_time + +`share_gt_over_time(series_selector[d], gt)` is a [rollup function](#rollup-functions), which returns share (in the range `[0...1]`) of raw samples +on the given lookbehind window `d`, which are bigger than `gt`. It is calculated independently per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +This function is useful for calculating SLI and SLO. Example: `share_gt_over_time(up[24h], 0)` - returns service availability for the last 24 hours. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [share_le_over_time](#share_le_over_time). + +#### share_le_over_time + +`share_le_over_time(series_selector[d], le)` is a [rollup function](#rollup-functions), which returns share (in the range `[0...1]`) of raw samples +on the given lookbehind window `d`, which are smaller or equal to `le`. It is calculated independently per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +This function is useful for calculating SLI and SLO. Example: `share_le_over_time(memory_usage_bytes[24h], 100*1024*1024)` returns +the share of time series values for the last 24 hours when memory usage was below or equal to 100MB. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [share_gt_over_time](#share_gt_over_time). + +#### share_eq_over_time + +`share_eq_over_time(series_selector[d], eq)` is a [rollup function](#rollup-functions), which returns share (in the range `[0...1]`) of raw samples +on the given lookbehind window `d`, which are equal to `eq`. It is calculated independently per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +#### stale_samples_over_time + +`stale_samples_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the number +of [staleness markers](https://docs.victoriametrics.com/vmagent.html#prometheus-staleness-markers) on the given lookbehind window `d` +per each time series matching the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +#### stddev_over_time + +`stddev_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates standard deviation over raw samples +on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [stdvar_over_time](#stdvar_over_time). + +#### stdvar_over_time + +`stdvar_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates standard variance over raw samples +on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [stddev_over_time](#stddev_over_time). + +#### sum_over_time + +`sum_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the sum of raw sample values +on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. + +#### sum2_over_time + +`sum2_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the sum of squares for raw sample values +on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +#### timestamp + +`timestamp(series_selector[d])` is a [rollup function](#rollup-functions), which returns the timestamp in seconds for the last raw sample +on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [timestamp_with_name](#timestamp_with_name). + +#### timestamp_with_name + +`timestamp_with_name(series_selector[d])` is a [rollup function](#rollup-functions), which returns the timestamp in seconds for the last raw sample +on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are preserved in the resulting rollups. + +See also [timestamp](#timestamp). + +#### tfirst_over_time + +`tfirst_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which returns the timestamp in seconds for the first raw sample +on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [first_over_time](#first_over_time). + +#### tlast_change_over_time + +`tlast_change_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which returns the timestamp in seconds for the last change +per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering) on the given lookbehind window `d`. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [last_over_time](#last_over_time). + +#### tlast_over_time + +`tlast_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which is an alias for [timestamp](#timestamp). + +See also [tlast_change_over_time](#tlast_change_over_time). + +#### tmax_over_time + +`tmax_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which returns the timestamp in seconds for the raw sample +with the maximum value on the given lookbehind window `d`. It is calculated independently per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [max_over_time](#max_over_time). + +#### tmin_over_time + +`tmin_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which returns the timestamp in seconds for the raw sample +with the minimum value on the given lookbehind window `d`. It is calculated independently per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [min_over_time](#min_over_time). + +#### zscore_over_time + +`zscore_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which returns [z-score](https://en.wikipedia.org/wiki/Standard_score) +for raw samples on the given lookbehind window `d`. It is calculated independently per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [zscore](#zscore) and [range_trim_zscore](#range_trim_zscore). + + +### Transform functions + +**Transform functions** calculate transformations over [rollup results](#rollup-functions). +For example, `abs(delta(temperature[24h]))` calculates the absolute value for every point of every time series +returned from the rollup `delta(temperature[24h])`. + +Additional details: + +* If transform function is applied directly to a [series selector](https://docs.victoriametrics.com/keyConcepts.html#filtering), + then the [default_rollup()](#default_rollup) function is automatically applied before calculating the transformations. + For example, `abs(temperature)` is implicitly transformed to `abs(default_rollup(temperature[1i]))`. +* All the transform functions accept optional `keep_metric_names` modifier. If it is set, + then the function doesn't drop metric names from the resulting time series. See [these docs](#keep_metric_names). + +See also [implicit query conversions](#implicit-query-conversions). + +The list of supported transform functions: + +#### abs + +`abs(q)` is a [transform function](#transform-functions), which calculates the absolute value for every point of every time series returned by `q`. + +This function is supported by PromQL. + +#### absent + +`absent(q)` is a [transform function](#transform-functions), which returns 1 if `q` has no points. Otherwise, returns an empty result. + +This function is supported by PromQL. See also [absent_over_time](#absent_over_time). + +#### acos + +`acos(q)` is a [transform function](#transform-functions), which returns [inverse cosine](https://en.wikipedia.org/wiki/Inverse_trigonometric_functions) +for every point of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [asin](#asin) and [cos](#cos). + +#### acosh + +`acosh(q)` is a [transform function](#transform-functions), which returns +[inverse hyperbolic cosine](https://en.wikipedia.org/wiki/Inverse_hyperbolic_functions#Inverse_hyperbolic_cosine) for every point of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [sinh](#cosh). + +#### asin + +`asin(q)` is a [transform function](#transform-functions), which returns [inverse sine](https://en.wikipedia.org/wiki/Inverse_trigonometric_functions) +for every point of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [acos](#acos) and [sin](#sin). + +#### asinh + +`asinh(q)` is a [transform function](#transform-functions), which returns +[inverse hyperbolic sine](https://en.wikipedia.org/wiki/Inverse_hyperbolic_functions#Inverse_hyperbolic_sine) for every point of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [sinh](#sinh). + +#### atan + +`atan(q)` is a [transform function](#transform-functions), which returns [inverse tangent](https://en.wikipedia.org/wiki/Inverse_trigonometric_functions) +for every point of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [tan](#tan). + +#### atanh + +`atanh(q)` is a [transform function](#transform-functions), which returns +[inverse hyperbolic tangent](https://en.wikipedia.org/wiki/Inverse_hyperbolic_functions#Inverse_hyperbolic_tangent) for every point of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [tanh](#tanh). + +#### bitmap_and + +`bitmap_and(q, mask)` is a [transform function](#transform-functions), which calculates bitwise `v & mask` for every `v` point of every time series returned from `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +#### bitmap_or + +`bitmap_or(q, mask)` is a [transform function](#transform-functions), which calculates bitwise `v | mask` for every `v` point of every time series returned from `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +#### bitmap_xor + +`bitmap_xor(q, mask)` is a [transform function](#transform-functions), which calculates bitwise `v ^ mask` for every `v` point of every time series returned from `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +#### buckets_limit + +`buckets_limit(limit, buckets)` is a [transform function](#transform-functions), which limits the number +of [histogram buckets](https://valyala.medium.com/improving-histogram-usability-for-prometheus-and-grafana-bc7e5df0e350) to the given `limit`. + +See also [prometheus_buckets](#prometheus_buckets) and [histogram_quantile](#histogram_quantile). + +#### ceil + +`ceil(q)` is a [transform function](#transform-functions), which rounds every point for every time series returned by `q` to the upper nearest integer. + +This function is supported by PromQL. See also [floor](#floor) and [round](#round). + +#### clamp + +`clamp(q, min, max)` is a [transform function](#transform-functions), which clamps every point for every time series returned by `q` with the given `min` and `max` values. + +This function is supported by PromQL. See also [clamp_min](#clamp_min) and [clamp_max](#clamp_max). + +#### clamp_max + +`clamp_max(q, max)` is a [transform function](#transform-functions), which clamps every point for every time series returned by `q` with the given `max` value. + +This function is supported by PromQL. See also [clamp](#clamp) and [clamp_min](#clamp_min). + +#### clamp_min + +`clamp_min(q, min)` is a [transform function](#transform-functions), which clamps every point for every time series returned by `q` with the given `min` value. + +This function is supported by PromQL. See also [clamp](#clamp) and [clamp_max](#clamp_max). + +#### cos + +`cos(q)` is a [transform function](#transform-functions), which returns `cos(v)` for every `v` point of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [sin](#sin). + +#### cosh + +`cosh(q)` is a [transform function](#transform-functions), which returns [hyperbolic cosine](https://en.wikipedia.org/wiki/Hyperbolic_functions) +for every point of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. This function is supported by PromQL. See also [acosh](#acosh). + +#### day_of_month + +`day_of_month(q)` is a [transform function](#transform-functions), which returns the day of month for every point of every time series returned by `q`. +It is expected that `q` returns unix timestamps. The returned values are in the range `[1...31]`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. + +#### day_of_week + +`day_of_week(q)` is a [transform function](#transform-functions), which returns the day of week for every point of every time series returned by `q`. +It is expected that `q` returns unix timestamps. The returned values are in the range `[0...6]`, where `0` means Sunday and `6` means Saturday. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. + +#### days_in_month + +`days_in_month(q)` is a [transform function](#transform-functions), which returns the number of days in the month identified +by every point of every time series returned by `q`. It is expected that `q` returns unix timestamps. +The returned values are in the range `[28...31]`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. + +#### deg + +`deg(q)` is a [transform function](#transform-functions), which converts [Radians to degrees](https://en.wikipedia.org/wiki/Radian#Conversions) +for every point of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [rad](#rad). + +#### end + +`end()` is a [transform function](#transform-functions), which returns the unix timestamp in seconds for the last point. +It is known as `end` query arg passed to [/api/v1/query_range](https://docs.victoriametrics.com/keyConcepts.html#range-query). + +See also [start](#start), [time](#time) and [now](#now). + +#### exp + +`exp(q)` is a [transform function](#transform-functions), which calculates the `e^v` for every point `v` of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [ln](#ln). + +#### floor + +`floor(q)` is a [transform function](#transform-functions), which rounds every point for every time series returned by `q` to the lower nearest integer. + +This function is supported by PromQL. See also [ceil](#ceil) and [round](#round). + +#### histogram_avg + +`histogram_avg(buckets)` is a [transform function](#transform-functions), which calculates the average value for the given `buckets`. +It can be used for calculating the average over the given time range across multiple time series. +For example, `histogram_avg(sum(histogram_over_time(response_time_duration_seconds[5m])) by (vmrange,job))` would return the average response time +per each `job` over the last 5 minutes. + +#### histogram_quantile + +`histogram_quantile(phi, buckets)` is a [transform function](#transform-functions), which calculates `phi`-[percentile](https://en.wikipedia.org/wiki/Percentile) +over the given [histogram buckets](https://valyala.medium.com/improving-histogram-usability-for-prometheus-and-grafana-bc7e5df0e350). +`phi` must be in the range `[0...1]`. For example, `histogram_quantile(0.5, sum(rate(http_request_duration_seconds_bucket[5m])) by (le))` +would return median request duration for all the requests during the last 5 minutes. + +The function accepts optional third arg - `boundsLabel`. In this case it returns `lower` and `upper` bounds for the estimated percentile with the given `boundsLabel` label. +See [this issue for details](https://github.com/prometheus/prometheus/issues/5706). + +When the [percentile](https://en.wikipedia.org/wiki/Percentile) is calculated over multiple histograms, +then all the input histograms **must** have buckets with identical boundaries, e.g. they must have the same set of `le` or `vmrange` labels. +Otherwise, the returned result may be invalid. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3231) for details. + +This function is supported by PromQL (except of the `boundLabel` arg). See also [histogram_quantiles](#histogram_quantiles), [histogram_share](#histogram_share) +and [quantile](#quantile). + +#### histogram_quantiles + +`histogram_quantiles("phiLabel", phi1, ..., phiN, buckets)` is a [transform function](#transform-functions), which calculates the given `phi*`-quantiles +over the given [histogram buckets](https://valyala.medium.com/improving-histogram-usability-for-prometheus-and-grafana-bc7e5df0e350). +Argument `phi*` must be in the range `[0...1]`. For example, `histogram_quantiles('le', 0.3, 0.5, sum(rate(http_request_duration_seconds_bucket[5m]) by (le))`. +Each calculated quantile is returned in a separate time series with the corresponding `{phiLabel="phi*"}` label. + +See also [histogram_quantile](#histogram_quantile). + +#### histogram_share + +`histogram_share(le, buckets)` is a [transform function](#transform-functions), which calculates the share (in the range `[0...1]`) +for `buckets` that fall below `le`. This function is useful for calculating SLI and SLO. This is inverse to [histogram_quantile](#histogram_quantile). + +The function accepts optional third arg - `boundsLabel`. In this case it returns `lower` and `upper` bounds for the estimated share with the given `boundsLabel` label. + +#### histogram_stddev + +`histogram_stddev(buckets)` is a [transform function](#transform-functions), which calculates standard deviation for the given `buckets`. + +#### histogram_stdvar + +`histogram_stdvar(buckets)` is a [transform function](#transform-functions), which calculates standard variance for the given `buckets`. +It can be used for calculating standard deviation over the given time range across multiple time series. +For example, `histogram_stdvar(sum(histogram_over_time(temperature[24])) by (vmrange,country))` would return standard deviation +for the temperature per each country over the last 24 hours. + +#### hour + +`hour(q)` is a [transform function](#transform-functions), which returns the hour for every point of every time series returned by `q`. +It is expected that `q` returns unix timestamps. The returned values are in the range `[0...23]`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. + +#### interpolate + +`interpolate(q)` is a [transform function](#transform-functions), which fills gaps with linearly interpolated values calculated +from the last and the next non-empty points per each time series returned by `q`. + +See also [keep_last_value](#keep_last_value) and [keep_next_value](#keep_next_value). + +#### keep_last_value + +`keep_last_value(q)` is a [transform function](#transform-functions), which fills gaps with the value of the last non-empty point +in every time series returned by `q`. + +See also [keep_next_value](#keep_next_value) and [interpolate](#interpolate). + +#### keep_next_value + +`keep_next_value(q)` is a [transform function](#transform-functions), which fills gaps with the value of the next non-empty point +in every time series returned by `q`. + +See also [keep_last_value](#keep_last_value) and [interpolate](#interpolate). + +#### limit_offset + +`limit_offset(limit, offset, q)` is a [transform function](#transform-functions), which skips `offset` time series from series returned by `q` +and then returns up to `limit` of the remaining time series per each group. + +This allows implementing simple paging for `q` time series. See also [limitk](#limitk). + +#### ln + +`ln(q)` is a [transform function](#transform-functions), which calculates `ln(v)` for every point `v` of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [exp](#exp) and [log2](#log2). + +#### log2 + +`log2(q)` is a [transform function](#transform-functions), which calculates `log2(v)` for every point `v` of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [log10](#log10) and [ln](#ln). + +#### log10 + +`log10(q)` is a [transform function](#transform-functions), which calculates `log10(v)` for every point `v` of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [log2](#log2) and [ln](#ln). + +#### minute + +`minute(q)` is a [transform function](#transform-functions), which returns the minute for every point of every time series returned by `q`. +It is expected that `q` returns unix timestamps. The returned values are in the range `[0...59]`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. + +#### month + +`month(q)` is a [transform function](#transform-functions), which returns the month for every point of every time series returned by `q`. +It is expected that `q` returns unix timestamps. The returned values are in the range `[1...12]`, where `1` means January and `12` means December. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. + +#### now + +`now()` is a [transform function](#transform-functions), which returns the current timestamp as a floating-point value in seconds. + +See also [time](#time). + +#### pi + +`pi()` is a [transform function](#transform-functions), which returns [Pi number](https://en.wikipedia.org/wiki/Pi). + +This function is supported by PromQL. + +#### rad + +`rad(q)` is a [transform function](#transform-functions), which converts [degrees to Radians](https://en.wikipedia.org/wiki/Radian#Conversions) +for every point of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [deg](#deg). + +#### prometheus_buckets + +`prometheus_buckets(buckets)` is a [transform function](#transform-functions), which converts +[VictoriaMetrics histogram buckets](https://valyala.medium.com/improving-histogram-usability-for-prometheus-and-grafana-bc7e5df0e350) with `vmrange` labels +to Prometheus histogram buckets with `le` labels. This may be useful for building heatmaps in Grafana. + +See also [histogram_quantile](#histogram_quantile) and [buckets_limit](#buckets_limit). + +#### rand + +`rand(seed)` is a [transform function](#transform-functions), which returns pseudo-random numbers on the range `[0...1]` with even distribution. +Optional `seed` can be used as a seed for pseudo-random number generator. + +See also [rand_normal](#rand_normal) and [rand_exponential](#rand_exponential). + +#### rand_exponential + +`rand_exponential(seed)` is a [transform function](#transform-functions), which returns pseudo-random numbers +with [exponential distribution](https://en.wikipedia.org/wiki/Exponential_distribution). Optional `seed` can be used as a seed for pseudo-random number generator. + +See also [rand](#rand) and [rand_normal](#rand_normal). + +#### rand_normal + +`rand_normal(seed)` is a [transform function](#transform-functions), which returns pseudo-random numbers +with [normal distribution](https://en.wikipedia.org/wiki/Normal_distribution). Optional `seed` can be used as a seed for pseudo-random number generator. + +See also [rand](#rand) and [rand_exponential](#rand_exponential). + +#### range_avg + +`range_avg(q)` is a [transform function](#transform-functions), which calculates the avg value across points per each time series returned by `q`. + +#### range_first + +`range_first(q)` is a [transform function](#transform-functions), which returns the value for the first point per each time series returned by `q`. + +#### range_last + +`range_last(q)` is a [transform function](#transform-functions), which returns the value for the last point per each time series returned by `q`. + +#### range_linear_regression + +`range_linear_regression(q)` is a [transform function](#transform-functions), which calculates [simple linear regression](https://en.wikipedia.org/wiki/Simple_linear_regression) +over the selected time range per each time series returned by `q`. This function is useful for capacity planning and predictions. + +#### range_mad + +`range_mad(q)` is a [transform function](#transform-functions), which calculates the [median absolute deviation](https://en.wikipedia.org/wiki/Median_absolute_deviation) +across points per each time series returned by `q`. + +See also [mad](#mad) and [mad_over_time](#mad_over_time). + +#### range_max + +`range_max(q)` is a [transform function](#transform-functions), which calculates the max value across points per each time series returned by `q`. + +#### range_median + +`range_median(q)` is a [transform function](#transform-functions), which calculates the median value across points per each time series returned by `q`. + +#### range_min + +`range_min(q)` is a [transform function](#transform-functions), which calculates the min value across points per each time series returned by `q`. + +#### range_normalize + +`range_normalize(q1, ...)` is a [transform function](#transform-functions), which normalizes values for time series returned by `q1, ...` into `[0 ... 1]` range. +This function is useful for correlating time series with distinct value ranges. + +See also [share](#share). + +#### range_quantile + +`range_quantile(phi, q)` is a [transform function](#transform-functions), which returns `phi`-quantile across points per each time series returned by `q`. +`phi` must be in the range `[0...1]`. + +#### range_stddev + +`range_stddev(q)` is a [transform function](#transform-functions), which calculates [standard deviation](https://en.wikipedia.org/wiki/Standard_deviation) +per each time series returned by `q` on the selected time range. + +#### range_stdvar + +`range_stdvar(q)` is a [transform function](#transform-functions), which calculates [standard variance](https://en.wikipedia.org/wiki/Variance) +per each time series returned by `q` on the selected time range. + +#### range_sum + +`range_sum(q)` is a [transform function](#transform-functions), which calculates the sum of points per each time series returned by `q`. + +#### range_trim_outliers + +`range_trim_outliers(k, q)` is a [transform function](#transform-functions), which drops points located farther than `k*range_mad(q)` +from the `range_median(q)`. E.g. it is equivalent to the following query: `q ifnot (abs(q - range_median(q)) > k*range_mad(q))`. + +See also [range_trim_spikes](#range_trim_spikes) and [range_trim_zscore](#range_trim_zscore). + +#### range_trim_spikes + +`range_trim_spikes(phi, q)` is a [transform function](#transform-functions), which drops `phi` percent of biggest spikes from time series returned by `q`. +The `phi` must be in the range `[0..1]`, where `0` means `0%` and `1` means `100%`. + +See also [range_trim_outliers](#range_trim_outliers) and [range_trim_zscore](#range_trim_zscore). + +#### range_trim_zscore + +`range_trim_zscore(z, q)` is a [transform function](#transform-functions), which drops points located farther than `z*range_stddev(q)` +from the `range_avg(q)`. E.g. it is equivalent to the following query: `q ifnot (abs(q - range_avg(q)) > z*range_avg(q))`. + +See also [range_trim_outliers](#range_trim_outliers) and [range_trim_spikes](#range_trim_spikes). + +#### range_zscore + +`range_zscore(q)` is a [transform function](#transform-functions), which calculates [z-score](https://en.wikipedia.org/wiki/Standard_score) +for points returned by `q`, e.g. it is equivalent to the following query: `(q - range_avg(q)) / range_stddev(q)`. + +#### remove_resets + +`remove_resets(q)` is a [transform function](#transform-functions), which removes counter resets from time series returned by `q`. + +#### round + +`round(q, nearest)` is a [transform function](#transform-functions), which rounds every point of every time series returned by `q` to the `nearest` multiple. +If `nearest` is missing then the rounding is performed to the nearest integer. + +This function is supported by PromQL. See also [floor](#floor) and [ceil](#ceil). + +#### ru + +`ru(free, max)` is a [transform function](#transform-functions), which calculates resource utilization in the range `[0%...100%]` for the given `free` and `max` resources. +For instance, `ru(node_memory_MemFree_bytes, node_memory_MemTotal_bytes)` returns memory utilization over [node_exporter](https://github.com/prometheus/node_exporter) metrics. + +#### running_avg + +`running_avg(q)` is a [transform function](#transform-functions), which calculates the running avg per each time series returned by `q`. + +#### running_max + +`running_max(q)` is a [transform function](#transform-functions), which calculates the running max per each time series returned by `q`. + +#### running_min + +`running_min(q)` is a [transform function](#transform-functions), which calculates the running min per each time series returned by `q`. + +#### running_sum + +`running_sum(q)` is a [transform function](#transform-functions), which calculates the running sum per each time series returned by `q`. + +#### scalar + +`scalar(q)` is a [transform function](#transform-functions), which returns `q` if `q` contains only a single time series. Otherwise, it returns nothing. + +This function is supported by PromQL. + +#### sgn + +`sgn(q)` is a [transform function](#transform-functions), which returns `1` if `v>0`, `-1` if `v<0` and `0` if `v==0` for every point `v` +of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. + +#### sin + +`sin(q)` is a [transform function](#transform-functions), which returns `sin(v)` for every `v` point of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by MetricsQL. See also [cos](#cos). + +#### sinh + +`sinh(q)` is a [transform function](#transform-functions), which returns [hyperbolic sine](https://en.wikipedia.org/wiki/Hyperbolic_functions) +for every point of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by MetricsQL. See also [cosh](#cosh). + +#### tan + +`tan(q)` is a [transform function](#transform-functions), which returns `tan(v)` for every `v` point of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by MetricsQL. See also [atan](#atan). + +#### tanh + +`tanh(q)` is a [transform function](#transform-functions), which returns [hyperbolic tangent](https://en.wikipedia.org/wiki/Hyperbolic_functions) +for every point of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by MetricsQL. See also [atanh](#atanh). + +#### smooth_exponential + +`smooth_exponential(q, sf)` is a [transform function](#transform-functions), which smooths points per each time series returned +by `q` using [exponential moving average](https://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average) with the given smooth factor `sf`. + +#### sort + +`sort(q)` is a [transform function](#transform-functions), which sorts series in ascending order by the last point in every time series returned by `q`. + +This function is supported by PromQL. See also [sort_desc](#sort_desc) and [sort_by_label](#sort_by_label). + +#### sort_desc + +`sort_desc(q)` is a [transform function](#transform-functions), which sorts series in descending order by the last point in every time series returned by `q`. + +This function is supported by PromQL. See also [sort](#sort) and [sort_by_label](#sort_by_label_desc). + +#### sqrt + +`sqrt(q)` is a [transform function](#transform-functions), which calculates square root for every point of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. + +#### start + +`start()` is a [transform function](#transform-functions), which returns unix timestamp in seconds for the first point. + +It is known as `start` query arg passed to [/api/v1/query_range](https://docs.victoriametrics.com/keyConcepts.html#range-query). + +See also [end](#end), [time](#time) and [now](#now). + +#### step + +`step()` is a [transform function](#transform-functions), which returns the step in seconds (aka interval) between the returned points. +It is known as `step` query arg passed to [/api/v1/query_range](https://docs.victoriametrics.com/keyConcepts.html#range-query). + +See also [start](#start) and [end](#end). + +#### time + +`time()` is a [transform function](#transform-functions), which returns unix timestamp for every returned point. + +This function is supported by PromQL. See also [now](#now), [start](#start) and [end](#end). + +#### timezone_offset + +`timezone_offset(tz)` is a [transform function](#transform-functions), which returns offset in seconds for the given timezone `tz` relative to UTC. +This can be useful when combining with datetime-related functions. For example, `day_of_week(time()+timezone_offset("America/Los_Angeles"))` +would return weekdays for `America/Los_Angeles` time zone. + +Special `Local` time zone can be used for returning an offset for the time zone set on the host where VictoriaMetrics runs. + +See [the list of supported timezones](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). + +#### ttf + +`ttf(free)` is a [transform function](#transform-functions), which estimates the time in seconds needed to exhaust `free` resources. +For instance, `ttf(node_filesystem_avail_byte)` returns the time to storage space exhaustion. This function may be useful for capacity planning. + +#### union + +`union(q1, ..., qN)` is a [transform function](#transform-functions), which returns a union of time series returned from `q1`, ..., `qN`. +The `union` function name can be skipped - the following queries are equivalent: `union(q1, q2)` and `(q1, q2)`. + +It is expected that each `q*` query returns time series with unique sets of labels. +Otherwise, only the first time series out of series with identical set of labels is returned. +Use [alias](#alias) and [label_set](#label_set) functions for giving unique labelsets per each `q*` query: + +#### vector + +`vector(q)` is a [transform function](#transform-functions), which returns `q`, e.g. it does nothing in MetricsQL. + +This function is supported by PromQL. + +#### year + +`year(q)` is a [transform function](#transform-functions), which returns the year for every point of every time series returned by `q`. +It is expected that `q` returns unix timestamps. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. + +### Label manipulation functions + +**Label manipulation functions** perform manipulations with labels on the selected [rollup results](#rollup-functions). + +Additional details: + +* If label manipulation function is applied directly to a [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering), + then the [default_rollup()](#default_rollup) function is automatically applied before performing the label transformation. + For example, `alias(temperature, "foo")` is implicitly transformed to `alias(default_rollup(temperature[1i]), "foo")`. + +See also [implicit query conversions](#implicit-query-conversions). + +The list of supported label manipulation functions: + +#### alias + +`alias(q, "name")` is [label manipulation function](#label-manipulation-functions), which sets the given `name` to all the time series returned by `q`. +For example, `alias(up, "foobar")` would rename `up` series to `foobar` series. + + +#### drop_common_labels + +`drop_common_labels(q1, ...., qN)` is [label manipulation function](#label-manipulation-functions), which drops common `label="value"` pairs +among time series returned from `q1, ..., qN`. + +#### label_copy + +`label_copy(q, "src_label1", "dst_label1", ..., "src_labelN", "dst_labelN")` is [label manipulation function](#label-manipulation-functions), +which copies label values from `src_label*` to `dst_label*` for all the time series returned by `q`. +If `src_label` is empty, then the corresponding `dst_label` is left untouched. + +#### label_del + +`label_del(q, "label1", ..., "labelN")` is [label manipulation function](#label-manipulation-functions), which deletes the given `label*` labels +from all the time series returned by `q`. + +#### label_graphite_group + +`label_graphite_group(q, groupNum1, ... groupNumN)` is [label manipulation function](#label-manipulation-functions), which replaces metric names +returned from `q` with the given Graphite group values concatenated via `.` char. + +For example, `label_graphite_group({__graphite__="foo*.bar.*"}, 0, 2)` would substitute `foo.bar.` metric names with `foo.`. + +This function is useful for aggregating Graphite metrics with [aggregate functions](#aggregate-functions). For example, the following query would return per-app memory usage: + +``` +sum by (__name__) ( + label_graphite_group({__graphite__="app*.host*.memory_usage"}, 0) +) +``` + +#### label_join + +`label_join(q, "dst_label", "separator", "src_label1", ..., "src_labelN")` is [label manipulation function](#label-manipulation-functions), +which joins `src_label*` values with the given `separator` and stores the result in `dst_label`. +This is performed individually per each time series returned by `q`. +For example, `label_join(up{instance="xxx",job="yyy"}, "foo", "-", "instance", "job")` would store `xxx-yyy` label value into `foo` label. + +This function is supported by PromQL. + +#### label_keep + +`label_keep(q, "label1", ..., "labelN")` is [label manipulation function](#label-manipulation-functions), which deletes all the labels +except of the listed `label*` labels in all the time series returned by `q`. + +#### label_lowercase + +`label_lowercase(q, "label1", ..., "labelN")` is [label manipulation function](#label-manipulation-functions), which lowercases values +for the given `label*` labels in all the time series returned by `q`. + +#### label_map + +`label_map(q, "label", "src_value1", "dst_value1", ..., "src_valueN", "dst_valueN")` is [label manipulation function](#label-manipulation-functions), +which maps `label` values from `src_*` to `dst*` for all the time series returned by `q`. + +#### label_match + +`label_match(q, "label", "regexp")` is [label manipulation function](#label-manipulation-functions), +which drops time series from `q` with `label` not matching the given `regexp`. +This function can be useful after [rollup](#rollup)-like functions, which may return multiple time series for every input series. + +See also [label_mismatch](#label_mismatch). + +#### label_mismatch + +`label_mismatch(q, "label", "regexp")` is [label manipulation function](#label-manipulation-functions), +which drops time series from `q` with `label` matching the given `regexp`. +This function can be useful after [rollup](#rollup)-like functions, which may return multiple time series for every input series. + +See also [label_match](#label_match). + +#### label_move + +`label_move(q, "src_label1", "dst_label1", ..., "src_labelN", "dst_labelN")` is [label manipulation function](#label-manipulation-functions), +which moves label values from `src_label*` to `dst_label*` for all the time series returned by `q`. +If `src_label` is empty, then the corresponding `dst_label` is left untouched. + +#### label_replace + +`label_replace(q, "dst_label", "replacement", "src_label", "regex")` is [label manipulation function](#label-manipulation-functions), +which applies the given `regex` to `src_label` and stores the `replacement` in `dst_label` if the given `regex` matches `src_label`. +The `replacement` may contain references to regex captures such as `$1`, `$2`, etc. +These references are substituted by the corresponding regex captures. +For example, `label_replace(up{job="node-exporter"}, "foo", "bar-$1", "job", "node-(.+)")` would store `bar-exporter` label value into `foo` label. + +This function is supported by PromQL. + +#### label_set + +`label_set(q, "label1", "value1", ..., "labelN", "valueN")` is [label manipulation function](#label-manipulation-functions), +which sets `{label1="value1", ..., labelN="valueN"}` labels to all the time series returned by `q`. + +#### label_transform + +`label_transform(q, "label", "regexp", "replacement")` is [label manipulation function](#label-manipulation-functions), +which substitutes all the `regexp` occurrences by the given `replacement` in the given `label`. + +#### label_uppercase + +`label_uppercase(q, "label1", ..., "labelN")` is [label manipulation function](#label-manipulation-functions), +which uppercases values for the given `label*` labels in all the time series returned by `q`. + +See also [label_lowercase](#label_lowercase). + +#### label_value + +`label_value(q, "label")` is [label manipulation function](#label-manipulation-functions), which returns numeric values +for the given `label` for every time series returned by `q`. + +For example, if `label_value(foo, "bar")` is applied to `foo{bar="1.234"}`, then it will return a time series +`foo{bar="1.234"}` with `1.234` value. Function will return no data for non-numeric label values. + +#### sort_by_label + +`sort_by_label(q, label1, ... labelN)` is [label manipulation function](#label-manipulation-functions), which sorts series in ascending order by the given set of labels. +For example, `sort_by_label(foo, "bar")` would sort `foo` series by values of the label `bar` in these series. + +See also [sort_by_label_desc](#sort_by_label_desc) and [sort_by_label_numeric](#sort_by_label_numeric). + +#### sort_by_label_desc + +`sort_by_label_desc(q, label1, ... labelN)` is [label manipulation function](#label-manipulation-functions), which sorts series in descending order by the given set of labels. +For example, `sort_by_label(foo, "bar")` would sort `foo` series by values of the label `bar` in these series. + +See also [sort_by_label](#sort_by_label) and [sort_by_label_numeric_desc](#sort_by_label_numeric_desc). + +#### sort_by_label_numeric + +`sort_by_label_numeric(q, label1, ... labelN)` is [label manipulation function](#label-manipulation-functions), which sorts series in ascending order by the given set of labels +using [numeric sort](https://www.gnu.org/software/coreutils/manual/html_node/Version-sort-is-not-the-same-as-numeric-sort.html). +For example, if `foo` series have `bar` label with values `1`, `101`, `15` and `2`, then `sort_by_label_numeric(foo, "bar")` would return series +in the following order of `bar` label values: `1`, `2`, `15` and `101`. + +See also [sort_by_label_numeric_desc](#sort_by_label_numeric_desc) and [sort_by_label](#sort_by_label). + +#### sort_by_label_numeric_desc + +`sort_by_label_numeric_desc(q, label1, ... labelN)` is [label manipulation function](#label-manipulation-functions), which sorts series in descending order +by the given set of labels using [numeric sort](https://www.gnu.org/software/coreutils/manual/html_node/Version-sort-is-not-the-same-as-numeric-sort.html). +For example, if `foo` series have `bar` label with values `1`, `101`, `15` and `2`, then `sort_by_label_numeric(foo, "bar")` +would return series in the following order of `bar` label values: `101`, `15`, `2` and `1`. + +See also [sort_by_label_numeric](#sort_by_label_numeric) and [sort_by_label_desc](#sort_by_label_desc). + + +### Aggregate functions + +**Aggregate functions** calculate aggregates over groups of [rollup results](#rollup-functions). + +Additional details: + +* By default, a single group is used for aggregation. Multiple independent groups can be set up by specifying grouping labels + in `by` and `without` modifiers. For example, `count(up) by (job)` would group [rollup results](#rollup-functions) by `job` label value + and calculate the [count](#count) aggregate function independently per each group, while `count(up) without (instance)` + would group [rollup results](#rollup-functions) by all the labels except `instance` before calculating [count](#count) aggregate function independently per each group. + Multiple labels can be put in `by` and `without` modifiers. +* If the aggregate function is applied directly to a [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering), + then the [default_rollup()](#default_rollup) function is automatically applied before calculating the aggregate. + For example, `count(up)` is implicitly transformed to `count(default_rollup(up[1i]))`. +* Aggregate functions accept arbitrary number of args. For example, `avg(q1, q2, q3)` would return the average values for every point + across time series returned by `q1`, `q2` and `q3`. +* Aggregate functions support optional `limit N` suffix, which can be used for limiting the number of output groups. + For example, `sum(x) by (y) limit 3` limits the number of groups for the aggregation to 3. All the other groups are ignored. + +See also [implicit query conversions](#implicit-query-conversions). + +The list of supported aggregate functions: + +#### any + +`any(q) by (group_labels)` is [aggregate function](#aggregate-functions), which returns a single series per `group_labels` out of time series returned by `q`. + +See also [group](#group). + +#### avg + +`avg(q) by (group_labels)` is [aggregate function](#aggregate-functions), which returns the average value per `group_labels` for time series returned by `q`. +The aggregate is calculated individually per each group of points with the same timestamp. + +This function is supported by PromQL. + +#### bottomk + +`bottomk(k, q)` is [aggregate function](#aggregate-functions), which returns up to `k` points with the smallest values across all the time series returned by `q`. +The aggregate is calculated individually per each group of points with the same timestamp. + +This function is supported by PromQL. See also [topk](#topk). + +#### bottomk_avg + +`bottomk_avg(k, q, "other_label=other_value")` is [aggregate function](#aggregate-functions), which returns up to `k` time series from `q` with the smallest averages. +If an optional `other_label=other_value` arg is set, then the sum of the remaining time series is returned with the given label. +For example, `bottomk_avg(3, sum(process_resident_memory_bytes) by (job), "job=other")` would return up to 3 time series +with the smallest averages plus a time series with `{job="other"}` label with the sum of the remaining series if any. + +See also [topk_avg](#topk_avg). + +#### bottomk_last + +`bottomk_last(k, q, "other_label=other_value")` is [aggregate function](#aggregate-functions), which returns up to `k` time series from `q` with the smallest last values. +If an optional `other_label=other_value` arg is set, then the sum of the remaining time series is returned with the given label. +For example, `bottomk_max(3, sum(process_resident_memory_bytes) by (job), "job=other")` would return up to 3 time series +with the smallest maximums plus a time series with `{job="other"}` label with the sum of the remaining series if any. + +See also [topk_last](#topk_last). + +#### bottomk_max + +`bottomk_max(k, q, "other_label=other_value")` is [aggregate function](#aggregate-functions), which returns up to `k` time series from `q` with the smallest maximums. +If an optional `other_label=other_value` arg is set, then the sum of the remaining time series is returned with the given label. +For example, `bottomk_max(3, sum(process_resident_memory_bytes) by (job), "job=other")` would return up to 3 time series +with the smallest maximums plus a time series with `{job="other"}` label with the sum of the remaining series if any. + +See also [topk_max](#topk_max). + +#### bottomk_median + +`bottomk_median(k, q, "other_label=other_value")` is [aggregate function](#aggregate-functions), which returns up to `k` time series from `q` with the smallest medians. +If an optional`other_label=other_value` arg is set, then the sum of the remaining time series is returned with the given label. +For example, `bottomk_median(3, sum(process_resident_memory_bytes) by (job), "job=other")` would return up to 3 time series +with the smallest medians plus a time series with `{job="other"}` label with the sum of the remaining series if any. + +See also [topk_median](#topk_median). + +#### bottomk_min + +`bottomk_min(k, q, "other_label=other_value")` is [aggregate function](#aggregate-functions), which returns up to `k` time series from `q` with the smallest minimums. +If an optional `other_label=other_value` arg is set, then the sum of the remaining time series is returned with the given label. +For example, `bottomk_min(3, sum(process_resident_memory_bytes) by (job), "job=other")` would return up to 3 time series +with the smallest minimums plus a time series with `{job="other"}` label with the sum of the remaining series if any. + +See also [topk_min](#topk_min). + +#### count + +`count(q) by (group_labels)` is [aggregate function](#aggregate-functions), which returns the number of non-empty points per `group_labels` +for time series returned by `q`. The aggregate is calculated individually per each group of points with the same timestamp. + +This function is supported by PromQL. + +#### count_values + +`count_values("label", q)` is [aggregate function](#aggregate-functions), which counts the number of points with the same value +and stores the counts in a time series with an additional `label`, which contains each initial value. +The aggregate is calculated individually per each group of points with the same timestamp. + +This function is supported by PromQL. + +#### distinct + +`distinct(q)` is [aggregate function](#aggregate-functions), which calculates the number of unique values per each group of points with the same timestamp. + +#### geomean + +`geomean(q)` is [aggregate function](#aggregate-functions), which calculates geometric mean per each group of points with the same timestamp. + +#### group + +`group(q) by (group_labels)` is [aggregate function](#aggregate-functions), which returns `1` per each `group_labels` for time series returned by `q`. + +This function is supported by PromQL. See also [any](#any). + +#### histogram + +`histogram(q)` is [aggregate function](#aggregate-functions), which calculates +[VictoriaMetrics histogram](https://valyala.medium.com/improving-histogram-usability-for-prometheus-and-grafana-bc7e5df0e350) +per each group of points with the same timestamp. Useful for visualizing big number of time series via a heatmap. +See [this article](https://medium.com/@valyala/improving-histogram-usability-for-prometheus-and-grafana-bc7e5df0e350) for more details. + +See also [histogram_over_time](#histogram_over_time) and [histogram_quantile](#histogram_quantile). + +#### limitk + +`limitk(k, q) by (group_labels)` is [aggregate function](#aggregate-functions), which returns up to `k` time series per each `group_labels` +out of time series returned by `q`. The returned set of time series remain the same across calls. + +See also [limit_offset](#limit_offset). + +#### mad + +`mad(q) by (group_labels)` is [aggregate function](#aggregate-functions), which returns the [Median absolute deviation](https://en.wikipedia.org/wiki/Median_absolute_deviation) +per each `group_labels` for all the time series returned by `q`. The aggregate is calculated individually per each group of points with the same timestamp. + +See also [range_mad](#range_mad), [mad_over_time](#mad_over_time), [outliers_mad](#outliers_mad) and [stddev](#stddev). + +#### max + +`max(q) by (group_labels)` is [aggregate function](#aggregate-functions), which returns the maximum value per each `group_labels` +for all the time series returned by `q`. The aggregate is calculated individually per each group of points with the same timestamp. + +This function is supported by PromQL. + +#### median + +`median(q) by (group_labels)` is [aggregate function](#aggregate-functions), which returns the median value per each `group_labels` +for all the time series returned by `q`. The aggregate is calculated individually per each group of points with the same timestamp. + +#### min + +`min(q) by (group_labels)` is [aggregate function](#aggregate-functions), which returns the minimum value per each `group_labels` +for all the time series returned by `q`. The aggregate is calculated individually per each group of points with the same timestamp. + +This function is supported by PromQL. + +#### mode + +`mode(q) by (group_labels)` is [aggregate function](#aggregate-functions), which returns [mode](https://en.wikipedia.org/wiki/Mode_(statistics)) +per each `group_labels` for all the time series returned by `q`. The aggregate is calculated individually per each group of points with the same timestamp. + +#### outliers_mad + +`outliers_mad(tolerance, q)` is [aggregate function](#aggregate-functions), which returns time series from `q` with at least +a single point outside [Median absolute deviation](https://en.wikipedia.org/wiki/Median_absolute_deviation) (aka MAD) multiplied by `tolerance`. +E.g. it returns time series with at least a single point below `median(q) - mad(q)` or a single point above `median(q) + mad(q)`. + +See also [outliersk](#outliersk) and [mad](#mad). + +#### outliersk + +`outliersk(k, q)` is [aggregate function](#aggregate-functions), which returns up to `k` time series with the biggest standard deviation (aka outliers) +out of time series returned by `q`. + +See also [outliers_mad](#outliers_mad). + +#### quantile + +`quantile(phi, q) by (group_labels)` is [aggregate function](#aggregate-functions), which calculates `phi`-quantile per each `group_labels` +for all the time series returned by `q`. `phi` must be in the range `[0...1]`. +The aggregate is calculated individually per each group of points with the same timestamp. + +This function is supported by PromQL. See also [quantiles](#quantiles) and [histogram_quantile](#histogram_quantile). + +#### quantiles + +`quantiles("phiLabel", phi1, ..., phiN, q)` is [aggregate function](#aggregate-functions), which calculates `phi*`-quantiles for all the time series +returned by `q` and return them in time series with `{phiLabel="phi*"}` label. `phi*` must be in the range `[0...1]`. +The aggregate is calculated individually per each group of points with the same timestamp. + +See also [quantile](#quantile). + +#### share + +`share(q) by (group_labels)` is [aggregate function](#aggregate-functions), which returns shares in the range `[0..1]` +for every non-negative points returned by `q` per each timestamp, so the sum of shares per each `group_labels` equals 1. + +This function is useful for normalizing [histogram bucket](https://docs.victoriametrics.com/keyConcepts.html#histogram) shares +into `[0..1]` range: + +```metricsql +share( + sum( + rate(http_request_duration_seconds_bucket[5m]) + ) by (le, vmrange) +) +``` + +See also [range_normalize](#range_normalize). + +#### stddev + +`stddev(q) by (group_labels)` is [aggregate function](#aggregate-functions), which calculates standard deviation per each `group_labels` +for all the time series returned by `q`. The aggregate is calculated individually per each group of points with the same timestamp. + +This function is supported by PromQL. + +#### stdvar + +`stdvar(q) by (group_labels)` is [aggregate function](#aggregate-functions), which calculates standard variance per each `group_labels` +for all the time series returned by `q`. The aggregate is calculated individually per each group of points with the same timestamp. + +This function is supported by PromQL. + +#### sum + +`sum(q) by (group_labels)` is [aggregate function](#aggregate-functions), which returns the sum per each `group_labels` +for all the time series returned by `q`. The aggregate is calculated individually per each group of points with the same timestamp. + +This function is supported by PromQL. + +#### sum2 + +`sum2(q) by (group_labels)` is [aggregate function](#aggregate-functions), which calculates the sum of squares per each `group_labels` +for all the time series returned by `q`. The aggregate is calculated individually per each group of points with the same timestamp. + +#### topk + +`topk(k, q)` is [aggregate function](#aggregate-functions), which returns up to `k` points with the biggest values across all the time series returned by `q`. +The aggregate is calculated individually per each group of points with the same timestamp. + +This function is supported by PromQL. See also [bottomk](#bottomk). + +#### topk_avg + +`topk_avg(k, q, "other_label=other_value")` is [aggregate function](#aggregate-functions), which returns up to `k` time series from `q` with the biggest averages. +If an optional `other_label=other_value` arg is set, then the sum of the remaining time series is returned with the given label. +For example, `topk_avg(3, sum(process_resident_memory_bytes) by (job), "job=other")` would return up to 3 time series with the biggest averages +plus a time series with `{job="other"}` label with the sum of the remaining series if any. + +See also [bottomk_avg](#bottomk_avg). + +#### topk_last + +`topk_last(k, q, "other_label=other_value")` is [aggregate function](#aggregate-functions), which returns up to `k` time series from `q` with the biggest last values. +If an optional `other_label=other_value` arg is set, then the sum of the remaining time series is returned with the given label. +For example, `topk_max(3, sum(process_resident_memory_bytes) by (job), "job=other")` would return up to 3 time series with the biggest maximums +plus a time series with `{job="other"}` label with the sum of the remaining series if any. + +See also [bottomk_last](#bottomk_last). + +#### topk_max + +`topk_max(k, q, "other_label=other_value")` is [aggregate function](#aggregate-functions), which returns up to `k` time series from `q` with the biggest maximums. +If an optional `other_label=other_value` arg is set, then the sum of the remaining time series is returned with the given label. +For example, `topk_max(3, sum(process_resident_memory_bytes) by (job), "job=other")` would return up to 3 time series with the biggest maximums +plus a time series with `{job="other"}` label with the sum of the remaining series if any. + +See also [bottomk_max](#bottomk_max). + +#### topk_median + +`topk_median(k, q, "other_label=other_value")` is [aggregate function](#aggregate-functions), which returns up to `k` time series from `q` with the biggest medians. +If an optional `other_label=other_value` arg is set, then the sum of the remaining time series is returned with the given label. +For example, `topk_median(3, sum(process_resident_memory_bytes) by (job), "job=other")` would return up to 3 time series with the biggest medians +plus a time series with `{job="other"}` label with the sum of the remaining series if any. + +See also [bottomk_median](#bottomk_median). + +#### topk_min + +`topk_min(k, q, "other_label=other_value")` is [aggregate function](#aggregate-functions), which returns up to `k` time series from `q` with the biggest minimums. +If an optional `other_label=other_value` arg is set, then the sum of the remaining time series is returned with the given label. +For example, `topk_min(3, sum(process_resident_memory_bytes) by (job), "job=other")` would return up to 3 time series with the biggest minimums +plus a time series with `{job="other"}` label with the sum of the remaining series if any. + +See also [bottomk_min](#bottomk_min). + +#### zscore + +`zscore(q) by (group_labels)` is [aggregate function](#aggregate-functions), which returns [z-score](https://en.wikipedia.org/wiki/Standard_score) values +per each `group_labels` for all the time series returned by `q`. The aggregate is calculated individually per each group of points with the same timestamp. +This function is useful for detecting anomalies in the group of related time series. + +See also [zscore_over_time](#zscore_over_time) and [range_trim_zscore](#range_trim_zscore). + +## Subqueries + +MetricsQL supports and extends PromQL subqueries. See [this article](https://valyala.medium.com/prometheus-subqueries-in-victoriametrics-9b1492b720b3) for details. +Any [rollup function](#rollup-functions) for something other than [series selector](https://docs.victoriametrics.com/keyConcepts.html#filtering) form a subquery. +Nested rollup functions can be implicit thanks to the [implicit query conversions](#implicit-query-conversions). +For example, `delta(sum(m))` is implicitly converted to `delta(sum(default_rollup(m[1i]))[1i:1i])`, so it becomes a subquery, +since it contains [default_rollup](#default_rollup) nested into [delta](#delta). + +VictoriaMetrics performs subqueries in the following way: + +* It calculates the inner rollup function using the `step` value from the outer rollup function. + For example, for expression `max_over_time(rate(http_requests_total[5m])[1h:30s])` the inner function `rate(http_requests_total[5m])` + is calculated with `step=30s`. The resulting data points are aligned by the `step`. +* It calculates the outer rollup function over the results of the inner rollup function using the `step` value + passed by Grafana to [/api/v1/query_range](https://docs.victoriametrics.com/keyConcepts.html#range-query). + +## Implicit query conversions + +VictoriaMetrics performs the following implicit conversions for incoming queries before starting the calculations: + +* If lookbehind window in square brackets is missing inside [rollup function](#rollup-functions), + then `[1i]` is automatically added there. The `[1i]` means one `step` value, which is passed + to [/api/v1/query_range](https://docs.victoriametrics.com/keyConcepts.html#range-query). + It is also known as `$__interval` in Grafana. For example, `rate(http_requests_count)` is automatically transformed to `rate(http_requests_count[1i])`. +* All the [series selectors](https://docs.victoriametrics.com/keyConcepts.html#filtering), + which aren't wrapped into [rollup functions](#rollup-functions), are automatically wrapped into [default_rollup](#default_rollup) function. + Examples: + * `foo` is transformed to `default_rollup(foo[1i])` + * `foo + bar` is transformed to `default_rollup(foo[1i]) + default_rollup(bar[1i])` + * `count(up)` is transformed to `count(default_rollup(up[1i]))`, because [count](#count) isn't a [rollup function](#rollup-functions) - + it is [aggregate function](#aggregate-functions) + * `abs(temperature)` is transformed to `abs(default_rollup(temperature[1i]))`, because [abs](#abs) isn't a [rollup function](#rollup-functions) - + it is [transform function](#transform-functions) +* If `step` in square brackets is missing inside [subquery](#subqueries), then `1i` step is automatically added there. + For example, `avg_over_time(rate(http_requests_total[5m])[1h])` is automatically converted to `avg_over_time(rate(http_requests_total[5m])[1h:1i])`. +* If something other than [series selector](https://docs.victoriametrics.com/keyConcepts.html#filtering) + is passed to [rollup function](#rollup-functions), then a [subquery](#subqueries) with `1i` lookbehind window and `1i` step is automatically formed. + For example, `rate(sum(up))` is automatically converted to `rate((sum(default_rollup(up[1i])))[1i:1i])`. diff --git a/app/vmagent/README.md b/app/vmagent/README.md index f1622c5ab..941557f77 100644 --- a/app/vmagent/README.md +++ b/app/vmagent/README.md @@ -46,7 +46,7 @@ additionally to [discovering Prometheus-compatible targets and scraping metrics ## Quick Start -Please download `vmutils-*` archive from [releases page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases) ( +Please download `vmutils-*` archive from [releases page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest) ( `vmagent` is also available in [docker images](https://hub.docker.com/r/victoriametrics/vmagent/tags)), unpack it and pass the following flags to the `vmagent` binary in order to start scraping Prometheus-compatible targets and sending the data to the Prometheus-compatible remote storage: @@ -1025,7 +1025,7 @@ See also [troubleshooting docs](https://docs.victoriametrics.com/Troubleshooting * [Reading metrics from Kafka](#reading-metrics-from-kafka) * [Writing metrics to Kafka](#writing-metrics-to-kafka) -The enterprise version of vmagent is available for evaluation at [releases](https://github.com/VictoriaMetrics/VictoriaMetrics/releases) page +The enterprise version of vmagent is available for evaluation at [releases](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest) page in `vmutils-...-enterprise.tar.gz` archives and in [docker images](https://hub.docker.com/r/victoriametrics/vmagent/tags) with tags containing `enterprise` suffix. See how to request a free trial license [here](https://victoriametrics.com/products/enterprise/trial/). @@ -1074,7 +1074,7 @@ data_format = "influx" #### Command-line flags for Kafka consumer These command-line flags are available only in [enterprise](https://docs.victoriametrics.com/enterprise.html) version of `vmagent`, -which can be downloaded for evaluation from [releases](https://github.com/VictoriaMetrics/VictoriaMetrics/releases) page +which can be downloaded for evaluation from [releases](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest) page (see `vmutils-...-enterprise.tar.gz` archives) and from [docker images](https://hub.docker.com/r/victoriametrics/vmagent/tags) with tags containing `enterprise` suffix. ``` @@ -1134,7 +1134,7 @@ Two types of auth are supported: ## How to build from sources -We recommend using [official binary releases](https://github.com/VictoriaMetrics/VictoriaMetrics/releases) - `vmagent` is located in the `vmutils-...` archives. +We recommend using [official binary releases](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest) - `vmagent` is located in the `vmutils-...` archives. It may be needed to build `vmagent` from source code when developing or testing new feature or bugfix. @@ -1246,7 +1246,9 @@ See the docs at https://docs.victoriametrics.com/vmagent.html . -envflag.prefix string Prefix for environment variables if -envflag.enable is set -eula - Deprecated, please use -license or -licenseFile flags instead. By specifying this flag, you confirm that you have an enterprise license and accept the ESA https://victoriametrics.com/legal/esa/ . This flag is available only in VictoriaMetrics enterprise. See https://docs.victoriametrics.com/enterprise.html + Deprecated, please use -license or -licenseFile flags instead. By specifying this flag, you confirm that you have an enterprise license and accept the ESA https://victoriametrics.com/legal/esa/ . This flag is available only in Enterprise binaries. See https://docs.victoriametrics.com/enterprise.html + -filestream.disableFadvise + Whether to disable fadvise() syscall when reading large data files. The fadvise() syscall prevents from eviction of recently accessed data from OS page cache during background merges and backups. In some rare cases it is better to disable the syscall if it uses too much CPU -flagsAuthKey string Auth key for /flags endpoint. It must be passed via authKey query arg. It overrides httpAuth.* settings -fs.disableMmap @@ -1309,40 +1311,40 @@ See the docs at https://docs.victoriametrics.com/vmagent.html . -internStringMaxLen int The maximum length for strings to intern. A lower limit may save memory at the cost of higher CPU usage. See https://en.wikipedia.org/wiki/String_interning . See also -internStringDisableCache and -internStringCacheExpireDuration (default 500) -kafka.consumer.topic array - Kafka topic names for data consumption. This flag is available only in VictoriaMetrics enterprise. See https://docs.victoriametrics.com/enterprise.html + Kafka topic names for data consumption. This flag is available only in Enterprise binaries. See https://docs.victoriametrics.com/enterprise.html Supports an array of values separated by comma or specified via multiple flags. -kafka.consumer.topic.basicAuth.password array - Optional basic auth password for -kafka.consumer.topic. Must be used in conjunction with any supported auth methods for kafka client, specified by flag -kafka.consumer.topic.options='security.protocol=SASL_SSL;sasl.mechanisms=PLAIN' . This flag is available only in VictoriaMetrics enterprise. See https://docs.victoriametrics.com/enterprise.html + Optional basic auth password for -kafka.consumer.topic. Must be used in conjunction with any supported auth methods for kafka client, specified by flag -kafka.consumer.topic.options='security.protocol=SASL_SSL;sasl.mechanisms=PLAIN' . This flag is available only in Enterprise binaries. See https://docs.victoriametrics.com/enterprise.html Supports an array of values separated by comma or specified via multiple flags. -kafka.consumer.topic.basicAuth.username array - Optional basic auth username for -kafka.consumer.topic. Must be used in conjunction with any supported auth methods for kafka client, specified by flag -kafka.consumer.topic.options='security.protocol=SASL_SSL;sasl.mechanisms=PLAIN' . This flag is available only in VictoriaMetrics enterprise. See https://docs.victoriametrics.com/enterprise.html + Optional basic auth username for -kafka.consumer.topic. Must be used in conjunction with any supported auth methods for kafka client, specified by flag -kafka.consumer.topic.options='security.protocol=SASL_SSL;sasl.mechanisms=PLAIN' . This flag is available only in Enterprise binaries. See https://docs.victoriametrics.com/enterprise.html Supports an array of values separated by comma or specified via multiple flags. -kafka.consumer.topic.brokers array - List of brokers to connect for given topic, e.g. -kafka.consumer.topic.broker=host-1:9092;host-2:9092 . This flag is available only in VictoriaMetrics enterprise. See https://docs.victoriametrics.com/enterprise.html + List of brokers to connect for given topic, e.g. -kafka.consumer.topic.broker=host-1:9092;host-2:9092 . This flag is available only in Enterprise binaries. See https://docs.victoriametrics.com/enterprise.html Supports an array of values separated by comma or specified via multiple flags. -kafka.consumer.topic.concurrency array - Configures consumer concurrency for topic specified via -kafka.consumer.topic flag.This flag is available only in VictoriaMetrics enterprise. See https://docs.victoriametrics.com/enterprise.html + Configures consumer concurrency for topic specified via -kafka.consumer.topic flag.This flag is available only in Enterprise binaries. See https://docs.victoriametrics.com/enterprise.html (default 1) Supports array of values separated by comma or specified via multiple flags. -kafka.consumer.topic.defaultFormat string - Expected data format in the topic if -kafka.consumer.topic.format is skipped. This flag is available only in VictoriaMetrics enterprise. See https://docs.victoriametrics.com/enterprise.html (default "promremotewrite") + Expected data format in the topic if -kafka.consumer.topic.format is skipped. This flag is available only in Enterprise binaries. See https://docs.victoriametrics.com/enterprise.html (default "promremotewrite") -kafka.consumer.topic.format array - data format for corresponding kafka topic. Valid formats: influx, prometheus, promremotewrite, graphite, jsonline . This flag is available only in VictoriaMetrics enterprise. See https://docs.victoriametrics.com/enterprise.html + data format for corresponding kafka topic. Valid formats: influx, prometheus, promremotewrite, graphite, jsonline . This flag is available only in Enterprise binaries. See https://docs.victoriametrics.com/enterprise.html Supports an array of values separated by comma or specified via multiple flags. -kafka.consumer.topic.groupID array - Defines group.id for topic. This flag is available only in VictoriaMetrics enterprise. See https://docs.victoriametrics.com/enterprise.html + Defines group.id for topic. This flag is available only in Enterprise binaries. See https://docs.victoriametrics.com/enterprise.html Supports an array of values separated by comma or specified via multiple flags. -kafka.consumer.topic.isGzipped array - Enables gzip setting for topic messages payload. Only prometheus, jsonline and influx formats accept gzipped messages.This flag is available only in VictoriaMetrics enterprise. See https://docs.victoriametrics.com/enterprise.html + Enables gzip setting for topic messages payload. Only prometheus, jsonline and influx formats accept gzipped messages.This flag is available only in Enterprise binaries. See https://docs.victoriametrics.com/enterprise.html Supports array of values separated by comma or specified via multiple flags. -kafka.consumer.topic.options array - Optional key=value;key1=value2 settings for topic consumer. See full configuration options at https://github.com/edenhill/librdkafka/blob/master/CONFIGURATION.md . This flag is available only in VictoriaMetrics enterprise. See https://docs.victoriametrics.com/enterprise.html + Optional key=value;key1=value2 settings for topic consumer. See full configuration options at https://github.com/edenhill/librdkafka/blob/master/CONFIGURATION.md . This flag is available only in Enterprise binaries. See https://docs.victoriametrics.com/enterprise.html Supports an array of values separated by comma or specified via multiple flags. -license string - enterprise license key. This flag is available only in VictoriaMetrics enterprise. Documentation - https://docs.victoriametrics.com/enterprise.html, for more information, visit https://victoriametrics.com/products/enterprise/ . To request a trial license, go to https://victoriametrics.com/products/enterprise/trial/ + Lisense key for VictoriaMetrics Enterprise. See https://victoriametrics.com/products/enterprise/ . Trial Enterprise license can be obtained from https://victoriametrics.com/products/enterprise/trial/ . This flag is available only in Enterprise binaries. The license key can be also passed via file specified by -licenseFile command-line flag -license.forceOffline - enables offline license verification. License keys issued must support this feature. Contact our support team for license keys with offline check support. + Whether to enable offline verification for VictoriaMetrics Enterprise license key, which has been passed either via -license or via -licenseFile command-line flag. The issued license key must support offline verification feature. Contact info@victoriametrics.com if you need offline license verification. This flag is avilable only in Enterprise binaries -licenseFile string - path to file with enterprise license key. This flag is available only in VictoriaMetrics enterprise. Documentation - https://docs.victoriametrics.com/enterprise.html, for more information, visit https://victoriametrics.com/products/enterprise/ . To request a trial license, go to https://victoriametrics.com/products/enterprise/trial/ + Path to file with license key for VictoriaMetrics Enterprise. See https://victoriametrics.com/products/enterprise/ . Trial Enterprise license can be obtained from https://victoriametrics.com/products/enterprise/trial/ . This flag is available only in Enterprise binaries. The license key can be also passed inline via -license command-line flag -loggerDisableTimestamps Whether to disable writing timestamps in logs -loggerErrorsPerSecondLimit int @@ -1360,7 +1362,7 @@ See the docs at https://docs.victoriametrics.com/vmagent.html . -loggerWarnsPerSecondLimit int Per-second limit on the number of WARN messages. If more than the given number of warns are emitted per second, then the remaining warns are suppressed. Zero values disable the rate limit -maxConcurrentInserts int - The maximum number of concurrent insert requests. The default value should work for most cases, since it minimizes memory usage. The default value can be increased when clients send data over slow networks. See also -insert.maxQueueDuration (default 8) + The maximum number of concurrent insert requests. Default value should work for most cases, since it minimizes the memory usage. The default value can be increased when clients send data over slow networks. See also -insert.maxQueueDuration (default 8) -maxInsertRequestSize size The maximum size in bytes of a single Prometheus remote_write API request Supports the following optional suffixes for size values: KB, MB, GB, TB, KiB, MiB, GiB, TiB (default 33554432) @@ -1393,15 +1395,15 @@ See the docs at https://docs.victoriametrics.com/vmagent.html . -promscrape.azureSDCheckInterval duration Interval for checking for changes in Azure. This works only if azure_sd_configs is configured in '-promscrape.config' file. See https://docs.victoriametrics.com/sd_configs.html#azure_sd_configs for details (default 1m0s) -promscrape.cluster.memberLabel string - If non-empty, then the label with this name and the -promscrape.cluster.memberNum value is added to all the scraped metrics + If non-empty, then the label with this name and the -promscrape.cluster.memberNum value is added to all the scraped metrics. See https://docs.victoriametrics.com/vmagent.html#scraping-big-number-of-targets for more info -promscrape.cluster.memberNum string - The number of vmagent instance in the cluster of scrapers. It must be a unique value in the range 0 ... promscrape.cluster.membersCount-1 across scrapers in the cluster. Can be specified as pod name of Kubernetes StatefulSet - pod-name-Num, where Num is a numeric part of pod name. See also -promscrape.cluster.memberLabel (default "0") + The number of vmagent instance in the cluster of scrapers. It must be a unique value in the range 0 ... promscrape.cluster.membersCount-1 across scrapers in the cluster. Can be specified as pod name of Kubernetes StatefulSet - pod-name-Num, where Num is a numeric part of pod name. See also -promscrape.cluster.memberLabel . See https://docs.victoriametrics.com/vmagent.html#scraping-big-number-of-targets for more info (default "0") -promscrape.cluster.membersCount int - The number of members in a cluster of scrapers. Each member must have a unique -promscrape.cluster.memberNum in the range 0 ... promscrape.cluster.membersCount-1 . Each member then scrapes roughly 1/N of all the targets. By default, cluster scraping is disabled, i.e. a single scraper scrapes all the targets + The number of members in a cluster of scrapers. Each member must have a unique -promscrape.cluster.memberNum in the range 0 ... promscrape.cluster.membersCount-1 . Each member then scrapes roughly 1/N of all the targets. By default, cluster scraping is disabled, i.e. a single scraper scrapes all the targets. See https://docs.victoriametrics.com/vmagent.html#scraping-big-number-of-targets for more info (default 1) -promscrape.cluster.name string - Optional name of the cluster. If multiple vmagent clusters scrape the same targets, then each cluster must have unique name in order to properly de-duplicate samples received from these clusters. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/2679 + Optional name of the cluster. If multiple vmagent clusters scrape the same targets, then each cluster must have unique name in order to properly de-duplicate samples received from these clusters. See https://docs.victoriametrics.com/vmagent.html#scraping-big-number-of-targets for more info -promscrape.cluster.replicationFactor int - The number of members in the cluster, which scrape the same targets. If the replication factor is greater than 1, then the deduplication must be enabled at remote storage side. See https://docs.victoriametrics.com/#deduplication (default 1) + The number of members in the cluster, which scrape the same targets. If the replication factor is greater than 1, then the deduplication must be enabled at remote storage side. See https://docs.victoriametrics.com/vmagent.html#scraping-big-number-of-targets for more info (default 1) -promscrape.config string Optional path to Prometheus config file with 'scrape_configs' section containing targets to scrape. The path can point to local file and to http url. See https://docs.victoriametrics.com/#how-to-scrape-prometheus-exporters-such-as-node-exporter for details -promscrape.config.dryRun @@ -1551,7 +1553,7 @@ See the docs at https://docs.victoriametrics.com/vmagent.html . The maximum number of unique series vmagent can send to remote storage systems during the last 24 hours. Excess series are logged and dropped. This can be useful for limiting series churn rate. See https://docs.victoriametrics.com/vmagent.html#cardinality-limiter -remoteWrite.maxDiskUsagePerURL array The maximum file-based buffer size in bytes at -remoteWrite.tmpDataPath for each -remoteWrite.url. When buffer size reaches the configured maximum, then old data is dropped when adding new data to the buffer. Buffered data is stored in ~500MB chunks. It is recommended to set the value for this flag to a multiple of the block size 500MB. Disk usage is unlimited if the value is set to 0 - Supports the following optional suffixes for size values: KB, MB, GB, TB, KiB, MiB, GiB, TiB. + Supports the following optional suffixes for size values: KB, MB, GB, TB, KiB, MiB, GiB, TiB. (default 0) Supports array of values separated by comma or specified via multiple flags. -remoteWrite.maxHourlySeries int The maximum number of unique series vmagent can send to remote storage systems during the last hour. Excess series are logged and dropped. This can be useful for limiting series cardinality. See https://docs.victoriametrics.com/vmagent.html#cardinality-limiter @@ -1581,28 +1583,28 @@ See the docs at https://docs.victoriametrics.com/vmagent.html . -remoteWrite.queues int The number of concurrent queues to each -remoteWrite.url. Set more queues if default number of queues isn't enough for sending high volume of collected data to remote storage. Default value is 2 * numberOfAvailableCPUs (default 8) -remoteWrite.rateLimit array - Optional rate limit in bytes per second for data sent to the corresponding -remoteWrite.url. By default, the rate limit is disabled. It can be useful for limiting load on remote storage when big amounts of buffered data is sent after temporary unavailability of the remote storage + Optional rate limit in bytes per second for data sent to the corresponding -remoteWrite.url. By default, the rate limit is disabled. It can be useful for limiting load on remote storage when big amounts of buffered data is sent after temporary unavailability of the remote storage (default 0) Supports array of values separated by comma or specified via multiple flags. -remoteWrite.relabelConfig string Optional path to file with relabeling configs, which are applied to all the metrics before sending them to -remoteWrite.url. See also -remoteWrite.urlRelabelConfig. The path can point either to local file or to http url. See https://docs.victoriametrics.com/vmagent.html#relabeling -remoteWrite.roundDigits array - Round metric values to this number of decimal digits after the point before writing them to remote storage. Examples: -remoteWrite.roundDigits=2 would round 1.236 to 1.24, while -remoteWrite.roundDigits=-1 would round 126.78 to 130. By default, digits rounding is disabled. Set it to 100 for disabling it for a particular remote storage. This option may be used for improving data compression for the stored metrics + Round metric values to this number of decimal digits after the point before writing them to remote storage. Examples: -remoteWrite.roundDigits=2 would round 1.236 to 1.24, while -remoteWrite.roundDigits=-1 would round 126.78 to 130. By default, digits rounding is disabled. Set it to 100 for disabling it for a particular remote storage. This option may be used for improving data compression for the stored metrics (default 100) Supports array of values separated by comma or specified via multiple flags. -remoteWrite.sendTimeout array - Timeout for sending a single block of data to the corresponding -remoteWrite.url (default 1m) + Timeout for sending a single block of data to the corresponding -remoteWrite.url (default 1m0s) Supports array of values separated by comma or specified via multiple flags. -remoteWrite.shardByURL Whether to shard outgoing series across all the remote storage systems enumerated via -remoteWrite.url . By default the data is replicated across all the -remoteWrite.url . See https://docs.victoriametrics.com/vmagent.html#sharding-among-remote-storages -remoteWrite.showURL Whether to show -remoteWrite.url in the exported metrics. It is hidden by default, since it can contain sensitive info such as auth key -remoteWrite.significantFigures array - The number of significant figures to leave in metric values before writing them to remote storage. See https://en.wikipedia.org/wiki/Significant_figures . Zero value saves all the significant figures. This option may be used for improving data compression for the stored metrics. See also -remoteWrite.roundDigits + The number of significant figures to leave in metric values before writing them to remote storage. See https://en.wikipedia.org/wiki/Significant_figures . Zero value saves all the significant figures. This option may be used for improving data compression for the stored metrics. See also -remoteWrite.roundDigits (default 0) Supports array of values separated by comma or specified via multiple flags. -remoteWrite.streamAggr.config array Optional path to file with stream aggregation config. See https://docs.victoriametrics.com/stream-aggregation.html . See also -remoteWrite.streamAggr.keepInput, -remoteWrite.streamAggr.dropInput and -remoteWrite.streamAggr.dedupInterval Supports an array of values separated by comma or specified via multiple flags. -remoteWrite.streamAggr.dedupInterval array - Input samples are de-duplicated with this interval before being aggregated. Only the last sample per each time series per each interval is aggregated if the interval is greater than zero + Input samples are de-duplicated with this interval before being aggregated. Only the last sample per each time series per each interval is aggregated if the interval is greater than zero (default 0s) Supports array of values separated by comma or specified via multiple flags. -remoteWrite.streamAggr.dropInput array Whether to drop all the input samples after the aggregation with -remoteWrite.streamAggr.config. By default, only aggregates samples are dropped, while the remaining samples are written to the corresponding -remoteWrite.url . See also -remoteWrite.streamAggr.keepInput and https://docs.victoriametrics.com/stream-aggregation.html diff --git a/app/vmagent/datadog/request_handler.go b/app/vmagent/datadog/request_handler.go index 056d3bcb0..b7cb1a2dc 100644 --- a/app/vmagent/datadog/request_handler.go +++ b/app/vmagent/datadog/request_handler.go @@ -8,7 +8,7 @@ import ( "github.com/VictoriaMetrics/VictoriaMetrics/lib/auth" "github.com/VictoriaMetrics/VictoriaMetrics/lib/prompbmarshal" parserCommon "github.com/VictoriaMetrics/VictoriaMetrics/lib/protoparser/common" - parser "github.com/VictoriaMetrics/VictoriaMetrics/lib/protoparser/datadog" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/protoparser/datadog" "github.com/VictoriaMetrics/VictoriaMetrics/lib/protoparser/datadog/stream" "github.com/VictoriaMetrics/VictoriaMetrics/lib/tenantmetrics" "github.com/VictoriaMetrics/metrics" @@ -29,12 +29,12 @@ func InsertHandlerForHTTP(at *auth.Token, req *http.Request) error { return err } ce := req.Header.Get("Content-Encoding") - return stream.Parse(req.Body, ce, func(series []parser.Series) error { + return stream.Parse(req.Body, ce, func(series []datadog.Series) error { return insertRows(at, series, extraLabels) }) } -func insertRows(at *auth.Token, series []parser.Series, extraLabels []prompbmarshal.Label) error { +func insertRows(at *auth.Token, series []datadog.Series, extraLabels []prompbmarshal.Label) error { ctx := common.GetPushCtx() defer common.PutPushCtx(ctx) @@ -63,7 +63,7 @@ func insertRows(at *auth.Token, series []parser.Series, extraLabels []prompbmars }) } for _, tag := range ss.Tags { - name, value := parser.SplitTag(tag) + name, value := datadog.SplitTag(tag) if name == "host" { name = "exported_host" } diff --git a/app/vmagent/main.go b/app/vmagent/main.go index d74404a0c..53250ea86 100644 --- a/app/vmagent/main.go +++ b/app/vmagent/main.go @@ -322,19 +322,19 @@ func requestHandler(w http.ResponseWriter, r *http.Request) bool { } w.WriteHeader(http.StatusOK) return true - case "/newrelic/api/v1": + case "/newrelic": newrelicCheckRequest.Inc() w.Header().Set("Content-Type", "application/json") w.WriteHeader(202) fmt.Fprintf(w, `{"status":"ok"}`) return true - case "/newrelic/api/v1/inventory/deltas": + case "/newrelic/inventory/deltas": newrelicInventoryRequests.Inc() w.Header().Set("Content-Type", "application/json") w.WriteHeader(202) fmt.Fprintf(w, `{"payload":{"version": 1, "state": {}, "reset": "false"}}`) return true - case "/newrelic/api/v1/infra/v2/metrics/events/bulk": + case "/newrelic/infra/v2/metrics/events/bulk": newrelicWriteRequests.Inc() if err := newrelic.InsertHandlerForHTTP(nil, r); err != nil { newrelicWriteErrors.Inc() @@ -548,19 +548,19 @@ func processMultitenantRequest(w http.ResponseWriter, r *http.Request, path stri } w.WriteHeader(http.StatusOK) return true - case "/newrelic/api/v1": + case "newrelic": newrelicCheckRequest.Inc() w.Header().Set("Content-Type", "application/json") w.WriteHeader(202) fmt.Fprintf(w, `{"status":"ok"}`) return true - case "/newrelic/api/v1/inventory/deltas": + case "newrelic/inventory/deltas": newrelicInventoryRequests.Inc() w.Header().Set("Content-Type", "application/json") w.WriteHeader(202) fmt.Fprintf(w, `{"payload":{"version": 1, "state": {}, "reset": "false"}}`) return true - case "/newrelic/api/v1/infra/v2/metrics/events/bulk": + case "newrelic/infra/v2/metrics/events/bulk": newrelicWriteRequests.Inc() if err := newrelic.InsertHandlerForHTTP(at, r); err != nil { newrelicWriteErrors.Inc() @@ -643,11 +643,11 @@ var ( opentelemetryPushRequests = metrics.NewCounter(`vmagent_http_requests_total{path="/opentelemetry/api/v1/push", protocol="opentelemetry"}`) opentelemetryPushErrors = metrics.NewCounter(`vmagent_http_request_errors_total{path="/opentelemetry/api/v1/push", protocol="opentelemetry"}`) - newrelicWriteRequests = metrics.NewCounter(`vm_http_requests_total{path="/newrelic/api/v1/infra/v2/metrics/events/bulk", protocol="newrelic"}`) - newrelicWriteErrors = metrics.NewCounter(`vm_http_request_errors_total{path="/newrelic/api/v1/infra/v2/metrics/events/bulk", protocol="newrelic"}`) + newrelicWriteRequests = metrics.NewCounter(`vm_http_requests_total{path="/newrelic/infra/v2/metrics/events/bulk", protocol="newrelic"}`) + newrelicWriteErrors = metrics.NewCounter(`vm_http_request_errors_total{path="/newrelic/infra/v2/metrics/events/bulk", protocol="newrelic"}`) - newrelicInventoryRequests = metrics.NewCounter(`vm_http_requests_total{path="/newrelic/api/v1/inventory/deltas", protocol="newrelic"}`) - newrelicCheckRequest = metrics.NewCounter(`vm_http_requests_total{path="/newrelic/api/v1", protocol="newrelic"}`) + newrelicInventoryRequests = metrics.NewCounter(`vm_http_requests_total{path="/newrelic/inventory/deltas", protocol="newrelic"}`) + newrelicCheckRequest = metrics.NewCounter(`vm_http_requests_total{path="/newrelic", protocol="newrelic"}`) promscrapeTargetsRequests = metrics.NewCounter(`vmagent_http_requests_total{path="/targets"}`) promscrapeServiceDiscoveryRequests = metrics.NewCounter(`vmagent_http_requests_total{path="/service-discovery"}`) diff --git a/app/vmagent/newrelic/request_handler.go b/app/vmagent/newrelic/request_handler.go index 378476405..b164fc973 100644 --- a/app/vmagent/newrelic/request_handler.go +++ b/app/vmagent/newrelic/request_handler.go @@ -8,6 +8,7 @@ import ( "github.com/VictoriaMetrics/VictoriaMetrics/app/vmagent/common" "github.com/VictoriaMetrics/VictoriaMetrics/app/vmagent/remotewrite" "github.com/VictoriaMetrics/VictoriaMetrics/lib/auth" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil" "github.com/VictoriaMetrics/VictoriaMetrics/lib/prompbmarshal" parserCommon "github.com/VictoriaMetrics/VictoriaMetrics/lib/protoparser/common" "github.com/VictoriaMetrics/VictoriaMetrics/lib/protoparser/newrelic" @@ -29,42 +30,48 @@ func InsertHandlerForHTTP(at *auth.Token, req *http.Request) error { } ce := req.Header.Get("Content-Encoding") isGzip := ce == "gzip" - return stream.Parse(req.Body, isGzip, func(series []newrelic.Metric) error { - return insertRows(at, series, extraLabels) + return stream.Parse(req.Body, isGzip, func(rows []newrelic.Row) error { + return insertRows(at, rows, extraLabels) }) } -func insertRows(at *auth.Token, rows []newrelic.Metric, extraLabels []prompbmarshal.Label) error { +func insertRows(at *auth.Token, rows []newrelic.Row, extraLabels []prompbmarshal.Label) error { ctx := common.GetPushCtx() defer common.PutPushCtx(ctx) - rowsTotal := 0 + samplesCount := 0 tssDst := ctx.WriteRequest.Timeseries[:0] labels := ctx.Labels[:0] samples := ctx.Samples[:0] for i := range rows { r := &rows[i] - labelsLen := len(labels) - labels = append(labels, prompbmarshal.Label{ - Name: "__name__", - Value: r.Metric, - }) - for j := range r.Tags { - tag := &r.Tags[j] + tags := r.Tags + srcSamples := r.Samples + for j := range srcSamples { + s := &srcSamples[j] + labelsLen := len(labels) labels = append(labels, prompbmarshal.Label{ - Name: tag.Key, - Value: tag.Value, + Name: "__name__", + Value: bytesutil.ToUnsafeString(s.Name), }) + for k := range tags { + t := &tags[k] + labels = append(labels, prompbmarshal.Label{ + Name: bytesutil.ToUnsafeString(t.Key), + Value: bytesutil.ToUnsafeString(t.Value), + }) + } + samples = append(samples, prompbmarshal.Sample{ + Value: s.Value, + Timestamp: r.Timestamp, + }) + tssDst = append(tssDst, prompbmarshal.TimeSeries{ + Labels: labels[labelsLen:], + Samples: samples[len(samples)-1:], + }) + labels = append(labels, extraLabels...) } - samples = append(samples, prompbmarshal.Sample{ - Value: r.Value, - Timestamp: r.Timestamp, - }) - tssDst = append(tssDst, prompbmarshal.TimeSeries{ - Labels: labels[labelsLen:], - Samples: samples[len(samples)-1:], - }) - labels = append(labels, extraLabels...) + samplesCount += len(srcSamples) } ctx.WriteRequest.Timeseries = tssDst ctx.Labels = labels @@ -72,8 +79,8 @@ func insertRows(at *auth.Token, rows []newrelic.Metric, extraLabels []prompbmars remotewrite.Push(at, &ctx.WriteRequest) rowsInserted.Add(len(rows)) if at != nil { - rowsTenantInserted.Get(at).Add(rowsTotal) + rowsTenantInserted.Get(at).Add(samplesCount) } - rowsPerInsert.Update(float64(len(rows))) + rowsPerInsert.Update(float64(samplesCount)) return nil } diff --git a/app/vmagent/remotewrite/client.go b/app/vmagent/remotewrite/client.go index 56d0f7210..5403f8a9f 100644 --- a/app/vmagent/remotewrite/client.go +++ b/app/vmagent/remotewrite/client.go @@ -323,26 +323,32 @@ func (c *client) runWorker() { } func (c *client) doRequest(url string, body []byte) (*http.Response, error) { - req := c.newRequest(url, body) + req, err := c.newRequest(url, body) + if err != nil { + return nil, err + } resp, err := c.hc.Do(req) if err != nil && errors.Is(err, io.EOF) { // it is likely connection became stale. // So we do one more attempt in hope request will succeed. // If not, the error should be handled by the caller as usual. // This should help with https://github.com/VictoriaMetrics/VictoriaMetrics/issues/4139 - req = c.newRequest(url, body) + req, _ = c.newRequest(url, body) resp, err = c.hc.Do(req) } return resp, err } -func (c *client) newRequest(url string, body []byte) *http.Request { +func (c *client) newRequest(url string, body []byte) (*http.Request, error) { reqBody := bytes.NewBuffer(body) req, err := http.NewRequest(http.MethodPost, url, reqBody) if err != nil { logger.Panicf("BUG: unexpected error from http.NewRequest(%q): %s", url, err) } - c.authCfg.SetHeaders(req, true) + err = c.authCfg.SetHeaders(req, true) + if err != nil { + return nil, err + } h := req.Header h.Set("User-Agent", "vmagent") h.Set("Content-Type", "application/x-protobuf") @@ -360,7 +366,7 @@ func (c *client) newRequest(url string, body []byte) *http.Request { logger.Warnf("cannot sign remoteWrite request with AWS sigv4: %s", err) } } - return req + return req, nil } // sendBlockHTTP sends the given block to c.remoteWriteURL. diff --git a/app/vmagent/remotewrite/remotewrite.go b/app/vmagent/remotewrite/remotewrite.go index 452c9781a..328473249 100644 --- a/app/vmagent/remotewrite/remotewrite.go +++ b/app/vmagent/remotewrite/remotewrite.go @@ -759,13 +759,12 @@ func (rwctx *remoteWriteCtx) pushInternal(tss []prompbmarshal.TimeSeries) { } func (rwctx *remoteWriteCtx) reinitStreamAggr() { - sas := rwctx.sas.Load() - if sas == nil { + sasFile := streamAggrConfig.GetOptionalArg(rwctx.idx) + if sasFile == "" { // There is no stream aggregation for rwctx return } - sasFile := streamAggrConfig.GetOptionalArg(rwctx.idx) logger.Infof("reloading stream aggregation configs pointed by -remoteWrite.streamAggr.config=%q", sasFile) metrics.GetOrCreateCounter(fmt.Sprintf(`vmagent_streamaggr_config_reloads_total{path=%q}`, sasFile)).Inc() dedupInterval := streamAggrDedupInterval.GetOptionalArg(rwctx.idx) @@ -776,6 +775,7 @@ func (rwctx *remoteWriteCtx) reinitStreamAggr() { logger.Errorf("cannot reload stream aggregation config from -remoteWrite.streamAggr.config=%q; continue using the previously loaded config; error: %s", sasFile, err) return } + sas := rwctx.sas.Load() if !sasNew.Equal(sas) { sasOld := rwctx.sas.Swap(sasNew) sasOld.MustStop() diff --git a/app/vmalert-tool/Makefile b/app/vmalert-tool/Makefile new file mode 100644 index 000000000..dbb6b373a --- /dev/null +++ b/app/vmalert-tool/Makefile @@ -0,0 +1,103 @@ +# All these commands must run from repository root. + +vmalert-tool: + APP_NAME=vmalert-tool $(MAKE) app-local + +vmalert-tool-race: + APP_NAME=vmalert-tool RACE=-race $(MAKE) app-local + +vmalert-tool-prod: + APP_NAME=vmalert-tool $(MAKE) app-via-docker + +vmalert-tool-pure-prod: + APP_NAME=vmalert-tool $(MAKE) app-via-docker-pure + +vmalert-tool-linux-amd64-prod: + APP_NAME=vmalert-tool $(MAKE) app-via-docker-linux-amd64 + +vmalert-tool-linux-arm-prod: + APP_NAME=vmalert-tool $(MAKE) app-via-docker-linux-arm + +vmalert-tool-linux-arm64-prod: + APP_NAME=vmalert-tool $(MAKE) app-via-docker-linux-arm64 + +vmalert-tool-linux-ppc64le-prod: + APP_NAME=vmalert-tool $(MAKE) app-via-docker-linux-ppc64le + +vmalert-tool-linux-386-prod: + APP_NAME=vmalert-tool $(MAKE) app-via-docker-linux-386 + +vmalert-tool-darwin-amd64-prod: + APP_NAME=vmalert-tool $(MAKE) app-via-docker-darwin-amd64 + +vmalert-tool-darwin-arm64-prod: + APP_NAME=vmalert-tool $(MAKE) app-via-docker-darwin-arm64 + +vmalert-tool-freebsd-amd64-prod: + APP_NAME=vmalert-tool $(MAKE) app-via-docker-freebsd-amd64 + +vmalert-tool-openbsd-amd64-prod: + APP_NAME=vmalert-tool $(MAKE) app-via-docker-openbsd-amd64 + +vmalert-tool-windows-amd64-prod: + APP_NAME=vmalert-tool $(MAKE) app-via-docker-windows-amd64 + +package-vmalert-tool: + APP_NAME=vmalert-tool $(MAKE) package-via-docker + +package-vmalert-tool-pure: + APP_NAME=vmalert-tool $(MAKE) package-via-docker-pure + +package-vmalert-tool-amd64: + APP_NAME=vmalert-tool $(MAKE) package-via-docker-amd64 + +package-vmalert-tool-arm: + APP_NAME=vmalert-tool $(MAKE) package-via-docker-arm + +package-vmalert-tool-arm64: + APP_NAME=vmalert-tool $(MAKE) package-via-docker-arm64 + +package-vmalert-tool-ppc64le: + APP_NAME=vmalert-tool $(MAKE) package-via-docker-ppc64le + +package-vmalert-tool-386: + APP_NAME=vmalert-tool $(MAKE) package-via-docker-386 + +publish-vmalert-tool: + APP_NAME=vmalert-tool $(MAKE) publish-via-docker + +vmalert-tool-linux-amd64: + APP_NAME=vmalert-tool CGO_ENABLED=1 GOOS=linux GOARCH=amd64 $(MAKE) app-local-goos-goarch + +vmalert-tool-linux-arm: + APP_NAME=vmalert-tool CGO_ENABLED=0 GOOS=linux GOARCH=arm $(MAKE) app-local-goos-goarch + +vmalert-tool-linux-arm64: + APP_NAME=vmalert-tool CGO_ENABLED=0 GOOS=linux GOARCH=arm64 $(MAKE) app-local-goos-goarch + +vmalert-tool-linux-ppc64le: + APP_NAME=vmalert-tool CGO_ENABLED=0 GOOS=linux GOARCH=ppc64le $(MAKE) app-local-goos-goarch + +vmalert-tool-linux-s390x: + APP_NAME=vmalert-tool CGO_ENABLED=0 GOOS=linux GOARCH=s390x $(MAKE) app-local-goos-goarch + +vmalert-tool-linux-386: + APP_NAME=vmalert-tool CGO_ENABLED=0 GOOS=linux GOARCH=386 $(MAKE) app-local-goos-goarch + +vmalert-tool-darwin-amd64: + APP_NAME=vmalert-tool CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 $(MAKE) app-local-goos-goarch + +vmalert-tool-darwin-arm64: + APP_NAME=vmalert-tool CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 $(MAKE) app-local-goos-goarch + +vmalert-tool-freebsd-amd64: + APP_NAME=vmalert-tool CGO_ENABLED=0 GOOS=freebsd GOARCH=amd64 $(MAKE) app-local-goos-goarch + +vmalert-tool-openbsd-amd64: + APP_NAME=vmalert-tool CGO_ENABLED=0 GOOS=openbsd GOARCH=amd64 $(MAKE) app-local-goos-goarch + +vmalert-tool-windows-amd64: + GOARCH=amd64 APP_NAME=vmalert-tool $(MAKE) app-local-windows-goarch + +vmalert-tool-pure: + APP_NAME=vmalert-tool $(MAKE) app-local-pure diff --git a/app/vmalert-tool/README.md b/app/vmalert-tool/README.md new file mode 100644 index 000000000..6d706190e --- /dev/null +++ b/app/vmalert-tool/README.md @@ -0,0 +1,246 @@ + +# vmalert-tool + +VMAlert command-line tool + +## Unit testing for rules + +You can use `vmalert-tool` to run unit tests for alerting and recording rules. +It will perform the following actions: +* sets up an isolated VictoriaMetrics instance; +* simulates the periodic ingestion of time series; +* queries the ingested data for recording and alerting rules evaluation like [vmalert](https://docs.victoriametrics.com/vmalert.html); +* checks whether the firing alerts or resulting recording rules match the expected results. + +See how to run vmalert-tool for unit test below: + +``` +# Run vmalert-tool with one or multiple test files via --files cmd-line flag +./vmalert-tool unittest --files test1.yaml --files test2.yaml +``` + +vmalert-tool unittest is compatible with [Prometheus config format for tests](https://prometheus.io/docs/prometheus/latest/configuration/unit_testing_rules/#test-file-format) +except `promql_expr_test` field. Use `metricsql_expr_test` field name instead. The name is different because vmalert-tool +validates and executes [MetricsQL](https://docs.victoriametrics.com/MetricsQL.html) expressions, +which aren't always backward compatible with [PromQL](https://prometheus.io/docs/prometheus/latest/querying/basics/). + +### Test file format + +The configuration format for files specified in `--files` cmd-line flag is the following: + +```yaml +# Path to the files or http url containing [rule groups](https://docs.victoriametrics.com/vmalert.html#groups) configuration. +# Enterprise version of vmalert-tool supports S3 and GCS paths to rules. +rule_files: + [ - ] + +# The evaluation interval for rules specified in `rule_files` +[ evaluation_interval: | default = 1m ] + +# Groups listed below will be evaluated by order. +# Not All the groups need not be mentioned, if not, they will be evaluated by define order in rule_files. +group_eval_order: + [ - ] + +# The list of unit test files to be checked during evaluation. +tests: + [ - ] +``` + +#### `` + +```yaml +# Interval between samples for input series +interval: +# Time series to persist into the database according to configured before running tests. +input_series: + [ - ] + +# Name of the test group, optional +[ name: ] + +# Unit tests for alerting rules +alert_rule_test: + [ - ] + +# Unit tests for Metricsql expressions. +metricsql_expr_test: + [ - ] + +# External labels accessible for templating. +external_labels: + [ : ... ] + +``` + +#### `` + +```yaml +# series in the following format '{"}},{key:"image",value:function(e,t,n){if(null===(e=Zs(this.options.sanitize,this.options.baseUrl,e)))return n;var r='').concat(n,'":">"}},{key:"text",value:function(e){return e}}]),e}(),ff=function(){function e(){b(this,e)}return x(e,[{key:"strong",value:function(e){return e}},{key:"em",value:function(e){return e}},{key:"codespan",value:function(e){return e}},{key:"del",value:function(e){return e}},{key:"html",value:function(e){return e}},{key:"text",value:function(e){return e}},{key:"link",value:function(e,t,n){return""+n}},{key:"image",value:function(e,t,n){return""+n}},{key:"br",value:function(){return""}}]),e}(),df=function(){function e(){b(this,e),this.seen={}}return x(e,[{key:"serialize",value:function(e){return e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")}},{key:"getNextSafeSlug",value:function(e,t){var n=e,r=0;if(this.seen.hasOwnProperty(n)){r=this.seen[e];do{n=e+"-"+ ++r}while(this.seen.hasOwnProperty(n))}return t||(this.seen[e]=r,this.seen[n]=0),n}},{key:"slug",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.serialize(e);return this.getNextSafeSlug(n,t.dryrun)}}]),e}(),hf=function(){function e(t){b(this,e),this.options=t||Os,this.options.renderer=this.options.renderer||new sf,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new ff,this.slugger=new df}return x(e,[{key:"parse",value:function(e){var t,n,r,i,a,o,u,l,c,s,f,d,h,m,p,v,g,y,_,b=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],w="",D=e.length;for(t=0;t0&&"paragraph"===p.tokens[0].type?(p.tokens[0].text=y+" "+p.tokens[0].text,p.tokens[0].tokens&&p.tokens[0].tokens.length>0&&"text"===p.tokens[0].tokens[0].type&&(p.tokens[0].tokens[0].text=y+" "+p.tokens[0].tokens[0].text)):p.tokens.unshift({type:"text",text:y}):m+=y),m+=this.parse(p.tokens,h),c+=this.renderer.listitem(m,g,v);w+=this.renderer.list(c,f,d);continue;case"html":w+=this.renderer.html(s.text,s.block);continue;case"paragraph":w+=this.renderer.paragraph(this.parseInline(s.tokens));continue;case"text":for(c=s.tokens?this.parseInline(s.tokens):s.text;t+1";return t?Promise.resolve(i):n?void n(null,i):i}if(t)return Promise.reject(r);if(!n)throw r;n(r)}}var bf=new gf(Os);function wf(e,t,n){return bf.parse(e,t,n)}wf.options=wf.setOptions=function(e){return bf.setOptions(e),wf.defaults=bf.defaults,Ls(wf.defaults),wf},wf.getDefaults=Ts,wf.defaults=Os,wf.use=function(){return bf.use.apply(bf,arguments),wf.defaults=bf.defaults,Ls(wf.defaults),wf},wf.walkTokens=function(e,t){return bf.walkTokens(e,t)},wf.parseInline=bf.parseInline,wf.Parser=hf,wf.parser=hf.parse,wf.Renderer=sf,wf.TextRenderer=ff,wf.Lexer=cf,wf.lexer=cf.lex,wf.Tokenizer=rf,wf.Slugger=df,wf.Hooks=mf,wf.parse=wf;wf.options,wf.setOptions,wf.use,wf.walkTokens,wf.parseInline,hf.parse,cf.lex;var Df=n.p+"static/media/MetricsQL.957b90ab4cb4852eec26.md",kf=function(e){var t='$1 target="_blank" class="'.concat("vm-link vm-link_colored",'" $2').concat("https://docs.victoriametrics.com/MetricsQL.html","#");return e.replace(/(1,c=n||r,s="ArrowDown"===t,f="Enter"===t;"ArrowUp"===t&&c&&(e.preventDefault(),a()),s&&c&&(e.preventDefault(),o()),f&&m&&e.preventDefault(),!f||u||l&&!c||m||(e.preventDefault(),i())},onChange:n,onChangeCaret:function(e){_(e)},disabled:d,inputmode:"search"}),u&&Vt(Ef,{value:t,anchorEl:b,caretPosition:y,onSelect:function(e){n(e)},onFoundOptions:function(e){p(!!e.length)}})]})},Ff=function(e){var t,n=e.value,r=void 0!==n&&n,i=e.disabled,a=void 0!==i&&i,o=e.label,u=e.color,l=void 0===u?"secondary":u,c=e.fullWidth,s=e.onChange;return Vt("div",{className:Pr()((lt(t={"vm-switch":!0,"vm-switch_full-width":c,"vm-switch_disabled":a,"vm-switch_active":r},"vm-switch_".concat(l,"_active"),r),lt(t,"vm-switch_".concat(l),l),t)),onClick:function(){a||s(!r)},children:[Vt("div",{className:"vm-switch-track",children:Vt("div",{className:"vm-switch-track__thumb"})}),o&&Vt("span",{className:"vm-switch__label",children:o})]})},Tf=function(e){var t=e.isMobile,n=jn().autocomplete,r=Hn(),i=Jr(),a=i.nocache,o=i.isTracingEnabled,u=Xr();return Vt("div",{className:Pr()({"vm-additional-settings":!0,"vm-additional-settings_mobile":t}),children:[Vt(Ff,{label:"Autocomplete",value:n,onChange:function(){r({type:"TOGGLE_AUTOCOMPLETE"})},fullWidth:t}),Vt(Ff,{label:"Disable cache",value:a,onChange:function(){u({type:"TOGGLE_NO_CACHE"})},fullWidth:t}),Vt(Ff,{label:"Trace query",value:o,onChange:function(){u({type:"TOGGLE_QUERY_TRACING"})},fullWidth:t})]})},Of=function(){var e=ui().isMobile,t=(0,r.useRef)(null),n=_i(!1),i=n.value,a=n.toggle,o=n.setFalse;return e?Vt(Ht.HY,{children:[Vt("div",{ref:t,children:Vt(yi,{variant:"outlined",startIcon:Vt(Cr,{}),onClick:a,ariaLabel:"additional the query settings"})}),Vt(bi,{open:i,buttonRef:t,placement:"bottom-left",onClose:o,title:"Query settings",children:Vt(Tf,{isMobile:e})})]}):Vt(Tf,{})},Lf=function(e,t){return e.length===t.length&&e.every((function(e,n){return e===t[n]}))};var Pf=function(e){var t=e.query,n=e.favorites,i=e.onRun,a=e.onToggleFavorite,o=gs(),u=(0,r.useMemo)((function(){return n.includes(t)}),[t,n]),l=function(){var e=$i(ji().mark((function e(){return ji().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o(t,"Query has been copied");case 2:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return Vt("div",{className:"vm-query-history-item",children:[Vt("span",{className:"vm-query-history-item__value",children:t}),Vt("div",{className:"vm-query-history-item__buttons",children:[Vt(Si,{title:"Execute query",children:Vt(yi,{size:"small",variant:"text",onClick:function(){i(t)},startIcon:Vt(or,{})})}),Vt(Si,{title:"Copy query",children:Vt(yi,{size:"small",variant:"text",onClick:l,startIcon:Vt(gr,{})})}),Vt(Si,{title:u?"Remove Favorite":"Add to Favorites",children:Vt(yi,{size:"small",variant:"text",color:u?"warning":"primary",onClick:function(){a(t,u)},startIcon:Vt(u?Nr:Ar,{})})})]})]})},If="saved",Rf="favorite",Bf=[{label:"Session history",value:"session"},{label:"Saved history",value:If},{label:"Favorite queries",value:Rf}],zf=function(e){var t=e.handleSelectQuery,n=jn().queryHistory,i=ui().isMobile,a=_i(!1),o=a.value,u=a.setTrue,l=a.setFalse,c=v((0,r.useState)(Bf[0].value),2),s=c[0],f=c[1],d=v((0,r.useState)(Pn("QUERY_HISTORY")),2),h=d[0],m=d[1],p=v((0,r.useState)(Pn("QUERY_FAVORITES")),2),g=p[0],y=p[1],b=(0,r.useMemo)((function(){return n.map((function(e){return e.values.filter((function(e){return e})).reverse()}))}),[n]),w=(0,r.useMemo)((function(){switch(s){case Rf:return g;case If:return h;default:return b}}),[s,g,h,b]),D=null===w||void 0===w?void 0:w.every((function(e){return!e.length})),k=(0,r.useMemo)((function(){return s===Rf?"Favorites queries are empty.\nTo see your favorites, mark a query as a favorite.":"Query history is empty.\nTo see the history, please make a query."}),[s]),x=function(e){return function(n){t(n,e),l()}},C=function(e,t){y((function(n){var r=n[0]||[];return t?[r.filter((function(t){return t!==e}))]:t||r.includes(e)?n:[[].concat(_(r),[e])]}))};return(0,r.useEffect)((function(){var e=g[0]||[],t=Pn("QUERY_FAVORITES")[0]||[];Lf(e,t)||Mt("QUERY_FAVORITES",JSON.stringify(g))}),[g]),Hr("storage",(function(){m(Pn("QUERY_HISTORY")),y(Pn("QUERY_FAVORITES"))})),Vt(Ht.HY,{children:[Vt(Si,{title:"Show history",children:Vt(yi,{color:"primary",variant:"text",onClick:u,startIcon:Vt(tr,{})})}),o&&Vt(Ci,{title:"Query history",onClose:l,children:Vt("div",{className:Pr()({"vm-query-history":!0,"vm-query-history_mobile":i}),children:[Vt("div",{className:Pr()({"vm-query-history__tabs":!0,"vm-section-header__tabs":!0,"vm-query-history__tabs_mobile":i}),children:Vt(Vr,{activeItem:s,items:Bf,onChange:f})}),Vt("div",{className:"vm-query-history-list",children:[D&&Vt("div",{className:"vm-query-history-list__no-data",children:k}),w.map((function(e,t){return Vt("div",{children:[w.length>1&&Vt("div",{className:Pr()({"vm-query-history-list__group-title":!0,"vm-query-history-list__group-title_first":0===t}),children:["Query ",t+1]}),e.map((function(e,n){return Vt(Pf,{query:e,favorites:g.flat(),onRun:x(t),onToggleFavorite:C},n)}))]},t)})),s===If&&!D&&Vt("div",{className:"vm-query-history-footer",children:Vt(yi,{color:"error",variant:"outlined",size:"small",startIcon:Vt(sr,{}),onClick:function(){Mt("QUERY_HISTORY","")},children:"clear history"})})]})]})})]})},jf=function(e){var t=e.queryErrors,n=e.setQueryErrors,i=e.setHideError,a=e.stats,o=e.onHideQuery,u=e.onRunQuery,l=ui().isMobile,c=jn(),s=c.query,f=c.queryHistory,d=c.autocomplete,h=Hn(),m=Ln(),p=v((0,r.useState)(s||[]),2),g=p[0],y=p[1],b=v((0,r.useState)([]),2),w=b[0],D=b[1],k=v((0,r.useState)(!1),2),x=k[0],C=k[1],S=ea(g),E=function(){var e=Ut().serverUrl,t=function(){var t=$i(ji().mark((function t(n){var r,i,a,o;return ji().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,r=encodeURIComponent(n),i="".concat(e,"/prettify-query?query=").concat(r),t.next=5,fetch(i);case 5:if(200==(a=t.sent).status){t.next=8;break}return t.abrupt("return",{query:n,error:"Error requesting /prettify-query, status: "+a.status});case 8:return t.next=10,a.json();case 10:if("success"==(o=t.sent).status){t.next=13;break}return t.abrupt("return",{query:n,error:String(o.msg)});case 13:return t.abrupt("return",{query:String(o.query),error:""});case 16:if(t.prev=16,t.t0=t.catch(0),console.error(t.t0),!(t.t0 instanceof Error&&"AbortError"!==t.t0.name)){t.next=21;break}return t.abrupt("return",{query:n,error:"".concat(t.t0.name,": ").concat(t.t0.message)});case 21:return t.abrupt("return",{query:n,error:String(t.t0)});case 22:case"end":return t.stop()}}),t,null,[[0,16]])})));return function(e){return t.apply(this,arguments)}}();return t}(),A=function(){h({type:"SET_QUERY_HISTORY",payload:g.map((function(e,t){var n=f[t]||{values:[]},r=e===n.values[n.values.length-1],i=!r&&e?[].concat(_(n.values),[e]):n.values;return i.length>25&&i.shift(),{index:n.values.length-Number(r),values:i}}))}),h({type:"SET_QUERY",payload:g}),m({type:"RUN_QUERY"}),u()},N=function(e,t){y((function(n){return n.map((function(n,r){return r===t?e:n}))}))},M=function(e,t){return function(){!function(e,t){var n=f[t],r=n.index,i=n.values,a=r+e;a<0||a>=i.length||(N(i[a]||"",t),h({type:"SET_QUERY_HISTORY_BY_INDEX",payload:{value:{values:i,index:a},queryNumber:t}}))}(e,t)}},F=function(e){return function(t){N(t,e)}},T=function(e){return function(){var t;t=e,y((function(e){return e.filter((function(e,n){return n!==t}))})),D((function(t){return t.includes(e)?t.filter((function(t){return t!==e})):t.map((function(t){return t>e?t-1:t}))}))}},O=function(e){return function(t){!function(e,t){var n=e.ctrlKey,r=e.metaKey;if(n||r){var i=g.map((function(e,t){return t})).filter((function(e){return e!==t}));D((function(e){return Lf(i,e)?[]:i}))}else D((function(e){return e.includes(t)?e.filter((function(e){return e!==t})):[].concat(_(e),[t])}))}(t,e)}},L=function(){var e=$i(ji().mark((function e(t){var r;return ji().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,E(g[t]);case 2:r=e.sent,i(!1),N(r.query,t),n((function(e){return e[t]=r.error,_(e)}));case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();return(0,r.useEffect)((function(){S&&g.length1&&Vt(Si,{title:"Remove Query",children:Vt("div",{className:"vm-query-configurator-list-row__button",children:Vt(yi,{variant:"text",color:"error",startIcon:Vt(sr,{}),onClick:T(n),ariaLabel:"remove query"})})})]},n)}))}),Vt("div",{className:"vm-query-configurator-settings",children:[Vt(Of,{}),Vt("div",{className:"vm-query-configurator-settings__buttons",children:[Vt(zf,{handleSelectQuery:function(e,t){N(e,t),C(!0)}}),g.length<4&&Vt(yi,{variant:"outlined",onClick:function(){y((function(e){return[].concat(_(e),[""])}))},startIcon:Vt(fr,{}),children:"Add Query"}),Vt(yi,{variant:"contained",onClick:A,startIcon:Vt(ar,{}),children:l?"Execute":"Execute Query"})]})]})]})};function Hf(e){var t,n,r,i=2;for("undefined"!=typeof Symbol&&(n=Symbol.asyncIterator,r=Symbol.iterator);i--;){if(n&&null!=(t=e[n]))return t.call(e);if(r&&null!=(t=e[r]))return new $f(t.call(e));n="@@asyncIterator",r="@@iterator"}throw new TypeError("Object is not async iterable")}function $f(e){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var t=e.done;return Promise.resolve(e.value).then((function(e){return{value:e,done:t}}))}return $f=function(e){this.s=e,this.n=e.next},$f.prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var n=this.s.return;return void 0===n?Promise.resolve({value:e,done:!0}):t(n.apply(this.s,arguments))},throw:function(e){var n=this.s.return;return void 0===n?Promise.reject(e):t(n.apply(this.s,arguments))}},new $f(e)}var Vf=n(936),Yf=n.n(Vf),Uf=0,qf=function(){function e(t,n){b(this,e),this.tracing=void 0,this.query=void 0,this.tracingChildren=void 0,this.originalTracing=void 0,this.id=void 0,this.tracing=t,this.originalTracing=JSON.parse(JSON.stringify(t)),this.query=n,this.id=Uf++;var r=t.children||[];this.tracingChildren=r.map((function(t){return new e(t,n)}))}return x(e,[{key:"queryValue",get:function(){return this.query}},{key:"idValue",get:function(){return this.id}},{key:"children",get:function(){return this.tracingChildren}},{key:"message",get:function(){return this.tracing.message}},{key:"duration",get:function(){return this.tracing.duration_msec}},{key:"JSON",get:function(){return JSON.stringify(this.tracing,null,2)}},{key:"originalJSON",get:function(){return JSON.stringify(this.originalTracing,null,2)}},{key:"setTracing",value:function(t){var n=this;this.tracing=t;var r=t.children||[];this.tracingChildren=r.map((function(t){return new e(t,n.query)}))}},{key:"setQuery",value:function(e){this.query=e}},{key:"resetTracing",value:function(){this.tracing=this.originalTracing}}]),e}(),Wf=function(e){var t=e.predefinedQuery,n=e.visible,i=e.display,a=e.customStep,o=e.hideQuery,u=e.showAllSeries,l=jn().query,c=On().period,s=Jr(),f=s.displayType,d=s.nocache,h=s.isTracingEnabled,m=s.seriesLimits,p=Ut().serverUrl,g=ri().isHistogram,y=v((0,r.useState)(!1),2),b=y[0],w=y[1],D=v((0,r.useState)(),2),k=D[0],x=D[1],C=v((0,r.useState)(),2),S=C[0],E=C[1],A=v((0,r.useState)(),2),N=A[0],M=A[1],F=v((0,r.useState)(),2),T=F[0],O=F[1],L=v((0,r.useState)([]),2),P=L[0],I=L[1],R=v((0,r.useState)([]),2),B=R[0],z=R[1],j=v((0,r.useState)(),2),H=j[0],$=j[1],V=v((0,r.useState)([]),2),Y=V[0],U=V[1],q=v((0,r.useState)(!1),2),W=q[0],Z=q[1],Q=(0,r.useMemo)((function(){var e=c.end,t=c.start;return dn(e-t,g)}),[c,g]),G=function(){var e=$i(ji().mark((function e(t){var n,r,i,a,o,u,l,c,s,f,d,h,m,p,v,g,y,b,D,k,C,S,A;return ji().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=t.fetchUrl,r=t.fetchQueue,i=t.displayType,a=t.query,o=t.stateSeriesLimits,u=t.showAllSeries,l=t.hideQuery,c=new AbortController,U([].concat(_(r),[c])),e.prev=3,s="chart"===i,f=u?1/0:+o[i]||1/0,d=f,h=[],m=[],p=1,v=0,g=!1,y=!1,b=!1,e.prev=14,k=ji().mark((function e(){var t,n,r,i,o;return ji().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=S.value,!(null===l||void 0===l?void 0:l.includes(p-1))){e.next=7;break}return I((function(e){return[].concat(_(e),[""])})),z((function(e){return[].concat(_(e),[{}])})),p++,e.abrupt("return","continue");case 7:return e.next=9,fetch(t,{signal:c.signal});case 9:return n=e.sent,e.next=12,n.json();case 12:r=e.sent,n.ok?(z((function(e){return[].concat(_(e),[st(st({},null===r||void 0===r?void 0:r.stats),{},{isPartial:null===r||void 0===r?void 0:r.isPartial,resultLength:r.data.result.length})])})),I((function(e){return[].concat(_(e),[""])})),r.trace&&(i=new qf(r.trace,a[p-1]),m.push(i)),g=s&&Uc(r.data.result),o=(d=g?1/0:f)-h.length,r.data.result.slice(0,o).forEach((function(e){e.group=p,h.push(e)})),v+=r.data.result.length):(h.push({metric:{},values:[],group:p}),I((function(e){return[].concat(_(e),["".concat(r.errorType,"\r\n").concat(null===r||void 0===r?void 0:r.error)])}))),p++;case 15:case"end":return e.stop()}}),e)})),C=Hf(n);case 17:return e.next=19,C.next();case 19:if(!(y=!(S=e.sent).done)){e.next=27;break}return e.delegateYield(k(),"t0",21);case 21:if("continue"!==e.t0){e.next=24;break}return e.abrupt("continue",24);case 24:y=!1,e.next=17;break;case 27:e.next=33;break;case 29:e.prev=29,e.t1=e.catch(14),b=!0,D=e.t1;case 33:if(e.prev=33,e.prev=34,!y||null==C.return){e.next=38;break}return e.next=38,C.return();case 38:if(e.prev=38,!b){e.next=41;break}throw D;case 41:return e.finish(38);case 42:return e.finish(33);case 43:A="Showing ".concat(h.length," series out of ").concat(v," series due to performance reasons. Please narrow down the query, so it returns less series"),$(v>d?A:""),s?x(h):E(h),M(m),Z((function(e){return v?g:e})),e.next=53;break;case 50:e.prev=50,e.t2=e.catch(3),e.t2 instanceof Error&&"AbortError"!==e.t2.name&&O("".concat(e.t2.name,": ").concat(e.t2.message));case 53:w(!1);case 54:case"end":return e.stop()}}),e,null,[[3,50],[14,29,33,43],[34,,38,42]])})));return function(t){return e.apply(this,arguments)}}(),K=(0,r.useCallback)(Yf()(G,300),[]),J=(0,r.useMemo)((function(){O(""),I([]),z([]);var e=null!==t&&void 0!==t?t:l,n="chart"===(i||f);if(c)if(p)if(e.every((function(e){return!e.trim()})))I(e.map((function(){return Ot.validQuery})));else{if(wa(p)){var r=st({},c);return r.step=a,e.map((function(e){return n?function(e,t,n,r,i){return"".concat(e,"/api/v1/query_range?query=").concat(encodeURIComponent(t),"&start=").concat(n.start,"&end=").concat(n.end,"&step=").concat(n.step).concat(r?"&nocache=1":"").concat(i?"&trace=1":"")}(p,e,r,d,h):function(e,t,n,r){return"".concat(e,"/api/v1/query?query=").concat(encodeURIComponent(t),"&time=").concat(n.end).concat(r?"&trace=1":"")}(p,e,r,h)}))}O(Ot.validServer)}else O(Ot.emptyServer)}),[p,c,f,a,o]),X=v((0,r.useState)([]),2),ee=X[0],te=X[1];return(0,r.useEffect)((function(){var e=J===ee&&!!t;n&&null!==J&&void 0!==J&&J.length&&!e&&(w(!0),K({fetchUrl:J,fetchQueue:Y,displayType:i||f,query:null!==t&&void 0!==t?t:l,stateSeriesLimits:m,showAllSeries:u,hideQuery:o}),te(J))}),[J,n,m,u]),(0,r.useEffect)((function(){var e=Y.slice(0,-1);e.length&&(e.map((function(e){return e.abort()})),U(Y.filter((function(e){return!e.signal.aborted}))))}),[Y]),(0,r.useEffect)((function(){Q===a&&x([])}),[W]),{fetchUrl:J,isLoading:b,graphData:k,liveData:S,error:T,queryErrors:P,setQueryErrors:I,queryStats:B,warning:H,traces:N,isHistogram:W}},Zf=function(e){var t=e.data,n=gs(),i=(0,r.useMemo)((function(){return JSON.stringify(t,null,2)}),[t]),a=function(){var e=$i(ji().mark((function e(){return ji().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,n(i,"Formatted JSON has been copied");case 2:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return Vt("div",{className:"vm-json-view",children:[Vt("div",{className:"vm-json-view__copy",children:Vt(yi,{variant:"outlined",onClick:a,children:"Copy JSON"})}),Vt("pre",{className:"vm-json-view__code",children:Vt("code",{children:i})})]})},Qf=function(e){var t=e.yaxis,n=e.setYaxisLimits,i=e.toggleEnableLimits,a=ui().isMobile,o=(0,r.useMemo)((function(){return Object.keys(t.limits.range)}),[t.limits.range]),u=(0,r.useCallback)(Yf()((function(e,r,i){var a=t.limits.range;a[r][i]=+e,a[r][0]===a[r][1]||a[r][0]>a[r][1]||n(a)}),500),[t.limits.range]),l=function(e,t){return function(n){u(n,e,t)}};return Vt("div",{className:Pr()({"vm-axes-limits":!0,"vm-axes-limits_mobile":a}),children:[Vt(Ff,{value:t.limits.enable,onChange:i,label:"Fix the limits for y-axis",fullWidth:a}),Vt("div",{className:"vm-axes-limits-list",children:o.map((function(e){return Vt("div",{className:"vm-axes-limits-list__inputs",children:[Vt(Gi,{label:"Min ".concat(e),type:"number",disabled:!t.limits.enable,value:t.limits.range[e][0],onChange:l(e,0)}),Vt(Gi,{label:"Max ".concat(e),type:"number",disabled:!t.limits.enable,value:t.limits.range[e][1],onChange:l(e,1)})]},e)}))})]})},Gf="Axes settings",Kf=function(e){var t=e.yaxis,n=e.setYaxisLimits,i=e.toggleEnableLimits,a=(0,r.useRef)(null),o=(0,r.useRef)(null),u=_i(!1),l=u.value,c=u.toggle,s=u.setFalse;return Vt("div",{className:"vm-graph-settings",children:[Vt(Si,{title:Gf,children:Vt("div",{ref:o,children:Vt(yi,{variant:"text",startIcon:Vt(Un,{}),onClick:c,ariaLabel:"settings"})})}),Vt(bi,{open:l,buttonRef:o,placement:"bottom-right",onClose:s,title:Gf,children:Vt("div",{className:"vm-graph-settings-popper",ref:a,children:Vt("div",{className:"vm-graph-settings-popper__body",children:Vt(Qf,{yaxis:t,setYaxisLimits:n,toggleEnableLimits:i})})})})]})},Jf=function(e){var t=e.containerStyles,n=void 0===t?{}:t,r=e.message,i=Ut().isDarkTheme;return Vt("div",{className:Pr()({"vm-spinner":!0,"vm-spinner_dark":i}),style:n&&{},children:[Vt("div",{className:"half-circle-spinner",children:[Vt("div",{className:"circle circle-1"}),Vt("div",{className:"circle circle-2"})]}),r&&Vt("div",{className:"vm-spinner__message",children:r})]})},Xf=function(e){var t=e.value;return Vt("div",{className:"vm-line-progress",children:[Vt("div",{className:"vm-line-progress-track",children:Vt("div",{className:"vm-line-progress-track__thumb",style:{width:"".concat(t,"%")}})}),Vt("span",{children:[t.toFixed(2),"%"]})]})},ed=function e(t){var n=t.isRoot,i=t.trace,a=t.totalMsec,o=Ut().isDarkTheme,u=ui().isMobile,l=v((0,r.useState)({}),2),c=l[0],s=l[1],f=(0,r.useRef)(null),d=v((0,r.useState)(!1),2),h=d[0],m=d[1],p=v((0,r.useState)(!1),2),g=p[0],y=p[1],_=ln(i.duration/1e3)||"".concat(i.duration,"ms");(0,r.useEffect)((function(){if(f.current){var e=f.current,t=f.current.children[0].getBoundingClientRect().height;m(t>e.clientHeight)}}),[i]);var b,w=i.children&&!!i.children.length,D=i.duration/a*100;return Vt("div",{className:Pr()({"vm-nested-nav":!0,"vm-nested-nav_root":n,"vm-nested-nav_dark":o,"vm-nested-nav_mobile":u}),children:[Vt("div",{className:Pr()({"vm-nested-nav-header":!0,"vm-nested-nav-header_open":c[i.idValue]}),onClick:(b=i.idValue,function(){w&&s((function(e){return st(st({},e),{},lt({},b,!e[b]))}))}),children:[w&&Vt("div",{className:Pr()({"vm-nested-nav-header__icon":!0,"vm-nested-nav-header__icon_open":c[i.idValue]}),children:Vt(Xn,{})}),Vt("div",{className:"vm-nested-nav-header__progress",children:Vt(Xf,{value:D})}),Vt("div",{className:Pr()({"vm-nested-nav-header__message":!0,"vm-nested-nav-header__message_show-full":g}),ref:f,children:[Vt("span",{className:"vm-nested-nav-header__message_duration",children:_}),":\xa0",Vt("span",{children:i.message})]}),Vt("div",{className:"vm-nested-nav-header-bottom",children:(h||g)&&Vt(yi,{variant:"text",size:"small",onClick:function(e){e.stopPropagation(),y((function(e){return!e}))},children:g?"Hide":"Show full query"})})]}),c[i.idValue]&&Vt("div",{className:"vm-nested-nav__childrens",children:w&&i.children.map((function(t){return Vt(e,{trace:t,totalMsec:a},t.duration)}))})]})},td=function(e){var t=e.editable,n=void 0!==t&&t,i=e.defaultTile,a=void 0===i?"JSON":i,o=e.displayTitle,u=void 0===o||o,l=e.defaultJson,c=void 0===l?"":l,s=e.resetValue,f=void 0===s?"":s,d=e.onClose,h=e.onUpload,m=gs(),p=ui().isMobile,g=v((0,r.useState)(c),2),y=g[0],_=g[1],b=v((0,r.useState)(a),2),w=b[0],D=b[1],k=v((0,r.useState)(""),2),x=k[0],C=k[1],S=v((0,r.useState)(""),2),E=S[0],A=S[1],N=(0,r.useMemo)((function(){try{var e=JSON.parse(y),t=e.trace||e;return t.duration_msec?(new qf(t,""),""):Ot.traceNotFound}catch(n){return n instanceof Error?n.message:"Unknown error"}}),[y]),M=function(){var e=$i(ji().mark((function e(){return ji().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,m(y,"Formatted JSON has been copied");case 2:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),F=function(){A(N),w.trim()||C(Ot.emptyTitle),N||x||(h(y,w),d())};return Vt("div",{className:Pr()({"vm-json-form":!0,"vm-json-form_one-field":!u,"vm-json-form_one-field_mobile":!u&&p,"vm-json-form_mobile":p}),children:[u&&Vt(Gi,{value:w,label:"Title",error:x,onEnter:F,onChange:function(e){D(e)}}),Vt(Gi,{value:y,label:"JSON",type:"textarea",error:E,autofocus:!0,onChange:function(e){A(""),_(e)},onEnter:F,disabled:!n}),Vt("div",{className:"vm-json-form-footer",children:[Vt("div",{className:"vm-json-form-footer__controls",children:[Vt(yi,{variant:"outlined",startIcon:Vt(gr,{}),onClick:M,children:"Copy JSON"}),f&&Vt(yi,{variant:"text",startIcon:Vt(Wn,{}),onClick:function(){_(f)},children:"Reset JSON"})]}),Vt("div",{className:"vm-json-form-footer__controls vm-json-form-footer__controls_right",children:[Vt(yi,{variant:"outlined",color:"error",onClick:d,children:"Cancel"}),Vt(yi,{variant:"contained",onClick:F,children:"apply"})]})]})]})},nd=function(e){var t=e.traces,n=e.jsonEditor,i=void 0!==n&&n,a=e.onDeleteClick,o=ui().isMobile,u=v((0,r.useState)(null),2),l=u[0],c=u[1],s=function(){c(null)};if(!t.length)return Vt(ci,{variant:"info",children:"Please re-run the query to see results of the tracing"});var f=function(e){return function(){a(e)}};return Vt(Ht.HY,{children:[Vt("div",{className:"vm-tracings-view",children:t.map((function(e){return Vt("div",{className:"vm-tracings-view-trace vm-block vm-block_empty-padding",children:[Vt("div",{className:"vm-tracings-view-trace-header",children:[Vt("h3",{className:"vm-tracings-view-trace-header-title",children:["Trace for ",Vt("b",{className:"vm-tracings-view-trace-header-title__query",children:e.queryValue})]}),Vt(Si,{title:"Open JSON",children:Vt(yi,{variant:"text",startIcon:Vt(cr,{}),onClick:(t=e,function(){c(t)}),ariaLabel:"open JSON"})}),Vt(Si,{title:"Remove trace",children:Vt(yi,{variant:"text",color:"error",startIcon:Vt(sr,{}),onClick:f(e),ariaLabel:"remove trace"})})]}),Vt("nav",{className:Pr()({"vm-tracings-view-trace__nav":!0,"vm-tracings-view-trace__nav_mobile":o}),children:Vt(ed,{isRoot:!0,trace:e,totalMsec:e.duration})})]},e.idValue);var t}))}),l&&Vt(Ci,{title:l.queryValue,onClose:s,children:Vt(td,{editable:i,displayTitle:i,defaultTile:l.queryValue,defaultJson:l.JSON,resetValue:l.originalJSON,onClose:s,onUpload:function(e,t){if(i&&l)try{l.setTracing(JSON.parse(e)),l.setQuery(t),c(null)}catch(n){console.error(n)}}})})]})},rd=function(e){var t,n=e.checked,r=void 0!==n&&n,i=e.disabled,a=void 0!==i&&i,o=e.label,u=e.color,l=void 0===u?"secondary":u,c=e.onChange;return Vt("div",{className:Pr()((lt(t={"vm-checkbox":!0,"vm-checkbox_disabled":a,"vm-checkbox_active":r},"vm-checkbox_".concat(l,"_active"),r),lt(t,"vm-checkbox_".concat(l),l),t)),onClick:function(){a||c(!r)},children:[Vt("div",{className:"vm-checkbox-track",children:Vt("div",{className:"vm-checkbox-track__thumb",children:Vt(hr,{})})}),o&&Vt("span",{className:"vm-checkbox__label",children:o})]})},id="Table settings",ad=function(e){var t=e.columns,n=e.defaultColumns,i=void 0===n?[]:n,a=e.tableCompact,o=e.onChangeColumns,u=e.toggleTableCompact,l=ui().isMobile,c=(0,r.useRef)(null),s=_i(!1),f=s.value,d=s.toggle,h=s.setFalse,m=(0,r.useMemo)((function(){return!t.length}),[t]),p=function(e){return function(){!function(e){o(i.includes(e)?i.filter((function(t){return t!==e})):[].concat(_(i),[e]))}(e)}};return(0,r.useEffect)((function(){Lf(t,i)||o(t)}),[t]),Vt("div",{className:"vm-table-settings",children:[Vt(Si,{title:id,children:Vt("div",{ref:c,children:Vt(yi,{variant:"text",startIcon:Vt(Un,{}),onClick:d,disabled:m,ariaLabel:"table settings"})})}),Vt(bi,{open:f,onClose:h,placement:"bottom-right",buttonRef:c,title:id,children:Vt("div",{className:Pr()({"vm-table-settings-popper":!0,"vm-table-settings-popper_mobile":l}),children:[Vt("div",{className:"vm-table-settings-popper-list vm-table-settings-popper-list_first",children:Vt(Ff,{label:"Compact view",value:a,onChange:u})}),Vt("div",{className:"vm-table-settings-popper-list",children:[Vt("div",{className:"vm-table-settings-popper-list-header",children:[Vt("h3",{className:"vm-table-settings-popper-list-header__title",children:"Display columns"}),Vt(Si,{title:"Reset to default",children:Vt(yi,{color:"primary",variant:"text",size:"small",onClick:function(){h(),o(t)},startIcon:Vt(Wn,{}),ariaLabel:"reset columns"})})]}),t.map((function(e){return Vt("div",{className:"vm-table-settings-popper-list__item",children:Vt(rd,{checked:i.includes(e),onChange:p(e),label:e,disabled:a})},e)}))]})]})})]})};function od(e){return function(e,t){return Object.fromEntries(Object.entries(e).filter(t))}(e,(function(e){return!!e[1]||"number"===typeof e[1]}))}var ud=function(e){var t={};return e.forEach((function(e){return Object.entries(e.metric).forEach((function(e){return t[e[0]]?t[e[0]].options.add(e[1]):t[e[0]]={options:new Set([e[1]])}}))})),Object.entries(t).map((function(e){return{key:e[0],variations:e[1].options.size}})).sort((function(e,t){return e.variations-t.variations}))},ld=function(e,t){return(0,r.useMemo)((function(){var n=ud(e);return t?n.filter((function(e){return t.includes(e.key)})):n}),[e,t])},cd=["__name__"],sd=function(e){var t=e.data,n=e.displayColumns,i=gs(),a=ui().isMobile,o=Jr().tableCompact,u=(0,r.useRef)(null),l=v((0,r.useState)(""),2),c=l[0],s=l[1],f=v((0,r.useState)("asc"),2),d=f[0],h=f[1],m=o?ld([{group:0,metric:{Data:"Data"}}],["Data"]):ld(t,n),p=function(e){var t=e.__name__,n=Ir(e,cd);return t||Object.keys(n).length?"".concat(t," ").concat(JSON.stringify(n)):""},g=new Set(null===t||void 0===t?void 0:t.map((function(e){return e.group}))).size>1,y=(0,r.useMemo)((function(){var e=null===t||void 0===t?void 0:t.map((function(e){return{metadata:m.map((function(t){return o?Vc(e,"",g):e.metric[t.key]||"-"})),value:e.value?e.value[1]:"-",values:e.values?e.values.map((function(e){var t=v(e,2),n=t[0],r=t[1];return"".concat(r," @").concat(n)})):[],copyValue:p(e.metric)}})),n="Value"===c,r=m.findIndex((function(e){return e.key===c}));return n||-1!==r?e.sort((function(e,t){var i=n?Number(e.value):e.metadata[r],a=n?Number(t.value):t.metadata[r];return("asc"===d?ia)?-1:1})):e}),[m,t,c,d,o]),_=(0,r.useMemo)((function(){return y.some((function(e){return e.copyValue}))}),[y]),b=function(e){return function(){!function(e){h((function(t){return"asc"===t&&c===e?"desc":"asc"})),s(e)}(e)}};return y.length?Vt("div",{className:Pr()({"vm-table-view":!0,"vm-table-view_mobile":a}),children:Vt("table",{className:"vm-table",ref:u,children:[Vt("thead",{className:"vm-table-header",children:Vt("tr",{className:"vm-table__row vm-table__row_header",children:[m.map((function(e,t){return Vt("td",{className:"vm-table-cell vm-table-cell_header vm-table-cell_sort",onClick:b(e.key),children:Vt("div",{className:"vm-table-cell__content",children:[e.key,Vt("div",{className:Pr()({"vm-table__sort-icon":!0,"vm-table__sort-icon_active":c===e.key,"vm-table__sort-icon_desc":"desc"===d&&c===e.key}),children:Vt(er,{})})]})},t)})),Vt("td",{className:"vm-table-cell vm-table-cell_header vm-table-cell_right vm-table-cell_sort",onClick:b("Value"),children:Vt("div",{className:"vm-table-cell__content",children:[Vt("div",{className:Pr()({"vm-table__sort-icon":!0,"vm-table__sort-icon_active":"Value"===c,"vm-table__sort-icon_desc":"desc"===d}),children:Vt(er,{})}),"Value"]})}),_&&Vt("td",{className:"vm-table-cell vm-table-cell_header"})]})}),Vt("tbody",{className:"vm-table-body",children:y.map((function(e,t){return Vt("tr",{className:"vm-table__row",children:[e.metadata.map((function(e,n){return Vt("td",{className:Pr()({"vm-table-cell vm-table-cell_no-wrap":!0,"vm-table-cell_gray":y[t-1]&&y[t-1].metadata[n]===e}),children:e},n)})),Vt("td",{className:"vm-table-cell vm-table-cell_right vm-table-cell_no-wrap",children:e.values.length?e.values.map((function(e){return Vt("p",{children:e},e)})):e.value}),_&&Vt("td",{className:"vm-table-cell vm-table-cell_right",children:e.copyValue&&Vt("div",{className:"vm-table-cell__content",children:Vt(Si,{title:"Copy row",children:Vt(yi,{variant:"text",color:"gray",size:"small",startIcon:Vt(gr,{}),onClick:(n=e.copyValue,$i(ji().mark((function e(){return ji().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,i(n,"Row has been copied");case 2:case"end":return e.stop()}}),e)})))),ariaLabel:"copy row"})})})})]},t);var n}))})]})}):Vt(ci,{variant:"warning",children:"No data to show"})},fd=function(e){var t=e.text,n=e.href,r=e.children,i=e.colored,a=void 0===i||i,o=e.underlined,u=void 0!==o&&o,l=e.withIcon,c=void 0!==l&&l;return Vt("a",{href:n,className:Pr()({"vm-link":!0,"vm-link_colored":a,"vm-link_underlined":u,"vm-link_with-icon":c}),target:"_blank",rel:"noreferrer",children:t||r})},dd=Vt(fd,{text:"last_over_time",href:"https://docs.victoriametrics.com/MetricsQL.html#last_over_time",underlined:!0}),hd=Vt(fd,{text:"instant query",href:"https://docs.victoriametrics.com/keyConcepts.html#instant-query",underlined:!0}),md=function(){return Vt("div",{children:[Vt("p",{children:["This tab shows ",hd," results for the last 5 minutes ending at the selected time range."]}),Vt("p",{children:["Please wrap the query into ",dd," if you need results over arbitrary lookbehind interval."]})]})},pd=function(){var e=Jr(),t=e.displayType,n=e.isTracingEnabled,i=jn().query,a=On().period,o=Ln(),u=ui().isMobile;!function(){var e=Ut().tenantId,t=Jr().displayType,n=jn().query,i=On(),a=i.duration,o=i.relativeTime,u=i.period,l=u.date,c=u.step,s=ri().customStep,f=v(ot(),2)[1],d=function(){var r={};n.forEach((function(n,i){var u,f="g".concat(i);r["".concat(f,".expr")]=n,r["".concat(f,".range_input")]=a,r["".concat(f,".end_input")]=l,r["".concat(f,".tab")]=(null===(u=Yr.find((function(e){return e.value===t})))||void 0===u?void 0:u.prometheusCode)||0,r["".concat(f,".relative_time")]=o,r["".concat(f,".tenantID")]=e,c!==s&&s&&(r["".concat(f,".step_input")]=s)})),f(od(r))};(0,r.useEffect)(d,[e,t,n,a,o,l,c,s]),(0,r.useEffect)(d,[])}();var l=v((0,r.useState)(),2),c=l[0],s=l[1],f=v((0,r.useState)([]),2),d=f[0],h=f[1],m=v((0,r.useState)([]),2),p=m[0],g=m[1],y=v((0,r.useState)(!i[0]),2),b=y[0],w=y[1],D=_i(!1),k=D.value,x=D.setTrue,C=D.setFalse,S=ri(),E=S.customStep,A=S.yaxis,N=ii(),M=Wf({visible:!0,customStep:E,hideQuery:p,showAllSeries:k}),F=M.isLoading,T=M.liveData,O=M.graphData,L=M.error,P=M.queryErrors,I=M.setQueryErrors,R=M.queryStats,B=M.warning,z=M.traces,j=M.isHistogram,H=function(e){N({type:"SET_YAXIS_LIMITS",payload:e})},$=(0,r.useMemo)((function(){return ud(T||[]).map((function(e){return e.key}))}),[T]),V=Jr().tableCompact,Y=Xr();return Hr("popstate",(function(){return window.location.reload()})),(0,r.useEffect)((function(){z&&h([].concat(_(d),_(z)))}),[z]),(0,r.useEffect)((function(){h([])}),[t]),(0,r.useEffect)(C,[i]),(0,r.useEffect)((function(){N({type:"SET_IS_HISTOGRAM",payload:j})}),[O]),Vt("div",{className:Pr()({"vm-custom-panel":!0,"vm-custom-panel_mobile":u}),children:[Vt(jf,{queryErrors:b?[]:P,setQueryErrors:I,setHideError:w,stats:R,onHideQuery:function(e){g(e)},onRunQuery:function(){w(!1)}}),n&&Vt("div",{className:"vm-custom-panel__trace",children:Vt(nd,{traces:d,onDeleteClick:function(e){var t=d.filter((function(t){return t.idValue!==e.idValue}));h(_(t))}})}),F&&Vt(Jf,{}),!b&&L&&Vt(ci,{variant:"error",children:L}),!(null!==T&&void 0!==T&&T.length)&&"chart"!==t&&Vt(ci,{variant:"info",children:Vt(md,{})}),B&&Vt(ci,{variant:"warning",children:Vt("div",{className:Pr()({"vm-custom-panel__warning":!0,"vm-custom-panel__warning_mobile":u}),children:[Vt("p",{children:B}),Vt(yi,{color:"warning",variant:"outlined",onClick:x,children:"Show all"})]})}),Vt("div",{className:Pr()({"vm-custom-panel-body":!0,"vm-custom-panel-body_mobile":u,"vm-block":!0,"vm-block_mobile":u}),children:[Vt("div",{className:"vm-custom-panel-body-header",children:[Vt(Ur,{}),"chart"===t&&Vt("div",{className:"vm-custom-panel-body-header__left",children:[Vt(Fi,{}),Vt(Kf,{yaxis:A,setYaxisLimits:H,toggleEnableLimits:function(){N({type:"TOGGLE_ENABLE_YAXIS_LIMITS"})}})]}),"table"===t&&Vt(ad,{columns:$,defaultColumns:c,onChangeColumns:s,tableCompact:V,toggleTableCompact:function(){Y({type:"TOGGLE_TABLE_COMPACT"})}})]}),O&&a&&"chart"===t&&Vt(xs,{data:O,period:a,customStep:E,query:i,yaxis:A,setYaxisLimits:H,setPeriod:function(e){var t=e.from,n=e.to;o({type:"SET_PERIOD",payload:{from:t,to:n}})},height:u?.5*window.innerHeight:500,isHistogram:j}),T&&"code"===t&&Vt(Zf,{data:T}),T&&"table"===t&&Vt(sd,{data:T,displayColumns:c})]})]})},vd=function(e){var t=e.title,n=e.description,i=e.unit,a=e.expr,o=e.showLegend,u=e.filename,l=e.alias,c=ui().isMobile,s=On().period,f=ri().customStep,d=Ln(),h=(0,r.useRef)(null),m=v((0,r.useState)(!1),2),p=m[0],g=m[1],y=v((0,r.useState)({limits:{enable:!1,range:{1:[0,0]}}}),2),_=y[0],b=y[1],w=(0,r.useMemo)((function(){return Array.isArray(a)&&a.every((function(e){return e}))}),[a]),D=Wf({predefinedQuery:w?a:[],display:"chart",visible:p,customStep:f}),k=D.isLoading,x=D.graphData,C=D.error,S=D.warning,E=function(e){var t=st({},_);t.limits.range=e,b(t)};return(0,r.useEffect)((function(){var e=new IntersectionObserver((function(e){e.forEach((function(e){return g(e.isIntersecting)}))}),{threshold:.1});return h.current&&e.observe(h.current),function(){h.current&&e.unobserve(h.current)}}),[h]),w?Vt("div",{className:"vm-predefined-panel",ref:h,children:[Vt("div",{className:"vm-predefined-panel-header",children:[Vt(Si,{title:Vt((function(){return Vt("div",{className:"vm-predefined-panel-header__description vm-default-styles",children:[n&&Vt(Ht.HY,{children:[Vt("div",{children:[Vt("span",{children:"Description:"}),Vt("div",{dangerouslySetInnerHTML:{__html:wf.parse(n)}})]}),Vt("hr",{})]}),Vt("div",{children:[Vt("span",{children:"Queries:"}),Vt("div",{children:a.map((function(e,t){return Vt("div",{children:e},"".concat(t,"_").concat(e))}))})]})]})}),{}),children:Vt("div",{className:"vm-predefined-panel-header__info",children:Vt(Zn,{})})}),Vt("h3",{className:"vm-predefined-panel-header__title",children:t||""}),Vt(Kf,{yaxis:_,setYaxisLimits:E,toggleEnableLimits:function(){var e=st({},_);e.limits.enable=!e.limits.enable,b(e)}})]}),Vt("div",{className:"vm-predefined-panel-body",children:[k&&Vt(Jf,{}),C&&Vt(ci,{variant:"error",children:C}),S&&Vt(ci,{variant:"warning",children:S}),x&&Vt(xs,{data:x,period:s,customStep:f,query:a,yaxis:_,unit:i,alias:l,showLegend:o,setYaxisLimits:E,setPeriod:function(e){var t=e.from,n=e.to;d({type:"SET_PERIOD",payload:{from:t,to:n}})},fullWidth:!1,height:c?.5*window.innerHeight:500})]})]}):Vt(ci,{variant:"error",children:[Vt("code",{children:'"expr"'})," not found. Check the configuration file ",Vt("b",{children:u}),"."]})},gd=function(e){var t=e.index,n=e.title,i=e.panels,a=e.filename,o=$r(),u=(0,r.useMemo)((function(){return o.width/12}),[o]),l=v((0,r.useState)(!t),2),c=l[0],s=l[1],f=v((0,r.useState)([]),2),d=f[0],h=f[1];(0,r.useEffect)((function(){h(i&&i.map((function(e){return e.width||12})))}),[i]);var m=v((0,r.useState)({start:0,target:0,enable:!1}),2),p=m[0],g=m[1],y=(0,r.useCallback)((function(e){if(p.enable){var t=p.start,n=Math.ceil((t-e.clientX)/u);if(!(Math.abs(n)>=12)){var r=d.map((function(e,t){return e-(t===p.target?n:0)}));h(r)}}}),[p,u]),_=(0,r.useCallback)((function(){g(st(st({},p),{},{enable:!1}))}),[p]),b=function(e){return function(t){!function(e,t){g({start:e.clientX,target:t,enable:!0})}(t,e)}};return Hr("mousemove",y),Hr("mouseup",_),Vt("div",{className:"vm-predefined-dashboard",children:Vt(Ca,{defaultExpanded:c,onChange:function(e){return s(e)},title:Vt((function(){return Vt("div",{className:Pr()({"vm-predefined-dashboard-header":!0,"vm-predefined-dashboard-header_open":c}),children:[(n||a)&&Vt("span",{className:"vm-predefined-dashboard-header__title",children:n||"".concat(t+1,". ").concat(a)}),i&&Vt("span",{className:"vm-predefined-dashboard-header__count",children:["(",i.length," panels)"]})]})}),{}),children:Vt("div",{className:"vm-predefined-dashboard-panels",children:Array.isArray(i)&&i.length?i.map((function(e,t){return Vt("div",{className:"vm-predefined-dashboard-panels-panel vm-block vm-block_empty-padding",style:{gridColumn:"span ".concat(d[t])},children:[Vt(vd,{title:e.title,description:e.description,unit:e.unit,expr:e.expr,alias:e.alias,filename:a,showLegend:e.showLegend}),Vt("button",{className:"vm-predefined-dashboard-panels-panel__resizer",onMouseDown:b(t),"aria-label":"resize the panel"})]},t)})):Vt("div",{className:"vm-predefined-dashboard-panels-panel__alert",children:Vt(ci,{variant:"error",children:[Vt("code",{children:'"panels"'})," not found. Check the configuration file ",Vt("b",{children:a}),"."]})})})})})},yd=function(){!function(){var e=On(),t=e.duration,n=e.relativeTime,i=e.period.date,a=ri().customStep,o=ga().setSearchParamsFromKeys,u=function(){var e,r=od((lt(e={},"g0.range_input",t),lt(e,"g0.end_input",i),lt(e,"g0.step_input",a),lt(e,"g0.relative_time",n),e));o(r)};(0,r.useEffect)(u,[t,n,i,a]),(0,r.useEffect)(u,[])}();var e=ui().isMobile,t=mi(),n=t.dashboardsSettings,i=t.dashboardsLoading,a=t.dashboardsError,o=v((0,r.useState)(0),2),u=o[0],l=o[1],c=(0,r.useMemo)((function(){return n.map((function(e,t){return{label:e.title||"",value:t}}))}),[n]),s=(0,r.useMemo)((function(){return n[u]||{}}),[n,u]),f=(0,r.useMemo)((function(){return null===s||void 0===s?void 0:s.rows}),[s]),d=(0,r.useMemo)((function(){return s.title||s.filename||""}),[s]),h=(0,r.useMemo)((function(){return Array.isArray(f)&&!!f.length}),[f]),m=function(e){return function(){!function(e){l(e)}(e)}};return Vt("div",{className:"vm-predefined-panels",children:[i&&Vt(Jf,{}),!n.length&&a&&Vt(ci,{variant:"error",children:a}),!n.length&&Vt(ci,{variant:"info",children:"Dashboards not found"}),c.length>1&&Vt("div",{className:Pr()({"vm-predefined-panels-tabs":!0,"vm-predefined-panels-tabs_mobile":e}),children:c.map((function(e){return Vt("div",{className:Pr()({"vm-predefined-panels-tabs__tab":!0,"vm-predefined-panels-tabs__tab_active":e.value==u}),onClick:m(e.value),children:e.label},e.value)}))}),Vt("div",{className:"vm-predefined-panels__dashboards",children:[h&&f.map((function(e,t){return Vt(gd,{index:t,filename:d,title:e.title,panels:e.panels},"".concat(u,"_").concat(t))})),!!n.length&&!h&&Vt(ci,{variant:"error",children:[Vt("code",{children:'"rows"'})," not found. Check the configuration file ",Vt("b",{children:d}),"."]})]})]})},_d=function(e,t){var n=t.match?"&match[]="+encodeURIComponent(t.match):"",r=t.focusLabel?"&focusLabel="+encodeURIComponent(t.focusLabel):"";return"".concat(e,"/api/v1/status/tsdb?topN=").concat(t.topN,"&date=").concat(t.date).concat(n).concat(r)},bd=function(){function e(){b(this,e),this.tsdbStatus=void 0,this.tabsNames=void 0,this.isPrometheus=void 0,this.tsdbStatus=this.defaultTSDBStatus,this.tabsNames=["table","graph"],this.isPrometheus=!1,this.getDefaultState=this.getDefaultState.bind(this)}return x(e,[{key:"tsdbStatusData",get:function(){return this.tsdbStatus},set:function(e){this.isPrometheus=!(null===e||void 0===e||!e.headStats),this.tsdbStatus=e}},{key:"defaultTSDBStatus",get:function(){return{totalSeries:0,totalSeriesPrev:0,totalSeriesByAll:0,totalLabelValuePairs:0,seriesCountByMetricName:[],seriesCountByLabelName:[],seriesCountByFocusLabelValue:[],seriesCountByLabelValuePair:[],labelValueCountByLabelName:[]}}},{key:"isPrometheusData",get:function(){return this.isPrometheus}},{key:"keys",value:function(e,t){var n=e&&/__name__=".+"/.test(e),r=e&&/{.+=".+"}/g.test(e),i=e&&/__name__=".+", .+!=""/g.test(e),a=[];return a=t||i?a.concat("seriesCountByFocusLabelValue"):n?a.concat("labelValueCountByLabelName"):r?a.concat("seriesCountByMetricName","seriesCountByLabelName"):a.concat("seriesCountByMetricName","seriesCountByLabelName","seriesCountByLabelValuePair","labelValueCountByLabelName"),a}},{key:"getDefaultState",value:function(e,t){var n=this;return this.keys(e,t).reduce((function(e,t){return st(st({},e),{},{tabs:st(st({},e.tabs),{},lt({},t,n.tabsNames)),containerRefs:st(st({},e.containerRefs),{},lt({},t,(0,r.useRef)(null)))})}),{tabs:{},containerRefs:{}})}},{key:"sectionsTitles",value:function(e){return{seriesCountByMetricName:"Metric names with the highest number of series",seriesCountByLabelName:"Labels with the highest number of series",seriesCountByFocusLabelValue:'Values for "'.concat(e,'" label with the highest number of series'),seriesCountByLabelValuePair:"Label=value pairs with the highest number of series",labelValueCountByLabelName:"Labels with the highest number of unique values"}}},{key:"sectionsTips",get:function(){return{seriesCountByMetricName:"\n

    \n This table returns a list of metrics with the highest cardinality.\n The cardinality of a metric is the number of time series associated with that metric,\n where each time series is defined as a unique combination of key-value label pairs.\n

    \n

    \n When looking to reduce the number of active series in your data source,\n you can start by inspecting individual metrics with high cardinality\n (i.e. that have lots of active time series associated with them),\n since that single metric contributes a large fraction of the series that make up your total series count.\n

    ",seriesCountByLabelName:"\n

    \n This table returns a list of the labels with the highest number of series.\n

    \n

    \n Use this table to identify labels that are storing dimensions with high cardinality\n (many different label values).\n

    \n

    \n It is recommended to choose labels such that they have a finite set of values,\n since every unique combination of key-value label pairs creates a new time series\n and therefore can dramatically increase the number of time series in your system.\n

    ",seriesCountByFocusLabelValue:"\n

    \n This table returns a list of unique label values per selected label.\n

    \n

    \n Use this table to identify label values that are storing per each selected series.\n

    ",labelValueCountByLabelName:"\n

    \n This table returns a list of labels with the highest number of the unique values.\n

    \n ",seriesCountByLabelValuePair:"\n

    \n This table returns a list of the label values pairs with the highest number of series.\n

    \n

    \n Use this table to identify unique label values pairs. This helps to identify same labels \n is applied to count timeseries in your system, since every unique combination of key-value label pairs \n creates a new time series and therefore can dramatically increase the number of time series in your system\n

    "}}},{key:"tablesHeaders",get:function(){return{seriesCountByMetricName:wd,seriesCountByLabelName:Dd,seriesCountByFocusLabelValue:kd,seriesCountByLabelValuePair:xd,labelValueCountByLabelName:Cd}}},{key:"totalSeries",value:function(e){return"labelValueCountByLabelName"===e?-1:arguments.length>1&&void 0!==arguments[1]&&arguments[1]?this.tsdbStatus.totalSeriesPrev:this.tsdbStatus.totalSeries}}]),e}(),wd=[{id:"name",label:"Metric name"},{id:"value",label:"Number of series"},{id:"percentage",label:"Share in total",info:"Shows the share of a metric to the total number of series"},{id:"action",label:""}],Dd=[{id:"name",label:"Label name"},{id:"value",label:"Number of series"},{id:"percentage",label:"Share in total",info:"Shows the share of the label to the total number of series"},{id:"action",label:""}],kd=[{id:"name",label:"Label value"},{id:"value",label:"Number of series"},{id:"percentage",label:"Share in total"},{disablePadding:!1,id:"action",label:"",numeric:!1}],xd=[{id:"name",label:"Label=value pair"},{id:"value",label:"Number of series"},{id:"percentage",label:"Share in total",info:"Shows the share of the label value pair to the total number of series"},{id:"action",label:""}],Cd=[{id:"name",label:"Label name"},{id:"value",label:"Number of unique values"},{id:"action",label:""}],Sd={seriesCountByMetricName:function(e){var t=e.query;return Ed("__name__",t)},seriesCountByLabelName:function(e){var t=e.query;return"{".concat(t,'!=""}')},seriesCountByFocusLabelValue:function(e){var t=e.query,n=e.focusLabel;return Ed(n,t)},seriesCountByLabelValuePair:function(e){var t=e.query.split("="),n=t[0],r=t.slice(1).join("=");return Ed(n,r)},labelValueCountByLabelName:function(e){var t=e.query,n=e.match;return""===n?"{".concat(t,'!=""}'):"".concat(n.replace("}",""),", ").concat(t,'!=""}')}},Ed=function(e,t){return e?"{"+e+"="+JSON.stringify(t)+"}":""},Ad=function(e){var t,n=e.totalSeries,r=void 0===n?0:n,i=e.totalSeriesPrev,a=void 0===i?0:i,o=e.totalSeriesAll,u=void 0===o?0:o,l=e.seriesCountByMetricName,c=void 0===l?[]:l,s=e.isPrometheus,f=ui().isMobile,d=v(ot(),1)[0],h=d.get("match"),m=d.get("focusLabel"),p=/__name__/.test(h||""),g=(null===(t=c[0])||void 0===t?void 0:t.value)/u*100,y=r-a,_=Math.abs(y)/a*100,b=[{title:"Total series",value:r.toLocaleString("en-US"),dynamic:r&&a&&!s?"".concat(_.toFixed(2),"%"):"",display:!m,info:'The total number of active time series. \n A time series is uniquely identified by its name plus a set of its labels. \n For example, temperature{city="NY",country="US"} and temperature{city="SF",country="US"} \n are two distinct series, since they differ by the city label.'},{title:"Percentage from total",value:isNaN(g)?"-":"".concat(g.toFixed(2),"%"),display:p,info:"The share of these series in the total number of time series."}].filter((function(e){return e.display}));return b.length?Vt("div",{className:Pr()({"vm-cardinality-totals":!0,"vm-cardinality-totals_mobile":f}),children:b.map((function(e){var t=e.title,n=e.value,r=e.info,i=e.dynamic;return Vt("div",{className:"vm-cardinality-totals-card",children:[Vt("h4",{className:"vm-cardinality-totals-card__title",children:[t,r&&Vt(Si,{title:Vt("p",{className:"vm-cardinality-totals-card__tooltip",children:r}),children:Vt("div",{className:"vm-cardinality-totals-card__info-icon",children:Vt(Zn,{})})})]}),Vt("span",{className:"vm-cardinality-totals-card__value",children:n}),!!i&&Vt(Si,{title:"in relation to the previous day: ".concat(a.toLocaleString("en-US")),children:Vt("span",{className:Pr()({"vm-dynamic-number":!0,"vm-dynamic-number_positive vm-dynamic-number_down":y<0,"vm-dynamic-number_negative vm-dynamic-number_up":y>0}),children:i})})]},t)}))}):null},Nd=function(e,t){var n=v(ot(),1)[0],i=n.get(t)?n.get(t):e,a=v((0,r.useState)(i),2),o=a[0],u=a[1];return(0,r.useEffect)((function(){i!==o&&u(i)}),[i]),[o,u]},Md=["isPrometheus","isCluster"],Fd=function(e){var t=e.isPrometheus,n=e.isCluster,i=Ir(e,Md),a=ui().isMobile,o=v(ot(),1)[0],u=ga().setSearchParamsFromKeys,l=o.get("tips")||"",c=v(Nd("","match"),2),s=c[0],f=c[1],d=v(Nd("","focusLabel"),2),h=d[0],m=d[1],p=v(Nd(10,"topN"),2),g=p[0],y=p[1],_=(0,r.useMemo)((function(){return g<0?"Number must be bigger than zero":""}),[g]),b=function(){u({match:s,topN:g,focusLabel:h})};return(0,r.useEffect)((function(){var e=o.get("match"),t=+(o.get("topN")||10),n=o.get("focusLabel");e!==s&&f(e||""),t!==g&&y(t),n!==h&&m(n||"")}),[o]),Vt("div",{className:Pr()({"vm-cardinality-configurator":!0,"vm-cardinality-configurator_mobile":a,"vm-block":!0,"vm-block_mobile":a}),children:[Vt("div",{className:"vm-cardinality-configurator-controls",children:[Vt("div",{className:"vm-cardinality-configurator-controls__query",children:Vt(Gi,{label:"Time series selector",type:"string",value:s,onChange:f,onEnter:b})}),Vt("div",{className:"vm-cardinality-configurator-controls__item",children:Vt(Gi,{label:"Focus label",type:"text",value:h||"",onChange:m,onEnter:b,endIcon:Vt(Si,{title:Vt("div",{children:Vt("p",{children:"To identify values with the highest number of series for the selected label."})}),children:Vt(Dr,{})})})}),Vt("div",{className:"vm-cardinality-configurator-controls__item vm-cardinality-configurator-controls__item_limit",children:Vt(Gi,{label:"Limit entries",type:"number",value:t?10:g,error:_,disabled:t,helperText:t?"not available for Prometheus":"",onChange:function(e){var t=+e;y(isNaN(t)?0:t)},onEnter:b})})]}),Vt("div",{className:"vm-cardinality-configurator-bottom",children:[Vt(Ad,st({isPrometheus:t,isCluster:n},i)),n&&Vt("div",{className:"vm-cardinality-configurator-bottom-helpful",children:Vt(fd,{href:"https://docs.victoriametrics.com/#cardinality-explorer-statistic-inaccurancy",withIcon:!0,children:[Vt(br,{}),"Statistic inaccuracy explanation"]})}),Vt("div",{className:"vm-cardinality-configurator-bottom-helpful",children:Vt(fd,{href:"https://docs.victoriametrics.com/#cardinality-explorer",withIcon:!0,children:[Vt(br,{}),"Documentation"]})}),Vt("div",{className:"vm-cardinality-configurator-bottom__execute",children:[Vt(Si,{title:l?"Hide tips":"Show tips",children:Vt(yi,{variant:"text",color:l?"warning":"gray",startIcon:Vt(Sr,{}),onClick:function(){var e=o.get("tips")||"";u({tips:e?"":"true"})},ariaLabel:"visibility tips"})}),Vt(yi,{variant:"text",startIcon:Vt(Wn,{}),onClick:function(){u({match:"",focusLabel:""})},children:"Reset"}),Vt(yi,{startIcon:Vt(ar,{}),onClick:b,children:"Execute Query"})]})]})]})};function Td(e){var t=e.order,n=e.orderBy,r=e.onRequestSort,i=e.headerCells;return Vt("thead",{className:"vm-table-header vm-cardinality-panel-table__header",children:Vt("tr",{className:"vm-table__row vm-table__row_header",children:i.map((function(e){return Vt("th",{className:Pr()({"vm-table-cell vm-table-cell_header":!0,"vm-table-cell_sort":"action"!==e.id&&"percentage"!==e.id,"vm-table-cell_right":"action"===e.id}),onClick:(i=e.id,function(e){r(e,i)}),children:Vt("div",{className:"vm-table-cell__content",children:[e.info?Vt(Si,{title:e.info,children:[Vt("div",{className:"vm-metrics-content-header__tip-icon",children:Vt(Zn,{})}),e.label]}):Vt(Ht.HY,{children:e.label}),"action"!==e.id&&"percentage"!==e.id&&Vt("div",{className:Pr()({"vm-table__sort-icon":!0,"vm-table__sort-icon_active":n===e.id,"vm-table__sort-icon_desc":"desc"===t&&n===e.id}),children:Vt(er,{})})]})},e.id);var i}))})})}function Od(e,t,n){return t[n]e[n]?1:0}function Ld(e,t){return"desc"===e?function(e,n){return Od(e,n,t)}:function(e,n){return-Od(e,n,t)}}function Pd(e,t){var n=e.map((function(e,t){return[e,t]}));return n.sort((function(e,n){var r=t(e[0],n[0]);return 0!==r?r:e[1]-n[1]})),n.map((function(e){return e[0]}))}var Id=function(e){var t=e.rows,n=e.headerCells,i=e.defaultSortColumn,a=e.tableCells,o=v((0,r.useState)("desc"),2),u=o[0],l=o[1],c=v((0,r.useState)(i),2),s=c[0],f=c[1],d=Pd(t,Ld(u,s));return Vt("table",{className:"vm-table vm-cardinality-panel-table",children:[Vt(Td,{order:u,orderBy:s,onRequestSort:function(e,t){l(s===t&&"asc"===u?"desc":"asc"),f(t)},rowCount:t.length,headerCells:n}),Vt("tbody",{className:"vm-table-header",children:d.map((function(e){return Vt("tr",{className:"vm-table__row",children:a(e)},e.name)}))})]})},Rd=function(e){var t=e.row,n=e.totalSeries,r=e.totalSeriesPrev,i=e.onActionClick,a=n>0?t.value/n*100:-1,o=r>0?t.valuePrev/r*100:-1,u=[a,o].some((function(e){return-1===e})),l=a-o,c=u?"":"".concat(l.toFixed(2),"%"),s=function(){i(t.name)};return Vt(Ht.HY,{children:[Vt("td",{className:"vm-table-cell",children:Vt("span",{className:"vm-link vm-link_colored",onClick:s,children:t.name})},t.name),Vt("td",{className:"vm-table-cell",children:[t.value,!!t.diff&&Vt(Si,{title:"in relation to the previous day: ".concat(t.valuePrev),children:Vt("span",{className:Pr()({"vm-dynamic-number":!0,"vm-dynamic-number_positive":t.diff<0,"vm-dynamic-number_negative":t.diff>0}),children:["\xa0",t.diff>0?"+":"",t.diff]})})]},t.value),a>0&&Vt("td",{className:"vm-table-cell",children:Vt("div",{className:"vm-cardinality-panel-table__progress",children:[Vt(Xf,{value:a}),c&&Vt(Si,{title:"in relation to the previous day",children:Vt("span",{className:Pr()({"vm-dynamic-number":!0,"vm-dynamic-number_positive vm-dynamic-number_down":l<0,"vm-dynamic-number_negative vm-dynamic-number_up":l>0}),children:c})})]})},t.progressValue),Vt("td",{className:"vm-table-cell vm-table-cell_right",children:Vt("div",{className:"vm-table-cell__content",children:Vt(Si,{title:"Filter by ".concat(t.name),children:Vt(yi,{variant:"text",size:"small",onClick:s,children:Vt(or,{})})})})},"action")]})},Bd=function(e){var t=e.data,n=v((0,r.useState)([]),2),i=n[0],a=n[1],o=v((0,r.useState)([0,0]),2),u=o[0],l=o[1];return(0,r.useEffect)((function(){var e=t.sort((function(e,t){return t.value-e.value})),n=function(e){var t=e.map((function(e){return e.value})),n=Math.ceil(t[0]||1),r=n/9;return new Array(11).fill(n+r).map((function(e,t){return Math.round(e-r*t)}))}(e);l(n),a(e.map((function(e){return st(st({},e),{},{percentage:e.value/n[0]*100})})))}),[t]),Vt("div",{className:"vm-simple-bar-chart",children:[Vt("div",{className:"vm-simple-bar-chart-y-axis",children:u.map((function(e){return Vt("div",{className:"vm-simple-bar-chart-y-axis__tick",children:e},e)}))}),Vt("div",{className:"vm-simple-bar-chart-data",children:i.map((function(e){var t=e.name,n=e.value,r=e.percentage;return Vt(Si,{title:"".concat(t,": ").concat(n),placement:"top-center",children:Vt("div",{className:"vm-simple-bar-chart-data-item",style:{maxHeight:"".concat(r||0,"%")}})},"".concat(t,"_").concat(n))}))})]})},zd=function(e){var t=e.rows,n=e.tabs,i=void 0===n?[]:n,a=e.chartContainer,o=e.totalSeries,u=e.totalSeriesPrev,l=e.onActionClick,c=e.sectionTitle,s=e.tip,f=e.tableHeaderCells,d=e.isPrometheus,h=ui().isMobile,m=v((0,r.useState)("table"),2),p=m[0],g=m[1],y=d&&!t.length,_=(0,r.useMemo)((function(){return i.map((function(e,t){return{value:e,label:e,icon:Vt(0===t?lr:ur,{})}}))}),[i]);return Vt("div",{className:Pr()({"vm-metrics-content":!0,"vm-metrics-content_mobile":h,"vm-block":!0,"vm-block_mobile":h}),children:[Vt("div",{className:"vm-metrics-content-header vm-section-header",children:[Vt("h5",{className:Pr()({"vm-metrics-content-header__title":!0,"vm-section-header__title":!0,"vm-section-header__title_mobile":h}),children:[!h&&s&&Vt(Si,{title:Vt("p",{dangerouslySetInnerHTML:{__html:s},className:"vm-metrics-content-header__tip"}),children:Vt("div",{className:"vm-metrics-content-header__tip-icon",children:Vt(Zn,{})})}),c]}),Vt("div",{className:"vm-section-header__tabs",children:Vt(Vr,{activeItem:p,items:_,onChange:g})})]}),y&&Vt("div",{className:"vm-metrics-content-prom-data",children:[Vt("div",{className:"vm-metrics-content-prom-data__icon",children:Vt(Zn,{})}),Vt("h3",{className:"vm-metrics-content-prom-data__title",children:"Prometheus Data Limitation"}),Vt("p",{className:"vm-metrics-content-prom-data__text",children:["Due to missing data from your Prometheus source, some tables may appear empty.",Vt("br",{}),"This does not indicate an issue with your system or our tool."]})]}),!y&&"table"===p&&Vt("div",{ref:a,className:Pr()({"vm-metrics-content__table":!0,"vm-metrics-content__table_mobile":h}),children:Vt(Id,{rows:t,headerCells:f,defaultSortColumn:"value",tableCells:function(e){return Vt(Rd,{row:e,totalSeries:o,totalSeriesPrev:u,onActionClick:l})}})}),!y&&"graph"===p&&Vt("div",{className:"vm-metrics-content__chart",children:Vt(Bd,{data:t.map((function(e){return{name:e.name,value:e.value}}))})})]})},jd=function(e){var t=e.title,n=e.children;return Vt("div",{className:"vm-cardinality-tip",children:[Vt("div",{className:"vm-cardinality-tip-header",children:[Vt("div",{className:"vm-cardinality-tip-header__tip-icon",children:Vt(Sr,{})}),Vt("h4",{className:"vm-cardinality-tip-header__title",children:t||"Tips"})]}),Vt("p",{className:"vm-cardinality-tip__description",children:n})]})},Hd=function(){return Vt(jd,{title:"Metrics with a high number of series",children:Vt("ul",{children:[Vt("li",{children:["Identify and eliminate labels with frequently changed values to reduce their\xa0",Vt(fd,{href:"https://docs.victoriametrics.com/FAQ.html#what-is-high-cardinality",children:"cardinality"}),"\xa0and\xa0",Vt(fd,{href:"https://docs.victoriametrics.com/FAQ.html#what-is-high-churn-rate",children:"high churn rate"})]}),Vt("li",{children:["Find unused time series and\xa0",Vt(fd,{href:"https://docs.victoriametrics.com/relabeling.html",children:"drop entire metrics"})]}),Vt("li",{children:["Aggregate time series before they got ingested into the database via\xa0",Vt(fd,{href:"https://docs.victoriametrics.com/stream-aggregation.html",children:"streaming aggregation"})]})]})})},$d=function(){return Vt(jd,{title:"Labels with a high number of unique values",children:Vt("ul",{children:[Vt("li",{children:"Decrease the number of unique label values to reduce cardinality"}),Vt("li",{children:["Drop the label entirely via\xa0",Vt(fd,{href:"https://docs.victoriametrics.com/relabeling.html",children:"relabeling"})]}),Vt("li",{children:"For volatile label values (such as URL path, user session, etc.) consider printing them to the log file instead of adding to time series"})]})})},Vd=function(){return Vt(jd,{title:"Dashboard of a single metric",children:[Vt("p",{children:"This dashboard helps to understand the cardinality of a single metric."}),Vt("p",{children:"Each time series is a unique combination of key-value label pairs. Therefore a label key with many values can create a lot of time series for a particular metric. If you\u2019re trying to decrease the cardinality of a metric, start by looking at the labels with the highest number of values."}),Vt("p",{children:"Use the series selector at the top of the page to apply additional filters."})]})},Yd=function(){return Vt(jd,{title:"Dashboard of a label",children:[Vt("p",{children:"This dashboard helps you understand the count of time series per label."}),Vt("p",{children:"Use the selector at the top of the page to pick a label name you\u2019d like to inspect. For the selected label name, you\u2019ll see the label values that have the highest number of series associated with them. So if you\u2019ve chosen `instance` as your label name, you may see that `657` time series have value \u201chost-1\u201d attached to them and `580` time series have value `host-2` attached to them."}),Vt("p",{children:"This can be helpful in allowing you to determine where the bulk of your time series are coming from. If the label \u201cinstance=host-1\u201d was applied to 657 series and the label \u201cinstance=host-2\u201d was only applied to 580 series, you\u2019d know, for example, that host-01 was responsible for sending the majority of the time series."})]})},Ud=function(){var e=ui().isMobile,t=v(ot(),1)[0],n=ga().setSearchParamsFromKeys,i=t.get("tips")||"",o=t.get("match")||"",u=t.get("focusLabel")||"",l=function(){var e=new bd,t=v(ot(),1)[0],n=t.get("match"),i=t.get("focusLabel"),o=+(t.get("topN")||10),u=t.get("date")||a()().tz().format(Zt),l=Ut().serverUrl,c=v((0,r.useState)(!1),2),s=c[0],f=c[1],d=v((0,r.useState)(),2),h=d[0],m=d[1],p=v((0,r.useState)(e.defaultTSDBStatus),2),g=p[0],y=p[1],_=v((0,r.useState)(!1),2),b=_[0],w=_[1],D=function(){var e=$i(ji().mark((function e(t){var n;return ji().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch(t);case 2:if(!(n=e.sent).ok){e.next=7;break}return e.next=6,n.json();case 6:return e.abrupt("return",e.sent);case 7:throw new Error("Request failed with status ".concat(n.status));case 8:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),k=function(e,t){Object.keys(e).forEach((function(n){var r=n,i=e[r],a=t[r];Array.isArray(i)&&Array.isArray(a)&&i.forEach((function(e){var t,n=null===(t=a.find((function(t){return t.name===e.name})))||void 0===t?void 0:t.value;e.diff=n?e.value-n:0,e.valuePrev=n||0}))}))},x=function(){var t=$i(ji().mark((function t(r){var i,o,u,c,s,d,h,p,g,_,b,w,x,C,S,E,A,N,M,F,T,O;return ji().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(l){t.next=2;break}return t.abrupt("return");case 2:return m(""),f(!0),y(e.defaultTSDBStatus),i=st(st({},r),{},{date:r.date,topN:0,match:"",focusLabel:""}),o=st(st({},r),{},{date:a()(r.date).subtract(1,"day").tz().format(Zt)}),u=[_d(l,r),_d(l,o),_d(l,i)],t.prev=8,t.next=11,Promise.all(u.map(D));case 11:C=t.sent,S=v(C,3),E=S[0],A=S[1],N=S[2],M=st({},A.data),F=N.data,T=st(st({},E.data),{},{totalSeries:(null===(c=E.data)||void 0===c?void 0:c.totalSeries)||(null===(s=E.data)||void 0===s||null===(d=s.headStats)||void 0===d?void 0:d.numSeries)||0,totalLabelValuePairs:(null===(h=E.data)||void 0===h?void 0:h.totalLabelValuePairs)||(null===(p=E.data)||void 0===p||null===(g=p.headStats)||void 0===g?void 0:g.numLabelValuePairs)||0,seriesCountByLabelName:(null===(_=E.data)||void 0===_?void 0:_.seriesCountByLabelName)||[],seriesCountByFocusLabelValue:(null===(b=E.data)||void 0===b?void 0:b.seriesCountByFocusLabelValue)||[],totalSeriesByAll:(null===F||void 0===F?void 0:F.totalSeries)||(null===F||void 0===F||null===(w=F.headStats)||void 0===w?void 0:w.numSeries)||0,totalSeriesPrev:(null===M||void 0===M?void 0:M.totalSeries)||(null===M||void 0===M||null===(x=M.headStats)||void 0===x?void 0:x.numSeries)||0}),O=null===n||void 0===n?void 0:n.replace(/[{}"]/g,""),T.seriesCountByLabelValuePair=T.seriesCountByLabelValuePair.filter((function(e){return e.name!==O})),k(T,M),y(T),f(!1),t.next=30;break;case 26:t.prev=26,t.t0=t.catch(8),f(!1),t.t0 instanceof Error&&m("".concat(t.t0.name,": ").concat(t.t0.message));case 30:case"end":return t.stop()}}),t,null,[[8,26]])})));return function(e){return t.apply(this,arguments)}}();return(0,r.useEffect)((function(){x({topN:o,match:n,date:u,focusLabel:i})}),[l,n,i,o,u]),(0,r.useEffect)((function(){h&&(y(e.defaultTSDBStatus),f(!1))}),[h]),(0,r.useEffect)((function(){var e=bt(l);w(!!e)}),[l]),e.tsdbStatusData=g,{isLoading:s,appConfigurator:e,error:h,isCluster:b}}(),c=l.isLoading,s=l.appConfigurator,f=l.error,d=l.isCluster,h=s.tsdbStatusData,m=s.getDefaultState,p=s.tablesHeaders,g=s.sectionsTips,y=m(o,u);return Vt("div",{className:Pr()({"vm-cardinality-panel":!0,"vm-cardinality-panel_mobile":e}),children:[c&&Vt(Jf,{message:"Please wait while cardinality stats is calculated. \n This may take some time if the db contains big number of time series."}),Vt(Fd,{isPrometheus:s.isPrometheusData,totalSeries:h.totalSeries,totalSeriesPrev:h.totalSeriesPrev,totalSeriesAll:h.totalSeriesByAll,totalLabelValuePairs:h.totalLabelValuePairs,seriesCountByMetricName:h.seriesCountByMetricName,isCluster:d}),i&&Vt("div",{className:"vm-cardinality-panel-tips",children:[!o&&!u&&Vt(Hd,{}),o&&!u&&Vt(Vd,{}),!o&&!u&&Vt($d,{}),u&&Vt(Yd,{})]}),f&&Vt(ci,{variant:"error",children:f}),s.keys(o,u).map((function(e){return Vt(zd,{sectionTitle:s.sectionsTitles(u)[e],tip:g[e],rows:h[e],onActionClick:(t=e,function(e){var r={match:Sd[t]({query:e,focusLabel:u,match:o})};"labelValueCountByLabelName"!==t&&"seriesCountByLabelName"!=t||(r.focusLabel=e),"seriesCountByFocusLabelValue"==t&&(r.focusLabel=""),n(r)}),tabs:y.tabs[e],chartContainer:y.containerRefs[e],totalSeriesPrev:s.totalSeries(e,!0),totalSeries:s.totalSeries(e),tableHeaderCells:p[e],isPrometheus:s.isPrometheusData},e);var t}))]})},qd=function(e){return["topByAvgDuration","topByCount","topBySumDuration"].forEach((function(t){var n=e[t];Array.isArray(n)&&n.forEach((function(e){var t=vn(1e3*e.timeRangeSeconds);e.url=function(e,t){var n,r=e.query,i=e.timeRangeSeconds,a=["g0.expr=".concat(encodeURIComponent(r))],o=null===(n=yn.find((function(e){return e.duration===t})))||void 0===n?void 0:n.id;return o&&a.push("g0.relative_time=".concat(o)),i&&a.push("g0.range_input=".concat(t)),"".concat(pt.home,"?").concat(a.join("&"))}(e,t),e.timeRange=t}))})),e},Wd=function(e){var t=e.topN,n=e.maxLifetime,i=Ut().serverUrl,a=ga().setSearchParamsFromKeys,o=v((0,r.useState)(null),2),u=o[0],l=o[1],c=v((0,r.useState)(!1),2),s=c[0],f=c[1],d=v((0,r.useState)(),2),h=d[0],m=d[1],p=(0,r.useMemo)((function(){return function(e,t,n){return"".concat(e,"/api/v1/status/top_queries?topN=").concat(t||"","&maxLifetime=").concat(n||"")}(i,t,n)}),[i,t,n]),g=function(){var e=$i(ji().mark((function e(){var r,i;return ji().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return f(!0),a({topN:t,maxLifetime:n}),e.prev=2,e.next=5,fetch(p);case 5:return r=e.sent,e.next=8,r.json();case 8:i=e.sent,l(r.ok?qd(i):null),m(String(i.error||"")),e.next=16;break;case 13:e.prev=13,e.t0=e.catch(2),e.t0 instanceof Error&&"AbortError"!==e.t0.name&&m("".concat(e.t0.name,": ").concat(e.t0.message));case 16:f(!1);case 17:case"end":return e.stop()}}),e,null,[[2,13]])})));return function(){return e.apply(this,arguments)}}();return{data:u,error:h,loading:s,fetch:g}},Zd=function(e){var t=e.rows,n=e.columns,i=e.defaultOrderBy,a=gs(),o=v((0,r.useState)(i||"count"),2),u=o[0],l=o[1],c=v((0,r.useState)("desc"),2),s=c[0],f=c[1],d=(0,r.useMemo)((function(){return Pd(t,Ld(s,u))}),[t,u,s]),h=function(e){return function(){var t;t=e,f((function(e){return"asc"===e&&u===t?"desc":"asc"})),l(t)}},m=function(e){var t=e.query;return $i(ji().mark((function e(){return ji().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,a(t,"Query has been copied");case 2:case"end":return e.stop()}}),e)})))};return Vt("table",{className:"vm-table",children:[Vt("thead",{className:"vm-table-header",children:Vt("tr",{className:"vm-table__row vm-table__row_header",children:[n.map((function(e){return Vt("th",{className:"vm-table-cell vm-table-cell_header vm-table-cell_sort",onClick:h(e.sortBy||e.key),children:Vt("div",{className:"vm-table-cell__content",children:[e.title||e.key,Vt("div",{className:Pr()({"vm-table__sort-icon":!0,"vm-table__sort-icon_active":u===e.key,"vm-table__sort-icon_desc":"desc"===s&&u===e.key}),children:Vt(er,{})})]})},e.key)})),Vt("th",{className:"vm-table-cell vm-table-cell_header"})," "]})}),Vt("tbody",{className:"vm-table-body",children:d.map((function(e,t){return Vt("tr",{className:"vm-table__row",children:[n.map((function(t){return Vt("td",{className:"vm-table-cell",children:e[t.key]||"-"},t.key)})),Vt("td",{className:"vm-table-cell vm-table-cell_no-padding",children:Vt("div",{className:"vm-top-queries-panels__table-actions",children:[e.url&&Vt(Si,{title:"Execute query",children:Vt(nt,{to:e.url,target:"_blank",rel:"noreferrer","aria-disabled":!0,children:Vt(yi,{variant:"text",size:"small",startIcon:Vt(or,{}),ariaLabel:"execute query"})})}),Vt(Si,{title:"Copy query",children:Vt(yi,{variant:"text",size:"small",startIcon:Vt(gr,{}),onClick:m(e),ariaLabel:"copy query"})})]})})]},t)}))})]})},Qd=["table","JSON"].map((function(e,t){return{value:String(t),label:e,icon:Vt(0===t?lr:cr,{})}})),Gd=function(e){var t=e.rows,n=e.title,i=e.columns,a=e.defaultOrderBy,o=ui().isMobile,u=v((0,r.useState)(0),2),l=u[0],c=u[1];return Vt("div",{className:Pr()({"vm-top-queries-panel":!0,"vm-block":!0,"vm-block_mobile":o}),children:[Vt("div",{className:Pr()({"vm-top-queries-panel-header":!0,"vm-section-header":!0,"vm-top-queries-panel-header_mobile":o}),children:[Vt("h5",{className:Pr()({"vm-section-header__title":!0,"vm-section-header__title_mobile":o}),children:n}),Vt("div",{className:"vm-section-header__tabs",children:Vt(Vr,{activeItem:String(l),items:Qd,onChange:function(e){c(+e)}})})]}),Vt("div",{className:Pr()({"vm-top-queries-panel__table":!0,"vm-top-queries-panel__table_mobile":o}),children:[0===l&&Vt(Zd,{rows:t,columns:i,defaultOrderBy:a}),1===l&&Vt(Zf,{data:t})]})]})},Kd=function(){var e=ui().isMobile,t=v(Nd(10,"topN"),2),n=t[0],i=t[1],o=v(Nd("10m","maxLifetime"),2),u=o[0],l=o[1],c=Wd({topN:n,maxLifetime:u}),s=c.data,f=c.error,d=c.loading,h=c.fetch,m=(0,r.useMemo)((function(){var e=u.trim().split(" ").reduce((function(e,t){var n=sn(t);return n?st(st({},e),n):st({},e)}),{});return!!a().duration(e).asMilliseconds()}),[u]),p=(0,r.useMemo)((function(){return!!n&&n<1}),[n]),g=(0,r.useMemo)((function(){return p?"Number must be bigger than zero":""}),[p]),y=(0,r.useMemo)((function(){return m?"":"Invalid duration value"}),[m]),_=function(e){if(!s)return e;var t=s[e];return"number"===typeof t?Lc(t,t,t):t||e},b=function(e){"Enter"===e.key&&h()};return(0,r.useEffect)((function(){s&&(n||i(+s.topN),u||l(s.maxLifetime))}),[s]),(0,r.useEffect)((function(){return h(),window.addEventListener("popstate",h),function(){window.removeEventListener("popstate",h)}}),[]),Vt("div",{className:Pr()({"vm-top-queries":!0,"vm-top-queries_mobile":e}),children:[d&&Vt(Jf,{containerStyles:{height:"500px"}}),Vt("div",{className:Pr()({"vm-top-queries-controls":!0,"vm-block":!0,"vm-block_mobile":e}),children:[Vt("div",{className:"vm-top-queries-controls-fields",children:[Vt("div",{className:"vm-top-queries-controls-fields__item",children:Vt(Gi,{label:"Max lifetime",value:u,error:y,helperText:"For example ".concat("30ms, 15s, 3d4h, 1y2w"),onChange:function(e){l(e)},onKeyDown:b})}),Vt("div",{className:"vm-top-queries-controls-fields__item",children:Vt(Gi,{label:"Number of returned queries",type:"number",value:n||"",error:g,onChange:function(e){i(+e)},onKeyDown:b})})]}),Vt("div",{className:Pr()({"vm-top-queries-controls-bottom":!0,"vm-top-queries-controls-bottom_mobile":e}),children:[Vt("div",{className:"vm-top-queries-controls-bottom__info",children:["VictoriaMetrics tracks the last\xa0",Vt(Si,{title:"search.queryStats.lastQueriesCount",children:Vt("b",{children:_("search.queryStats.lastQueriesCount")})}),"\xa0queries with durations at least\xa0",Vt(Si,{title:"search.queryStats.minQueryDuration",children:Vt("b",{children:_("search.queryStats.minQueryDuration")})})]}),Vt("div",{className:"vm-top-queries-controls-bottom__button",children:Vt(yi,{startIcon:Vt(ar,{}),onClick:h,children:"Execute"})})]})]}),f&&Vt(ci,{variant:"error",children:f}),s&&Vt(Ht.HY,{children:Vt("div",{className:"vm-top-queries-panels",children:[Vt(Gd,{rows:s.topByCount,title:"Most frequently executed queries",columns:[{key:"query"},{key:"timeRange",sortBy:"timeRangeSeconds",title:"query time interval"},{key:"count"}]}),Vt(Gd,{rows:s.topByAvgDuration,title:"Most heavy queries",columns:[{key:"query"},{key:"avgDurationSeconds",title:"avg duration, sec"},{key:"timeRange",sortBy:"timeRangeSeconds",title:"query time interval"},{key:"count"}],defaultOrderBy:"avgDurationSeconds"}),Vt(Gd,{rows:s.topBySumDuration,title:"Queries with most summary time to execute",columns:[{key:"query"},{key:"sumDurationSeconds",title:"sum duration, sec"},{key:"timeRange",sortBy:"timeRangeSeconds",title:"query time interval"},{key:"count"}],defaultOrderBy:"sumDurationSeconds"})]})})]})},Jd={"color-primary":"#589DF6","color-secondary":"#316eca","color-error":"#e5534b","color-warning":"#c69026","color-info":"#539bf5","color-success":"#57ab5a","color-background-body":"#22272e","color-background-block":"#2d333b","color-background-tooltip":"rgba(22, 22, 22, 0.8)","color-text":"#cdd9e5","color-text-secondary":"#768390","color-text-disabled":"#636e7b","box-shadow":"rgba(0, 0, 0, 0.16) 1px 2px 6px","box-shadow-popper":"rgba(0, 0, 0, 0.2) 0px 2px 8px 0px","border-divider":"1px solid rgba(99, 110, 123, 0.5)","color-hover-black":"rgba(0, 0, 0, 0.12)"},Xd={"color-primary":"#3F51B5","color-secondary":"#E91E63","color-error":"#FD080E","color-warning":"#FF8308","color-info":"#03A9F4","color-success":"#4CAF50","color-background-body":"#FEFEFF","color-background-block":"#FFFFFF","color-background-tooltip":"rgba(80,80,80,0.9)","color-text":"#110f0f","color-text-secondary":"#706F6F","color-text-disabled":"#A09F9F","box-shadow":"rgba(0, 0, 0, 0.08) 1px 2px 6px","box-shadow-popper":"rgba(0, 0, 0, 0.1) 0px 2px 8px 0px","border-divider":"1px solid rgba(0, 0, 0, 0.15)","color-hover-black":"rgba(0, 0, 0, 0.06)"},eh=function(){var e=v((0,r.useState)(Rt()),2),t=e[0],n=e[1],i=function(e){n(e.matches)};return(0,r.useEffect)((function(){var e=window.matchMedia("(prefers-color-scheme: dark)");return e.addEventListener("change",i),function(){return e.removeEventListener("change",i)}}),[]),t},th=["primary","secondary","error","warning","info","success"],nh=function(e){var t,n=e.onLoaded,i=gt(),a=vt().palette,o=void 0===a?{}:a,u=Ut().theme,l=eh(),c=qt(),s=$r(),f=v((0,r.useState)((lt(t={},Lt.dark,Jd),lt(t,Lt.light,Xd),lt(t,Lt.system,Rt()?Jd:Xd),t)),2),d=f[0],h=f[1],m=function(){var e=window,t=e.innerWidth,n=e.innerHeight,r=document.documentElement,i=r.clientWidth,a=r.clientHeight;It("scrollbar-width","".concat(t-i,"px")),It("scrollbar-height","".concat(n-a,"px")),It("vh","".concat(.01*n,"px"))},p=function(){th.forEach((function(e,t){var r=function(e){var t=e.replace("#","").trim();if(3===t.length&&(t=t[0]+t[0]+t[1]+t[1]+t[2]+t[2]),6!==t.length)throw new Error("Invalid HEX color.");return(299*parseInt(t.slice(0,2),16)+587*parseInt(t.slice(2,4),16)+114*parseInt(t.slice(4,6),16))/1e3>=128?"#000000":"#FFFFFF"}(Pt("color-".concat(e)));It("".concat(e,"-text"),r),t===th.length-1&&(c({type:"SET_DARK_THEME"}),n(!0))}))},g=function(){var e=Ft("THEME")||Lt.system,t=d[e];Object.entries(t).forEach((function(e){var t=v(e,2),n=t[0],r=t[1];It(n,r)})),p(),i&&(th.forEach((function(e){var t=o[e];t&&It("color-".concat(e),t)})),p())};return(0,r.useEffect)((function(){m(),g()}),[d]),(0,r.useEffect)(m,[s]),(0,r.useEffect)((function(){var e=Rt()?Jd:Xd;d[Lt.system]!==e?h((function(t){return st(st({},t),{},lt({},Lt.system,e))})):g()}),[u,l]),(0,r.useEffect)((function(){i&&c({type:"SET_THEME",payload:Lt.light})}),[]),null},rh=function(){var e=v((0,r.useState)([]),2),t=e[0],n=e[1],i=v((0,r.useState)(!1),2),a=i[0],o=i[1],u=(0,r.useRef)(document.body),l=function(e){e.preventDefault(),e.stopPropagation(),"dragenter"===e.type||"dragover"===e.type?o(!0):"dragleave"===e.type&&o(!1)};return Hr("dragenter",l,u),Hr("dragleave",l,u),Hr("dragover",l,u),Hr("drop",(function(e){var t;e.preventDefault(),e.stopPropagation(),o(!1),null!==e&&void 0!==e&&null!==(t=e.dataTransfer)&&void 0!==t&&t.files&&e.dataTransfer.files[0]&&function(e){var t=Array.from(e||[]);n(t)}(e.dataTransfer.files)}),u),Hr("paste",(function(e){var t,r=null===(t=e.clipboardData)||void 0===t?void 0:t.items;if(r){var i=Array.from(r).filter((function(e){return"application/json"===e.type})).map((function(e){return e.getAsFile()})).filter((function(e){return null!==e}));n(i)}}),u),{files:t,dragging:a}},ih=function(e){var t=e.onOpenModal,n=e.onChange;return Vt("div",{className:"vm-trace-page-controls",children:[Vt(yi,{variant:"outlined",onClick:t,children:"Paste JSON"}),Vt(Si,{title:"The file must contain tracing information in JSON format",children:Vt(yi,{children:["Upload Files",Vt("input",{id:"json",type:"file",accept:"application/json",multiple:!0,title:" ",onChange:n})]})})]})},ah=function(){var e=v((0,r.useState)([]),2),t=e[0],n=e[1],i=v((0,r.useState)([]),2),a=i[0],o=i[1],u=(0,r.useMemo)((function(){return!!t.length}),[t]),l=_i(!1),c=l.value,s=l.setTrue,f=l.setFalse,d=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";o((function(n){return[{filename:t,text:": ".concat(e.message)}].concat(_(n))}))},h=function(e,t){try{var r=JSON.parse(e),i=r.trace||r;if(!i.duration_msec)return void d(new Error(Ot.traceNotFound),t);var a=new qf(i,t);n((function(e){return[a].concat(_(e))}))}catch(o){o instanceof Error&&d(o,t)}},m=function(e){e.map((function(e){var t=new FileReader,n=(null===e||void 0===e?void 0:e.name)||"";t.onload=function(e){var t,r=String(null===(t=e.target)||void 0===t?void 0:t.result);h(r,n)},t.readAsText(e)}))},p=function(e){o([]);var t=Array.from(e.target.files||[]);m(t),e.target.value=""},g=function(e){return function(){!function(e){o((function(t){return t.filter((function(t,n){return n!==e}))}))}(e)}},y=rh(),b=y.files,w=y.dragging;return(0,r.useEffect)((function(){m(b)}),[b]),Vt("div",{className:"vm-trace-page",children:[Vt("div",{className:"vm-trace-page-header",children:[Vt("div",{className:"vm-trace-page-header-errors",children:a.map((function(e,t){return Vt("div",{className:"vm-trace-page-header-errors-item",children:[Vt(ci,{variant:"error",children:[Vt("b",{className:"vm-trace-page-header-errors-item__filename",children:e.filename}),Vt("span",{children:e.text})]}),Vt(yi,{className:"vm-trace-page-header-errors-item__close",startIcon:Vt(qn,{}),variant:"text",color:"error",onClick:g(t)})]},"".concat(e,"_").concat(t))}))}),Vt("div",{children:u&&Vt(ih,{onOpenModal:s,onChange:p})})]}),u&&Vt("div",{children:Vt(nd,{jsonEditor:!0,traces:t,onDeleteClick:function(e){var r=t.filter((function(t){return t.idValue!==e.idValue}));n(_(r))}})}),!u&&Vt("div",{className:"vm-trace-page-preview",children:[Vt("p",{className:"vm-trace-page-preview__text",children:["Please, upload file with JSON response content.","\n","The file must contain tracing information in JSON format.","\n","In order to use tracing please refer to the doc:\xa0",Vt("a",{className:"vm-link vm-link_colored",href:"https://docs.victoriametrics.com/#query-tracing",target:"_blank",rel:"help noreferrer",children:"https://docs.victoriametrics.com/#query-tracing"}),"\n","Tracing graph will be displayed after file upload.","\n","Attach files by dragging & dropping, selecting or pasting them."]}),Vt(ih,{onOpenModal:s,onChange:p})]}),c&&Vt(Ci,{title:"Paste JSON",onClose:f,children:Vt(td,{editable:!0,displayTitle:!0,defaultTile:"JSON ".concat(t.length+1),onClose:f,onUpload:h})}),w&&Vt("div",{className:"vm-trace-page__dropzone"})]})},oh=function(e){var t=Ut().serverUrl,n=On().period,i=v((0,r.useState)([]),2),a=i[0],o=i[1],u=v((0,r.useState)(!1),2),l=u[0],c=u[1],s=v((0,r.useState)(),2),f=s[0],d=s[1],h=(0,r.useMemo)((function(){return function(e,t,n){var r="{job=".concat(JSON.stringify(n),"}");return"".concat(e,"/api/v1/label/instance/values?match[]=").concat(encodeURIComponent(r),"&start=").concat(t.start,"&end=").concat(t.end)}(t,n,e)}),[t,n,e]);return(0,r.useEffect)((function(){if(e){var t=function(){var e=$i(ji().mark((function e(){var t,n,r;return ji().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return c(!0),e.prev=1,e.next=4,fetch(h);case 4:return t=e.sent,e.next=7,t.json();case 7:n=e.sent,r=n.data||[],o(r.sort((function(e,t){return e.localeCompare(t)}))),t.ok?d(void 0):d("".concat(n.errorType,"\r\n").concat(null===n||void 0===n?void 0:n.error)),e.next=16;break;case 13:e.prev=13,e.t0=e.catch(1),e.t0 instanceof Error&&d("".concat(e.t0.name,": ").concat(e.t0.message));case 16:c(!1);case 17:case"end":return e.stop()}}),e,null,[[1,13]])})));return function(){return e.apply(this,arguments)}}();t().catch(console.error)}}),[h]),{instances:a,isLoading:l,error:f}},uh=function(e,t){var n=Ut().serverUrl,i=On().period,a=v((0,r.useState)([]),2),o=a[0],u=a[1],l=v((0,r.useState)(!1),2),c=l[0],s=l[1],f=v((0,r.useState)(),2),d=f[0],h=f[1],m=(0,r.useMemo)((function(){return function(e,t,n,r){var i=Object.entries({job:n,instance:r}).filter((function(e){return e[1]})).map((function(e){var t=v(e,2),n=t[0],r=t[1];return"".concat(n,"=").concat(JSON.stringify(r))})).join(","),a="{".concat(i,"}");return"".concat(e,"/api/v1/label/__name__/values?match[]=").concat(encodeURIComponent(a),"&start=").concat(t.start,"&end=").concat(t.end)}(n,i,e,t)}),[n,i,e,t]);return(0,r.useEffect)((function(){if(e){var t=function(){var e=$i(ji().mark((function e(){var t,n,r;return ji().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return s(!0),e.prev=1,e.next=4,fetch(m);case 4:return t=e.sent,e.next=7,t.json();case 7:n=e.sent,r=n.data||[],u(r.sort((function(e,t){return e.localeCompare(t)}))),t.ok?h(void 0):h("".concat(n.errorType,"\r\n").concat(null===n||void 0===n?void 0:n.error)),e.next=16;break;case 13:e.prev=13,e.t0=e.catch(1),e.t0 instanceof Error&&h("".concat(e.t0.name,": ").concat(e.t0.message));case 16:s(!1);case 17:case"end":return e.stop()}}),e,null,[[1,13]])})));return function(){return e.apply(this,arguments)}}();t().catch(console.error)}}),[m]),{names:o,isLoading:c,error:d}},lh=function(e){var t=e.name,n=e.job,i=e.instance,a=e.rateEnabled,o=e.isBucket,u=e.height,l=ui().isMobile,c=ri(),s=c.customStep,f=c.yaxis,d=On().period,h=ii(),m=Ln(),p=dn(d.end-d.start),g=fn(s),y=vn(10*g*1e3),_=v((0,r.useState)(!1),2),b=_[0],w=_[1],D=b&&s===p?y:s,k=_i(!1),x=k.value,C=k.setTrue,S=(0,r.useMemo)((function(){var e=Object.entries({job:n,instance:i}).filter((function(e){return e[1]})).map((function(e){var t=v(e,2),n=t[0],r=t[1];return"".concat(n,"=").concat(JSON.stringify(r))}));e.push("__name__=".concat(JSON.stringify(t))),"node_cpu_seconds_total"==t&&e.push('mode!="idle"');var r="{".concat(e.join(","),"}");if(o)return"sum(rate(".concat(r,")) by (vmrange, le)");var u=a?"rollup_rate(".concat(r,")"):"rollup(".concat(r,")");return"\nwith (q = ".concat(u,') (\n alias(min(label_match(q, "rollup", "min")), "min"),\n alias(max(label_match(q, "rollup", "max")), "max"),\n alias(avg(label_match(q, "rollup", "avg")), "avg"),\n)')}),[t,n,i,a,o]),E=Wf({predefinedQuery:[S],visible:!0,customStep:D,showAllSeries:x}),A=E.isLoading,N=E.graphData,M=E.error,F=E.warning,T=E.isHistogram;return(0,r.useEffect)((function(){w(T)}),[T]),Vt("div",{className:Pr()({"vm-explore-metrics-graph":!0,"vm-explore-metrics-graph_mobile":l}),children:[A&&Vt(Jf,{}),M&&Vt(ci,{variant:"error",children:M}),F&&Vt(ci,{variant:"warning",children:Vt("div",{className:"vm-explore-metrics-graph__warning",children:[Vt("p",{children:F}),Vt(yi,{color:"warning",variant:"outlined",onClick:C,children:"Show all"})]})}),N&&d&&Vt(xs,{data:N,period:d,customStep:D,query:[S],yaxis:f,setYaxisLimits:function(e){h({type:"SET_YAXIS_LIMITS",payload:e})},setPeriod:function(e){var t=e.from,n=e.to;m({type:"SET_PERIOD",payload:{from:t,to:n}})},showLegend:!1,height:u,isHistogram:T})]})},ch=function(e){var t=e.name,n=e.index,r=e.length,i=e.isBucket,a=e.rateEnabled,o=e.onChangeRate,u=e.onRemoveItem,l=e.onChangeOrder,c=ui().isMobile,s=_i(!1),f=s.value,d=s.setTrue,h=s.setFalse,m=function(){u(t)},p=function(){l(t,n,n+1)},v=function(){l(t,n,n-1)};return Vt("div",c?{className:"vm-explore-metrics-item-header vm-explore-metrics-item-header_mobile",children:[Vt("div",{className:"vm-explore-metrics-item-header__name",children:t}),Vt(yi,{variant:"text",size:"small",startIcon:Vt(xr,{}),onClick:d,ariaLabel:"open panel settings"}),f&&Vt(Ci,{title:t,onClose:h,children:Vt("div",{className:"vm-explore-metrics-item-header-modal",children:[Vt("div",{className:"vm-explore-metrics-item-header-modal-order",children:[Vt(yi,{startIcon:Vt(dr,{}),variant:"outlined",onClick:v,disabled:0===n,ariaLabel:"move graph up"}),Vt("p",{children:["position:",Vt("span",{className:"vm-explore-metrics-item-header-modal-order__index",children:["#",n+1]})]}),Vt(yi,{endIcon:Vt(fr,{}),variant:"outlined",onClick:p,disabled:n===r-1,ariaLabel:"move graph down"})]}),!i&&Vt("div",{className:"vm-explore-metrics-item-header-modal__rate",children:[Vt(Ff,{label:Vt("span",{children:["enable ",Vt("code",{children:"rate()"})]}),value:a,onChange:o,fullWidth:!0}),Vt("p",{children:"calculates the average per-second speed of metrics change"})]}),Vt(yi,{startIcon:Vt(qn,{}),color:"error",variant:"outlined",onClick:m,fullWidth:!0,children:"Remove graph"})]})})]}:{className:"vm-explore-metrics-item-header",children:[Vt("div",{className:"vm-explore-metrics-item-header-order",children:[Vt(Si,{title:"move graph up",children:Vt(yi,{className:"vm-explore-metrics-item-header-order__up",startIcon:Vt(Xn,{}),variant:"text",color:"gray",size:"small",onClick:v,ariaLabel:"move graph up"})}),Vt("div",{className:"vm-explore-metrics-item-header__index",children:["#",n+1]}),Vt(Si,{title:"move graph down",children:Vt(yi,{className:"vm-explore-metrics-item-header-order__down",startIcon:Vt(Xn,{}),variant:"text",color:"gray",size:"small",onClick:p,ariaLabel:"move graph down"})})]}),Vt("div",{className:"vm-explore-metrics-item-header__name",children:t}),!i&&Vt("div",{className:"vm-explore-metrics-item-header__rate",children:Vt(Si,{title:"calculates the average per-second speed of metric's change",children:Vt(Ff,{label:Vt("span",{children:["enable ",Vt("code",{children:"rate()"})]}),value:a,onChange:o})})}),Vt("div",{className:"vm-explore-metrics-item-header__close",children:Vt(Si,{title:"close graph",children:Vt(yi,{startIcon:Vt(qn,{}),variant:"text",color:"gray",size:"small",onClick:m,ariaLabel:"close graph"})})})]})},sh=function(e){var t=e.name,n=e.job,i=e.instance,a=e.index,o=e.length,u=e.size,l=e.onRemoveItem,c=e.onChangeOrder,s=(0,r.useMemo)((function(){return/_sum?|_total?|_count?/.test(t)}),[t]),f=(0,r.useMemo)((function(){return/_bucket?/.test(t)}),[t]),d=v((0,r.useState)(s),2),h=d[0],m=d[1],p=$r(),g=(0,r.useMemo)(u.height,[u,p]);return(0,r.useEffect)((function(){m(s)}),[n]),Vt("div",{className:"vm-explore-metrics-item vm-block vm-block_empty-padding",children:[Vt(ch,{name:t,index:a,length:o,isBucket:f,rateEnabled:h,size:u.id,onChangeRate:m,onRemoveItem:l,onChangeOrder:c}),Vt(lh,{name:t,job:n,instance:i,rateEnabled:h,isBucket:f,height:g},"".concat(t,"_").concat(n,"_").concat(i,"_").concat(h))]})},fh=function(e){var t=e.values,n=e.onRemoveItem,r=ui().isMobile;return r?Vt("span",{className:"vm-select-input-content__counter",children:["selected ",t.length]}):Vt(Ht.HY,{children:t.map((function(e){return Vt("div",{className:"vm-select-input-content__selected",children:[Vt("span",{children:e}),Vt("div",{onClick:(t=e,function(e){n(t),e.stopPropagation()}),children:Vt(qn,{})})]},e);var t}))})},dh=function(e){var t=e.value,n=e.list,i=e.label,a=e.placeholder,o=e.noOptionsText,u=e.clearable,l=void 0!==u&&u,c=e.searchable,s=void 0!==c&&c,f=e.autofocus,d=e.onChange,h=Ut().isDarkTheme,m=ui().isMobile,p=v((0,r.useState)(""),2),g=p[0],y=p[1],_=(0,r.useRef)(null),b=v((0,r.useState)(!1),2),w=b[0],D=b[1],k=(0,r.useRef)(null),x=Array.isArray(t),C=Array.isArray(t)?t:void 0,S=m&&x&&!(null===C||void 0===C||!C.length),E=(0,r.useMemo)((function(){return w?g:Array.isArray(t)?"":t}),[t,g,w,x]),A=(0,r.useMemo)((function(){return w?g||"(.+)":""}),[g,w]),N=function(){k.current&&k.current.blur()},M=function(e){d(e),x||(D(!1),N()),x&&k.current&&k.current.focus()};return(0,r.useEffect)((function(){y(""),w&&k.current&&k.current.focus(),w||N()}),[w,k]),(0,r.useEffect)((function(){f&&k.current&&!m&&k.current.focus()}),[f,k]),Hr("keyup",(function(e){k.current!==e.target&&D(!1)})),Vt("div",{className:Pr()({"vm-select":!0,"vm-select_dark":h}),children:[Vt("div",{className:"vm-select-input",onClick:function(e){e.target instanceof HTMLInputElement||D((function(e){return!e}))},ref:_,children:[Vt("div",{className:"vm-select-input-content",children:[!(null===C||void 0===C||!C.length)&&Vt(fh,{values:C,onRemoveItem:M}),!S&&Vt("input",{value:E,type:"text",placeholder:a,onInput:function(e){y(e.target.value)},onFocus:function(){D(!0)},ref:k,readOnly:m||!s})]}),i&&Vt("span",{className:"vm-text-field__label",children:i}),l&&t&&Vt("div",{className:"vm-select-input__icon",onClick:function(e){return function(t){M(e),t.stopPropagation()}}(""),children:Vt(qn,{})}),Vt("div",{className:Pr()({"vm-select-input__icon":!0,"vm-select-input__icon_open":w}),children:Vt(er,{})})]}),Vt(Ss,{label:i,value:A,options:n.map((function(e){return{value:e}})),anchor:_,selected:C,minLength:1,fullWidth:!0,noOptionsText:o,onSelect:M,onOpenAutocomplete:D})]})},hh=Et.map((function(e){return e.id})),mh=function(e){var t=e.jobs,n=e.instances,i=e.names,a=e.job,o=e.instance,u=e.size,l=e.selectedMetrics,c=e.onChangeJob,s=e.onChangeInstance,f=e.onToggleMetric,d=e.onChangeSize,h=(0,r.useMemo)((function(){return a?"":"No instances. Please select job"}),[a]),m=(0,r.useMemo)((function(){return a?"":"No metric names. Please select job"}),[a]),p=ui().isMobile,v=_i("false"!==Ft("EXPLORE_METRICS_TIPS")),g=v.value,y=v.toggle,_=v.setFalse;return(0,r.useEffect)((function(){Mt("EXPLORE_METRICS_TIPS","".concat(g))}),[g]),Vt(Ht.HY,{children:[Vt("div",{className:Pr()({"vm-explore-metrics-header":!0,"vm-explore-metrics-header_mobile":p,"vm-block":!0,"vm-block_mobile":p}),children:[Vt("div",{className:"vm-explore-metrics-header__job",children:Vt(dh,{value:a,list:t,label:"Job",placeholder:"Please select job",onChange:c,autofocus:!a,searchable:!0})}),Vt("div",{className:"vm-explore-metrics-header__instance",children:Vt(dh,{value:o,list:n,label:"Instance",placeholder:"Please select instance",onChange:s,noOptionsText:h,clearable:!0,searchable:!0})}),Vt("div",{className:"vm-explore-metrics-header__size",children:[Vt(dh,{label:"Size graphs",value:u,list:hh,onChange:d}),Vt(Si,{title:"".concat(g?"Hide":"Show"," tip"),children:Vt(yi,{variant:"text",color:g?"warning":"gray",startIcon:Vt(Sr,{}),onClick:y,ariaLabel:"visibility tips"})})]}),Vt("div",{className:"vm-explore-metrics-header-metrics",children:Vt(dh,{label:"Metrics",value:l,list:i,placeholder:"Search metric name",onChange:f,noOptionsText:m,clearable:!0,searchable:!0})})]}),g&&Vt(ci,{variant:"warning",children:Vt("div",{className:"vm-explore-metrics-header-description",children:[Vt("p",{children:["Please note: this page is solely designed for exploring Prometheus metrics. Prometheus metrics always contain ",Vt("code",{children:"job"})," and ",Vt("code",{children:"instance"})," labels (see ",Vt("a",{className:"vm-link vm-link_colored",href:"https://prometheus.io/docs/concepts/jobs_instances/",children:"these docs"}),"), and this page relies on them as filters. ",Vt("br",{}),"Please use this page for Prometheus metrics only, in accordance with their naming conventions."]}),Vt(yi,{variant:"text",size:"small",startIcon:Vt(qn,{}),onClick:_,ariaLabel:"close tips"})]})})]})},ph=Nt("job",""),vh=Nt("instance",""),gh=Nt("metrics",""),yh=Nt("size",""),_h=Et.find((function(e){return yh?e.id===yh:e.isDefault}))||Et[0],bh=function(){var e=v((0,r.useState)(ph),2),t=e[0],n=e[1],i=v((0,r.useState)(vh),2),a=i[0],o=i[1],u=v((0,r.useState)(gh?gh.split("&"):[]),2),l=u[0],c=u[1],s=v((0,r.useState)(_h),2),f=s[0],d=s[1];!function(e){var t=e.job,n=e.instance,i=e.metrics,a=e.size,o=On(),u=o.duration,l=o.relativeTime,c=o.period.date,s=ri().customStep,f=ga().setSearchParamsFromKeys,d=function(){var e,r=od((lt(e={},"g0.range_input",u),lt(e,"g0.end_input",c),lt(e,"g0.step_input",s),lt(e,"g0.relative_time",l),lt(e,"size",a),lt(e,"job",t),lt(e,"instance",n),lt(e,"metrics",i),e));f(r)};(0,r.useEffect)(d,[u,l,c,s,t,n,i,a]),(0,r.useEffect)(d,[])}({job:t,instance:a,metrics:l.join("&"),size:f.id});var h=function(){var e=Ut().serverUrl,t=On().period,n=v((0,r.useState)([]),2),i=n[0],a=n[1],o=v((0,r.useState)(!1),2),u=o[0],l=o[1],c=v((0,r.useState)(),2),s=c[0],f=c[1],d=(0,r.useMemo)((function(){return function(e,t){return"".concat(e,"/api/v1/label/job/values?start=").concat(t.start,"&end=").concat(t.end)}(e,t)}),[e,t]);return(0,r.useEffect)((function(){var e=function(){var e=$i(ji().mark((function e(){var t,n,r;return ji().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return l(!0),e.prev=1,e.next=4,fetch(d);case 4:return t=e.sent,e.next=7,t.json();case 7:n=e.sent,r=n.data||[],a(r.sort((function(e,t){return e.localeCompare(t)}))),t.ok?f(void 0):f("".concat(n.errorType,"\r\n").concat(null===n||void 0===n?void 0:n.error)),e.next=16;break;case 13:e.prev=13,e.t0=e.catch(1),e.t0 instanceof Error&&f("".concat(e.t0.name,": ").concat(e.t0.message));case 16:l(!1);case 17:case"end":return e.stop()}}),e,null,[[1,13]])})));return function(){return e.apply(this,arguments)}}();e().catch(console.error)}),[d]),{jobs:i,isLoading:u,error:s}}(),m=h.jobs,p=h.isLoading,g=h.error,y=oh(t),b=y.instances,w=y.isLoading,D=y.error,k=uh(t,a),x=k.names,C=k.isLoading,S=k.error,E=(0,r.useMemo)((function(){return p||w||C}),[p,w,C]),A=(0,r.useMemo)((function(){return g||D||S}),[g,D,S]),N=function(e){c(e?function(t){return t.includes(e)?t.filter((function(t){return t!==e})):[].concat(_(t),[e])}:[])},M=function(e,t,n){var r=n>l.length-1;n<0||r||c((function(e){var r=_(e),i=v(r.splice(t,1),1)[0];return r.splice(n,0,i),r}))};return(0,r.useEffect)((function(){a&&b.length&&!b.includes(a)&&o("")}),[b,a]),Vt("div",{className:"vm-explore-metrics",children:[Vt(mh,{jobs:m,instances:b,names:x,job:t,size:f.id,instance:a,selectedMetrics:l,onChangeJob:n,onChangeSize:function(e){var t=Et.find((function(t){return t.id===e}));t&&d(t)},onChangeInstance:o,onToggleMetric:N}),E&&Vt(Jf,{}),A&&Vt(ci,{variant:"error",children:A}),!t&&Vt(ci,{variant:"info",children:"Please select job to see list of metric names."}),t&&!l.length&&Vt(ci,{variant:"info",children:"Please select metric names to see the graphs."}),Vt("div",{className:"vm-explore-metrics-body",children:l.map((function(e,n){return Vt(sh,{name:e,job:t,instance:a,index:n,length:l.length,size:f,onRemoveItem:N,onChangeOrder:M},e)}))})]})},wh=function(){var t=gs();return Vt("div",{className:"vm-preview-icons",children:Object.entries(e).map((function(e){var n,r=v(e,2),i=r[0],a=r[1];return Vt("div",{className:"vm-preview-icons-item",onClick:(n=i,$i(ji().mark((function e(){return ji().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t("<".concat(n,"/>"),"<".concat(n,"/> has been copied"));case 2:case"end":return e.stop()}}),e)})))),children:[Vt("div",{className:"vm-preview-icons-item__svg",children:a()}),Vt("div",{className:"vm-preview-icons-item__name",children:"<".concat(i,"/>")})]},i)}))})},Dh=function(e){return e.copy="Copy",e.copied="Copied",e}(Dh||{}),kh=function(e){var t=e.code,n=v((0,r.useState)(Dh.copy),2),i=n[0],a=n[1];return(0,r.useEffect)((function(){var e=null;return i===Dh.copied&&(e=setTimeout((function(){return a(Dh.copy)}),1e3)),function(){e&&clearTimeout(e)}}),[i]),Vt("code",{className:"vm-code-example",children:[t,Vt("div",{className:"vm-code-example__copy",children:Vt(Si,{title:i,children:Vt(yi,{size:"small",variant:"text",onClick:function(){navigator.clipboard.writeText(t),a(Dh.copied)},startIcon:Vt(gr,{}),ariaLabel:"close"})})})]})},xh=function(){return Vt("a",{className:"vm-link vm-link_colored",href:"https://docs.victoriametrics.com/MetricsQL.html",target:"_blank",rel:"help noreferrer",children:"MetricsQL"})},Ch=function(){return Vt("a",{className:"vm-link vm-link_colored",href:"https://grafana.com/grafana/dashboards/1860-node-exporter-full/",target:"_blank",rel:"help noreferrer",children:"Node Exporter Full"})},Sh=function(){return Vt("section",{className:"vm-with-template-tutorial",children:[Vt("h2",{className:"vm-with-template-tutorial__title",children:["Tutorial for WITH expressions in ",Vt(xh,{})]}),Vt("div",{className:"vm-with-template-tutorial-section",children:[Vt("p",{className:"vm-with-template-tutorial-section__text",children:["Let's look at the following real query from ",Vt(Ch,{})," dashboard:"]}),Vt(kh,{code:'(\n (\n node_memory_MemTotal_bytes{instance=~"$node:$port", job=~"$job"}\n -\n node_memory_MemFree_bytes{instance=~"$node:$port", job=~"$job"}\n )\n /\n node_memory_MemTotal_bytes{instance=~"$node:$port", job=~"$job"}\n) * 100'}),Vt("p",{className:"vm-with-template-tutorial-section__text",children:"It is clear the query calculates the percentage of used memory for the given $node, $port and $job. Isn't it? :)"})]}),Vt("div",{className:"vm-with-template-tutorial-section",children:[Vt("p",{className:"vm-with-template-tutorial-section__text",children:"What's wrong with this query? Copy-pasted label filters for distinct timeseries which makes it easy to mistype these filters during modification. Let's simplify the query with WITH expressions:"}),Vt(kh,{code:'WITH (\n commonFilters = {instance=~"$node:$port",job=~"$job"}\n)\n(\n node_memory_MemTotal_bytes{commonFilters}\n -\n node_memory_MemFree_bytes{commonFilters}\n)\n /\nnode_memory_MemTotal_bytes{commonFilters} * 100'})]}),Vt("div",{className:"vm-with-template-tutorial-section",children:[Vt("p",{className:"vm-with-template-tutorial-section__text",children:["Now label filters are located in a single place instead of three distinct places. The query mentions node_memory_MemTotal_bytes metric twice and ","{commonFilters}"," three times. WITH expressions may improve this:"]}),Vt(kh,{code:'WITH (\n my_resource_utilization(free, limit, filters) = (limit{filters} - free{filters}) / limit{filters} * 100\n)\nmy_resource_utilization(\n node_memory_MemFree_bytes,\n node_memory_MemTotal_bytes,\n {instance=~"$node:$port",job=~"$job"},\n)'}),Vt("p",{className:"vm-with-template-tutorial-section__text",children:"Now the template function my_resource_utilization() may be used for monitoring arbitrary resources - memory, CPU, network, storage, you name it."})]}),Vt("div",{className:"vm-with-template-tutorial-section",children:[Vt("p",{className:"vm-with-template-tutorial-section__text",children:["Let's take another nice query from ",Vt(Ch,{})," dashboard:"]}),Vt(kh,{code:'(\n (\n (\n count(\n count(node_cpu_seconds_total{instance=~"$node:$port",job=~"$job"}) by (cpu)\n )\n )\n -\n avg(\n sum by (mode) (rate(node_cpu_seconds_total{mode=\'idle\',instance=~"$node:$port",job=~"$job"}[5m]))\n )\n )\n *\n 100\n)\n /\ncount(\n count(node_cpu_seconds_total{instance=~"$node:$port",job=~"$job"}) by (cpu)\n)'}),Vt("p",{className:"vm-with-template-tutorial-section__text",children:"Do you understand what does this mess do? Is it manageable? :) WITH expressions are happy to help in a few iterations."})]}),Vt("div",{className:"vm-with-template-tutorial-section",children:[Vt("p",{className:"vm-with-template-tutorial-section__text",children:"1. Extract common filters used in multiple places into a commonFilters variable:"}),Vt(kh,{code:'WITH (\n commonFilters = {instance=~"$node:$port",job=~"$job"}\n)\n(\n (\n (\n count(\n count(node_cpu_seconds_total{commonFilters}) by (cpu)\n )\n )\n -\n avg(\n sum by (mode) (rate(node_cpu_seconds_total{mode=\'idle\',commonFilters}[5m]))\n )\n )\n *\n 100\n)\n /\ncount(\n count(node_cpu_seconds_total{commonFilters}) by (cpu)\n)'})]}),Vt("div",{className:"vm-with-template-tutorial-section",children:[Vt("p",{className:"vm-with-template-tutorial-section__text",children:'2. Extract "count(count(...) by (cpu))" into cpuCount variable:'}),Vt(kh,{code:'WITH (\n commonFilters = {instance=~"$node:$port",job=~"$job"},\n cpuCount = count(count(node_cpu_seconds_total{commonFilters}) by (cpu))\n)\n(\n (\n cpuCount\n -\n avg(\n sum by (mode) (rate(node_cpu_seconds_total{mode=\'idle\',commonFilters}[5m]))\n )\n )\n *\n 100\n) / cpuCount'})]}),Vt("div",{className:"vm-with-template-tutorial-section",children:[Vt("p",{className:"vm-with-template-tutorial-section__text",children:"3. Extract rate(...) part into cpuIdle variable, since it is clear now that this part calculates the number of idle CPUs:"}),Vt(kh,{code:'WITH (\n commonFilters = {instance=~"$node:$port",job=~"$job"},\n cpuCount = count(count(node_cpu_seconds_total{commonFilters}) by (cpu)),\n cpuIdle = sum(rate(node_cpu_seconds_total{mode=\'idle\',commonFilters}[5m]))\n)\n((cpuCount - cpuIdle) * 100) / cpuCount'})]}),Vt("div",{className:"vm-with-template-tutorial-section",children:[Vt("p",{className:"vm-with-template-tutorial-section__text",children:["4. Put node_cpu_seconds_total","{commonFilters}"," into its own varialbe with the name cpuSeconds:"]}),Vt(kh,{code:'WITH (\n cpuSeconds = node_cpu_seconds_total{instance=~"$node:$port",job=~"$job"},\n cpuCount = count(count(cpuSeconds) by (cpu)),\n cpuIdle = sum(rate(cpuSeconds{mode=\'idle\'}[5m]))\n)\n((cpuCount - cpuIdle) * 100) / cpuCount'}),Vt("p",{className:"vm-with-template-tutorial-section__text",children:"Now the query became more clear comparing to the initial query."})]}),Vt("div",{className:"vm-with-template-tutorial-section",children:[Vt("p",{className:"vm-with-template-tutorial-section__text",children:"WITH expressions may be nested and may be put anywhere. Try expanding the following query:"}),Vt(kh,{code:"WITH (\n f(a, b) = WITH (\n f1(x) = b-x,\n f2(x) = x+x\n ) f1(a)*f2(b)\n) f(foo, with(x=bar) x)"})]})]})},Eh=function(e,t){return"".concat(e,"/expand-with-exprs?query=").concat(encodeURIComponent(t),"&format=json")},Ah=function(){var e=v(ot(),1)[0],t=function(){var e=Ut().serverUrl,t=v(ot(),2),n=t[0],i=t[1],a=v((0,r.useState)(""),2),o=a[0],u=a[1],l=v((0,r.useState)(!1),2),c=l[0],s=l[1],f=v((0,r.useState)(),2),d=f[0],h=f[1],m=function(){var t=$i(ji().mark((function t(r){var a,o,l;return ji().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n.set("expr",r),i(n),a=Eh(e,r),s(!0),t.prev=4,t.next=7,fetch(a);case 7:return o=t.sent,t.next=10,o.json();case 10:l=t.sent,u((null===l||void 0===l?void 0:l.expr)||""),h(String(l.error||"")),t.next=18;break;case 15:t.prev=15,t.t0=t.catch(4),t.t0 instanceof Error&&"AbortError"!==t.t0.name&&h("".concat(t.t0.name,": ").concat(t.t0.message));case 18:s(!1);case 19:case"end":return t.stop()}}),t,null,[[4,15]])})));return function(e){return t.apply(this,arguments)}}();return{data:o,error:d,loading:c,expand:m}}(),n=t.data,i=t.loading,a=t.error,o=t.expand,u=v((0,r.useState)(e.get("expr")||""),2),l=u[0],c=u[1],s=function(){o(l)};return(0,r.useEffect)((function(){l&&o(l)}),[]),Vt("section",{className:"vm-with-template",children:[i&&Vt(Jf,{}),Vt("div",{className:"vm-with-template-body vm-block",children:[Vt("div",{className:"vm-with-template-body__expr",children:Vt(Gi,{type:"textarea",label:"MetricsQL query with optional WITH expressions",value:l,error:a,autofocus:!0,onEnter:s,onChange:function(e){c(e)}})}),Vt("div",{className:"vm-with-template-body__result",children:Vt(Gi,{type:"textarea",label:"MetricsQL query after expanding WITH expressions and applying other optimizations",value:n,disabled:!0})}),Vt("div",{className:"vm-with-template-body-top",children:Vt(yi,{variant:"contained",onClick:s,startIcon:Vt(ar,{}),children:"Expand"})})]}),Vt("div",{className:"vm-block",children:Vt(Sh,{})})]})},Nh=function(e,t,n){var r=["format=json","relabel_configs=".concat(encodeURIComponent(t)),"metric=".concat(encodeURIComponent(n))];return"".concat(e,"/metric-relabel-debug?").concat(r.join("&"))},Mh='- if: \'{bar_label=~"b.*"}\'\n source_labels: [foo_label, bar_label]\n separator: "_"\n target_label: foobar\n- action: labeldrop\n regex: "foo_.*"\n- target_label: job\n replacement: "my-application-2"',Fh='{__name__="my_metric", bar_label="bar", foo_label="foo", job="my-application", instance="192.168.0.1"}',Th=function(){var e=v(ot(),2),t=e[0],n=e[1],i=function(){var e=Ut().serverUrl,t=v((0,r.useState)(null),2),n=t[0],i=t[1],a=v((0,r.useState)(!1),2),o=a[0],u=a[1],l=v((0,r.useState)(),2),c=l[0],s=l[1],f=function(){var t=$i(ji().mark((function t(n,r){var a,o,l;return ji().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=Nh(e,n,r),u(!0),t.prev=2,t.next=5,fetch(a);case 5:return o=t.sent,t.next=8,o.json();case 8:l=t.sent,i(l.error?null:l),s(String(l.error||"")),t.next=16;break;case 13:t.prev=13,t.t0=t.catch(2),t.t0 instanceof Error&&"AbortError"!==t.t0.name&&s("".concat(t.t0.name,": ").concat(t.t0.message));case 16:u(!1);case 17:case"end":return t.stop()}}),t,null,[[2,13]])})));return function(e,n){return t.apply(this,arguments)}}();return{data:n,error:c,loading:o,fetchData:f}}(),a=i.data,o=i.loading,u=i.error,l=i.fetchData,c=v(Nd("","config"),2),s=c[0],f=c[1],d=v(Nd("","labels"),2),h=d[0],m=d[1],p=(0,r.useCallback)((function(){l(s,h),t.set("config",s),t.set("labels",h),n(t)}),[s,h]);return(0,r.useEffect)((function(){var e=t.get("config")||"",n=t.get("labels")||"";(n||e)&&(l(e,n),f(e),m(n))}),[]),Vt("section",{className:"vm-relabeling",children:[o&&Vt(Jf,{}),Vt("div",{className:"vm-relabeling-header vm-block",children:[Vt("div",{className:"vm-relabeling-header-configs",children:Vt(Gi,{type:"textarea",label:"Relabel configs",value:s,autofocus:!0,onChange:function(e){f(e||"")},onEnter:p})}),Vt("div",{className:"vm-relabeling-header__labels",children:Vt(Gi,{type:"textarea",label:"Labels",value:h,onChange:function(e){m(e||"")},onEnter:p})}),Vt("div",{className:"vm-relabeling-header-bottom",children:[Vt("a",{className:"vm-link vm-link_with-icon",target:"_blank",href:"https://docs.victoriametrics.com/relabeling.html",rel:"help noreferrer",children:[Vt(Zn,{}),"Relabeling cookbook"]}),Vt("a",{className:"vm-link vm-link_with-icon",target:"_blank",href:"https://docs.victoriametrics.com/vmagent.html#relabeling",rel:"help noreferrer",children:[Vt(br,{}),"Documentation"]}),Vt(yi,{variant:"text",onClick:function(){var e=Mh,r=Fh;f(e),m(r),l(e,r),t.set("config",e),t.set("labels",r),n(t)},children:"Try example"}),Vt(yi,{variant:"contained",onClick:p,startIcon:Vt(ar,{}),children:"Submit"})]})]}),u&&Vt(ci,{variant:"error",children:u}),a&&Vt("div",{className:"vm-relabeling-steps vm-block",children:[a.originalLabels&&Vt("div",{className:"vm-relabeling-steps-item",children:Vt("div",{className:"vm-relabeling-steps-item__row",children:[Vt("span",{children:"Original labels:"}),Vt("code",{dangerouslySetInnerHTML:{__html:a.originalLabels}})]})}),a.steps.map((function(e,t){return Vt("div",{className:"vm-relabeling-steps-item",children:[Vt("div",{className:"vm-relabeling-steps-item__row",children:[Vt("span",{children:"Step:"}),t+1]}),Vt("div",{className:"vm-relabeling-steps-item__row",children:[Vt("span",{children:"Relabeling Rule:"}),Vt("code",{children:Vt("pre",{children:e.rule})})]}),Vt("div",{className:"vm-relabeling-steps-item__row",children:[Vt("span",{children:"Input Labels:"}),Vt("code",{children:Vt("pre",{dangerouslySetInnerHTML:{__html:e.inLabels}})})]}),Vt("div",{className:"vm-relabeling-steps-item__row",children:[Vt("span",{children:"Output labels:"}),Vt("code",{children:Vt("pre",{dangerouslySetInnerHTML:{__html:e.outLabels}})})]})]},t)})),a.resultingLabels&&Vt("div",{className:"vm-relabeling-steps-item",children:Vt("div",{className:"vm-relabeling-steps-item__row",children:[Vt("span",{children:"Resulting labels:"}),Vt("code",{dangerouslySetInnerHTML:{__html:a.resultingLabels}})]})})]})]})},Oh=function(e){var t=e.rows,n=e.columns,i=e.defaultOrderBy,a=e.copyToClipboard,o=e.paginationOffset,u=v((0,r.useState)(i),2),l=u[0],c=u[1],s=v((0,r.useState)("desc"),2),f=s[0],d=s[1],h=v((0,r.useState)(null),2),m=h[0],p=h[1],g=(0,r.useMemo)((function(){var e=o.startIndex,n=o.endIndex;return Pd(t,Ld(f,l)).slice(e,n)}),[t,l,f,o]),y=function(e,t){return $i(ji().mark((function n(){return ji().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(m!==t){n.next=2;break}return n.abrupt("return");case 2:return n.prev=2,n.next=5,navigator.clipboard.writeText(String(e));case 5:p(t),n.next=11;break;case 8:n.prev=8,n.t0=n.catch(2),console.error(n.t0);case 11:case"end":return n.stop()}}),n,null,[[2,8]])})))};return(0,r.useEffect)((function(){if(null!==m){var e=setTimeout((function(){return p(null)}),2e3);return function(){return clearTimeout(e)}}}),[m]),Vt("table",{className:"vm-table",children:[Vt("thead",{className:"vm-table-header",children:Vt("tr",{className:"vm-table__row vm-table__row_header",children:[n.map((function(e){return Vt("th",{className:"vm-table-cell vm-table-cell_header vm-table-cell_sort",onClick:(t=e.key,function(){d((function(e){return"asc"===e&&l===t?"desc":"asc"})),c(t)}),children:Vt("div",{className:"vm-table-cell__content",children:[Vt("div",{children:String(e.title||e.key)}),Vt("div",{className:Pr()({"vm-table__sort-icon":!0,"vm-table__sort-icon_active":l===e.key,"vm-table__sort-icon_desc":"desc"===f&&l===e.key}),children:Vt(er,{})})]})},String(e.key));var t})),a&&Vt("th",{className:"vm-table-cell vm-table-cell_header"})]})}),Vt("tbody",{className:"vm-table-body",children:g.map((function(e,t){return Vt("tr",{className:"vm-table__row",children:[n.map((function(t){return Vt("td",{className:Pr()(lt({"vm-table-cell":!0},"".concat(t.className),t.className)),children:e[t.key]||"-"},String(t.key))})),a&&Vt("td",{className:"vm-table-cell vm-table-cell_right",children:e[a]&&Vt("div",{className:"vm-table-cell__content",children:Vt(Si,{title:m===t?"Copied":"Copy row",children:Vt(yi,{variant:"text",color:m===t?"success":"gray",size:"small",startIcon:Vt(m===t?hr:gr,{}),onClick:y(e[a],t),ariaLabel:"copy row"})})})})]},t)}))})]})},Lh=function(){var e=ui().isMobile,t=On().timezone,n=function(){var e=Ut().serverUrl,t=v((0,r.useState)([]),2),n=t[0],i=t[1],o=v((0,r.useState)(a()().format(Gt)),2),u=o[0],l=o[1],c=v((0,r.useState)(!1),2),s=c[0],f=c[1],d=v((0,r.useState)(),2),h=d[0],m=d[1],p=(0,r.useMemo)((function(){return"".concat(e,"/api/v1/status/active_queries")}),[e]),g=function(){var e=$i(ji().mark((function e(){var t,n;return ji().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return f(!0),e.prev=1,e.next=4,fetch(p);case 4:return t=e.sent,e.next=7,t.json();case 7:n=e.sent,i(n.data),l(a()().format("HH:mm:ss:SSS")),t.ok?m(void 0):m("".concat(n.errorType,"\r\n").concat(null===n||void 0===n?void 0:n.error)),e.next=16;break;case 13:e.prev=13,e.t0=e.catch(1),e.t0 instanceof Error&&m("".concat(e.t0.name,": ").concat(e.t0.message));case 16:f(!1);case 17:case"end":return e.stop()}}),e,null,[[1,13]])})));return function(){return e.apply(this,arguments)}}();return(0,r.useEffect)((function(){g().catch(console.error)}),[p]),{data:n,lastUpdated:u,isLoading:s,error:h,fetchData:g}}(),i=n.data,o=n.lastUpdated,u=n.isLoading,l=n.error,c=n.fetchData,s=(0,r.useMemo)((function(){return i.map((function(e){var t=a()(e.start).tz().format(Qt),n=a()(e.end).tz().format(Qt);return{duration:e.duration,remote_addr:e.remote_addr,query:e.query,args:"".concat(t," to ").concat(n,", step=").concat(cn(e.step)),data:JSON.stringify(e,null,2)}}))}),[i,t]),f=(0,r.useMemo)((function(){if(null===s||void 0===s||!s.length)return[];var e=Object.keys(s[0]),t={remote_addr:"client address"},n=["data"];return e.filter((function(e){return!n.includes(e)})).map((function(e){return{key:e,title:t[e]||e}}))}),[s]),d=function(){var e=$i(ji().mark((function e(){return ji().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:c().catch(console.error);case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return Vt("div",{className:"vm-active-queries",children:[u&&Vt(Jf,{}),Vt("div",{className:"vm-active-queries-header",children:[!s.length&&!l&&Vt(ci,{variant:"info",children:"There are currently no active queries running"}),l&&Vt(ci,{variant:"error",children:l}),Vt("div",{className:"vm-active-queries-header-controls",children:[Vt(yi,{variant:"contained",onClick:d,startIcon:Vt(Jn,{}),children:"Update"}),Vt("div",{className:"vm-active-queries-header__update-msg",children:["Last updated: ",o]})]})]}),!!s.length&&Vt("div",{className:Pr()({"vm-block":!0,"vm-block_mobile":e}),children:Vt(Oh,{rows:s,columns:f,defaultOrderBy:"duration",copyToClipboard:"data",paginationOffset:{startIndex:0,endIndex:1/0}})})]})},Ph=function(){var e=v((0,r.useState)(!1),2),t=e[0],n=e[1];return Vt(Ht.HY,{children:Vt(Xe,{children:Vt(pi,{children:Vt(Ht.HY,{children:[Vt(nh,{onLoaded:n}),t&&Vt(Ye,{children:Vt($e,{path:"/",element:Vt(Oa,{}),children:[Vt($e,{path:pt.home,element:Vt(pd,{})}),Vt($e,{path:pt.metrics,element:Vt(bh,{})}),Vt($e,{path:pt.cardinality,element:Vt(Ud,{})}),Vt($e,{path:pt.topQueries,element:Vt(Kd,{})}),Vt($e,{path:pt.trace,element:Vt(ah,{})}),Vt($e,{path:pt.dashboards,element:Vt(yd,{})}),Vt($e,{path:pt.withTemplate,element:Vt(Ah,{})}),Vt($e,{path:pt.relabel,element:Vt(Th,{})}),Vt($e,{path:pt.activeQueries,element:Vt(Lh,{})}),Vt($e,{path:pt.icons,element:Vt(wh,{})})]})})]})})})})},Ih=function(e){e&&n.e(522).then(n.bind(n,522)).then((function(t){var n=t.getCLS,r=t.getFID,i=t.getFCP,a=t.getLCP,o=t.getTTFB;n(e),r(e),i(e),a(e),o(e)}))},Rh=document.getElementById("root");Rh&&(0,r.render)(Vt(Ph,{}),Rh),Ih()}()}(); \ No newline at end of file diff --git a/app/vmselect/vmui/static/js/main.dbf8fb4f.js.LICENSE.txt b/app/vmselect/vmui/static/js/main.70434a4f.js.LICENSE.txt similarity index 100% rename from app/vmselect/vmui/static/js/main.dbf8fb4f.js.LICENSE.txt rename to app/vmselect/vmui/static/js/main.70434a4f.js.LICENSE.txt diff --git a/app/vmselect/vmui/static/js/main.dbf8fb4f.js b/app/vmselect/vmui/static/js/main.dbf8fb4f.js deleted file mode 100644 index 34cf1a4eb..000000000 --- a/app/vmselect/vmui/static/js/main.dbf8fb4f.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see main.dbf8fb4f.js.LICENSE.txt */ -!function(){var e={680:function(e,t,n){"use strict";var r=n(476),i=n(962),a=i(r("String.prototype.indexOf"));e.exports=function(e,t){var n=r(e,!!t);return"function"===typeof n&&a(e,".prototype.")>-1?i(n):n}},962:function(e,t,n){"use strict";var r=n(199),i=n(476),a=i("%Function.prototype.apply%"),o=i("%Function.prototype.call%"),u=i("%Reflect.apply%",!0)||r.call(o,a),l=i("%Object.getOwnPropertyDescriptor%",!0),c=i("%Object.defineProperty%",!0),s=i("%Math.max%");if(c)try{c({},"a",{value:1})}catch(d){c=null}e.exports=function(e){var t=u(r,o,arguments);l&&c&&(l(t,"length").configurable&&c(t,"length",{value:1+s(0,e.length-(arguments.length-1))}));return t};var f=function(){return u(r,a,arguments)};c?c(e.exports,"apply",{value:f}):e.exports.apply=f},123:function(e,t){var n;!function(){"use strict";var r={}.hasOwnProperty;function i(){for(var e=[],t=0;t=t?e:""+Array(t+1-r.length).join(n)+e},y={s:g,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),r=Math.floor(n/60),i=n%60;return(t<=0?"+":"-")+g(r,2,"0")+":"+g(i,2,"0")},m:function e(t,n){if(t.date()1)return e(o[0])}else{var u=t.name;b[u]=t,i=u}return!r&&i&&(_=i),i||!r&&_},k=function(e,t){if(w(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new C(n)},x=y;x.l=D,x.i=w,x.w=function(e,t){return k(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var C=function(){function v(e){this.$L=D(e.locale,null,!0),this.parse(e)}var g=v.prototype;return g.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(x.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var r=t.match(m);if(r){var i=r[2]-1||0,a=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,a)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,a)}}return new Date(t)}(e),this.$x=e.x||{},this.init()},g.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},g.$utils=function(){return x},g.isValid=function(){return!(this.$d.toString()===h)},g.isSame=function(e,t){var n=k(e);return this.startOf(t)<=n&&n<=this.endOf(t)},g.isAfter=function(e,t){return k(e)=0&&(a[f]=parseInt(s,10))}var d=a[3],h=24===d?0:d,m=a[0]+"-"+a[1]+"-"+a[2]+" "+h+":"+a[4]+":"+a[5]+":000",p=+t;return(i.utc(m).valueOf()-(p-=p%1e3))/6e4},l=r.prototype;l.tz=function(e,t){void 0===e&&(e=a);var n=this.utcOffset(),r=this.toDate(),o=r.toLocaleString("en-US",{timeZone:e}),u=Math.round((r-new Date(o))/1e3/60),l=i(o).$set("millisecond",this.$ms).utcOffset(15*-Math.round(r.getTimezoneOffset()/15)-u,!0);if(t){var c=l.utcOffset();l=l.add(n-c,"minute")}return l.$x.$timezone=e,l},l.offsetName=function(e){var t=this.$x.$timezone||i.tz.guess(),n=o(this.valueOf(),t,{timeZoneName:e}).find((function(e){return"timezonename"===e.type.toLowerCase()}));return n&&n.value};var c=l.startOf;l.startOf=function(e,t){if(!this.$x||!this.$x.$timezone)return c.call(this,e,t);var n=i(this.format("YYYY-MM-DD HH:mm:ss:SSS"));return c.call(n,e,t).tz(this.$x.$timezone,!0)},i.tz=function(e,t,n){var r=n&&t,o=n||t||a,l=u(+i(),o);if("string"!=typeof e)return i(e).tz(o);var c=function(e,t,n){var r=e-60*t*1e3,i=u(r,n);if(t===i)return[r,t];var a=u(r-=60*(i-t)*1e3,n);return i===a?[r,i]:[e-60*Math.min(i,a)*1e3,Math.max(i,a)]}(i.utc(e,r).valueOf(),l,o),s=c[0],f=c[1],d=i(s).utcOffset(f);return d.$x.$timezone=o,d},i.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},i.tz.setDefault=function(e){a=e}}}()},635:function(e){e.exports=function(){"use strict";var e="minute",t=/[+-]\d\d(?::?\d\d)?/g,n=/([+-]|\d\d)/g;return function(r,i,a){var o=i.prototype;a.utc=function(e){return new i({date:e,utc:!0,args:arguments})},o.utc=function(t){var n=a(this.toDate(),{locale:this.$L,utc:!0});return t?n.add(this.utcOffset(),e):n},o.local=function(){return a(this.toDate(),{locale:this.$L,utc:!1})};var u=o.parse;o.parse=function(e){e.utc&&(this.$u=!0),this.$utils().u(e.$offset)||(this.$offset=e.$offset),u.call(this,e)};var l=o.init;o.init=function(){if(this.$u){var e=this.$d;this.$y=e.getUTCFullYear(),this.$M=e.getUTCMonth(),this.$D=e.getUTCDate(),this.$W=e.getUTCDay(),this.$H=e.getUTCHours(),this.$m=e.getUTCMinutes(),this.$s=e.getUTCSeconds(),this.$ms=e.getUTCMilliseconds()}else l.call(this)};var c=o.utcOffset;o.utcOffset=function(r,i){var a=this.$utils().u;if(a(r))return this.$u?0:a(this.$offset)?c.call(this):this.$offset;if("string"==typeof r&&(r=function(e){void 0===e&&(e="");var r=e.match(t);if(!r)return null;var i=(""+r[0]).match(n)||["-",0,0],a=i[0],o=60*+i[1]+ +i[2];return 0===o?0:"+"===a?o:-o}(r),null===r))return this;var o=Math.abs(r)<=16?60*r:r,u=this;if(i)return u.$offset=o,u.$u=0===r,u;if(0!==r){var l=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(u=this.local().add(o+l,e)).$offset=o,u.$x.$localOffset=l}else u=this.utc();return u};var s=o.format;o.format=function(e){var t=e||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return s.call(this,t)},o.valueOf=function(){var e=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*e},o.isUTC=function(){return!!this.$u},o.toISOString=function(){return this.toDate().toISOString()},o.toString=function(){return this.toDate().toUTCString()};var f=o.toDate;o.toDate=function(e){return"s"===e&&this.$offset?a(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():f.call(this)};var d=o.diff;o.diff=function(e,t,n){if(e&&this.$u===e.$u)return d.call(this,e,t,n);var r=this.local(),i=a(e).local();return d.call(r,i,t,n)}}}()},781:function(e){"use strict";var t=Array.prototype.slice,n=Object.prototype.toString;e.exports=function(e){var r=this;if("function"!==typeof r||"[object Function]"!==n.call(r))throw new TypeError("Function.prototype.bind called on incompatible "+r);for(var i,a=t.call(arguments,1),o=Math.max(0,r.length-a.length),u=[],l=0;l1&&"boolean"!==typeof t)throw new o('"allowMissing" argument must be a boolean');if(null===S(/^%?[^%]*%?$/,e))throw new i("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var n=function(e){var t=C(e,0,1),n=C(e,-1);if("%"===t&&"%"!==n)throw new i("invalid intrinsic syntax, expected closing `%`");if("%"===n&&"%"!==t)throw new i("invalid intrinsic syntax, expected opening `%`");var r=[];return x(e,E,(function(e,t,n,i){r[r.length]=n?x(i,A,"$1"):t||e})),r}(e),r=n.length>0?n[0]:"",a=N("%"+r+"%",t),u=a.name,c=a.value,s=!1,f=a.alias;f&&(r=f[0],k(n,D([0,1],f)));for(var d=1,h=!0;d=n.length){var y=l(c,m);c=(h=!!y)&&"get"in y&&!("originalValue"in y.get)?y.get:c[m]}else h=w(c,m),c=c[m];h&&!s&&(v[u]=c)}}return c}},593:function(e){"use strict";var t={foo:{}},n=Object;e.exports=function(){return{__proto__:t}.foo===t.foo&&!({__proto__:null}instanceof n)}},520:function(e,t,n){"use strict";var r="undefined"!==typeof Symbol&&Symbol,i=n(541);e.exports=function(){return"function"===typeof r&&("function"===typeof Symbol&&("symbol"===typeof r("foo")&&("symbol"===typeof Symbol("bar")&&i())))}},541:function(e){"use strict";e.exports=function(){if("function"!==typeof Symbol||"function"!==typeof Object.getOwnPropertySymbols)return!1;if("symbol"===typeof Symbol.iterator)return!0;var e={},t=Symbol("test"),n=Object(t);if("string"===typeof t)return!1;if("[object Symbol]"!==Object.prototype.toString.call(t))return!1;if("[object Symbol]"!==Object.prototype.toString.call(n))return!1;for(t in e[t]=42,e)return!1;if("function"===typeof Object.keys&&0!==Object.keys(e).length)return!1;if("function"===typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;var r=Object.getOwnPropertySymbols(e);if(1!==r.length||r[0]!==t)return!1;if(!Object.prototype.propertyIsEnumerable.call(e,t))return!1;if("function"===typeof Object.getOwnPropertyDescriptor){var i=Object.getOwnPropertyDescriptor(e,t);if(42!==i.value||!0!==i.enumerable)return!1}return!0}},838:function(e,t,n){"use strict";var r=n(199);e.exports=r.call(Function.call,Object.prototype.hasOwnProperty)},936:function(e,t,n){var r=NaN,i="[object Symbol]",a=/^\s+|\s+$/g,o=/^[-+]0x[0-9a-f]+$/i,u=/^0b[01]+$/i,l=/^0o[0-7]+$/i,c=parseInt,s="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,f="object"==typeof self&&self&&self.Object===Object&&self,d=s||f||Function("return this")(),h=Object.prototype.toString,m=Math.max,p=Math.min,v=function(){return d.Date.now()};function g(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function y(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&h.call(e)==i}(e))return r;if(g(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=g(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(a,"");var n=u.test(e);return n||l.test(e)?c(e.slice(2),n?2:8):o.test(e)?r:+e}e.exports=function(e,t,n){var r,i,a,o,u,l,c=0,s=!1,f=!1,d=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function h(t){var n=r,a=i;return r=i=void 0,c=t,o=e.apply(a,n)}function _(e){var n=e-l;return void 0===l||n>=t||n<0||f&&e-c>=a}function b(){var e=v();if(_(e))return w(e);u=setTimeout(b,function(e){var n=t-(e-l);return f?p(n,a-(e-c)):n}(e))}function w(e){return u=void 0,d&&r?h(e):(r=i=void 0,o)}function D(){var e=v(),n=_(e);if(r=arguments,i=this,l=e,n){if(void 0===u)return function(e){return c=e,u=setTimeout(b,t),s?h(e):o}(l);if(f)return u=setTimeout(b,t),h(l)}return void 0===u&&(u=setTimeout(b,t)),o}return t=y(t)||0,g(n)&&(s=!!n.leading,a=(f="maxWait"in n)?m(y(n.maxWait)||0,t):a,d="trailing"in n?!!n.trailing:d),D.cancel=function(){void 0!==u&&clearTimeout(u),c=0,r=l=i=u=void 0},D.flush=function(){return void 0===u?o:w(v())},D}},7:function(e,t,n){var r="__lodash_hash_undefined__",i=1/0,a="[object Function]",o="[object GeneratorFunction]",u="[object Symbol]",l=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,c=/^\w*$/,s=/^\./,f=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,d=/\\(\\)?/g,h=/^\[object .+?Constructor\]$/,m="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,p="object"==typeof self&&self&&self.Object===Object&&self,v=m||p||Function("return this")();var g=Array.prototype,y=Function.prototype,_=Object.prototype,b=v["__core-js_shared__"],w=function(){var e=/[^.]+$/.exec(b&&b.keys&&b.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}(),D=y.toString,k=_.hasOwnProperty,x=_.toString,C=RegExp("^"+D.call(k).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),S=v.Symbol,E=g.splice,A=z(v,"Map"),N=z(Object,"create"),M=S?S.prototype:void 0,F=M?M.toString:void 0;function T(e){var t=-1,n=e?e.length:0;for(this.clear();++t-1},O.prototype.set=function(e,t){var n=this.__data__,r=I(n,e);return r<0?n.push([e,t]):n[r][1]=t,this},P.prototype.clear=function(){this.__data__={hash:new T,map:new(A||O),string:new T}},P.prototype.delete=function(e){return B(this,e).delete(e)},P.prototype.get=function(e){return B(this,e).get(e)},P.prototype.has=function(e){return B(this,e).has(e)},P.prototype.set=function(e,t){return B(this,e).set(e,t),this};var j=$((function(e){var t;e=null==(t=e)?"":function(e){if("string"==typeof e)return e;if(V(e))return F?F.call(e):"";var t=e+"";return"0"==t&&1/e==-i?"-0":t}(t);var n=[];return s.test(e)&&n.push(""),e.replace(f,(function(e,t,r,i){n.push(r?i.replace(d,"$1"):t||e)})),n}));function H(e){if("string"==typeof e||V(e))return e;var t=e+"";return"0"==t&&1/e==-i?"-0":t}function $(e,t){if("function"!=typeof e||t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function n(){var r=arguments,i=t?t.apply(this,r):r[0],a=n.cache;if(a.has(i))return a.get(i);var o=e.apply(this,r);return n.cache=a.set(i,o),o};return n.cache=new($.Cache||P),n}$.Cache=P;var Y=Array.isArray;function U(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function V(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&x.call(e)==u}e.exports=function(e,t,n){var r=null==e?void 0:L(e,t);return void 0===r?n:r}},154:function(e,t,n){var r="function"===typeof Map&&Map.prototype,i=Object.getOwnPropertyDescriptor&&r?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,a=r&&i&&"function"===typeof i.get?i.get:null,o=r&&Map.prototype.forEach,u="function"===typeof Set&&Set.prototype,l=Object.getOwnPropertyDescriptor&&u?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,c=u&&l&&"function"===typeof l.get?l.get:null,s=u&&Set.prototype.forEach,f="function"===typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,d="function"===typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,h="function"===typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,m=Boolean.prototype.valueOf,p=Object.prototype.toString,v=Function.prototype.toString,g=String.prototype.match,y=String.prototype.slice,_=String.prototype.replace,b=String.prototype.toUpperCase,w=String.prototype.toLowerCase,D=RegExp.prototype.test,k=Array.prototype.concat,x=Array.prototype.join,C=Array.prototype.slice,S=Math.floor,E="function"===typeof BigInt?BigInt.prototype.valueOf:null,A=Object.getOwnPropertySymbols,N="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?Symbol.prototype.toString:null,M="function"===typeof Symbol&&"object"===typeof Symbol.iterator,F="function"===typeof Symbol&&Symbol.toStringTag&&(typeof Symbol.toStringTag===M||"symbol")?Symbol.toStringTag:null,T=Object.prototype.propertyIsEnumerable,O=("function"===typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(e){return e.__proto__}:null);function P(e,t){if(e===1/0||e===-1/0||e!==e||e&&e>-1e3&&e<1e3||D.call(/e/,t))return t;var n=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"===typeof e){var r=e<0?-S(-e):S(e);if(r!==e){var i=String(r),a=y.call(t,i.length+1);return _.call(i,n,"$&_")+"."+_.call(_.call(a,/([0-9]{3})/g,"$&_"),/_$/,"")}}return _.call(t,n,"$&_")}var I=n(654),L=I.custom,R=$(L)?L:null;function B(e,t,n){var r="double"===(n.quoteStyle||t)?'"':"'";return r+e+r}function z(e){return _.call(String(e),/"/g,""")}function j(e){return"[object Array]"===V(e)&&(!F||!("object"===typeof e&&F in e))}function H(e){return"[object RegExp]"===V(e)&&(!F||!("object"===typeof e&&F in e))}function $(e){if(M)return e&&"object"===typeof e&&e instanceof Symbol;if("symbol"===typeof e)return!0;if(!e||"object"!==typeof e||!N)return!1;try{return N.call(e),!0}catch(t){}return!1}e.exports=function e(t,n,r,i){var u=n||{};if(U(u,"quoteStyle")&&"single"!==u.quoteStyle&&"double"!==u.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(U(u,"maxStringLength")&&("number"===typeof u.maxStringLength?u.maxStringLength<0&&u.maxStringLength!==1/0:null!==u.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var l=!U(u,"customInspect")||u.customInspect;if("boolean"!==typeof l&&"symbol"!==l)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(U(u,"indent")&&null!==u.indent&&"\t"!==u.indent&&!(parseInt(u.indent,10)===u.indent&&u.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(U(u,"numericSeparator")&&"boolean"!==typeof u.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var p=u.numericSeparator;if("undefined"===typeof t)return"undefined";if(null===t)return"null";if("boolean"===typeof t)return t?"true":"false";if("string"===typeof t)return W(t,u);if("number"===typeof t){if(0===t)return 1/0/t>0?"0":"-0";var b=String(t);return p?P(t,b):b}if("bigint"===typeof t){var D=String(t)+"n";return p?P(t,D):D}var S="undefined"===typeof u.depth?5:u.depth;if("undefined"===typeof r&&(r=0),r>=S&&S>0&&"object"===typeof t)return j(t)?"[Array]":"[Object]";var A=function(e,t){var n;if("\t"===e.indent)n="\t";else{if(!("number"===typeof e.indent&&e.indent>0))return null;n=x.call(Array(e.indent+1)," ")}return{base:n,prev:x.call(Array(t+1),n)}}(u,r);if("undefined"===typeof i)i=[];else if(q(i,t)>=0)return"[Circular]";function L(t,n,a){if(n&&(i=C.call(i)).push(n),a){var o={depth:u.depth};return U(u,"quoteStyle")&&(o.quoteStyle=u.quoteStyle),e(t,o,r+1,i)}return e(t,u,r+1,i)}if("function"===typeof t&&!H(t)){var Y=function(e){if(e.name)return e.name;var t=g.call(v.call(e),/^function\s*([\w$]+)/);if(t)return t[1];return null}(t),Q=X(t,L);return"[Function"+(Y?": "+Y:" (anonymous)")+"]"+(Q.length>0?" { "+x.call(Q,", ")+" }":"")}if($(t)){var ee=M?_.call(String(t),/^(Symbol\(.*\))_[^)]*$/,"$1"):N.call(t);return"object"!==typeof t||M?ee:Z(ee)}if(function(e){if(!e||"object"!==typeof e)return!1;if("undefined"!==typeof HTMLElement&&e instanceof HTMLElement)return!0;return"string"===typeof e.nodeName&&"function"===typeof e.getAttribute}(t)){for(var te="<"+w.call(String(t.nodeName)),ne=t.attributes||[],re=0;re"}if(j(t)){if(0===t.length)return"[]";var ie=X(t,L);return A&&!function(e){for(var t=0;t=0)return!1;return!0}(ie)?"["+J(ie,A)+"]":"[ "+x.call(ie,", ")+" ]"}if(function(e){return"[object Error]"===V(e)&&(!F||!("object"===typeof e&&F in e))}(t)){var ae=X(t,L);return"cause"in Error.prototype||!("cause"in t)||T.call(t,"cause")?0===ae.length?"["+String(t)+"]":"{ ["+String(t)+"] "+x.call(ae,", ")+" }":"{ ["+String(t)+"] "+x.call(k.call("[cause]: "+L(t.cause),ae),", ")+" }"}if("object"===typeof t&&l){if(R&&"function"===typeof t[R]&&I)return I(t,{depth:S-r});if("symbol"!==l&&"function"===typeof t.inspect)return t.inspect()}if(function(e){if(!a||!e||"object"!==typeof e)return!1;try{a.call(e);try{c.call(e)}catch(te){return!0}return e instanceof Map}catch(t){}return!1}(t)){var oe=[];return o&&o.call(t,(function(e,n){oe.push(L(n,t,!0)+" => "+L(e,t))})),K("Map",a.call(t),oe,A)}if(function(e){if(!c||!e||"object"!==typeof e)return!1;try{c.call(e);try{a.call(e)}catch(t){return!0}return e instanceof Set}catch(n){}return!1}(t)){var ue=[];return s&&s.call(t,(function(e){ue.push(L(e,t))})),K("Set",c.call(t),ue,A)}if(function(e){if(!f||!e||"object"!==typeof e)return!1;try{f.call(e,f);try{d.call(e,d)}catch(te){return!0}return e instanceof WeakMap}catch(t){}return!1}(t))return G("WeakMap");if(function(e){if(!d||!e||"object"!==typeof e)return!1;try{d.call(e,d);try{f.call(e,f)}catch(te){return!0}return e instanceof WeakSet}catch(t){}return!1}(t))return G("WeakSet");if(function(e){if(!h||!e||"object"!==typeof e)return!1;try{return h.call(e),!0}catch(t){}return!1}(t))return G("WeakRef");if(function(e){return"[object Number]"===V(e)&&(!F||!("object"===typeof e&&F in e))}(t))return Z(L(Number(t)));if(function(e){if(!e||"object"!==typeof e||!E)return!1;try{return E.call(e),!0}catch(t){}return!1}(t))return Z(L(E.call(t)));if(function(e){return"[object Boolean]"===V(e)&&(!F||!("object"===typeof e&&F in e))}(t))return Z(m.call(t));if(function(e){return"[object String]"===V(e)&&(!F||!("object"===typeof e&&F in e))}(t))return Z(L(String(t)));if(!function(e){return"[object Date]"===V(e)&&(!F||!("object"===typeof e&&F in e))}(t)&&!H(t)){var le=X(t,L),ce=O?O(t)===Object.prototype:t instanceof Object||t.constructor===Object,se=t instanceof Object?"":"null prototype",fe=!ce&&F&&Object(t)===t&&F in t?y.call(V(t),8,-1):se?"Object":"",de=(ce||"function"!==typeof t.constructor?"":t.constructor.name?t.constructor.name+" ":"")+(fe||se?"["+x.call(k.call([],fe||[],se||[]),": ")+"] ":"");return 0===le.length?de+"{}":A?de+"{"+J(le,A)+"}":de+"{ "+x.call(le,", ")+" }"}return String(t)};var Y=Object.prototype.hasOwnProperty||function(e){return e in this};function U(e,t){return Y.call(e,t)}function V(e){return p.call(e)}function q(e,t){if(e.indexOf)return e.indexOf(t);for(var n=0,r=e.length;nt.maxStringLength){var n=e.length-t.maxStringLength,r="... "+n+" more character"+(n>1?"s":"");return W(y.call(e,0,t.maxStringLength),t)+r}return B(_.call(_.call(e,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,Q),"single",t)}function Q(e){var t=e.charCodeAt(0),n={8:"b",9:"t",10:"n",12:"f",13:"r"}[t];return n?"\\"+n:"\\x"+(t<16?"0":"")+b.call(t.toString(16))}function Z(e){return"Object("+e+")"}function G(e){return e+" { ? }"}function K(e,t,n,r){return e+" ("+t+") {"+(r?J(n,r):x.call(n,", "))+"}"}function J(e,t){if(0===e.length)return"";var n="\n"+t.prev+t.base;return n+x.call(e,","+n)+"\n"+t.prev}function X(e,t){var n=j(e),r=[];if(n){r.length=e.length;for(var i=0;i=n.__.length&&n.__.push({__V:s}),n.__[e]}function g(e){return l=1,y(I,e)}function y(e,t,n){var a=v(r++,2);if(a.t=e,!a.__c&&(a.__=[n?n(t):I(void 0,t),function(e){var t=a.__N?a.__N[0]:a.__[0],n=a.t(t,e);t!==n&&(a.__N=[n,a.__[1]],a.__c.setState({}))}],a.__c=i,!i.u)){var o=function(e,t,n){if(!a.__c.__H)return!0;var r=a.__c.__H.__.filter((function(e){return e.__c}));if(r.every((function(e){return!e.__N})))return!u||u.call(this,e,t,n);var i=!1;return r.forEach((function(e){if(e.__N){var t=e.__[0];e.__=e.__N,e.__N=void 0,t!==e.__[0]&&(i=!0)}})),!(!i&&a.__c.props===e)&&(!u||u.call(this,e,t,n))};i.u=!0;var u=i.shouldComponentUpdate,l=i.componentWillUpdate;i.componentWillUpdate=function(e,t,n){if(this.__e){var r=u;u=void 0,o(e,t,n),u=r}l&&l.call(this,e,t,n)},i.shouldComponentUpdate=o}return a.__N||a.__}function _(e,t){var n=v(r++,3);!u.YM.__s&&P(n.__H,t)&&(n.__=e,n.i=t,i.__H.__h.push(n))}function b(e,t){var n=v(r++,4);!u.YM.__s&&P(n.__H,t)&&(n.__=e,n.i=t,i.__h.push(n))}function w(e){return l=5,k((function(){return{current:e}}),[])}function D(e,t,n){l=6,b((function(){return"function"==typeof e?(e(t()),function(){return e(null)}):e?(e.current=t(),function(){return e.current=null}):void 0}),null==n?n:n.concat(e))}function k(e,t){var n=v(r++,7);return P(n.__H,t)?(n.__V=e(),n.i=t,n.__h=e,n.__V):n.__}function x(e,t){return l=8,k((function(){return e}),t)}function C(e){var t=i.context[e.__c],n=v(r++,9);return n.c=e,t?(null==n.__&&(n.__=!0,t.sub(i)),t.props.value):e.__}function S(e,t){u.YM.useDebugValue&&u.YM.useDebugValue(t?t(e):e)}function E(e){var t=v(r++,10),n=g();return t.__=e,i.componentDidCatch||(i.componentDidCatch=function(e,r){t.__&&t.__(e,r),n[1](e)}),[n[0],function(){n[1](void 0)}]}function A(){var e=v(r++,11);if(!e.__){for(var t=i.__v;null!==t&&!t.__m&&null!==t.__;)t=t.__;var n=t.__m||(t.__m=[0,0]);e.__="P"+n[0]+"-"+n[1]++}return e.__}function N(){for(var e;e=c.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(T),e.__H.__h.forEach(O),e.__H.__h=[]}catch(i){e.__H.__h=[],u.YM.__e(i,e.__v)}}u.YM.__b=function(e){i=null,f&&f(e)},u.YM.__r=function(e){d&&d(e),r=0;var t=(i=e.__c).__H;t&&(a===i?(t.__h=[],i.__h=[],t.__.forEach((function(e){e.__N&&(e.__=e.__N),e.__V=s,e.__N=e.i=void 0}))):(t.__h.forEach(T),t.__h.forEach(O),t.__h=[],r=0)),a=i},u.YM.diffed=function(e){h&&h(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(1!==c.push(t)&&o===u.YM.requestAnimationFrame||((o=u.YM.requestAnimationFrame)||F)(N)),t.__H.__.forEach((function(e){e.i&&(e.__H=e.i),e.__V!==s&&(e.__=e.__V),e.i=void 0,e.__V=s}))),a=i=null},u.YM.__c=function(e,t){t.some((function(e){try{e.__h.forEach(T),e.__h=e.__h.filter((function(e){return!e.__||O(e)}))}catch(a){t.some((function(e){e.__h&&(e.__h=[])})),t=[],u.YM.__e(a,e.__v)}})),m&&m(e,t)},u.YM.unmount=function(e){p&&p(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach((function(e){try{T(e)}catch(e){t=e}})),n.__H=void 0,t&&u.YM.__e(t,n.__v))};var M="function"==typeof requestAnimationFrame;function F(e){var t,n=function(){clearTimeout(r),M&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,100);M&&(t=requestAnimationFrame(n))}function T(e){var t=i,n=e.__c;"function"==typeof n&&(e.__c=void 0,n()),i=t}function O(e){var t=i;e.__c=e.__(),i=t}function P(e,t){return!e||e.length!==t.length||t.some((function(t,n){return t!==e[n]}))}function I(e,t){return"function"==typeof t?t(e):t}function L(e,t){for(var n in t)e[n]=t[n];return e}function R(e,t){for(var n in e)if("__source"!==n&&!(n in t))return!0;for(var r in t)if("__source"!==r&&e[r]!==t[r])return!0;return!1}function B(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t}function z(e){this.props=e}function j(e,t){function n(e){var n=this.props.ref,r=n==e.ref;return!r&&n&&(n.call?n(null):n.current=null),t?!t(this.props,e)||!r:R(this.props,e)}function r(t){return this.shouldComponentUpdate=n,(0,u.az)(e,t)}return r.displayName="Memo("+(e.displayName||e.name)+")",r.prototype.isReactComponent=!0,r.__f=!0,r}(z.prototype=new u.wA).isPureReactComponent=!0,z.prototype.shouldComponentUpdate=function(e,t){return R(this.props,e)||R(this.state,t)};var H=u.YM.__b;u.YM.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),H&&H(e)};var $="undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.forward_ref")||3911;function Y(e){function t(t){var n=L({},t);return delete n.ref,e(n,t.ref||null)}return t.$$typeof=$,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName="ForwardRef("+(e.displayName||e.name)+")",t}var U=function(e,t){return null==e?null:(0,u.bR)((0,u.bR)(e).map(t))},V={map:U,forEach:U,count:function(e){return e?(0,u.bR)(e).length:0},only:function(e){var t=(0,u.bR)(e);if(1!==t.length)throw"Children.only";return t[0]},toArray:u.bR},q=u.YM.__e;u.YM.__e=function(e,t,n,r){if(e.then)for(var i,a=t;a=a.__;)if((i=a.__c)&&i.__c)return null==t.__e&&(t.__e=n.__e,t.__k=n.__k),i.__c(e,t);q(e,t,n,r)};var W=u.YM.unmount;function Q(e,t,n){return e&&(e.__c&&e.__c.__H&&(e.__c.__H.__.forEach((function(e){"function"==typeof e.__c&&e.__c()})),e.__c.__H=null),null!=(e=L({},e)).__c&&(e.__c.__P===n&&(e.__c.__P=t),e.__c=null),e.__k=e.__k&&e.__k.map((function(e){return Q(e,t,n)}))),e}function Z(e,t,n){return e&&(e.__v=null,e.__k=e.__k&&e.__k.map((function(e){return Z(e,t,n)})),e.__c&&e.__c.__P===t&&(e.__e&&n.insertBefore(e.__e,e.__d),e.__c.__e=!0,e.__c.__P=n)),e}function G(){this.__u=0,this.t=null,this.__b=null}function K(e){var t=e.__.__c;return t&&t.__a&&t.__a(e)}function J(e){var t,n,r;function i(i){if(t||(t=e()).then((function(e){n=e.default||e}),(function(e){r=e})),r)throw r;if(!n)throw t;return(0,u.az)(n,i)}return i.displayName="Lazy",i.__f=!0,i}function X(){this.u=null,this.o=null}u.YM.unmount=function(e){var t=e.__c;t&&t.__R&&t.__R(),t&&!0===e.__h&&(e.type=null),W&&W(e)},(G.prototype=new u.wA).__c=function(e,t){var n=t.__c,r=this;null==r.t&&(r.t=[]),r.t.push(n);var i=K(r.__v),a=!1,o=function(){a||(a=!0,n.__R=null,i?i(u):u())};n.__R=o;var u=function(){if(! --r.__u){if(r.state.__a){var e=r.state.__a;r.__v.__k[0]=Z(e,e.__c.__P,e.__c.__O)}var t;for(r.setState({__a:r.__b=null});t=r.t.pop();)t.forceUpdate()}},l=!0===t.__h;r.__u++||l||r.setState({__a:r.__b=r.__v.__k[0]}),e.then(o,o)},G.prototype.componentWillUnmount=function(){this.t=[]},G.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var n=document.createElement("div"),r=this.__v.__k[0].__c;this.__v.__k[0]=Q(this.__b,n,r.__O=r.__P)}this.__b=null}var i=t.__a&&(0,u.az)(u.HY,null,e.fallback);return i&&(i.__h=null),[(0,u.az)(u.HY,null,t.__a?null:e.children),i]};var ee=function(e,t,n){if(++n[1]===n[0]&&e.o.delete(t),e.props.revealOrder&&("t"!==e.props.revealOrder[0]||!e.o.size))for(n=e.u;n;){for(;n.length>3;)n.pop()();if(n[1]>>1,1),t.i.removeChild(e)}}),(0,u.sY)((0,u.az)(te,{context:t.context},e.__v),t.l)):t.l&&t.componentWillUnmount()}function re(e,t){var n=(0,u.az)(ne,{__v:e,i:t});return n.containerInfo=t,n}(X.prototype=new u.wA).__a=function(e){var t=this,n=K(t.__v),r=t.o.get(e);return r[0]++,function(i){var a=function(){t.props.revealOrder?(r.push(i),ee(t,e,r)):i()};n?n(a):a()}},X.prototype.render=function(e){this.u=null,this.o=new Map;var t=(0,u.bR)(e.children);e.revealOrder&&"b"===e.revealOrder[0]&&t.reverse();for(var n=t.length;n--;)this.o.set(t[n],this.u=[1,0,this.u]);return e.children},X.prototype.componentDidUpdate=X.prototype.componentDidMount=function(){var e=this;this.o.forEach((function(t,n){ee(e,n,t)}))};var ie="undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103,ae=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,oe=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,ue=/[A-Z0-9]/g,le="undefined"!=typeof document,ce=function(e){return("undefined"!=typeof Symbol&&"symbol"==typeof Symbol()?/fil|che|rad/:/fil|che|ra/).test(e)};function se(e,t,n){return null==t.__k&&(t.textContent=""),(0,u.sY)(e,t),"function"==typeof n&&n(),e?e.__c:null}function fe(e,t,n){return(0,u.ZB)(e,t),"function"==typeof n&&n(),e?e.__c:null}u.wA.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach((function(e){Object.defineProperty(u.wA.prototype,e,{configurable:!0,get:function(){return this["UNSAFE_"+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})}));var de=u.YM.event;function he(){}function me(){return this.cancelBubble}function pe(){return this.defaultPrevented}u.YM.event=function(e){return de&&(e=de(e)),e.persist=he,e.isPropagationStopped=me,e.isDefaultPrevented=pe,e.nativeEvent=e};var ve,ge={enumerable:!1,configurable:!0,get:function(){return this.class}},ye=u.YM.vnode;u.YM.vnode=function(e){"string"==typeof e.type&&function(e){var t=e.props,n=e.type,r={};for(var i in t){var a=t[i];if(!("value"===i&&"defaultValue"in t&&null==a||le&&"children"===i&&"noscript"===n||"class"===i||"className"===i)){var o=i.toLowerCase();"defaultValue"===i&&"value"in t&&null==t.value?i="value":"download"===i&&!0===a?a="":"ondoubleclick"===o?i="ondblclick":"onchange"!==o||"input"!==n&&"textarea"!==n||ce(t.type)?"onfocus"===o?i="onfocusin":"onblur"===o?i="onfocusout":oe.test(i)?i=o:-1===n.indexOf("-")&&ae.test(i)?i=i.replace(ue,"-$&").toLowerCase():null===a&&(a=void 0):o=i="oninput","oninput"===o&&r[i=o]&&(i="oninputCapture"),r[i]=a}}"select"==n&&r.multiple&&Array.isArray(r.value)&&(r.value=(0,u.bR)(t.children).forEach((function(e){e.props.selected=-1!=r.value.indexOf(e.props.value)}))),"select"==n&&null!=r.defaultValue&&(r.value=(0,u.bR)(t.children).forEach((function(e){e.props.selected=r.multiple?-1!=r.defaultValue.indexOf(e.props.value):r.defaultValue==e.props.value}))),t.class&&!t.className?(r.class=t.class,Object.defineProperty(r,"className",ge)):(t.className&&!t.class||t.class&&t.className)&&(r.class=r.className=t.className),e.props=r}(e),e.$$typeof=ie,ye&&ye(e)};var _e=u.YM.__r;u.YM.__r=function(e){_e&&_e(e),ve=e.__c};var be=u.YM.diffed;u.YM.diffed=function(e){be&&be(e);var t=e.props,n=e.__e;null!=n&&"textarea"===e.type&&"value"in t&&t.value!==n.value&&(n.value=null==t.value?"":t.value),ve=null};var we={ReactCurrentDispatcher:{current:{readContext:function(e){return ve.__n[e.__c].props.value}}}},De="17.0.2";function ke(e){return u.az.bind(null,e)}function xe(e){return!!e&&e.$$typeof===ie}function Ce(e){return xe(e)?u.Tm.apply(null,arguments):e}function Se(e){return!!e.__k&&((0,u.sY)(null,e),!0)}function Ee(e){return e&&(e.base||1===e.nodeType&&e)||null}var Ae=function(e,t){return e(t)},Ne=function(e,t){return e(t)},Me=u.HY;function Fe(e){e()}function Te(e){return e}function Oe(){return[!1,Fe]}var Pe=b;function Ie(e,t){var n=t(),r=g({h:{__:n,v:t}}),i=r[0].h,a=r[1];return b((function(){i.__=n,i.v=t,B(i.__,t())||a({h:i})}),[e,n,t]),_((function(){return B(i.__,i.v())||a({h:i}),e((function(){B(i.__,i.v())||a({h:i})}))}),[e]),n}var Le={useState:g,useId:A,useReducer:y,useEffect:_,useLayoutEffect:b,useInsertionEffect:Pe,useTransition:Oe,useDeferredValue:Te,useSyncExternalStore:Ie,startTransition:Fe,useRef:w,useImperativeHandle:D,useMemo:k,useCallback:x,useContext:C,useDebugValue:S,version:"17.0.2",Children:V,render:se,hydrate:fe,unmountComponentAtNode:Se,createPortal:re,createElement:u.az,createContext:u.kr,createFactory:ke,cloneElement:Ce,createRef:u.Vf,Fragment:u.HY,isValidElement:xe,findDOMNode:Ee,Component:u.wA,PureComponent:z,memo:j,forwardRef:Y,flushSync:Ne,unstable_batchedUpdates:Ae,StrictMode:Me,Suspense:G,SuspenseList:X,lazy:J,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:we}},856:function(e,t,n){"use strict";n.d(t,{HY:function(){return b},Tm:function(){return Y},Vf:function(){return _},YM:function(){return i},ZB:function(){return $},az:function(){return g},bR:function(){return A},kr:function(){return U},sY:function(){return H},wA:function(){return w}});var r,i,a,o,u,l,c,s,f={},d=[],h=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,m=Array.isArray;function p(e,t){for(var n in t)e[n]=t[n];return e}function v(e){var t=e.parentNode;t&&t.removeChild(e)}function g(e,t,n){var i,a,o,u={};for(o in t)"key"==o?i=t[o]:"ref"==o?a=t[o]:u[o]=t[o];if(arguments.length>2&&(u.children=arguments.length>3?r.call(arguments,2):n),"function"==typeof e&&null!=e.defaultProps)for(o in e.defaultProps)void 0===u[o]&&(u[o]=e.defaultProps[o]);return y(e,u,i,a,null)}function y(e,t,n,r,o){var u={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==o?++a:o};return null==o&&null!=i.vnode&&i.vnode(u),u}function _(){return{current:null}}function b(e){return e.children}function w(e,t){this.props=e,this.context=t}function D(e,t){if(null==t)return e.__?D(e.__,e.__.__k.indexOf(e)+1):null;for(var n;tt&&o.sort(c));C.__r=0}function S(e,t,n,r,i,a,o,u,l,c,s){var h,p,v,g,_,w,D,k,x,C,S=0,A=r&&r.__k||d,F=A.length,T=F,O=t.length;for(n.__k=[],h=0;h0?y(g.type,g.props,g.key,g.ref?g.ref:null,g.__v):g)&&(g.__=n,g.__b=n.__b+1,-1===(k=M(g,A,D=h+S,T))?v=f:(v=A[k]||f,A[k]=void 0,T--),I(e,g,v,i,a,o,u,l,c,s),_=g.__e,(p=g.ref)&&v.ref!=p&&(v.ref&&B(v.ref,null,g),s.push(p,g.__c||_,g)),null!=_&&(null==w&&(w=_),C=!(x=v===f||null===v.__v)&&k===D,x?-1==k&&S--:k!==D&&(k===D+1?(S++,C=!0):k>D?T>O-D?(S+=k-D,C=!0):S--:S=k(null!=l?1:0))for(;o>=0||u=0){if((l=t[o])&&i==l.key&&a===l.type)return o;o--}if(u2&&(l.children=arguments.length>3?r.call(arguments,2):n),y(e.type,l,i||e.key,a||e.ref,null)}function U(e,t){var n={__c:t="__cC"+s++,__:e,Consumer:function(e,t){return e.children(t)},Provider:function(e){var n,r;return this.getChildContext||(n=[],(r={})[t]=this,this.getChildContext=function(){return r},this.shouldComponentUpdate=function(e){this.props.value!==e.value&&n.some((function(e){e.__e=!0,x(e)}))},this.sub=function(e){n.push(e);var t=e.componentWillUnmount;e.componentWillUnmount=function(){n.splice(n.indexOf(e),1),t&&t.call(e)}}),e.children}};return n.Provider.__=n.Consumer.contextType=n}r=d.slice,i={__e:function(e,t,n,r){for(var i,a,o;t=t.__;)if((i=t.__c)&&!i.__)try{if((a=i.constructor)&&null!=a.getDerivedStateFromError&&(i.setState(a.getDerivedStateFromError(e)),o=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(e,r||{}),o=i.__d),o)return i.__E=i}catch(t){e=t}throw e}},a=0,w.prototype.setState=function(e,t){var n;n=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=p({},this.state),"function"==typeof e&&(e=e(p({},n),this.props)),e&&p(n,e),null!=e&&this.__v&&(t&&this._sb.push(t),x(this))},w.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),x(this))},w.prototype.render=b,o=[],l="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,c=function(e,t){return e.__v.__b-t.__v.__b},C.__r=0,s=0},609:function(e){"use strict";var t=String.prototype.replace,n=/%20/g,r="RFC1738",i="RFC3986";e.exports={default:i,formatters:{RFC1738:function(e){return t.call(e,n,"+")},RFC3986:function(e){return String(e)}},RFC1738:r,RFC3986:i}},776:function(e,t,n){"use strict";var r=n(816),i=n(668),a=n(609);e.exports={formats:a,parse:i,stringify:r}},668:function(e,t,n){"use strict";var r=n(837),i=Object.prototype.hasOwnProperty,a=Array.isArray,o={allowDots:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:r.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},u=function(e){return e.replace(/&#(\d+);/g,(function(e,t){return String.fromCharCode(parseInt(t,10))}))},l=function(e,t){return e&&"string"===typeof e&&t.comma&&e.indexOf(",")>-1?e.split(","):e},c=function(e,t,n,r){if(e){var a=n.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,o=/(\[[^[\]]*])/g,u=n.depth>0&&/(\[[^[\]]*])/.exec(a),c=u?a.slice(0,u.index):a,s=[];if(c){if(!n.plainObjects&&i.call(Object.prototype,c)&&!n.allowPrototypes)return;s.push(c)}for(var f=0;n.depth>0&&null!==(u=o.exec(a))&&f=0;--a){var o,u=e[a];if("[]"===u&&n.parseArrays)o=[].concat(i);else{o=n.plainObjects?Object.create(null):{};var c="["===u.charAt(0)&&"]"===u.charAt(u.length-1)?u.slice(1,-1):u,s=parseInt(c,10);n.parseArrays||""!==c?!isNaN(s)&&u!==c&&String(s)===c&&s>=0&&n.parseArrays&&s<=n.arrayLimit?(o=[])[s]=i:"__proto__"!==c&&(o[c]=i):o={0:i}}i=o}return i}(s,t,n,r)}};e.exports=function(e,t){var n=function(e){if(!e)return o;if(null!==e.decoder&&void 0!==e.decoder&&"function"!==typeof e.decoder)throw new TypeError("Decoder has to be a function.");if("undefined"!==typeof e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var t="undefined"===typeof e.charset?o.charset:e.charset;return{allowDots:"undefined"===typeof e.allowDots?o.allowDots:!!e.allowDots,allowPrototypes:"boolean"===typeof e.allowPrototypes?e.allowPrototypes:o.allowPrototypes,allowSparse:"boolean"===typeof e.allowSparse?e.allowSparse:o.allowSparse,arrayLimit:"number"===typeof e.arrayLimit?e.arrayLimit:o.arrayLimit,charset:t,charsetSentinel:"boolean"===typeof e.charsetSentinel?e.charsetSentinel:o.charsetSentinel,comma:"boolean"===typeof e.comma?e.comma:o.comma,decoder:"function"===typeof e.decoder?e.decoder:o.decoder,delimiter:"string"===typeof e.delimiter||r.isRegExp(e.delimiter)?e.delimiter:o.delimiter,depth:"number"===typeof e.depth||!1===e.depth?+e.depth:o.depth,ignoreQueryPrefix:!0===e.ignoreQueryPrefix,interpretNumericEntities:"boolean"===typeof e.interpretNumericEntities?e.interpretNumericEntities:o.interpretNumericEntities,parameterLimit:"number"===typeof e.parameterLimit?e.parameterLimit:o.parameterLimit,parseArrays:!1!==e.parseArrays,plainObjects:"boolean"===typeof e.plainObjects?e.plainObjects:o.plainObjects,strictNullHandling:"boolean"===typeof e.strictNullHandling?e.strictNullHandling:o.strictNullHandling}}(t);if(""===e||null===e||"undefined"===typeof e)return n.plainObjects?Object.create(null):{};for(var s="string"===typeof e?function(e,t){var n,c={__proto__:null},s=t.ignoreQueryPrefix?e.replace(/^\?/,""):e,f=t.parameterLimit===1/0?void 0:t.parameterLimit,d=s.split(t.delimiter,f),h=-1,m=t.charset;if(t.charsetSentinel)for(n=0;n-1&&(v=a(v)?[v]:v),i.call(c,p)?c[p]=r.combine(c[p],v):c[p]=v}return c}(e,n):e,f=n.plainObjects?Object.create(null):{},d=Object.keys(s),h=0;h0?x.join(",")||null:void 0}];else if(l(d))N=d;else{var F=Object.keys(x);N=p?F.sort(p):F}for(var T=o&&l(x)&&1===x.length?n+"[]":n,O=0;O0?w+b:""}},837:function(e,t,n){"use strict";var r=n(609),i=Object.prototype.hasOwnProperty,a=Array.isArray,o=function(){for(var e=[],t=0;t<256;++t)e.push("%"+((t<16?"0":"")+t.toString(16)).toUpperCase());return e}(),u=function(e,t){for(var n=t&&t.plainObjects?Object.create(null):{},r=0;r1;){var t=e.pop(),n=t.obj[t.prop];if(a(n)){for(var r=[],i=0;i=48&&s<=57||s>=65&&s<=90||s>=97&&s<=122||a===r.RFC1738&&(40===s||41===s)?l+=u.charAt(c):s<128?l+=o[s]:s<2048?l+=o[192|s>>6]+o[128|63&s]:s<55296||s>=57344?l+=o[224|s>>12]+o[128|s>>6&63]+o[128|63&s]:(c+=1,s=65536+((1023&s)<<10|1023&u.charCodeAt(c)),l+=o[240|s>>18]+o[128|s>>12&63]+o[128|s>>6&63]+o[128|63&s])}return l},isBuffer:function(e){return!(!e||"object"!==typeof e)&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},maybeMap:function(e,t){if(a(e)){for(var n=[],r=0;rr.length&&h(e,t.length-1);)t=t.slice(0,t.length-1);return t.length}for(var i=r.length,a=t.length;a>=r.length;a--){var o=t[a];if(!h(e,a)&&m(e,a,o)){i=a+1;break}}return i}function g(e,t){return v(e,t)===e.mask.length}function y(e,t){var n=e.maskChar,r=e.mask,i=e.prefix;if(!n){for((t=_(e,"",t,0)).lengtht.length&&(t+=i.slice(t.length,r)),u.every((function(n){for(;s=n,h(e,c=r)&&s!==i[c];){if(r>=t.length&&(t+=i[r]),u=n,a&&h(e,r)&&u===a)return!0;if(++r>=i.length)return!1}var u,c,s;return!m(e,r,n)&&n!==a||(ri.start?f=(s=function(e,t,n,r){var i=e.mask,a=e.maskChar,o=n.split(""),u=r;return o.every((function(t){for(;o=t,h(e,n=r)&&o!==i[n];)if(++r>=i.length)return!1;var n,o;return(m(e,r,t)||t===a)&&r++,r=a.length?d=a.length:d=o.length&&de.length)&&(t=e.length);for(var n=0,r=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}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,o=!0,u=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){u=!0,a=e},f:function(){try{o||null==n.return||n.return()}finally{if(u)throw a}}}}function y(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function _(e){return function(e){if(Array.isArray(e))return h(e)}(e)||y(e)||m(e)||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 b(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function w(e){return w="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},w(e)}function D(e){var t=function(e,t){if("object"!==w(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!==w(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===w(t)?t:String(t)}function k(e,t){for(var n=0;n=0&&(t.hash=e.substr(n),e=e.substr(0,n));var r=e.indexOf("?");r>=0&&(t.search=e.substr(r),e=e.substr(0,r)),e&&(t.pathname=e)}return t}function $(e,n,r,i){void 0===i&&(i={});var a=i,o=a.window,u=void 0===o?document.defaultView:o,l=a.v5Compat,c=void 0!==l&&l,s=u.history,f=t.Pop,d=null,h=m();function m(){return(s.state||{idx:null}).idx}function p(){f=t.Pop;var e=m(),n=null==e?null:e-h;h=e,d&&d({action:f,location:g.location,delta:n})}function v(e){var t="null"!==u.location.origin?u.location.origin:u.location.href,n="string"===typeof e?e:j(e);return L(t,"No window.location.(origin|href) available to create URL for href: "+n),new URL(n,t)}null==h&&(h=0,s.replaceState(O({},s.state,{idx:h}),""));var g={get action(){return f},get location(){return e(u,s)},listen:function(e){if(d)throw new Error("A history only accepts one active listener");return u.addEventListener(I,p),d=e,function(){u.removeEventListener(I,p),d=null}},createHref:function(e){return n(u,e)},createURL:v,encodeLocation:function(e){var t=v(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:function(e,n){f=t.Push;var i=z(g.location,e,n);r&&r(i,e);var a=B(i,h=m()+1),o=g.createHref(i);try{s.pushState(a,"",o)}catch(l){if(l instanceof DOMException&&"DataCloneError"===l.name)throw l;u.location.assign(o)}c&&d&&d({action:f,location:g.location,delta:1})},replace:function(e,n){f=t.Replace;var i=z(g.location,e,n);r&&r(i,e);var a=B(i,h=m()),o=g.createHref(i);s.replaceState(a,"",o),c&&d&&d({action:f,location:g.location,delta:0})},go:function(e){return s.go(e)}};return g}!function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"}(P||(P={}));new Set(["lazy","caseSensitive","path","id","index","children"]);function Y(e,t,n){void 0===n&&(n="/");var r=re(("string"===typeof t?H(t):t).pathname||"/",n);if(null==r)return null;var i=U(e);!function(e){e.sort((function(e,t){return e.score!==t.score?t.score-e.score:function(e,t){var n=e.length===t.length&&e.slice(0,-1).every((function(e,n){return e===t[n]}));return n?e[e.length-1]-t[t.length-1]:0}(e.routesMeta.map((function(e){return e.childrenIndex})),t.routesMeta.map((function(e){return e.childrenIndex})))}))}(i);for(var a=null,o=0;null==a&&o0&&(L(!0!==e.index,'Index routes must not have child routes. Please remove all child routes from route path "'+u+'".'),U(e.children,t,l,u)),(null!=e.path||e.index)&&t.push({path:u,score:X(u,e.index),routesMeta:l})};return e.forEach((function(e,t){var n;if(""!==e.path&&null!=(n=e.path)&&n.includes("?")){var r,a=g(V(e.path));try{for(a.s();!(r=a.n()).done;){var o=r.value;i(e,t,o)}}catch(u){a.e(u)}finally{a.f()}}else i(e,t)})),t}function V(e){var t=e.split("/");if(0===t.length)return[];var n,r=d(n=t)||y(n)||m(n)||p(),i=r[0],a=r.slice(1),o=i.endsWith("?"),u=i.replace(/\?$/,"");if(0===a.length)return o?[u,""]:[u];var l=V(a.join("/")),c=[];return c.push.apply(c,_(l.map((function(e){return""===e?u:[u,e].join("/")})))),o&&c.push.apply(c,_(l)),c.map((function(t){return e.startsWith("/")&&""===t?"/":t}))}var q=/^:\w+$/,W=3,Q=2,Z=1,G=10,K=-2,J=function(e){return"*"===e};function X(e,t){var n=e.split("/"),r=n.length;return n.some(J)&&(r+=K),t&&(r+=Q),n.filter((function(e){return!J(e)})).reduce((function(e,t){return e+(q.test(t)?W:""===t?Z:G)}),r)}function ee(e,t){for(var n=e.routesMeta,r={},i="/",a=[],o=0;o and the router will parse it for you.'}function ae(e){return e.filter((function(e,t){return 0===t||e.route.path&&e.route.path.length>0}))}function oe(e,t,n,r){var i;void 0===r&&(r=!1),"string"===typeof e?i=H(e):(L(!(i=O({},e)).pathname||!i.pathname.includes("?"),ie("?","pathname","search",i)),L(!i.pathname||!i.pathname.includes("#"),ie("#","pathname","hash",i)),L(!i.search||!i.search.includes("#"),ie("#","search","hash",i)));var a,o=""===e||""===i.pathname,u=o?"/":i.pathname;if(r||null==u)a=n;else{var l=t.length-1;if(u.startsWith("..")){for(var c=u.split("/");".."===c[0];)c.shift(),l-=1;i.pathname=c.join("/")}a=l>=0?t[l]:"/"}var s=function(e,t){void 0===t&&(t="/");var n="string"===typeof e?H(e):e,r=n.pathname,i=n.search,a=void 0===i?"":i,o=n.hash,u=void 0===o?"":o,l=r?r.startsWith("/")?r:function(e,t){var n=t.replace(/\/+$/,"").split("/");return e.split("/").forEach((function(e){".."===e?n.length>1&&n.pop():"."!==e&&n.push(e)})),n.length>1?n.join("/"):"/"}(r,t):t;return{pathname:l,search:ce(a),hash:se(u)}}(i,a),f=u&&"/"!==u&&u.endsWith("/"),d=(o||"."===u)&&n.endsWith("/");return s.pathname.endsWith("/")||!f&&!d||(s.pathname+="/"),s}var ue=function(e){return e.join("/").replace(/\/\/+/g,"/")},le=function(e){return e.replace(/\/+$/,"").replace(/^\/*/,"/")},ce=function(e){return e&&"?"!==e?e.startsWith("?")?e:"?"+e:""},se=function(e){return e&&"#"!==e?e.startsWith("#")?e:"#"+e:""},fe=function(e){S(n,e);var t=M(n);function n(){return b(this,n),t.apply(this,arguments)}return x(n)}(T(Error));function de(e){return null!=e&&"number"===typeof e.status&&"string"===typeof e.statusText&&"boolean"===typeof e.internal&&"data"in e}var he=["post","put","patch","delete"],me=(new Set(he),["get"].concat(he));new Set(me),new Set([301,302,303,307,308]),new Set([307,308]);Symbol("deferred");function pe(){return pe=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||L(!1),o=o.slice(0,Math.min(o.length,l+1))}return o.reduceRight((function(e,i,a){var l=i.route.id?null==u?void 0:u[i.route.id]:null,c=null;n&&(c=i.route.errorElement||Oe);var s=t.concat(o.slice(0,a+1)),f=function(){var t;return t=l?c:i.route.Component?r.createElement(i.route.Component,null):i.route.element?i.route.element:e,r.createElement(Ie,{match:i,routeContext:{outlet:e,matches:s,isDataRoute:null!=n},children:t})};return n&&(i.route.ErrorBoundary||i.route.errorElement||0===a)?r.createElement(Pe,{location:n.location,revalidation:n.revalidation,component:c,error:l,children:f(),routeContext:{outlet:null,matches:s,isDataRoute:!0}}):f()}),null)}function Re(e){var t=r.useContext(ve);return t||L(!1),t}function Be(e){var t=r.useContext(ge);return t||L(!1),t}function ze(e){var t=function(e){var t=r.useContext(we);return t||L(!1),t}(),n=t.matches[t.matches.length-1];return n.route.id||L(!1),n.route.id}!function(e){e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate"}(Fe||(Fe={})),function(e){e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId"}(Te||(Te={}));var je;r.startTransition;function He(e){return function(e){var t=r.useContext(we).outlet;return t?r.createElement(Ee.Provider,{value:e},t):t}(e.context)}function $e(e){L(!1)}function Ye(e){var n=e.basename,i=void 0===n?"/":n,a=e.children,o=void 0===a?null:a,u=e.location,l=e.navigationType,c=void 0===l?t.Pop:l,s=e.navigator,f=e.static,d=void 0!==f&&f;ke()&&L(!1);var h=i.replace(/^\/*/,"/"),m=r.useMemo((function(){return{basename:h,navigator:s,static:d}}),[h,s,d]);"string"===typeof u&&(u=H(u));var p=u,v=p.pathname,g=void 0===v?"/":v,y=p.search,_=void 0===y?"":y,b=p.hash,w=void 0===b?"":b,D=p.state,k=void 0===D?null:D,x=p.key,C=void 0===x?"default":x,S=r.useMemo((function(){var e=re(g,h);return null==e?null:{location:{pathname:e,search:_,hash:w,state:k,key:C},navigationType:c}}),[h,g,_,w,k,C,c]);return null==S?null:r.createElement(_e.Provider,{value:m},r.createElement(be.Provider,{children:o,value:S}))}function Ue(e){var t=e.children,n=e.location;return Ne(qe(t),n)}!function(e){e[e.pending=0]="pending",e[e.success=1]="success",e[e.error=2]="error"}(je||(je={}));var Ve=new Promise((function(){}));r.Component;function qe(e,t){void 0===t&&(t=[]);var n=[];return r.Children.forEach(e,(function(e,i){if(r.isValidElement(e)){var a=[].concat(_(t),[i]);if(e.type!==r.Fragment){e.type!==$e&&L(!1),e.props.index&&e.props.children&&L(!1);var o={id:e.props.id||a.join("-"),caseSensitive:e.props.caseSensitive,element:e.props.element,Component:e.props.Component,index:e.props.index,path:e.props.path,loader:e.props.loader,action:e.props.action,errorElement:e.props.errorElement,ErrorBoundary:e.props.ErrorBoundary,hasErrorBoundary:null!=e.props.ErrorBoundary||null!=e.props.errorElement,shouldRevalidate:e.props.shouldRevalidate,handle:e.props.handle,lazy:e.props.lazy};e.props.children&&(o.children=qe(e.props.children,a)),n.push(o)}else n.push.apply(n,qe(e.props.children,a))}})),n}function We(){return We=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(i[n]=e[n]);return i}function Ze(e){return void 0===e&&(e=""),new URLSearchParams("string"===typeof e||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((function(t,n){var r=e[n];return t.concat(Array.isArray(r)?r.map((function(e){return[n,e]})):[[n,r]])}),[]))}new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);var Ge=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset"],Ke=["aria-current","caseSensitive","className","end","style","to","children"];var Je=r.startTransition;function Xe(e){var t=e.basename,n=e.children,i=e.future,a=e.window,o=r.useRef();null==o.current&&(o.current=function(e){return void 0===e&&(e={}),$((function(e,t){var n=H(e.location.hash.substr(1)),r=n.pathname,i=void 0===r?"/":r,a=n.search,o=void 0===a?"":a,u=n.hash;return z("",{pathname:i,search:o,hash:void 0===u?"":u},t.state&&t.state.usr||null,t.state&&t.state.key||"default")}),(function(e,t){var n=e.document.querySelector("base"),r="";if(n&&n.getAttribute("href")){var i=e.location.href,a=i.indexOf("#");r=-1===a?i:i.slice(0,a)}return r+"#"+("string"===typeof t?t:j(t))}),(function(e,t){R("/"===e.pathname.charAt(0),"relative pathnames are not supported in hash history.push("+JSON.stringify(t)+")")}),e)}({window:a,v5Compat:!0}));var u=o.current,l=v(r.useState({action:u.action,location:u.location}),2),c=l[0],s=l[1],f=(i||{}).v7_startTransition,d=r.useCallback((function(e){f&&Je?Je((function(){return s(e)})):s(e)}),[s,f]);return r.useLayoutEffect((function(){return u.listen(d)}),[u,d]),r.createElement(Ye,{basename:t,children:n,location:c.location,navigationType:c.action,navigator:u})}var et="undefined"!==typeof window&&"undefined"!==typeof window.document&&"undefined"!==typeof window.document.createElement,tt=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,nt=r.forwardRef((function(e,t){var n,i=e.onClick,a=e.relative,o=e.reloadDocument,u=e.replace,l=e.state,c=e.target,s=e.to,f=e.preventScrollReset,d=Qe(e,Ge),h=r.useContext(_e).basename,m=!1;if("string"===typeof s&&tt.test(s)&&(n=s,et))try{var p=new URL(window.location.href),v=s.startsWith("//")?new URL(p.protocol+s):new URL(s),g=re(v.pathname,h);v.origin===p.origin&&null!=g?s=g+v.search+v.hash:m=!0}catch(b){}var y=function(e,t){var n=(void 0===t?{}:t).relative;ke()||L(!1);var i=r.useContext(_e),a=i.basename,o=i.navigator,u=Ae(e,{relative:n}),l=u.hash,c=u.pathname,s=u.search,f=c;return"/"!==a&&(f="/"===c?a:ue([a,c])),o.createHref({pathname:f,search:s,hash:l})}(s,{relative:a}),_=function(e,t){var n=void 0===t?{}:t,i=n.target,a=n.replace,o=n.state,u=n.preventScrollReset,l=n.relative,c=Se(),s=xe(),f=Ae(e,{relative:l});return r.useCallback((function(t){if(function(e,t){return 0===e.button&&(!t||"_self"===t)&&!function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)}(t,i)){t.preventDefault();var n=void 0!==a?a:j(s)===j(f);c(e,{replace:n,state:o,preventScrollReset:u,relative:l})}}),[s,c,f,a,o,i,e,u,l])}(s,{replace:u,state:l,target:c,preventScrollReset:f,relative:a});return r.createElement("a",We({},d,{href:n||y,onClick:m||o?i:function(e){i&&i(e),e.defaultPrevented||_(e)},ref:t,target:c}))}));var rt=r.forwardRef((function(e,t){var n=e["aria-current"],i=void 0===n?"page":n,a=e.caseSensitive,o=void 0!==a&&a,u=e.className,l=void 0===u?"":u,c=e.end,s=void 0!==c&&c,f=e.style,d=e.to,h=e.children,m=Qe(e,Ke),p=Ae(d,{relative:m.relative}),v=xe(),g=r.useContext(ge),y=r.useContext(_e).navigator,_=y.encodeLocation?y.encodeLocation(p).pathname:p.pathname,b=v.pathname,w=g&&g.navigation&&g.navigation.location?g.navigation.location.pathname:null;o||(b=b.toLowerCase(),w=w?w.toLowerCase():null,_=_.toLowerCase());var D,k=b===_||!s&&b.startsWith(_)&&"/"===b.charAt(_.length),x=null!=w&&(w===_||!s&&w.startsWith(_)&&"/"===w.charAt(_.length)),C=k?i:void 0;D="function"===typeof l?l({isActive:k,isPending:x}):[l,k?"active":null,x?"pending":null].filter(Boolean).join(" ");var S="function"===typeof f?f({isActive:k,isPending:x}):f;return r.createElement(nt,We({},m,{"aria-current":C,className:D,ref:t,style:S,to:d}),"function"===typeof h?h({isActive:k,isPending:x}):h)}));var it,at;function ot(e){var t=r.useRef(Ze(e)),n=r.useRef(!1),i=xe(),a=r.useMemo((function(){return function(e,t){var n=Ze(e);if(t){var r,i=g(t.keys());try{var a=function(){var e=r.value;n.has(e)||t.getAll(e).forEach((function(t){n.append(e,t)}))};for(i.s();!(r=i.n()).done;)a()}catch(o){i.e(o)}finally{i.f()}}return n}(i.search,n.current?null:t.current)}),[i.search]),o=Se(),u=r.useCallback((function(e,t){var r=Ze("function"===typeof e?e(a):e);n.current=!0,o("?"+r,t)}),[o,a]);return[a,u]}(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher"})(it||(it={})),function(e){e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"}(at||(at={}));var ut;function lt(e,t,n){return(t=D(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ct(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function st(e){for(var t=1;t=100&&(t=n-n%10),e<100&&e>=10&&(t=n-n%5),e<10&&e>=1&&(t=n),e<1&&e>.01&&(t=Math.round(40*e)/40),ln(t||.001).replace(/\s/g,"")},sn=function(e){var t=e.match(/\d+/g),n=e.match(/[a-zA-Z]+/g);if(n&&t&&on.includes(n[0]))return lt({},n[0],t[0])},fn=function(e){var t=an.map((function(e){return e.short})).join("|"),n=new RegExp("\\d+[".concat(t,"]+"),"g"),r=(e.match(n)||[]).reduce((function(e,t){var n=sn(t);return n?st(st({},e),n):st({},e)}),{});return a().duration(r).asSeconds()},dn=function(e,t){return cn(e/(t?Xt:Jt))},hn=function(e,t){var n=(t||a()().toDate()).valueOf()/1e3,r=fn(e);return{start:n-r,end:n,step:dn(r),date:mn(t||a()().toDate())}},mn=function(e){return a().tz(e).utc().format(Kt)},pn=function(e){return a().tz(e).format(Kt)},vn=function(e){var t=Math.floor(e%1e3),n=Math.floor(e/1e3%60),r=Math.floor(e/1e3/60%60),i=Math.floor(e/1e3/3600%24),a=Math.floor(e/864e5),o=["d","h","m","s","ms"];return[a,i,r,n,t].map((function(e,t){return e?"".concat(e).concat(o[t]):""})).filter((function(e){return e})).join("")},gn=function(e){var t=a()(1e3*e);return t.isValid()?t.toDate():new Date},yn=[{title:"Last 5 minutes",duration:"5m"},{title:"Last 15 minutes",duration:"15m"},{title:"Last 30 minutes",duration:"30m",isDefault:!0},{title:"Last 1 hour",duration:"1h"},{title:"Last 3 hours",duration:"3h"},{title:"Last 6 hours",duration:"6h"},{title:"Last 12 hours",duration:"12h"},{title:"Last 24 hours",duration:"24h"},{title:"Last 2 days",duration:"2d"},{title:"Last 7 days",duration:"7d"},{title:"Last 30 days",duration:"30d"},{title:"Last 90 days",duration:"90d"},{title:"Last 180 days",duration:"180d"},{title:"Last 1 year",duration:"1y"},{title:"Yesterday",duration:"1d",until:function(){return a()().tz().subtract(1,"day").endOf("day").toDate()}},{title:"Today",duration:"1d",until:function(){return a()().tz().endOf("day").toDate()}}].map((function(e){return st({id:e.title.replace(/\s/g,"_").toLocaleLowerCase(),until:e.until?e.until:function(){return a()().tz().toDate()}},e)})),_n=function(e){var t,n=e.relativeTimeId,r=e.defaultDuration,i=e.defaultEndInput,a=null===(t=yn.find((function(e){return e.isDefault})))||void 0===t?void 0:t.id,o=n||Nt("g0.relative_time",a),u=yn.find((function(e){return e.id===o}));return{relativeTimeId:u?o:"none",duration:u?u.duration:r,endInput:u?u.until():i}},bn=function(e){var t=a()().tz(e);return"UTC".concat(t.format("Z"))},wn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=new RegExp(e,"i");return rn.reduce((function(n,r){var i=(r.match(/^(.*?)\//)||[])[1]||"unknown",a=bn(r),o=a.replace(/UTC|0/,""),u=r.replace(/[/_]/g," "),l={region:r,utc:a,search:"".concat(r," ").concat(a," ").concat(u," ").concat(o)},c=!e||e&&t.test(l.search);return c&&n[i]?n[i].push(l):c&&(n[i]=[l]),n}),{})},Dn=function(e){a().tz.setDefault(e)},kn=Ft("TIMEZONE")||a().tz.guess();Dn(kn);var xn,Cn=Nt("g0.range_input"),Sn=_n({defaultDuration:Cn||"1h",defaultEndInput:(xn=Nt("g0.end_input",a()().utc().format(Kt)),a()(xn).utcOffset(0,!0).toDate()),relativeTimeId:Cn?Nt("g0.relative_time","none"):void 0}),En=Sn.duration,An=Sn.endInput,Nn=Sn.relativeTimeId,Mn={duration:En,period:hn(En,An),relativeTime:Nn,timezone:kn};function Fn(e,t){switch(t.type){case"SET_DURATION":return st(st({},e),{},{duration:t.payload,period:hn(t.payload,gn(e.period.end)),relativeTime:"none"});case"SET_RELATIVE_TIME":return st(st({},e),{},{duration:t.payload.duration,period:hn(t.payload.duration,t.payload.until),relativeTime:t.payload.id});case"SET_PERIOD":var n=function(e){var t=e.to.valueOf()-e.from.valueOf();return vn(t)}(t.payload);return st(st({},e),{},{duration:n,period:hn(n,t.payload.to),relativeTime:"none"});case"RUN_QUERY":var r=_n({relativeTimeId:e.relativeTime,defaultDuration:e.duration,defaultEndInput:gn(e.period.end)}),i=r.duration,a=r.endInput;return st(st({},e),{},{period:hn(i,a)});case"RUN_QUERY_TO_NOW":return st(st({},e),{},{period:hn(e.duration)});case"SET_TIMEZONE":return Dn(t.payload),Mt("TIMEZONE",t.payload),st(st({},e),{},{timezone:t.payload});default:throw new Error}}var Tn=(0,r.createContext)({}),On=function(){return(0,r.useContext)(Tn).state},Pn=function(){return(0,r.useContext)(Tn).dispatch},In=function(e){var t=Ft(e);return t?JSON.parse(t):[]},Ln=function(){var e,t=(null===(e=(window.location.hash.split("?")[1]||"").match(/g\d+\.expr/g))||void 0===e?void 0:e.length)||1;return new Array(t>4?4:t).fill(1).map((function(e,t){return Nt("g".concat(t,".expr"),"")}))}(),Rn={query:Ln,queryHistory:Ln.map((function(e){return{index:0,values:[e]}})),autocomplete:Ft("AUTOCOMPLETE")||!1};function Bn(e,t){switch(t.type){case"SET_QUERY":return st(st({},e),{},{query:t.payload.map((function(e){return e}))});case"SET_QUERY_HISTORY":return function(e){var t=e.map((function(e){return e.values[e.index]})),n=In("QUERY_HISTORY");n[0]||(n[0]=[]);var r=n[0];t.forEach((function(e){!r.includes(e)&&e&&r.unshift(e),r.length>100&&r.shift()})),Mt("QUERY_HISTORY",JSON.stringify(n))}(t.payload),st(st({},e),{},{queryHistory:t.payload});case"SET_QUERY_HISTORY_BY_INDEX":return e.queryHistory.splice(t.payload.queryNumber,1,t.payload.value),st(st({},e),{},{queryHistory:e.queryHistory});case"TOGGLE_AUTOCOMPLETE":return Mt("AUTOCOMPLETE",!e.autocomplete),st(st({},e),{},{autocomplete:!e.autocomplete});default:throw new Error}}var zn=(0,r.createContext)({}),jn=function(){return(0,r.useContext)(zn).state},Hn=function(){return(0,r.useContext)(zn).dispatch},$n=function(){return Yt("svg",{viewBox:"0 0 74 24",fill:"currentColor",children:Yt("path",{d:"M6.12 10.48c.36.28.8.43 1.26.43h.05c.48 0 .96-.19 1.25-.44 1.5-1.28 5.88-5.29 5.88-5.29C15.73 4.1 12.46 3.01 7.43 3h-.06C2.33 3-.93 4.1.24 5.18c0 0 4.37 4 5.88 5.3Zm2.56 2.16c-.36.28-.8.44-1.26.45h-.04c-.46 0-.9-.17-1.26-.45-1.04-.88-4.74-4.22-6.12-5.5v1.94c0 .21.08.5.22.63l.07.06c1.05.96 4.55 4.16 5.83 5.25.36.28.8.43 1.26.44h.04c.49-.02.96-.2 1.26-.44 1.3-1.11 4.94-4.45 5.88-5.31.15-.14.23-.42.23-.63V7.15a454.94 454.94 0 0 1-6.11 5.5Zm-1.26 4.99c.46 0 .9-.16 1.26-.44a454.4 454.4 0 0 0 6.1-5.5v1.94c0 .2-.07.48-.22.62-.94.87-4.57 4.2-5.88 5.3-.3.26-.77.44-1.26.45h-.04c-.46 0-.9-.16-1.26-.44-1.2-1.02-4.38-3.92-5.62-5.06l-.28-.25c-.14-.14-.22-.42-.22-.62v-1.94c1.38 1.26 5.08 4.6 6.12 5.5.36.28.8.43 1.26.44h.04ZM35 5l-5.84 14.46h-2.43L20.89 5h2.16a.9.9 0 0 1 .9.61l3.41 8.82a18.8 18.8 0 0 1 .62 2.02 19.44 19.44 0 0 1 .57-2.02l3.39-8.82c.05-.15.16-.3.31-.42a.9.9 0 0 1 .58-.19H35Zm17.18 0v14.46H49.8v-9.34c0-.37.02-.78.06-1.21l-4.37 8.21c-.21.4-.53.59-.95.59h-.38c-.43 0-.75-.2-.95-.59L38.8 8.88a22.96 22.96 0 0 1 .07 1.24v9.34H36.5V5h2.03l.3.01c.1 0 .17.02.24.05.07.03.13.07.19.13a1 1 0 0 1 .17.24l4.33 8.03a16.97 16.97 0 0 1 .6 1.36 14.34 14.34 0 0 1 .6-1.38l4.28-8.01c.05-.1.1-.18.17-.24.06-.06.12-.1.19-.13a.9.9 0 0 1 .24-.05l.3-.01h2.04Zm8.88 13.73a4.5 4.5 0 0 0 1.82-.35 3.96 3.96 0 0 0 2.22-2.47c.2-.57.3-1.19.3-1.85V5.31h1.02v8.75c0 .78-.12 1.51-.37 2.19a4.88 4.88 0 0 1-2.76 2.95c-.66.29-1.4.43-2.23.43-.82 0-1.57-.14-2.24-.43a5.01 5.01 0 0 1-2.75-2.95 6.37 6.37 0 0 1-.37-2.19V5.31h1.03v8.74c0 .66.1 1.28.3 1.85a3.98 3.98 0 0 0 2.21 2.47c.53.24 1.14.36 1.82.36Zm10.38.73h-1.03V5.31h1.03v14.15Z"})})},Yn=function(){return Yt("svg",{viewBox:"0 0 85 38",fill:"currentColor",children:[Yt("path",{d:"M11.12 10.48c.36.28.8.43 1.26.43h.05c.48 0 .96-.19 1.25-.44 1.5-1.28 5.88-5.29 5.88-5.29 1.17-1.09-2.1-2.17-7.13-2.18h-.06c-5.04 0-8.3 1.1-7.13 2.18 0 0 4.37 4 5.88 5.3Zm2.56 2.16c-.36.28-.8.44-1.26.45h-.04c-.46 0-.9-.17-1.26-.45-1.04-.88-4.74-4.22-6.12-5.5v1.94c0 .21.08.5.22.63l.07.06c1.05.96 4.55 4.16 5.83 5.25.36.28.8.43 1.26.44h.04c.49-.02.96-.2 1.26-.44 1.3-1.11 4.94-4.45 5.88-5.31.15-.14.23-.42.23-.63V7.15a455.13 455.13 0 0 1-6.11 5.5Zm-1.26 4.99c.46 0 .9-.16 1.26-.44 2.05-1.82 4.09-3.65 6.1-5.5v1.94c0 .2-.07.48-.22.62-.94.87-4.57 4.2-5.88 5.3-.3.26-.77.44-1.26.45h-.04c-.46 0-.9-.16-1.26-.44-1.2-1.02-4.38-3.92-5.62-5.06l-.28-.25c-.14-.14-.22-.42-.22-.62v-1.94c1.38 1.26 5.08 4.6 6.12 5.5.36.28.8.43 1.26.44h.04ZM40 5l-5.84 14.46h-2.43L25.89 5h2.16a.9.9 0 0 1 .9.61l3.41 8.82a18.8 18.8 0 0 1 .62 2.02 19.44 19.44 0 0 1 .57-2.02l3.39-8.82c.05-.15.16-.3.31-.42a.9.9 0 0 1 .58-.19H40Zm17.18 0v14.46H54.8v-9.34c0-.37.02-.78.06-1.21l-4.37 8.21c-.21.4-.53.59-.95.59h-.38c-.43 0-.75-.2-.95-.59L43.8 8.88a22.96 22.96 0 0 1 .07 1.24v9.34H41.5V5h2.03l.3.01c.1 0 .17.02.24.05.07.03.13.07.19.13a1 1 0 0 1 .17.24l4.33 8.03a16.97 16.97 0 0 1 .6 1.36 14.34 14.34 0 0 1 .6-1.38l4.28-8.01c.05-.1.1-.18.17-.24.06-.06.12-.1.19-.13a.9.9 0 0 1 .24-.05l.3-.01h2.04Zm8.88 13.73a4.5 4.5 0 0 0 1.82-.35 3.96 3.96 0 0 0 2.22-2.47c.2-.57.3-1.19.3-1.85V5.31h1.02v8.75c0 .78-.12 1.51-.37 2.19a4.88 4.88 0 0 1-2.76 2.95c-.66.29-1.4.43-2.23.43-.82 0-1.57-.14-2.24-.43a5.01 5.01 0 0 1-2.75-2.95 6.37 6.37 0 0 1-.37-2.19V5.31h1.03v8.74c0 .66.1 1.28.3 1.85a3.98 3.98 0 0 0 2.21 2.47c.53.24 1.14.36 1.82.36Zm10.38.73h-1.03V5.31h1.03v14.15ZM1.73 36v-5.17l-.67-.07a.6.6 0 0 1-.21-.1.23.23 0 0 1-.08-.18v-.44h.96v-.59c0-.34.05-.65.14-.92a1.79 1.79 0 0 1 1.08-1.11 2.45 2.45 0 0 1 1.62-.02l-.03.53c0 .1-.06.15-.16.16H4c-.18 0-.35.03-.5.08a.95.95 0 0 0-.39.23c-.1.11-.19.25-.25.43-.05.18-.08.4-.08.65v.56h1.75v.78H2.8V36H1.73Zm6.17-6.17c.45 0 .85.07 1.2.22a2.57 2.57 0 0 1 1.5 1.62c.13.38.2.81.2 1.29s-.07.91-.2 1.3a2.57 2.57 0 0 1-1.49 1.61c-.36.14-.76.21-1.2.21-.45 0-.86-.07-1.22-.21a2.57 2.57 0 0 1-1.5-1.62c-.12-.38-.19-.81-.19-1.3 0-.47.07-.9.2-1.28a2.57 2.57 0 0 1 1.5-1.62c.35-.15.76-.22 1.2-.22Zm0 5.42c.6 0 1.05-.2 1.35-.6.3-.4.44-.97.44-1.69s-.15-1.28-.44-1.69c-.3-.4-.75-.6-1.35-.6-.3 0-.57.05-.8.15-.22.1-.4.26-.56.45-.15.2-.26.44-.33.73-.08.28-.11.6-.11.96 0 .72.15 1.29.44 1.69.3.4.76.6 1.36.6Zm5.26-4.11c.2-.42.43-.74.71-.97.28-.24.62-.36 1.03-.36.13 0 .25.02.36.05.12.02.23.07.32.13l-.08.8c-.02.1-.08.15-.18.15l-.24-.04a1.7 1.7 0 0 0-.88.05c-.15.05-.29.14-.4.25-.12.1-.23.24-.32.4-.1.17-.18.35-.26.56V36h-1.07v-6.08h.61c.12 0 .2.02.24.07.05.04.08.12.1.23l.06.92Zm13.73-3.82L23.39 36h-1.46l-3.5-8.68h1.29a.54.54 0 0 1 .54.37l2.04 5.3a11.31 11.31 0 0 1 .37 1.21 11.65 11.65 0 0 1 .35-1.22l2.03-5.29c.03-.1.1-.18.19-.25.1-.08.21-.12.35-.12h1.3Zm2.2 2.52V36H27.6v-6.16h1.49Zm.2-1.79c0 .13-.02.25-.08.36a1 1 0 0 1-.51.5.96.96 0 0 1-.73 0 1.02 1.02 0 0 1-.5-.5.96.96 0 0 1 0-.73.93.93 0 0 1 .86-.58.9.9 0 0 1 .37.08c.12.05.22.11.3.2a.94.94 0 0 1 .3.67Zm5.72 3.1a.68.68 0 0 1-.13.13c-.04.03-.1.05-.18.05a.42.42 0 0 1-.22-.07 3.95 3.95 0 0 0-.62-.31c-.14-.05-.3-.07-.51-.07-.26 0-.5.04-.69.14-.2.1-.36.23-.49.4-.13.18-.22.4-.29.64-.06.25-.1.53-.1.85 0 .33.04.62.1.88.08.25.18.47.32.64.13.18.29.3.48.4.18.09.4.13.63.13a1.6 1.6 0 0 0 .94-.27l.26-.2a.4.4 0 0 1 .25-.09.3.3 0 0 1 .27.14l.43.54a2.76 2.76 0 0 1-1.77.96c-.22.03-.43.05-.65.05a2.57 2.57 0 0 1-1.96-.83c-.25-.28-.45-.6-.6-1-.14-.4-.21-.85-.21-1.35 0-.45.06-.87.2-1.25a2.61 2.61 0 0 1 1.51-1.67c.37-.16.8-.24 1.28-.24.46 0 .86.07 1.2.22.35.15.66.36.94.64l-.4.54Zm3.43 4.95c-.54 0-.95-.15-1.24-.45-.28-.3-.42-.73-.42-1.26v-3.44h-.63a.29.29 0 0 1-.2-.07c-.06-.06-.09-.13-.09-.24v-.59l.99-.16.31-1.68a.33.33 0 0 1 .12-.18.34.34 0 0 1 .21-.07h.77v1.94h1.64v1.05h-1.64v3.34c0 .2.05.34.14.45.1.1.22.16.39.16a.73.73 0 0 0 .39-.1l.12-.07a.2.2 0 0 1 .11-.03c.05 0 .08.01.11.03l.09.1.44.72c-.21.18-.46.32-.74.4-.28.1-.57.15-.87.15Zm5.09-6.35c.46 0 .87.07 1.24.22a2.7 2.7 0 0 1 1.58 1.63c.14.39.22.83.22 1.31 0 .49-.08.93-.22 1.32-.14.4-.35.73-.62 1-.26.28-.58.49-.96.64-.37.15-.78.22-1.24.22a3.4 3.4 0 0 1-1.25-.22 2.71 2.71 0 0 1-1.59-1.64 3.8 3.8 0 0 1-.21-1.32c0-.48.07-.92.21-1.31a2.75 2.75 0 0 1 1.58-1.63c.38-.15.8-.22 1.26-.22Zm0 5.2c.51 0 .89-.17 1.13-.52.25-.34.38-.84.38-1.5a2.6 2.6 0 0 0-.38-1.53c-.24-.34-.62-.52-1.13-.52-.52 0-.9.18-1.16.53-.25.35-.37.85-.37 1.51s.12 1.17.37 1.51c.25.35.64.52 1.16.52Zm5.56-4.04c.2-.37.42-.65.69-.86.26-.21.57-.32.94-.32.28 0 .5.06.68.19l-.1 1.1a.3.3 0 0 1-.09.16.24.24 0 0 1-.15.04 1.8 1.8 0 0 1-.27-.03 2.01 2.01 0 0 0-.34-.03c-.16 0-.3.03-.44.08a1.1 1.1 0 0 0-.34.2c-.1.1-.2.2-.27.33-.08.13-.15.27-.22.44V36H47.7v-6.16h.87c.15 0 .26.03.31.09.06.05.1.15.13.29l.09.7Zm4.62-1.07V36h-1.49v-6.16h1.49Zm.2-1.79c0 .13-.02.25-.07.36a1 1 0 0 1-.51.5.96.96 0 0 1-.74 0 1.02 1.02 0 0 1-.5-.5.96.96 0 0 1 0-.73.93.93 0 0 1 .86-.58.9.9 0 0 1 .38.08c.11.05.21.11.3.2a.94.94 0 0 1 .28.67Zm4.56 5.32a7.8 7.8 0 0 0-1.08.12c-.29.05-.52.12-.7.2a.92.92 0 0 0-.38.3.64.64 0 0 0-.11.36c0 .26.07.45.23.56.15.11.35.17.6.17.3 0 .57-.06.79-.17.22-.1.44-.28.65-.5v-1.04Zm-3.4-2.67c.71-.65 1.57-.97 2.56-.97.36 0 .68.06.97.18a1.99 1.99 0 0 1 1.16 1.24c.1.3.16.61.16.96V36h-.67a.7.7 0 0 1-.33-.06c-.07-.04-.13-.13-.18-.26l-.13-.44c-.16.14-.3.26-.46.37a2.8 2.8 0 0 1-.97.43 2.77 2.77 0 0 1-1.32-.05 1.62 1.62 0 0 1-.57-.31 1.41 1.41 0 0 1-.38-.53 1.85 1.85 0 0 1-.05-1.18c.05-.16.14-.3.25-.45.12-.14.28-.27.46-.4a3 3 0 0 1 .7-.32 9.19 9.19 0 0 1 2.2-.33v-.36c0-.41-.09-.71-.26-.91-.18-.2-.43-.3-.76-.3a1.84 1.84 0 0 0-1.02.28l-.33.18c-.1.06-.2.09-.32.09-.1 0-.2-.03-.27-.08a.72.72 0 0 1-.17-.2l-.26-.47Zm11.49 4.32V36h-4.88v-8.6h1.16v7.62h3.72Zm3.16-5.2c.44 0 .84.08 1.2.23a2.57 2.57 0 0 1 1.49 1.62c.13.38.2.81.2 1.29s-.07.91-.2 1.3a2.57 2.57 0 0 1-1.49 1.61c-.36.14-.76.21-1.2.21-.45 0-.85-.07-1.21-.21a2.57 2.57 0 0 1-1.5-1.62c-.13-.38-.2-.81-.2-1.3 0-.47.07-.9.2-1.28.14-.39.33-.72.59-1 .25-.26.55-.47.9-.62.37-.15.77-.22 1.22-.22Zm0 5.43c.6 0 1.05-.2 1.34-.6.3-.4.45-.97.45-1.69s-.15-1.28-.45-1.69c-.3-.4-.74-.6-1.34-.6-.3 0-.57.05-.8.15-.22.1-.4.26-.56.45-.15.2-.26.44-.34.73-.07.28-.1.6-.1.96 0 .72.14 1.29.44 1.69.3.4.75.6 1.36.6Zm6.33-2.22c.22 0 .4-.03.57-.09.16-.06.3-.14.41-.25.12-.11.2-.24.26-.39.05-.15.08-.31.08-.5 0-.37-.11-.66-.34-.88-.23-.22-.55-.33-.98-.33-.43 0-.76.1-.99.33-.22.22-.34.51-.34.89 0 .18.03.34.09.5a1.1 1.1 0 0 0 .67.63c.16.06.35.09.57.09Zm1.93 3.3a.51.51 0 0 0-.13-.36.84.84 0 0 0-.34-.22 8.57 8.57 0 0 0-1.73-.2 7.5 7.5 0 0 1-.62-.05c-.23.1-.41.23-.56.4a.8.8 0 0 0-.1.92c.07.12.18.22.32.3.14.1.32.16.54.21a3.5 3.5 0 0 0 1.55 0c.23-.05.42-.12.57-.22.16-.1.29-.21.37-.34a.8.8 0 0 0 .13-.44Zm1.08-6.17v.4c0 .13-.08.21-.25.25l-.69.09c.14.26.2.56.2.88a1.86 1.86 0 0 1-1.36 1.82 3.07 3.07 0 0 1-1.72.04c-.12.08-.22.16-.29.25a.44.44 0 0 0-.1.27c0 .15.06.26.17.33.12.08.28.13.47.16a5 5 0 0 0 .66.06 16.56 16.56 0 0 1 1.5.13c.26.05.48.12.67.22.19.1.34.24.46.41.12.18.18.4.18.69 0 .26-.07.5-.2.75s-.31.46-.56.65c-.24.2-.54.34-.9.46a4.57 4.57 0 0 1-2.36.04c-.33-.09-.6-.2-.82-.36a1.56 1.56 0 0 1-.5-.51c-.1-.2-.16-.4-.16-.6 0-.3.1-.56.28-.77.19-.2.45-.37.77-.5a1.15 1.15 0 0 1-.43-.32.88.88 0 0 1-.15-.54c0-.09.01-.18.04-.27.04-.1.08-.2.15-.28a1.55 1.55 0 0 1 .58-.5c-.3-.16-.53-.39-.7-.66-.17-.28-.25-.6-.25-.97 0-.3.05-.57.16-.8.12-.25.28-.46.48-.63.2-.17.45-.3.73-.4a3 3 0 0 1 2.3.21h1.64Zm4.65.76a.24.24 0 0 1-.23.14.42.42 0 0 1-.2-.07 3.59 3.59 0 0 0-.67-.3 1.8 1.8 0 0 0-1.03 0c-.14.05-.27.11-.37.2a.87.87 0 0 0-.23.27.75.75 0 0 0-.08.35c0 .15.04.28.13.39.1.1.21.19.36.27.15.07.32.14.5.2a13.63 13.63 0 0 1 1.16.4c.2.08.36.18.5.3a1.33 1.33 0 0 1 .5 1.07 2 2 0 0 1-.15.78c-.1.24-.25.44-.45.62-.2.17-.43.3-.72.4a3.1 3.1 0 0 1-2.14-.05 2.97 2.97 0 0 1-.87-.53l.25-.41c.04-.05.07-.1.12-.12a.3.3 0 0 1 .17-.04.4.4 0 0 1 .22.08l.3.19a1.91 1.91 0 0 0 1.03.27c.2 0 .38-.03.54-.08.16-.06.29-.13.4-.22a.96.96 0 0 0 .3-.7c0-.17-.05-.31-.14-.42-.09-.11-.2-.2-.36-.28a2.6 2.6 0 0 0-.5-.2l-.59-.19c-.2-.06-.39-.14-.58-.22a2.14 2.14 0 0 1-.5-.3 1.45 1.45 0 0 1-.36-.46c-.1-.19-.14-.41-.14-.67a1.6 1.6 0 0 1 .57-1.23c.18-.16.4-.3.68-.39.26-.1.57-.14.91-.14a2.84 2.84 0 0 1 1.9.7l-.23.4Z"}),Yt("defs",{children:Yt("path",{d:"M0 0h85v38H0z"})})]})},Un=function(){return Yt("svg",{viewBox:"0 0 15 17",fill:"currentColor",children:Yt("path",{d:"M6.11767 7.47586C6.47736 7.75563 6.91931 7.90898 7.37503 7.91213H7.42681C7.90756 7.90474 8.38832 7.71987 8.67677 7.46846C10.1856 6.18921 14.5568 2.18138 14.5568 2.18138C15.7254 1.09438 12.4637 0.00739 7.42681 0H7.36764C2.3308 0.00739 -0.930935 1.09438 0.237669 2.18138C0.237669 2.18138 4.60884 6.18921 6.11767 7.47586ZM8.67677 9.64243C8.31803 9.92483 7.87599 10.0808 7.41941 10.0861H7.37503C6.91845 10.0808 6.47641 9.92483 6.11767 9.64243C5.0822 8.75513 1.38409 5.42018 0.000989555 4.14832V6.07829C0.000989555 6.29273 0.0823481 6.57372 0.222877 6.70682L0.293316 6.7712L0.293344 6.77122C1.33784 7.72579 4.83903 10.9255 6.11767 12.0161C6.47641 12.2985 6.91845 12.4545 7.37503 12.4597H7.41941C7.90756 12.4449 8.38092 12.2601 8.67677 12.0161C9.9859 10.9069 13.6249 7.57198 14.5642 6.70682C14.7121 6.57372 14.7861 6.29273 14.7861 6.07829V4.14832C12.7662 5.99804 10.7297 7.82949 8.67677 9.64243ZM7.41941 14.6263C7.87513 14.6232 8.31708 14.4698 8.67677 14.19C10.7298 12.3746 12.7663 10.5407 14.7861 8.68853V10.6259C14.7861 10.8329 14.7121 11.1139 14.5642 11.247C13.6249 12.1196 9.9859 15.4471 8.67677 16.5563C8.38092 16.8077 7.90756 16.9926 7.41941 17H7.37503C6.91931 16.9968 6.47736 16.8435 6.11767 16.5637C4.91427 15.5373 1.74219 12.6364 0.502294 11.5025C0.393358 11.4029 0.299337 11.3169 0.222877 11.247C0.0823481 11.1139 0.000989555 10.8329 0.000989555 10.6259V8.68853C1.38409 9.95303 5.0822 13.2953 6.11767 14.1827C6.47641 14.4651 6.91845 14.6211 7.37503 14.6263H7.41941Z"})})},Vn=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Yt("path",{d:"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z"})})},qn=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Yt("path",{d:"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"})})},Wn=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Yt("path",{d:"M12 5V2L8 6l4 4V7c3.31 0 6 2.69 6 6 0 2.97-2.17 5.43-5 5.91v2.02c3.95-.49 7-3.85 7-7.93 0-4.42-3.58-8-8-8zm-6 8c0-1.65.67-3.15 1.76-4.24L6.34 7.34C4.9 8.79 4 10.79 4 13c0 4.08 3.05 7.44 7 7.93v-2.02c-2.83-.48-5-2.94-5-5.91z"})})},Qn=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Yt("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"})})},Zn=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Yt("path",{d:"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"})})},Gn=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Yt("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"})})},Kn=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Yt("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"})})},Jn=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Yt("path",{d:"M12 6v3l4-4-4-4v3c-4.42 0-8 3.58-8 8 0 1.57.46 3.03 1.24 4.26L6.7 14.8c-.45-.83-.7-1.79-.7-2.8 0-3.31 2.69-6 6-6zm6.76 1.74L17.3 9.2c.44.84.7 1.79.7 2.8 0 3.31-2.69 6-6 6v-3l-4 4 4 4v-3c4.42 0 8-3.58 8-8 0-1.57-.46-3.03-1.24-4.26z"})})},Xn=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Yt("path",{d:"M7.41 8.59 12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z"})})},er=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Yt("path",{d:"m7 10 5 5 5-5z"})})},tr=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:[Yt("path",{d:"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),Yt("path",{d:"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z"})]})},nr=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Yt("path",{d:"M20 3h-1V1h-2v2H7V1H5v2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 18H4V8h16v13z"})})},rr=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Yt("path",{d:"m22 5.72-4.6-3.86-1.29 1.53 4.6 3.86L22 5.72zM7.88 3.39 6.6 1.86 2 5.71l1.29 1.53 4.59-3.85zM12.5 8H11v6l4.75 2.85.75-1.23-4-2.37V8zM12 4c-4.97 0-9 4.03-9 9s4.02 9 9 9c4.97 0 9-4.03 9-9s-4.03-9-9-9zm0 16c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z"})})},ir=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Yt("path",{d:"M20 5H4c-1.1 0-1.99.9-1.99 2L2 17c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm-9 3h2v2h-2V8zm0 3h2v2h-2v-2zM8 8h2v2H8V8zm0 3h2v2H8v-2zm-1 2H5v-2h2v2zm0-3H5V8h2v2zm9 7H8v-2h8v2zm0-4h-2v-2h2v2zm0-3h-2V8h2v2zm3 3h-2v-2h2v2zm0-3h-2V8h2v2z"})})},ar=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Yt("path",{d:"M8 5v14l11-7z"})})},or=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Yt("path",{d:"m10 16.5 6-4.5-6-4.5v9zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"})})},ur=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Yt("path",{d:"m3.5 18.49 6-6.01 4 4L22 6.92l-1.41-1.41-7.09 7.97-4-4L2 16.99z"})})},lr=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Yt("path",{d:"M10 10.02h5V21h-5zM17 21h3c1.1 0 2-.9 2-2v-9h-5v11zm3-18H5c-1.1 0-2 .9-2 2v3h19V5c0-1.1-.9-2-2-2zM3 19c0 1.1.9 2 2 2h3V10H3v9z"})})},cr=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Yt("path",{d:"M9.4 16.6 4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0 4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z"})})},sr=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Yt("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z"})})},fr=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Yt("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"})})},dr=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Yt("path",{d:"M19 13H5v-2h14v2z"})})},hr=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Yt("path",{d:"M8.9999 14.7854L18.8928 4.8925C19.0803 4.70497 19.3347 4.59961 19.5999 4.59961C19.8651 4.59961 20.1195 4.70497 20.307 4.8925L21.707 6.2925C22.0975 6.68303 22.0975 7.31619 21.707 7.70672L9.70701 19.7067C9.31648 20.0972 8.68332 20.0972 8.2928 19.7067L2.6928 14.1067C2.50526 13.9192 2.3999 13.6648 2.3999 13.3996C2.3999 13.1344 2.50526 12.88 2.6928 12.6925L4.0928 11.2925C4.48332 10.902 5.11648 10.902 5.50701 11.2925L8.9999 14.7854Z"})})},mr=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Yt("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"})})},pr=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Yt("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z"})})},vr=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Yt("path",{d:"M19 9l1.25-2.75L23 5l-2.75-1.25L19 1l-1.25 2.75L15 5l2.75 1.25L19 9zm-7.5.5L9 4 6.5 9.5 1 12l5.5 2.5L9 20l2.5-5.5L17 12l-5.5-2.5zM19 15l-1.25 2.75L15 19l2.75 1.25L19 23l1.25-2.75L23 19l-2.75-1.25L19 15z"})})},gr=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Yt("path",{d:"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"})})},yr=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Yt("path",{d:"M20 9H4v2h16V9zM4 15h16v-2H4v2z"})})},_r=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Yt("path",{d:"M23 8c0 1.1-.9 2-2 2-.18 0-.35-.02-.51-.07l-3.56 3.55c.05.16.07.34.07.52 0 1.1-.9 2-2 2s-2-.9-2-2c0-.18.02-.36.07-.52l-2.55-2.55c-.16.05-.34.07-.52.07s-.36-.02-.52-.07l-4.55 4.56c.05.16.07.33.07.51 0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2c.18 0 .35.02.51.07l4.56-4.55C8.02 9.36 8 9.18 8 9c0-1.1.9-2 2-2s2 .9 2 2c0 .18-.02.36-.07.52l2.55 2.55c.16-.05.34-.07.52-.07s.36.02.52.07l3.55-3.56C19.02 8.35 19 8.18 19 8c0-1.1.9-2 2-2s2 .9 2 2z"})})},br=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:[Yt("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M21 5C19.89 4.65 18.67 4.5 17.5 4.5C15.55 4.5 13.45 4.9 12 6C10.55 4.9 8.45 4.5 6.5 4.5C5.33 4.5 4.11 4.65 3 5C2.25 5.25 1.6 5.55 1 6V20.6C1 20.85 1.25 21.1 1.5 21.1C1.6 21.1 1.65 21.1 1.75 21.05C3.15 20.3 4.85 20 6.5 20C8.2 20 10.65 20.65 12 21.5C13.35 20.65 15.8 20 17.5 20C19.15 20 20.85 20.3 22.25 21.05C22.35 21.1 22.4 21.1 22.5 21.1C22.75 21.1 23 20.85 23 20.6V6C22.4 5.55 21.75 5.25 21 5ZM21 18.5C19.9 18.15 18.7 18 17.5 18C15.8 18 13.35 18.65 12 19.5C10.65 18.65 8.2 18 6.5 18C5.3 18 4.1 18.15 3 18.5V7C4.1 6.65 5.3 6.5 6.5 6.5C8.2 6.5 10.65 7.15 12 8C13.35 7.15 15.8 6.5 17.5 6.5C18.7 6.5 19.9 6.65 21 7V18.5Z"}),Yt("path",{d:"M17.5 10.5C18.38 10.5 19.23 10.59 20 10.76V9.24C19.21 9.09 18.36 9 17.5 9C15.8 9 14.26 9.29 13 9.83V11.49C14.13 10.85 15.7 10.5 17.5 10.5ZM13 12.49V14.15C14.13 13.51 15.7 13.16 17.5 13.16C18.38 13.16 19.23 13.25 20 13.42V11.9C19.21 11.75 18.36 11.66 17.5 11.66C15.8 11.66 14.26 11.96 13 12.49ZM17.5 14.33C15.8 14.33 14.26 14.62 13 15.16V16.82C14.13 16.18 15.7 15.83 17.5 15.83C18.38 15.83 19.23 15.92 20 16.09V14.57C19.21 14.41 18.36 14.33 17.5 14.33Z"}),Yt("path",{d:"M6.5 10.5C5.62 10.5 4.77 10.59 4 10.76V9.24C4.79 9.09 5.64 9 6.5 9C8.2 9 9.74 9.29 11 9.83V11.49C9.87 10.85 8.3 10.5 6.5 10.5ZM11 12.49V14.15C9.87 13.51 8.3 13.16 6.5 13.16C5.62 13.16 4.77 13.25 4 13.42V11.9C4.79 11.75 5.64 11.66 6.5 11.66C8.2 11.66 9.74 11.96 11 12.49ZM6.5 14.33C8.2 14.33 9.74 14.62 11 15.16V16.82C9.87 16.18 8.3 15.83 6.5 15.83C5.62 15.83 4.77 15.92 4 16.09V14.57C4.79 14.41 5.64 14.33 6.5 14.33Z"})]})},wr=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Yt("path",{d:"M12 2C6.49 2 2 6.49 2 12s4.49 10 10 10 10-4.49 10-10S17.51 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm3-8c0 1.66-1.34 3-3 3s-3-1.34-3-3 1.34-3 3-3 3 1.34 3 3z"})})},Dr=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Yt("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M12 2C6.48 2 2 6.48 2 12C2 17.52 6.48 22 12 22C17.52 22 22 17.52 22 12C22 6.48 17.52 2 12 2ZM12 6C9.79 6 8 7.79 8 10H10C10 8.9 10.9 8 12 8C13.1 8 14 8.9 14 10C14 10.8792 13.4202 11.3236 12.7704 11.8217C11.9421 12.4566 11 13.1787 11 15H13C13 13.9046 13.711 13.2833 14.4408 12.6455C15.21 11.9733 16 11.2829 16 10C16 7.79 14.21 6 12 6ZM13 16V18H11V16H13Z"})})},kr=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Yt("path",{d:"M4 20h16c1.1 0 2-.9 2-2s-.9-2-2-2H4c-1.1 0-2 .9-2 2s.9 2 2 2zm0-3h2v2H4v-2zM2 6c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2s-.9-2-2-2H4c-1.1 0-2 .9-2 2zm4 1H4V5h2v2zm-2 7h16c1.1 0 2-.9 2-2s-.9-2-2-2H4c-1.1 0-2 .9-2 2s.9 2 2 2zm0-3h2v2H4v-2z"})})},xr=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Yt("path",{d:"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"})})},Cr=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Yt("path",{d:"M3 17v2h6v-2H3zM3 5v2h10V5H3zm10 16v-2h8v-2h-8v-2h-2v6h2zM7 9v2H3v2h4v2h2V9H7zm14 4v-2H11v2h10zm-6-4h2V7h4V5h-4V3h-2v6z"})})},Sr=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Yt("path",{d:"M7 20h4c0 1.1-.9 2-2 2s-2-.9-2-2zm-2-1h8v-2H5v2zm11.5-9.5c0 3.82-2.66 5.86-3.77 6.5H5.27c-1.11-.64-3.77-2.68-3.77-6.5C1.5 5.36 4.86 2 9 2s7.5 3.36 7.5 7.5zm4.87-2.13L20 8l1.37.63L22 10l.63-1.37L24 8l-1.37-.63L22 6l-.63 1.37zM19 6l.94-2.06L22 3l-2.06-.94L19 0l-.94 2.06L16 3l2.06.94L19 6z"})})},Er=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Yt("path",{d:"M3 14h4v-4H3v4zm0 5h4v-4H3v4zM3 9h4V5H3v4zm5 5h13v-4H8v4zm0 5h13v-4H8v4zM8 5v4h13V5H8z"})})},Ar=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Yt("path",{d:"m22 9.24-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.63-7.03L22 9.24zM12 15.4l-3.76 2.27 1-4.28-3.32-2.88 4.38-.38L12 6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28L12 15.4z"})})},Nr=function(){return Yt("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:Yt("path",{d:"M12 17.27 18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"})})},Mr=n(123),Fr=n.n(Mr);function Tr(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var Or=["to","isNavLink","children"],Pr=function(e){var t=e.to,n=e.isNavLink,r=e.children,i=Tr(e,Or);return n?Yt(rt,st(st({to:t},i),{},{children:r})):Yt("div",st(st({},i),{},{children:r}))},Ir=function(e){var t,n=e.activeItem,r=e.item,i=e.color,a=void 0===i?It("color-primary"):i,o=e.activeNavRef,u=e.onChange,l=e.isNavLink;return Yt(Pr,{className:Fr()(lt({"vm-tabs-item":!0,"vm-tabs-item_active":n===r.value},r.className||"",r.className)),isNavLink:l,to:r.value,style:{color:a},onClick:(t=r.value,function(){u&&u(t)}),ref:n===r.value?o:void 0,children:[r.icon&&Yt("div",{className:Fr()({"vm-tabs-item__icon":!0,"vm-tabs-item__icon_single":!r.label}),children:r.icon}),r.label]})},Lr="undefined"!==typeof window?r.useLayoutEffect:r.useEffect;var Rr=function(e,t,n,i){var a=(0,r.useRef)(t);Lr((function(){a.current=t}),[t]),(0,r.useEffect)((function(){var t,r=null!==(t=null===n||void 0===n?void 0:n.current)&&void 0!==t?t:window;if(r&&r.addEventListener){var o=function(e){return a.current(e)};return r.addEventListener(e,o,i),function(){r.removeEventListener(e,o,i)}}}),[e,n,i])},Br=function(){var e=v((0,r.useState)({width:0,height:0}),2),t=e[0],n=e[1],i=function(){n({width:window.innerWidth,height:window.innerHeight})};return Rr("resize",i),Lr(i,[]),t},zr=function(e){var t=e.activeItem,n=e.items,i=e.color,a=void 0===i?It("color-primary"):i,o=e.onChange,u=e.indicatorPlacement,l=void 0===u?"bottom":u,c=e.isNavLink,s=Br(),f=(0,r.useRef)(null),d=v((0,r.useState)({left:0,width:0,bottom:0}),2),h=d[0],m=d[1];return(0,r.useEffect)((function(){var e;if((null===(e=f.current)||void 0===e?void 0:e.base)instanceof HTMLElement){var t=f.current.base,n=t.offsetLeft,r=t.offsetWidth,i=t.offsetHeight;m({left:n,width:r,bottom:"top"===l?i-2:0})}}),[s,t,f,n]),Yt("div",{className:"vm-tabs",children:[n.map((function(e){return Yt(Ir,{activeItem:t,item:e,onChange:o,color:a,activeNavRef:f,isNavLink:c},e.value)})),Yt("div",{className:"vm-tabs__indicator",style:st(st({},h),{},{borderColor:a})})]})},jr=[{value:"chart",icon:Yt(ur,{}),label:"Graph",prometheusCode:0},{value:"code",icon:Yt(cr,{}),label:"JSON",prometheusCode:3},{value:"table",icon:Yt(lr,{}),label:"Table",prometheusCode:1}],Hr=function(){var e=Qr().displayType,t=Zr();return Yt(zr,{activeItem:e,items:jr,onChange:function(n){var r;t({type:"SET_DISPLAY_TYPE",payload:null!==(r=n)&&void 0!==r?r:e})}})},$r=Nt("g0.tab",0),Yr=jr.find((function(e){return e.prometheusCode===+$r||e.value===$r})),Ur=Ft("SERIES_LIMITS"),Vr={displayType:(null===Yr||void 0===Yr?void 0:Yr.value)||"chart",nocache:!1,isTracingEnabled:!1,seriesLimits:Ur?JSON.parse(Ur):St,tableCompact:Ft("TABLE_COMPACT")||!1};function qr(e,t){switch(t.type){case"SET_DISPLAY_TYPE":return st(st({},e),{},{displayType:t.payload});case"SET_SERIES_LIMITS":return Mt("SERIES_LIMITS",JSON.stringify(t.payload)),st(st({},e),{},{seriesLimits:t.payload});case"TOGGLE_QUERY_TRACING":return st(st({},e),{},{isTracingEnabled:!e.isTracingEnabled});case"TOGGLE_NO_CACHE":return st(st({},e),{},{nocache:!e.nocache});case"TOGGLE_TABLE_COMPACT":return Mt("TABLE_COMPACT",!e.tableCompact),st(st({},e),{},{tableCompact:!e.tableCompact});default:throw new Error}}var Wr=(0,r.createContext)({}),Qr=function(){return(0,r.useContext)(Wr).state},Zr=function(){return(0,r.useContext)(Wr).dispatch},Gr={customStep:Nt("g0.step_input",""),yaxis:{limits:{enable:!1,range:{1:[0,0]}}},isHistogram:!1};function Kr(e,t){switch(t.type){case"TOGGLE_ENABLE_YAXIS_LIMITS":return st(st({},e),{},{yaxis:st(st({},e.yaxis),{},{limits:st(st({},e.yaxis.limits),{},{enable:!e.yaxis.limits.enable})})});case"SET_CUSTOM_STEP":return st(st({},e),{},{customStep:t.payload});case"SET_YAXIS_LIMITS":return st(st({},e),{},{yaxis:st(st({},e.yaxis),{},{limits:st(st({},e.yaxis.limits),{},{range:t.payload})})});case"SET_IS_HISTOGRAM":return st(st({},e),{},{isHistogram:t.payload});default:throw new Error}}var Jr=(0,r.createContext)({}),Xr=function(){return(0,r.useContext)(Jr).state},ei=function(){return(0,r.useContext)(Jr).dispatch},ti={windows:"Windows",mac:"Mac OS",linux:"Linux"},ni=function(){return(Object.values(ti).find((function(e){return navigator.userAgent.indexOf(e)>=0}))||"unknown")===ti.mac};function ri(){var e=Br(),t=function(){var e=["Android","webOS","iPhone","iPad","iPod","BlackBerry","Windows Phone"].map((function(e){return navigator.userAgent.match(new RegExp(e,"i"))})).some((function(e){return e})),t=window.innerWidth<500;return e||t},n=v((0,r.useState)(t()),2),i=n[0],a=n[1];return(0,r.useEffect)((function(){a(t())}),[e]),{isMobile:i}}var ii={success:Yt(Kn,{}),error:Yt(Gn,{}),warning:Yt(Zn,{}),info:Yt(Qn,{})},ai=function(e){var t,n=e.variant,r=e.children,i=Vt().isDarkTheme,a=ri().isMobile;return Yt("div",{className:Fr()((t={"vm-alert":!0},lt(t,"vm-alert_".concat(n),n),lt(t,"vm-alert_dark",i),lt(t,"vm-alert_mobile",a),t)),children:[Yt("div",{className:"vm-alert__icon",children:ii[n||"info"]}),Yt("div",{className:"vm-alert__content",children:r})]})},oi=(0,r.createContext)({showInfoMessage:function(){}}),ui={dashboardsSettings:[],dashboardsLoading:!1,dashboardsError:""};function li(e,t){switch(t.type){case"SET_DASHBOARDS_SETTINGS":return st(st({},e),{},{dashboardsSettings:t.payload});case"SET_DASHBOARDS_LOADING":return st(st({},e),{},{dashboardsLoading:t.payload});case"SET_DASHBOARDS_ERROR":return st(st({},e),{},{dashboardsError:t.payload});default:throw new Error}}var ci=(0,r.createContext)({}),si=function(){return(0,r.useContext)(ci).state},fi=function(){for(var e=arguments.length,t=new Array(e),n=0;nd,p=r.top-20<0,v=r.left+w.width+20>f,g=r.left-20<0;return m&&(r.top=t.top-w.height-u),p&&(r.top=t.height+t.top+u),v&&(r.left=t.right-w.width-l),g&&(r.left=t.left+l),h&&(r.width="".concat(t.width,"px")),r.top<0&&(r.top=20),r}),[n,a,x,t,h]);d&&hi(E,(function(){return C(!1)}),n),(0,r.useEffect)((function(){if(E.current&&x&&(!g||p)){var e=E.current.getBoundingClientRect(),t=e.right,n=e.width;if(t>window.innerWidth){var r=window.innerWidth-20-n;E.current.style.left=rp,y=r.top-20<0,_=r.left+m.width+20>h,b=r.left-20<0;return v&&(r.top=n.top-m.height-c),y&&(r.top=n.height+n.top+c),_&&(r.left=n.right-m.width-s),b&&(r.left=n.left+s),r.top<0&&(r.top=20),r.left<0&&(r.left=20),r}),[g,o,f,m]),w=function(){"boolean"!==typeof i&&d(!0)},D=function(){d(!1)};return(0,r.useEffect)((function(){"boolean"===typeof i&&d(i)}),[i]),(0,r.useEffect)((function(){var e,t=null===g||void 0===g||null===(e=g.current)||void 0===e?void 0:e.base;if(t)return t.addEventListener("mouseenter",w),t.addEventListener("mouseleave",D),function(){t.removeEventListener("mouseenter",w),t.removeEventListener("mouseleave",D)}}),[g]),Yt(Ht.HY,{children:[Yt(r.Fragment,{ref:g,children:t}),!c&&f&&r.default.createPortal(Yt("div",{className:"vm-tooltip",ref:y,style:b,children:n}),document.body)]})},ki=Yt("code",{children:ni()?"Cmd":"Ctrl"}),xi=[{title:"Zoom in",description:Yt(Ht.HY,{children:["To zoom in, hold down the ",ki," + ",Yt("code",{children:"scroll up"}),", or press the ",Yt("code",{children:"+"}),". Also, you can zoom in on a range on the graph by holding down your mouse button and selecting the range."]})},{title:"Zoom out",description:Yt(Ht.HY,{children:["To zoom out, hold down the ",ki," + ",Yt("code",{children:"scroll down"}),", or press the ",Yt("code",{children:"-"}),"."]})},{title:"Move horizontal axis",description:Yt(Ht.HY,{children:["To move the graph, hold down the ",ki," + ",Yt("code",{children:"drag"})," the graph to the right or left."]})},{title:"Fixing a tooltip",description:Yt(Ht.HY,{children:["To fix the tooltip, ",Yt("code",{children:"click"})," mouse when it's open. Then, you can drag the fixed tooltip by ",Yt("code",{children:"clicking"})," and ",Yt("code",{children:"dragging"})," on the ",Yt(yr,{})," icon."]})},{title:"Set a custom range for the vertical axis",description:Yt(Ht.HY,{children:["To set a custom range for the vertical axis, click on the ",Yt(Vn,{})," icon located in the upper right corner of the graph, activate the toggle, and set the values."]})}],Ci=[{title:"Show/hide a legend item",description:Yt(Ht.HY,{children:[Yt("code",{children:"click"})," on a legend item to isolate it on the graph.",ki," + ",Yt("code",{children:"click"})," on a legend item to remove it from the graph. To revert to the previous state, click again."]})},{title:"Copy label key-value pairs",description:Yt(Ht.HY,{children:[Yt("code",{children:"click"})," on a label key-value pair to save it to the clipboard."]})},{title:"Collapse/Expand the legend group",description:Yt(Ht.HY,{children:[Yt("code",{children:"click"})," on the group name (e.g. ",Yt("b",{children:'Query 1: {__name__!=""}'}),") to collapse or expand the legend."]})}],Si=xi.concat(Ci),Ei=function(){var e=pi(!1),t=e.value,n=e.setFalse,r=e.setTrue;return Yt(Ht.HY,{children:[Yt(Di,{title:"Show tips on working with the graph",children:Yt(mi,{variant:"text",color:"gray",startIcon:Yt(Sr,{}),onClick:r,ariaLabel:"open the tips"})}),t&&Yt(wi,{title:"Tips on working with the graph and the legend",onClose:n,children:Yt("div",{className:"fc-graph-tips",children:Si.map((function(e){var t=e.title,n=e.description;return Yt("div",{className:"fc-graph-tips-item",children:[Yt("h4",{className:"fc-graph-tips-item__action",children:t}),Yt("p",{className:"fc-graph-tips-item__description",children:n})]},t)}))})})]})},Ai=Yt("code",{children:ni()?"Cmd":"Ctrl"}),Ni=[{title:"Query",list:[{keys:Yt("code",{children:"Enter"}),description:"Run"},{keys:Yt(Ht.HY,{children:[Yt("code",{children:"Shift"})," + ",Yt("code",{children:"Enter"})]}),description:"Multi-line queries"},{keys:Yt(Ht.HY,{children:[Ai," + ",Yt("code",{children:"Arrow Up"})]}),description:"Previous command from the Query history"},{keys:Yt(Ht.HY,{children:[Ai," + ",Yt("code",{children:"Arrow Down"})]}),description:"Next command from the Query history"},{keys:Yt(Ht.HY,{children:[Ai," + ",Yt("code",{children:"click"})," by ",Yt(mr,{})]}),description:"Toggle multiple queries"}]},{title:"Graph",readMore:Yt(Ei,{}),list:[{keys:Yt(Ht.HY,{children:[Ai," + ",Yt("code",{children:"scroll Up"})," or ",Yt("code",{children:"+"})]}),description:"Zoom in"},{keys:Yt(Ht.HY,{children:[Ai," + ",Yt("code",{children:"scroll Down"})," or ",Yt("code",{children:"-"})]}),description:"Zoom out"},{keys:Yt(Ht.HY,{children:[Ai," + ",Yt("code",{children:"drag"})]}),description:"Move the graph left/right"},{keys:Yt(Ht.HY,{children:Yt("code",{children:"click"})}),description:"Select the series in the legend"},{keys:Yt(Ht.HY,{children:[Ai," + ",Yt("code",{children:"click"})]}),description:"Toggle multiple series in the legend"}]}],Mi="Shortcut keys",Fi=ni(),Ti=Fi?"Cmd + /":"F1",Oi=function(e){var t=e.showTitle,n=gt(),i=pi(!1),a=i.value,o=i.setTrue,u=i.setFalse,l=(0,r.useCallback)((function(e){var t=Fi&&"/"===e.key&&e.metaKey,n=!Fi&&"F1"===e.key&&!e.metaKey;(t||n)&&o()}),[o]);return Rr("keydown",l),Yt(Ht.HY,{children:[Yt(Di,{open:!0!==t&&void 0,title:"".concat(Mi," (").concat(Ti,")"),placement:"bottom-center",children:Yt(mi,{className:n?"":"vm-header-button",variant:"contained",color:"primary",startIcon:Yt(ir,{}),onClick:o,ariaLabel:Mi,children:t&&Mi})}),a&&Yt(wi,{title:"Shortcut keys",onClose:u,children:Yt("div",{className:"vm-shortcuts",children:Ni.map((function(e){return Yt("div",{className:"vm-shortcuts-section",children:[e.readMore&&Yt("div",{className:"vm-shortcuts-section__read-more",children:e.readMore}),Yt("h3",{className:"vm-shortcuts-section__title",children:e.title}),Yt("div",{className:"vm-shortcuts-section-list",children:e.list.map((function(t,n){return Yt("div",{className:"vm-shortcuts-section-list-item",children:[Yt("div",{className:"vm-shortcuts-section-list-item__key",children:t.keys}),Yt("p",{className:"vm-shortcuts-section-list-item__description",children:t.description})]},"".concat(e.title,"_").concat(n))}))})]},e.title)}))})})]})},Pi=function(e){var t=e.open;return Yt("button",{className:Fr()({"vm-menu-burger":!0,"vm-menu-burger_opened":t}),"aria-label":"menu",children:Yt("span",{})})},Ii=function(e){var t=e.background,n=e.color,i={NODE_ENV:"production",PUBLIC_URL:".",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0,FAST_REFRESH:!1}.REACT_APP_LOGS,a=xe().pathname,o=ri().isMobile,u=(0,r.useRef)(null),l=pi(!1),c=l.value,s=l.toggle,f=l.setFalse;return(0,r.useEffect)(f,[a]),hi(u,f),Yt("div",{className:"vm-header-sidebar",ref:u,children:[Yt("div",{className:Fr()({"vm-header-sidebar-button":!0,"vm-header-sidebar-button_open":c}),onClick:s,children:Yt(Pi,{open:c})}),Yt("div",{className:Fr()({"vm-header-sidebar-menu":!0,"vm-header-sidebar-menu_open":c}),children:[Yt("div",{children:Yt(bi,{color:n,background:t,direction:"column"})}),Yt("div",{className:"vm-header-sidebar-menu-settings",children:!o&&!i&&Yt(Oi,{showTitle:!0})})]})]})};function Li(){Li=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",o=i.asyncIterator||"@@asyncIterator",u=i.toStringTag||"@@toStringTag";function l(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(N){l=function(e,t,n){return e[t]=n}}function c(e,t,n,i){var a=t&&t.prototype instanceof d?t:d,o=Object.create(a.prototype),u=new S(i||[]);return r(o,"_invoke",{value:D(e,n,u)}),o}function s(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(N){return{type:"throw",arg:N}}}e.wrap=c;var f={};function d(){}function h(){}function m(){}var p={};l(p,a,(function(){return this}));var v=Object.getPrototypeOf,g=v&&v(v(E([])));g&&g!==t&&n.call(g,a)&&(p=g);var y=m.prototype=d.prototype=Object.create(p);function _(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function b(e,t){function i(r,a,o,u){var l=s(e[r],e,a);if("throw"!==l.type){var c=l.arg,f=c.value;return f&&"object"==w(f)&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){i("next",e,o,u)}),(function(e){i("throw",e,o,u)})):t.resolve(f).then((function(e){c.value=e,o(c)}),(function(e){return i("throw",e,o,u)}))}u(l.arg)}var a;r(this,"_invoke",{value:function(e,n){function r(){return new t((function(t,r){i(e,n,t,r)}))}return a=a?a.then(r,r):r()}})}function D(e,t,n){var r="suspendedStart";return function(i,a){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===i)throw a;return A()}for(n.method=i,n.arg=a;;){var o=n.delegate;if(o){var u=k(o,n);if(u){if(u===f)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var l=s(e,t,n);if("normal"===l.type){if(r=n.done?"completed":"suspendedYield",l.arg===f)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(r="completed",n.method="throw",n.arg=l.arg)}}}function k(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,k(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),f;var i=s(r,e.iterator,t.arg);if("throw"===i.type)return t.method="throw",t.arg=i.arg,t.delegate=null,f;var a=i.arg;return a?a.done?(t[e.resultName]=a.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):a:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function x(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function S(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(x,this),this.reset(!0)}function E(e){if(e){var t=e[a];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,i=function t(){for(;++r=0;--i){var a=this.tryEntries[i],o=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var u=n.call(a,"catchLoc"),l=n.call(a,"finallyLoc");if(u&&l){if(this.prev=0;--r){var i=this.tryEntries[r];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),C(n),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var i=r.arg;C(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:E(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},e}function Ri(e,t,n,r,i,a,o){try{var u=e[a](o),l=u.value}catch(c){return void n(c)}u.done?t(l):Promise.resolve(l).then(r,i)}function Bi(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(e){Ri(a,r,i,o,u,"next",e)}function u(e){Ri(a,r,i,o,u,"throw",e)}o(void 0)}))}}var zi=["controlsComponent","isMobile"],ji=function(e){var t=e.controlsComponent,n=e.isMobile,i=Tr(e,zi),a=gt(),o=xe().pathname,u=function(){var e=vt().useTenantID,t=gt(),n=Vt().serverUrl,i=v((0,r.useState)(!1),2),a=i[0],o=i[1],u=v((0,r.useState)(),2),l=u[0],c=u[1],s=v((0,r.useState)([]),2),f=s[0],d=s[1],h=(0,r.useMemo)((function(){return"".concat(n.replace(/^(.+)(\/select.+)/,"$1"),"/admin/tenants")}),[n]),m=(0,r.useMemo)((function(){return!!bt(n)}),[n]),p=t?!e:!m;return(0,r.useEffect)((function(){if(!p){var e=function(){var e=Bi(Li().mark((function e(){var t,n,r;return Li().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o(!0),e.prev=1,e.next=4,fetch(h);case 4:return t=e.sent,e.next=7,t.json();case 7:n=e.sent,r=n.data||[],d(r.sort((function(e,t){return e.localeCompare(t)}))),t.ok?c(void 0):c("".concat(n.errorType,"\r\n").concat(null===n||void 0===n?void 0:n.error)),e.next=16;break;case 13:e.prev=13,e.t0=e.catch(1),e.t0 instanceof Error&&c("".concat(e.t0.name,": ").concat(e.t0.message));case 16:o(!1);case 17:case"end":return e.stop()}}),e,null,[[1,13]])})));return function(){return e.apply(this,arguments)}}();e().catch(console.error)}}),[h]),{accountIds:f,isLoading:a,error:l}}(),l=u.accountIds,c=pi(!1),s=c.value,f=c.toggle,d=c.setFalse,h=(0,r.useMemo)((function(){return(mt[o]||{}).header||{}}),[o]),m=Yt(t,st(st({},i),{},{isMobile:n,accountIds:l,headerSetup:h}));return n?Yt(Ht.HY,{children:[Yt("div",{children:Yt(mi,{className:Fr()({"vm-header-button":!a}),startIcon:Yt(xr,{}),onClick:f,ariaLabel:"controls"})}),Yt(wi,{title:"Controls",onClose:d,isOpen:s,className:Fr()({"vm-header-controls-modal":!0,"vm-header-controls-modal_open":s}),children:m})]}):m},Hi=function(e){var t=e.controlsComponent,n={NODE_ENV:"production",PUBLIC_URL:".",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0,FAST_REFRESH:!1}.REACT_APP_LOGS,i=ri().isMobile,a=Br(),o=(0,r.useMemo)((function(){return window.innerWidth<1e3}),[a]),u=Vt().isDarkTheme,l=gt(),c=(0,r.useMemo)((function(){return It(u?"color-background-block":"color-primary")}),[u]),s=(0,r.useMemo)((function(){var e=vt().headerStyles,t=void 0===e?{}:e,n=t.background,r=void 0===n?l?"#FFF":c:n,i=t.color;return{background:r,color:void 0===i?l?c:"#FFF":i}}),[c]),f=s.background,d=s.color,h=Se(),m=function(){h({pathname:pt.home}),window.location.reload()};return Yt("header",{className:Fr()({"vm-header":!0,"vm-header_app":l,"vm-header_dark":u,"vm-header_sidebar":o,"vm-header_mobile":i}),style:{background:f,color:d},children:[o?Yt(Ii,{background:f,color:d}):Yt(Ht.HY,{children:[!l&&Yt("div",{className:Fr()({"vm-header-logo":!0,"vm-header-logo_logs":n}),onClick:m,style:{color:d},children:Yt(n?Yn:$n,{})}),Yt(bi,{color:d,background:f})]}),o&&Yt("div",{className:Fr()({"vm-header-logo":!0,"vm-header-logo_mobile":!0,"vm-header-logo_logs":n}),onClick:m,style:{color:d},children:Yt(n?Yn:$n,{})}),Yt(ji,{controlsComponent:t,displaySidebar:o,isMobile:i})]})},$i=function(){var e=ri().isMobile,t="2019-".concat(a()().format("YYYY"));return Yt("footer",{className:"vm-footer",children:[Yt("a",{className:"vm-link vm-footer__website",target:"_blank",href:"https://victoriametrics.com/",rel:"me noreferrer",children:[Yt(Un,{}),"victoriametrics.com"]}),Yt("a",{className:"vm-link vm-footer__link",target:"_blank",href:"https://docs.victoriametrics.com/MetricsQL.html",rel:"help noreferrer",children:[Yt(cr,{}),"MetricsQL"]}),Yt("a",{className:"vm-link vm-footer__link",target:"_blank",href:"https://docs.victoriametrics.com/#vmui",rel:"help noreferrer",children:[Yt(br,{}),e?"Docs":"Documentation"]}),Yt("a",{className:"vm-link vm-footer__link",target:"_blank",href:"https://github.com/VictoriaMetrics/VictoriaMetrics/issues/new/choose",rel:"noreferrer",children:[Yt(wr,{}),e?"New issue":"Create an issue"]}),Yt("div",{className:"vm-footer__copyright",children:["\xa9 ",t," VictoriaMetrics"]})]})},Yi=function(){var e=Bi(Li().mark((function e(t){var n,r;return Li().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch("./dashboards/".concat(t));case 2:return n=e.sent,e.next=5,n.json();case 5:return r=e.sent,e.abrupt("return",r);case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),Ui=function(){var e={NODE_ENV:"production",PUBLIC_URL:".",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0,FAST_REFRESH:!1}.REACT_APP_LOGS,t=gt(),n=Vt().serverUrl,i=(0,r.useContext)(ci).dispatch,a=v((0,r.useState)(!1),2),o=a[0],u=a[1],l=v((0,r.useState)(""),2),c=l[0],s=l[1],f=v((0,r.useState)([]),2),d=f[0],h=f[1],m=function(){var e=Bi(Li().mark((function e(){var t,n;return Li().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,null!==(t=window.__VMUI_PREDEFINED_DASHBOARDS__)&&void 0!==t&&t.length){e.next=4;break}return e.abrupt("return",[]);case 4:return e.next=6,Promise.all(t.map(function(){var e=Bi(Li().mark((function e(t){return Li().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",Yi(t));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()));case 6:n=e.sent,h((function(e){return[].concat(_(n),_(e))})),e.next=13;break;case 10:e.prev=10,e.t0=e.catch(0),e.t0 instanceof Error&&s("".concat(e.t0.name,": ").concat(e.t0.message));case 13:case"end":return e.stop()}}),e,null,[[0,10]])})));return function(){return e.apply(this,arguments)}}(),p=function(){var t=Bi(Li().mark((function t(){var r,i,a;return Li().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n&&!e){t.next=2;break}return t.abrupt("return");case 2:return s(""),u(!0),t.prev=4,t.next=7,fetch("".concat(n,"/vmui/custom-dashboards"));case 7:return r=t.sent,t.next=10,r.json();case 10:if(i=t.sent,!r.ok){t.next=22;break}if(!((a=i.dashboardsSettings)&&a.length>0)){t.next=17;break}h((function(e){return[].concat(_(e),_(a))})),t.next=19;break;case 17:return t.next=19,m();case 19:u(!1),t.next=26;break;case 22:return t.next=24,m();case 24:s(i.error),u(!1);case 26:t.next=34;break;case 28:return t.prev=28,t.t0=t.catch(4),u(!1),t.t0 instanceof Error&&s("".concat(t.t0.name,": ").concat(t.t0.message)),t.next=34,m();case 34:case"end":return t.stop()}}),t,null,[[4,28]])})));return function(){return t.apply(this,arguments)}}();return(0,r.useEffect)((function(){t||(h([]),p())}),[n]),(0,r.useEffect)((function(){i({type:"SET_DASHBOARDS_SETTINGS",payload:d})}),[d]),(0,r.useEffect)((function(){i({type:"SET_DASHBOARDS_LOADING",payload:o})}),[o]),(0,r.useEffect)((function(){i({type:"SET_DASHBOARDS_ERROR",payload:c})}),[c]),{dashboardsSettings:d,isLoading:o,error:c}},Vi=function(e){var t=e.error,n=e.warning,i=e.info,a=(0,r.useRef)(null),o=v((0,r.useState)(!1),2),u=o[0],l=o[1],c=v((0,r.useState)(!1),2),s=c[0],f=c[1],d=(0,r.useMemo)((function(){return t?"ERROR: ":n?"WARNING: ":""}),[t,n]),h="".concat(d).concat(t||n||i),m=function(){var e=a.current;if(e){var t=e.offsetWidth,n=e.scrollWidth,r=e.offsetHeight,i=e.scrollHeight;l(t+11}),[t]),w=function(e){return function(){var t=e;if(l({type:"SET_TENANT_ID",payload:t}),u){var n=_t(u,t);if(n===u)return;l({type:"SET_SERVER",payload:n}),c({type:"RUN_QUERY"})}y()}};return(0,r.useEffect)((function(){var e=bt(u);o&&o!==e?w(o)():w(e)()}),[u]),b?Yt("div",{className:"vm-tenant-input",children:[Yt(Di,{title:"Define Tenant ID if you need request to another storage",children:Yt("div",{ref:h,children:i?Yt("div",{className:"vm-mobile-option",onClick:g,children:[Yt("span",{className:"vm-mobile-option__icon",children:Yt(kr,{})}),Yt("div",{className:"vm-mobile-option-text",children:[Yt("span",{className:"vm-mobile-option-text__label",children:"Tenant ID"}),Yt("span",{className:"vm-mobile-option-text__value",children:o})]}),Yt("span",{className:"vm-mobile-option__arrow",children:Yt(Xn,{})})]}):Yt(mi,{className:n?"":"vm-header-button",variant:"contained",color:"primary",fullWidth:!0,startIcon:Yt(kr,{}),endIcon:Yt("div",{className:Fr()({"vm-execution-controls-buttons__arrow":!0,"vm-execution-controls-buttons__arrow_open":p}),children:Yt(Xn,{})}),onClick:g,children:o})})}),Yt(vi,{open:p,placement:"bottom-right",onClose:y,buttonRef:h,title:i?"Define Tenant ID":void 0,children:Yt("div",{className:Fr()({"vm-list vm-tenant-input-list":!0,"vm-list vm-tenant-input-list_mobile":i}),children:[Yt("div",{className:"vm-tenant-input-list__search",children:Yt(qi,{autofocus:!0,label:"Search",value:f,onChange:d,type:"search"})}),_.map((function(e){return Yt("div",{className:Fr()({"vm-list-item":!0,"vm-list-item_mobile":i,"vm-list-item_active":e===o}),onClick:w(e),children:e},e)}))]})})]}):null};var Qi,Zi,Gi=function(e){var t=(0,r.useRef)();return(0,r.useEffect)((function(){t.current=e}),[e]),t.current},Ki=function(){var e=gt(),t=ri().isMobile,n=Xr(),i=n.customStep,a=n.isHistogram,o=On().period,u=o.step,l=o.end,c=o.start,s=ei(),f=Gi(l-c),d=(0,r.useMemo)((function(){return dn(l-c,a)}),[u,a]),h=v((0,r.useState)(i||d),2),m=h[0],p=h[1],g=v((0,r.useState)(""),2),y=g[0],_=g[1],b=pi(!1),w=b.value,D=b.toggle,k=b.setFalse,x=(0,r.useRef)(null),C=function(e){var t=e||m||d||"1s",n=(t.match(/[a-zA-Z]+/g)||[]).length?t:"".concat(t,"s");s({type:"SET_CUSTOM_STEP",payload:n}),p(n),_("")},S=function(e){var t=e.match(/[-+]?([0-9]*\.[0-9]+|[0-9]+)/g)||[],n=e.match(/[a-zA-Z]+/g)||[],r=t.length&&t.every((function(e){return parseFloat(e)>0})),i=n.every((function(e){return an.find((function(t){return t.short===e}))})),a=r&&i;p(e),_(a?"":Ot.validStep)};return(0,r.useEffect)((function(){i&&C(i)}),[i]),(0,r.useEffect)((function(){!i&&d&&C(d)}),[d]),(0,r.useEffect)((function(){l-c!==f&&f&&d&&C(d)}),[l,c,f,d]),(0,r.useEffect)((function(){u!==i&&u!==d||C(d)}),[a]),Yt("div",{className:"vm-step-control",ref:x,children:[t?Yt("div",{className:"vm-mobile-option",onClick:D,children:[Yt("span",{className:"vm-mobile-option__icon",children:Yt(_r,{})}),Yt("div",{className:"vm-mobile-option-text",children:[Yt("span",{className:"vm-mobile-option-text__label",children:"Step"}),Yt("span",{className:"vm-mobile-option-text__value",children:m})]}),Yt("span",{className:"vm-mobile-option__arrow",children:Yt(Xn,{})})]}):Yt(Di,{title:"Query resolution step width",children:Yt(mi,{className:e?"":"vm-header-button",variant:"contained",color:"primary",startIcon:Yt(_r,{}),onClick:D,children:Yt("p",{children:["STEP",Yt("p",{className:"vm-step-control__value",children:m})]})})}),Yt(vi,{open:w,placement:"bottom-right",onClose:k,buttonRef:x,title:t?"Query resolution step width":void 0,children:Yt("div",{className:Fr()({"vm-step-control-popper":!0,"vm-step-control-popper_mobile":t}),children:[Yt(qi,{autofocus:!0,label:"Step value",value:m,error:y,onChange:S,onEnter:function(){C(),k()},onFocus:function(){document.activeElement instanceof HTMLInputElement&&document.activeElement.select()},onBlur:C,endIcon:Yt(Di,{title:"Set default step value: ".concat(d),children:Yt(mi,{size:"small",variant:"text",color:"primary",startIcon:Yt(Wn,{}),onClick:function(){var e=d||"1s";S(e),C(e)},ariaLabel:"reset step"})})}),Yt("div",{className:"vm-step-control-popper-info",children:[Yt("code",{children:"step"})," - the ",Yt("a",{className:"vm-link vm-link_colored",href:"https://prometheus.io/docs/prometheus/latest/querying/basics/#time-durations",target:"_blank",rel:"noreferrer",children:"interval"}),"between datapoints, which must be returned from the range query. The ",Yt("code",{children:"query"})," is executed at",Yt("code",{children:"start"}),", ",Yt("code",{children:"start+step"}),", ",Yt("code",{children:"start+2*step"}),", \u2026, ",Yt("code",{children:"end"})," timestamps.",Yt("a",{className:"vm-link vm-link_colored",href:"https://docs.victoriametrics.com/keyConcepts.html#range-query",target:"_blank",rel:"help noreferrer",children:"Read more about Range query"})]})]})})]})},Ji=function(e){var t=e.relativeTime,n=e.setDuration,r=ri().isMobile;return Yt("div",{className:Fr()({"vm-time-duration":!0,"vm-time-duration_mobile":r}),children:yn.map((function(e){var i,a=e.id,o=e.duration,u=e.until,l=e.title;return Yt("div",{className:Fr()({"vm-list-item":!0,"vm-list-item_mobile":r,"vm-list-item_active":a===t}),onClick:(i={duration:o,until:u(),id:a},function(){n(i)}),children:l||o},a)}))})},Xi=function(e){var t=e.viewDate,n=e.showArrowNav,r=e.onChangeViewDate;return Yt("div",{className:"vm-calendar-header",children:[Yt("div",{className:"vm-calendar-header-left",onClick:e.toggleDisplayYears,children:[Yt("span",{className:"vm-calendar-header-left__date",children:t.format("MMMM YYYY")}),Yt("div",{className:"vm-calendar-header-left__select-year",children:Yt(er,{})})]}),n&&Yt("div",{className:"vm-calendar-header-right",children:[Yt("div",{className:"vm-calendar-header-right__prev",onClick:function(){r(t.subtract(1,"month"))},children:Yt(Xn,{})}),Yt("div",{className:"vm-calendar-header-right__next",onClick:function(){r(t.add(1,"month"))},children:Yt(Xn,{})})]})]})},ea=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],ta=function(e){var t=e.viewDate,n=e.selectDate,i=e.onChangeSelectDate,o="YYYY-MM-DD",u=a()().tz().startOf("day"),l=(0,r.useMemo)((function(){var e=new Array(42).fill(null),n=t.startOf("month"),r=t.endOf("month").diff(n,"day")+1,i=new Array(r).fill(n).map((function(e,t){return e.add(t,"day")})),a=n.day();return e.splice.apply(e,[a,r].concat(_(i))),e}),[t]),c=function(e){return function(){e&&i(e)}};return Yt("div",{className:"vm-calendar-body",children:[ea.map((function(e){return Yt("div",{className:"vm-calendar-body-cell vm-calendar-body-cell_weekday",children:e[0]},e)})),l.map((function(e,t){return Yt("div",{className:Fr()({"vm-calendar-body-cell":!0,"vm-calendar-body-cell_day":!0,"vm-calendar-body-cell_day_empty":!e,"vm-calendar-body-cell_day_active":(e&&e.format(o))===n.format(o),"vm-calendar-body-cell_day_today":(e&&e.format(o))===u.format(o)}),onClick:c(e),children:e&&e.format("D")},e?e.format(o):t)}))]})},na=function(e){var t=e.viewDate,n=e.onChangeViewDate,i=a()().format("YYYY"),o=(0,r.useMemo)((function(){return t.format("YYYY")}),[t]),u=(0,r.useMemo)((function(){var e=a()().subtract(9,"year");return new Array(18).fill(e).map((function(e,t){return e.add(t,"year")}))}),[t]);(0,r.useEffect)((function(){var e=document.getElementById("vm-calendar-year-".concat(o));e&&e.scrollIntoView({block:"center"})}),[]);return Yt("div",{className:"vm-calendar-years",children:u.map((function(e){return Yt("div",{className:Fr()({"vm-calendar-years__year":!0,"vm-calendar-years__year_selected":e.format("YYYY")===o,"vm-calendar-years__year_today":e.format("YYYY")===i}),id:"vm-calendar-year-".concat(e.format("YYYY")),onClick:(t=e,function(){n(t)}),children:e.format("YYYY")},e.format("YYYY"));var t}))})},ra=function(e){var t=e.viewDate,n=e.selectDate,i=e.onChangeViewDate,o=a()().format("MM"),u=(0,r.useMemo)((function(){return n.format("MM")}),[n]),l=(0,r.useMemo)((function(){return new Array(12).fill("").map((function(e,n){return a()(t).month(n)}))}),[t]);(0,r.useEffect)((function(){var e=document.getElementById("vm-calendar-year-".concat(u));e&&e.scrollIntoView({block:"center"})}),[]);var c=function(e){return function(){i(e)}};return Yt("div",{className:"vm-calendar-years",children:l.map((function(e){return Yt("div",{className:Fr()({"vm-calendar-years__year":!0,"vm-calendar-years__year_selected":e.format("MM")===u,"vm-calendar-years__year_today":e.format("MM")===o}),id:"vm-calendar-year-".concat(e.format("MM")),onClick:c(e),children:e.format("MMMM")},e.format("MM"))}))})},ia=function(e){return e[e.days=0]="days",e[e.months=1]="months",e[e.years=2]="years",e}(ia||{}),aa=function(e){var t=e.date,n=e.format,i=void 0===n?Zt:n,o=e.onChange,u=v((0,r.useState)(ia.days),2),l=u[0],c=u[1],s=v((0,r.useState)(a().tz(t)),2),f=s[0],d=s[1],h=v((0,r.useState)(a().tz(t)),2),m=h[0],p=h[1],g=a()().startOf("day").tz(),y=g.format()===f.format(),_=ri().isMobile,b=function(e){d(e),c((function(e){return e===ia.years?ia.months:ia.days}))};return(0,r.useEffect)((function(){m.format()!==a().tz(t).format()&&o(m.format(i))}),[m]),(0,r.useEffect)((function(){var e=a().tz(t);d(e),p(e)}),[t]),Yt("div",{className:Fr()({"vm-calendar":!0,"vm-calendar_mobile":_}),children:[Yt(Xi,{viewDate:f,onChangeViewDate:b,toggleDisplayYears:function(){c((function(e){return e===ia.years?ia.days:ia.years}))},showArrowNav:l===ia.days}),l===ia.days&&Yt(ta,{viewDate:f,selectDate:m,onChangeSelectDate:function(e){p(e)}}),l===ia.years&&Yt(na,{viewDate:f,onChangeViewDate:b}),l===ia.months&&Yt(ra,{selectDate:m,viewDate:f,onChangeViewDate:b}),!y&&l===ia.days&&Yt("div",{className:"vm-calendar-footer",children:Yt(mi,{variant:"text",size:"small",onClick:function(){d(g)},children:"show today"})})]})},oa=(0,r.forwardRef)((function(e,t){var n=e.date,i=e.targetRef,o=e.format,u=void 0===o?Zt:o,l=e.onChange,c=e.label,s=(0,r.useMemo)((function(){return a()(n).isValid()?a().tz(n):a()().tz()}),[n]),f=ri().isMobile,d=pi(!1),h=d.value,m=d.toggle,p=d.setFalse;return Rr("click",m,i),Rr("keyup",(function(e){"Escape"!==e.key&&"Enter"!==e.key||p()})),Yt(Ht.HY,{children:Yt(vi,{open:h,buttonRef:i,placement:"bottom-right",onClose:p,title:f?c:void 0,children:Yt("div",{ref:t,children:Yt(aa,{date:s,format:u,onChange:function(e){l(e),p()}})})})})})),ua=oa,la=n(111),ca=n.n(la),sa=function(e){return a()(e).isValid()?a().tz(e).format(Zt):e},fa=function(e){var t=e.value,n=void 0===t?"":t,i=e.label,o=e.pickerLabel,u=e.pickerRef,l=e.onChange,c=e.onEnter,s=(0,r.useRef)(null),f=v((0,r.useState)(null),2),d=f[0],h=f[1],m=v((0,r.useState)(sa(n)),2),p=m[0],g=m[1],y=v((0,r.useState)(!1),2),_=y[0],b=y[1],w=v((0,r.useState)(!1),2),D=w[0],k=w[1],x=a()(p).isValid()?"":"Invalid date format";return(0,r.useEffect)((function(){var e=sa(n);e!==p&&g(e),D&&(c(),k(!1))}),[n]),(0,r.useEffect)((function(){_&&d&&(d.focus(),d.setSelectionRange(11,11),b(!1))}),[_]),Yt("div",{className:Fr()({"vm-date-time-input":!0,"vm-date-time-input_error":x}),children:[Yt("label",{children:i}),Yt(ca(),{tabIndex:1,inputRef:h,mask:"9999-99-99 99:99:99",placeholder:"YYYY-MM-DD HH:mm:ss",value:p,autoCapitalize:"none",inputMode:"numeric",maskChar:null,onChange:function(e){g(e.currentTarget.value)},onBlur:function(){l(p)},onKeyUp:function(e){"Enter"===e.key&&(l(p),k(!0))}}),x&&Yt("span",{className:"vm-date-time-input__error-text",children:x}),Yt("div",{className:"vm-date-time-input__icon",ref:s,children:Yt(mi,{variant:"text",color:"gray",size:"small",startIcon:Yt(nr,{}),ariaLabel:"calendar"})}),Yt(ua,{label:o,ref:u,date:p,onChange:function(e){g(e),b(!0)},targetRef:s})]})},da=function(){var e=ri().isMobile,t=Vt().isDarkTheme,n=(0,r.useRef)(null),i=Br(),o=(0,r.useMemo)((function(){return i.width>1120}),[i]),u=v((0,r.useState)(),2),l=u[0],c=u[1],s=v((0,r.useState)(),2),f=s[0],d=s[1],h=On(),m=h.period,p=m.end,g=m.start,y=h.relativeTime,_=h.timezone,b=h.duration,w=Pn(),D=gt(),k=Gi(_),x=pi(!1),C=x.value,S=x.toggle,E=x.setFalse,A=(0,r.useMemo)((function(){return{region:_,utc:bn(_)}}),[_]);(0,r.useEffect)((function(){c(pn(gn(p)))}),[_,p]),(0,r.useEffect)((function(){d(pn(gn(g)))}),[_,g]);var N=function(e){var t=e.duration,n=e.until,r=e.id;w({type:"SET_RELATIVE_TIME",payload:{duration:t,until:n,id:r}}),E()},M=(0,r.useMemo)((function(){return{start:a().tz(gn(g)).format(Zt),end:a().tz(gn(p)).format(Zt)}}),[g,p,_]),F=(0,r.useMemo)((function(){return y&&"none"!==y?y.replace(/_/g," "):"".concat(M.start," - ").concat(M.end)}),[y,M]),T=(0,r.useRef)(null),O=(0,r.useRef)(null),P=(0,r.useRef)(null),I=function(){f&&l&&w({type:"SET_PERIOD",payload:{from:a().tz(f).toDate(),to:a().tz(l).toDate()}}),E()};return(0,r.useEffect)((function(){var e=_n({relativeTimeId:y,defaultDuration:b,defaultEndInput:gn(p)});k&&_!==k&&N({id:e.relativeTimeId,duration:e.duration,until:e.endInput})}),[_,k]),hi(n,(function(t){var n,r;if(!e){var i=t.target,a=(null===T||void 0===T?void 0:T.current)&&(null===T||void 0===T||null===(n=T.current)||void 0===n?void 0:n.contains(i)),o=(null===O||void 0===O?void 0:O.current)&&(null===O||void 0===O||null===(r=O.current)||void 0===r?void 0:r.contains(i));a||o||E()}})),Yt(Ht.HY,{children:[Yt("div",{ref:P,children:e?Yt("div",{className:"vm-mobile-option",onClick:S,children:[Yt("span",{className:"vm-mobile-option__icon",children:Yt(tr,{})}),Yt("div",{className:"vm-mobile-option-text",children:[Yt("span",{className:"vm-mobile-option-text__label",children:"Time range"}),Yt("span",{className:"vm-mobile-option-text__value",children:F})]}),Yt("span",{className:"vm-mobile-option__arrow",children:Yt(Xn,{})})]}):Yt(Di,{title:o?"Time range controls":F,children:Yt(mi,{className:D?"":"vm-header-button",variant:"contained",color:"primary",startIcon:Yt(tr,{}),onClick:S,ariaLabel:"time range controls",children:o&&Yt("span",{children:F})})})}),Yt(vi,{open:C,buttonRef:P,placement:"bottom-right",onClose:E,clickOutside:!1,title:e?"Time range controls":"",children:Yt("div",{className:Fr()({"vm-time-selector":!0,"vm-time-selector_mobile":e}),ref:n,children:[Yt("div",{className:"vm-time-selector-left",children:[Yt("div",{className:Fr()({"vm-time-selector-left-inputs":!0,"vm-time-selector-left-inputs_dark":t}),children:[Yt(fa,{value:f,label:"From:",pickerLabel:"Date From",pickerRef:T,onChange:d,onEnter:I}),Yt(fa,{value:l,label:"To:",pickerLabel:"Date To",pickerRef:O,onChange:c,onEnter:I})]}),Yt("div",{className:"vm-time-selector-left-timezone",children:[Yt("div",{className:"vm-time-selector-left-timezone__title",children:A.region}),Yt("div",{className:"vm-time-selector-left-timezone__utc",children:A.utc})]}),Yt(mi,{variant:"text",startIcon:Yt(rr,{}),onClick:function(){return w({type:"RUN_QUERY_TO_NOW"})},children:"switch to now"}),Yt("div",{className:"vm-time-selector-left__controls",children:[Yt(mi,{color:"error",variant:"outlined",onClick:function(){c(pn(gn(p))),d(pn(gn(g))),E()},children:"Cancel"}),Yt(mi,{color:"primary",onClick:I,children:"Apply"})]})]}),Yt(Ji,{relativeTime:y||"",setDuration:N})]})})]})},ha=function(){var e=Se(),t=v(ot(),2),n=t[0],i=t[1];return{setSearchParamsFromKeys:(0,r.useCallback)((function(t){var r=!!Array.from(n.values()).length,a=!1;Object.entries(t).forEach((function(e){var t=v(e,2),r=t[0],i=t[1];n.get(r)!=="".concat(i)&&(n.set(r,"".concat(i)),a=!0)})),a&&(r?i(n):e("?".concat(n.toString()),{replace:!0}))}),[n,e])}},ma=function(){var e=ri().isMobile,t=gt(),n=(0,r.useRef)(null),i=v(ot(),1)[0],o=ha().setSearchParamsFromKeys,u=i.get("date")||a()().tz().format(Qt),l=(0,r.useMemo)((function(){return a().tz(u).format(Qt)}),[u]),c=function(e){o({date:e})};return(0,r.useEffect)((function(){c(u)}),[]),Yt("div",{children:[Yt("div",{ref:n,children:e?Yt("div",{className:"vm-mobile-option",children:[Yt("span",{className:"vm-mobile-option__icon",children:Yt(nr,{})}),Yt("div",{className:"vm-mobile-option-text",children:[Yt("span",{className:"vm-mobile-option-text__label",children:"Date control"}),Yt("span",{className:"vm-mobile-option-text__value",children:l})]}),Yt("span",{className:"vm-mobile-option__arrow",children:Yt(Xn,{})})]}):Yt(Di,{title:"Date control",children:Yt(mi,{className:t?"":"vm-header-button",variant:"contained",color:"primary",startIcon:Yt(nr,{}),children:l})})}),Yt(ua,{label:"Date control",date:u||"",format:Qt,onChange:c,targetRef:n})]})},pa=[{seconds:0,title:"Off"},{seconds:1,title:"1s"},{seconds:2,title:"2s"},{seconds:5,title:"5s"},{seconds:10,title:"10s"},{seconds:30,title:"30s"},{seconds:60,title:"1m"},{seconds:300,title:"5m"},{seconds:900,title:"15m"},{seconds:1800,title:"30m"},{seconds:3600,title:"1h"},{seconds:7200,title:"2h"}],va=function(){var e=ri().isMobile,t=Pn(),n=gt(),i=v((0,r.useState)(!1),2),a=i[0],o=i[1],u=v((0,r.useState)(pa[0]),2),l=u[0],c=u[1],s=pi(!1),f=s.value,d=s.toggle,h=s.setFalse,m=(0,r.useRef)(null);(0,r.useEffect)((function(){var e,n=l.seconds;return a?e=setInterval((function(){t({type:"RUN_QUERY"})}),1e3*n):c(pa[0]),function(){e&&clearInterval(e)}}),[l,a]);var p=function(e){return function(){!function(e){(a&&!e.seconds||!a&&e.seconds)&&o((function(e){return!e})),c(e),h()}(e)}};return Yt(Ht.HY,{children:[Yt("div",{className:"vm-execution-controls",children:Yt("div",{className:Fr()({"vm-execution-controls-buttons":!0,"vm-execution-controls-buttons_mobile":e,"vm-header-button":!n}),children:[!e&&Yt(Di,{title:"Refresh dashboard",children:Yt(mi,{variant:"contained",color:"primary",onClick:function(){t({type:"RUN_QUERY"})},startIcon:Yt(Jn,{}),ariaLabel:"refresh dashboard"})}),e?Yt("div",{className:"vm-mobile-option",onClick:d,children:[Yt("span",{className:"vm-mobile-option__icon",children:Yt(Wn,{})}),Yt("div",{className:"vm-mobile-option-text",children:[Yt("span",{className:"vm-mobile-option-text__label",children:"Auto-refresh"}),Yt("span",{className:"vm-mobile-option-text__value",children:l.title})]}),Yt("span",{className:"vm-mobile-option__arrow",children:Yt(Xn,{})})]}):Yt(Di,{title:"Auto-refresh control",children:Yt("div",{ref:m,children:Yt(mi,{variant:"contained",color:"primary",fullWidth:!0,endIcon:Yt("div",{className:Fr()({"vm-execution-controls-buttons__arrow":!0,"vm-execution-controls-buttons__arrow_open":f}),children:Yt(Xn,{})}),onClick:d,children:l.title})})})]})}),Yt(vi,{open:f,placement:"bottom-right",onClose:h,buttonRef:m,title:e?"Auto-refresh duration":void 0,children:Yt("div",{className:Fr()({"vm-execution-controls-list":!0,"vm-execution-controls-list_mobile":e}),children:pa.map((function(t){return Yt("div",{className:Fr()({"vm-list-item":!0,"vm-list-item_mobile":e,"vm-list-item_active":t.seconds===l.seconds}),onClick:p(t),children:t.title},t.seconds)}))})})]})},ga=function(e){var t;try{t=new URL(e)}catch($t){return!1}return"http:"===t.protocol||"https:"===t.protocol},ya=function(e){var t=e.serverUrl,n=e.stateServerUrl,i=e.onChange,a=e.onEnter,o=v((0,r.useState)(""),2),u=o[0],l=o[1];return(0,r.useEffect)((function(){n||l(Ot.emptyServer),ga(n)||l(Ot.validServer)}),[n]),Yt(qi,{autofocus:!0,label:"Server URL",value:t,error:u,onChange:function(e){i(e||""),l("")},onEnter:a,inputmode:"url"})},_a=[{label:"Graph",type:"chart"},{label:"JSON",type:"code"},{label:"Table",type:"table"}],ba=function(e){var t=e.limits,n=e.onChange,i=e.onEnter,a=ri().isMobile,o=v((0,r.useState)({table:"",chart:"",code:""}),2),u=o[0],l=o[1],c=function(e){return function(r){!function(e,r){var i=e||"";l((function(e){return st(st({},e),{},lt({},r,+i<0?Ot.positiveNumber:""))})),n(st(st({},t),{},lt({},r,i||1/0)))}(r,e)}};return Yt("div",{className:"vm-limits-configurator",children:[Yt("div",{className:"vm-server-configurator__title",children:["Series limits by tabs",Yt(Di,{title:"Set to 0 to disable the limit",children:Yt(mi,{variant:"text",color:"primary",size:"small",startIcon:Yt(Qn,{})})}),Yt("div",{className:"vm-limits-configurator-title__reset",children:Yt(mi,{variant:"text",color:"primary",size:"small",startIcon:Yt(Wn,{}),onClick:function(){n(St)},children:"Reset limits"})})]}),Yt("div",{className:Fr()({"vm-limits-configurator__inputs":!0,"vm-limits-configurator__inputs_mobile":a}),children:_a.map((function(e){return Yt("div",{children:Yt(qi,{label:e.label,value:t[e.type],error:u[e.type],onChange:c(e.type),onEnter:i,type:"number"})},e.type)}))})]})},wa=function(e){var t=e.defaultExpanded,n=void 0!==t&&t,i=e.onChange,a=e.title,o=e.children,u=v((0,r.useState)(n),2),l=u[0],c=u[1];return(0,r.useEffect)((function(){i&&i(l)}),[l]),Yt(Ht.HY,{children:[Yt("header",{className:"vm-accordion-header ".concat(l&&"vm-accordion-header_open"),onClick:function(){c((function(e){return!e}))},children:[a,Yt("div",{className:"vm-accordion-header__arrow ".concat(l&&"vm-accordion-header__arrow_open"),children:Yt(Xn,{})})]}),l&&Yt("section",{className:"vm-accordion-section",children:o},"content")]})},Da=function(e){var t=e.timezoneState,n=e.onChange,i=ri().isMobile,o=wn(),u=v((0,r.useState)(""),2),l=u[0],c=u[1],s=(0,r.useRef)(null),f=pi(!1),d=f.value,h=f.toggle,m=f.setFalse,p=(0,r.useMemo)((function(){if(!l)return o;try{return wn(l)}catch(e){return{}}}),[l,o]),g=(0,r.useMemo)((function(){return Object.keys(p)}),[p]),y=(0,r.useMemo)((function(){return{region:a().tz.guess(),utc:bn(a().tz.guess())}}),[]),_=(0,r.useMemo)((function(){return{region:t,utc:bn(t)}}),[t]),b=function(e){return function(){!function(e){n(e.region),c(""),m()}(e)}};return Yt("div",{className:"vm-timezones",children:[Yt("div",{className:"vm-server-configurator__title",children:"Time zone"}),Yt("div",{className:"vm-timezones-item vm-timezones-item_selected",onClick:h,ref:s,children:[Yt("div",{className:"vm-timezones-item__title",children:_.region}),Yt("div",{className:"vm-timezones-item__utc",children:_.utc}),Yt("div",{className:Fr()({"vm-timezones-item__icon":!0,"vm-timezones-item__icon_open":d}),children:Yt(er,{})})]}),Yt(vi,{open:d,buttonRef:s,placement:"bottom-left",onClose:m,fullWidth:!0,title:i?"Time zone":void 0,children:Yt("div",{className:Fr()({"vm-timezones-list":!0,"vm-timezones-list_mobile":i}),children:[Yt("div",{className:"vm-timezones-list-header",children:[Yt("div",{className:"vm-timezones-list-header__search",children:Yt(qi,{autofocus:!0,label:"Search",value:l,onChange:function(e){c(e)}})}),Yt("div",{className:"vm-timezones-item vm-timezones-list-group-options__item",onClick:b(y),children:[Yt("div",{className:"vm-timezones-item__title",children:["Browser Time (",y.region,")"]}),Yt("div",{className:"vm-timezones-item__utc",children:y.utc})]})]}),g.map((function(e){return Yt("div",{className:"vm-timezones-list-group",children:Yt(wa,{defaultExpanded:!0,title:Yt("div",{className:"vm-timezones-list-group__title",children:e}),children:Yt("div",{className:"vm-timezones-list-group-options",children:p[e]&&p[e].map((function(e){return Yt("div",{className:"vm-timezones-item vm-timezones-list-group-options__item",onClick:b(e),children:[Yt("div",{className:"vm-timezones-item__title",children:e.region}),Yt("div",{className:"vm-timezones-item__utc",children:e.utc})]},e.search)}))})})},e)}))]})})]})},ka=function(e){var t=e.options,n=e.value,i=e.label,a=e.onChange,o=(0,r.useRef)(null),u=v((0,r.useState)({width:"0px",left:"0px",borderRadius:"0px"}),2),l=u[0],c=u[1],s=function(e){return function(){a(e)}};return(0,r.useEffect)((function(){if(o.current){var e=t.findIndex((function(e){return e.value===n})),r=o.current.getBoundingClientRect().width,i=e*r,a="0";0===e&&(a="16px 0 0 16px"),e===t.length-1&&(a="10px",i-=1,a="0 16px 16px 0"),0!==e&&e!==t.length-1&&(r+=1,i-=1),c({width:"".concat(r,"px"),left:"".concat(i,"px"),borderRadius:a})}else c({width:"0px",left:"0px",borderRadius:"0px"})}),[o,n,t]),Yt("div",{className:"vm-toggles",children:[i&&Yt("label",{className:"vm-toggles__label",children:i}),Yt("div",{className:"vm-toggles-group",style:{gridTemplateColumns:"repeat(".concat(t.length,", 1fr)")},children:[l.borderRadius&&Yt("div",{className:"vm-toggles-group__highlight",style:l}),t.map((function(e,t){return Yt("div",{className:Fr()({"vm-toggles-group-item":!0,"vm-toggles-group-item_first":0===t,"vm-toggles-group-item_active":e.value===n,"vm-toggles-group-item_icon":e.icon&&e.title}),onClick:s(e.value),ref:e.value===n?o:null,children:[e.icon,e.title]},e.value)}))]})]})},xa=Object.values(Pt).map((function(e){return{title:e,value:e}})),Ca=function(e){var t=e.theme,n=e.onChange,r=ri().isMobile;return Yt("div",{className:Fr()({"vm-theme-control":!0,"vm-theme-control_mobile":r}),children:[Yt("div",{className:"vm-server-configurator__title",children:"Theme preferences"}),Yt("div",{className:"vm-theme-control__toggle",children:Yt(ka,{options:xa,value:t,onChange:function(e){n(e)}})},"".concat(r))]})},Sa="Settings",Ea=function(){var e={NODE_ENV:"production",PUBLIC_URL:".",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0,FAST_REFRESH:!1}.REACT_APP_LOGS,t=ri().isMobile,n=gt(),i=Vt(),a=i.serverUrl,o=i.theme,u=On().timezone,l=Qr().seriesLimits,c=qt(),s=Pn(),f=Zr(),d=v((0,r.useState)(a),2),h=d[0],m=d[1],p=v((0,r.useState)(l),2),g=p[0],y=p[1],_=v((0,r.useState)(u),2),b=_[0],w=_[1],D=pi(!1),k=D.value,x=D.setTrue,C=D.setFalse,S=function(){C(),m(a),y(l),w(u)},E=function(){var e=bt(h);""!==e&&c({type:"SET_TENANT_ID",payload:e}),c({type:"SET_SERVER",payload:h}),s({type:"SET_TIMEZONE",payload:b}),f({type:"SET_SERIES_LIMITS",payload:g}),C()};(0,r.useEffect)((function(){a!==h&&m(a)}),[a]);var A=[{show:!n&&!e,component:Yt(ya,{stateServerUrl:a,serverUrl:h,onChange:m,onEnter:E})},{show:!e,component:Yt(ba,{limits:g,onChange:y,onEnter:E})},{show:!0,component:Yt(Da,{timezoneState:b,onChange:w})},{show:!n,component:Yt(Ca,{theme:o,onChange:function(e){c({type:"SET_THEME",payload:e})}})}].filter((function(e){return e.show}));return Yt(Ht.HY,{children:[t?Yt("div",{className:"vm-mobile-option",onClick:x,children:[Yt("span",{className:"vm-mobile-option__icon",children:Yt(Vn,{})}),Yt("div",{className:"vm-mobile-option-text",children:Yt("span",{className:"vm-mobile-option-text__label",children:Sa})}),Yt("span",{className:"vm-mobile-option__arrow",children:Yt(Xn,{})})]}):Yt(Di,{title:Sa,children:Yt(mi,{className:Fr()({"vm-header-button":!n}),variant:"contained",color:"primary",startIcon:Yt(Vn,{}),onClick:x,ariaLabel:"settings"})}),k&&Yt(wi,{title:Sa,onClose:S,children:Yt("div",{className:Fr()({"vm-server-configurator":!0,"vm-server-configurator_mobile":t}),children:[A.map((function(e,t){return Yt("div",{className:"vm-server-configurator__input",children:e.component},t)})),Yt("div",{className:"vm-server-configurator-footer",children:[Yt(mi,{color:"error",variant:"outlined",onClick:S,children:"Cancel"}),Yt(mi,{color:"primary",variant:"contained",onClick:E,children:"Apply"})]})]})})]})},Aa=function(e){var t=e.displaySidebar,n=e.isMobile,r=e.headerSetup,i=e.accountIds;return Yt("div",{className:Fr()({"vm-header-controls":!0,"vm-header-controls_mobile":n}),children:[(null===r||void 0===r?void 0:r.tenant)&&Yt(Wi,{accountIds:i||[]}),(null===r||void 0===r?void 0:r.stepControl)&&Yt(Ki,{}),(null===r||void 0===r?void 0:r.timeSelector)&&Yt(da,{}),(null===r||void 0===r?void 0:r.cardinalityDatePicker)&&Yt(ma,{}),(null===r||void 0===r?void 0:r.executionControls)&&Yt(va,{}),Yt(Ea,{}),!t&&Yt(Oi,{})]})},Na=function(){var e={NODE_ENV:"production",PUBLIC_URL:".",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0,FAST_REFRESH:!1}.REACT_APP_LOGS,t=gt(),n=ri().isMobile,i=xe().pathname,a=v(ot(),2),o=a[0],u=a[1];Ui();return(0,r.useEffect)((function(){var t,n,r="vmui",a=e?null===(t=mt[pt.logs])||void 0===t?void 0:t.title:null===(n=mt[i])||void 0===n?void 0:n.title;document.title=a?"".concat(a," - ").concat(r):r}),[i]),(0,r.useEffect)((function(){var e=window.location,t=e.search,n=e.href;if(t){var r=kt().parse(t,{ignoreQueryPrefix:!0});Object.entries(r).forEach((function(e){var t=v(e,2),n=t[0],r=t[1];return o.set(n,r)})),u(o),window.location.search=""}var i=n.replace(/\/\?#\//,"/#/");i!==n&&window.location.replace(i)}),[]),Yt("section",{className:"vm-container",children:[Yt(Hi,{controlsComponent:Aa}),Yt("div",{className:Fr()({"vm-container-body":!0,"vm-container-body_mobile":n,"vm-container-body_app":t}),children:Yt(He,{})}),!t&&Yt($i,{})]})},Ma="u-off",Fa="u-label",Ta="width",Oa="height",Pa="top",Ia="bottom",La="left",Ra="right",Ba="#000",za=Ba+"0",ja="mousemove",Ha="mousedown",$a="mouseup",Ya="mouseenter",Ua="mouseleave",Va="dblclick",qa="change",Wa="dppxchange",Qa="--",Za="undefined"!=typeof window,Ga=Za?document:null,Ka=Za?window:null,Ja=Za?navigator:null;function Xa(e,t){if(null!=t){var n=e.classList;!n.contains(t)&&n.add(t)}}function eo(e,t){var n=e.classList;n.contains(t)&&n.remove(t)}function to(e,t,n){e.style[t]=n+"px"}function no(e,t,n,r){var i=Ga.createElement(e);return null!=t&&Xa(i,t),null!=n&&n.insertBefore(i,r),i}function ro(e,t){return no("div",e,t)}var io=new WeakMap;function ao(e,t,n,r,i){var a="translate("+t+"px,"+n+"px)";a!=io.get(e)&&(e.style.transform=a,io.set(e,a),t<0||n<0||t>r||n>i?Xa(e,Ma):eo(e,Ma))}var oo=new WeakMap;function uo(e,t,n){var r=t+n;r!=oo.get(e)&&(oo.set(e,r),e.style.background=t,e.style.borderColor=n)}var lo=new WeakMap;function co(e,t,n,r){var i=t+""+n;i!=lo.get(e)&&(lo.set(e,i),e.style.height=n+"px",e.style.width=t+"px",e.style.marginLeft=r?-t/2+"px":0,e.style.marginTop=r?-n/2+"px":0)}var so={passive:!0},fo=st(st({},so),{},{capture:!0});function ho(e,t,n,r){t.addEventListener(e,n,r?fo:so)}function mo(e,t,n,r){t.removeEventListener(e,n,r?fo:so)}function po(e,t,n,r){var i;n=n||0;for(var a=(r=r||t.length-1)<=2147483647;r-n>1;)t[i=a?n+r>>1:Fo((n+r)/2)]=t&&i<=n;i+=r)if(null!=e[i])return i;return-1}function go(e,t,n,r){var i=Ro(e),a=Ro(t),o=10==n?Bo:zo;e==t&&(-1==i?(e*=n,t/=n):(e/=n,t*=n));var u=1==a?Oo:Fo,l=(1==i?Fo:Oo)(o(Mo(e))),c=u(o(Mo(t))),s=Lo(n,l),f=Lo(n,c);return 10==n&&(l<0&&(s=eu(s,-l)),c<0&&(f=eu(f,-c))),r||2==n?(e=s*i,t=f*a):(e=Xo(e,s),t=Jo(t,f)),[e,t]}function yo(e,t,n,r){var i=go(e,t,n,r);return 0==e&&(i[0]=0),0==t&&(i[1]=0),i}Za&&function e(){var t=devicePixelRatio;Qi!=t&&(Qi=t,Zi&&mo(qa,Zi,e),Zi=matchMedia("(min-resolution: ".concat(Qi-.001,"dppx) and (max-resolution: ").concat(Qi+.001,"dppx)")),ho(qa,Zi,e),Ka.dispatchEvent(new CustomEvent(Wa)))}();var _o=.1,bo={mode:3,pad:_o},wo={pad:0,soft:null,mode:0},Do={min:wo,max:wo};function ko(e,t,n,r){return su(n)?Co(e,t,n):(wo.pad=n,wo.soft=r?0:null,wo.mode=r?3:0,Co(e,t,Do))}function xo(e,t){return null==e?t:e}function Co(e,t,n){var r=n.min,i=n.max,a=xo(r.pad,0),o=xo(i.pad,0),u=xo(r.hard,-Ho),l=xo(i.hard,Ho),c=xo(r.soft,Ho),s=xo(i.soft,-Ho),f=xo(r.mode,0),d=xo(i.mode,0),h=t-e,m=Bo(h),p=Io(Mo(e),Mo(t)),v=Bo(p),g=Mo(v-m);(h<1e-9||g>10)&&(h=0,0!=e&&0!=t||(h=1e-9,2==f&&c!=Ho&&(a=0),2==d&&s!=-Ho&&(o=0)));var y=h||p||1e3,_=Bo(y),b=Lo(10,Fo(_)),w=eu(Xo(e-y*(0==h?0==e?.1:1:a),b/10),9),D=e>=c&&(1==f||3==f&&w<=c||2==f&&w>=c)?c:Ho,k=Io(u,w=D?D:Po(D,w)),x=eu(Jo(t+y*(0==h?0==t?.1:1:o),b/10),9),C=t<=s&&(1==d||3==d&&x>=s||2==d&&x<=s)?s:-Ho,S=Po(l,x>C&&t<=C?C:Io(C,x));return k==S&&0==k&&(S=100),[k,S]}var So=new Intl.NumberFormat(Za?Ja.language:"en-US"),Eo=function(e){return So.format(e)},Ao=Math,No=Ao.PI,Mo=Ao.abs,Fo=Ao.floor,To=Ao.round,Oo=Ao.ceil,Po=Ao.min,Io=Ao.max,Lo=Ao.pow,Ro=Ao.sign,Bo=Ao.log10,zo=Ao.log2,jo=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return Ao.asinh(e/t)},Ho=1/0;function $o(e){return 1+(0|Bo((e^e>>31)-(e>>31)))}function Yo(e,t,n){return Po(Io(e,t),n)}function Uo(e){return"function"==typeof e?e:function(){return e}}var Vo=function(e){return e},qo=function(e,t){return t},Wo=function(e){return null},Qo=function(e){return!0},Zo=function(e,t){return e==t},Go=function(e){return eu(e,14)};function Ko(e,t){return Go(eu(Go(e/t))*t)}function Jo(e,t){return Go(Oo(Go(e/t))*t)}function Xo(e,t){return Go(Fo(Go(e/t))*t)}function eu(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(lu(e))return e;var n=Math.pow(10,t),r=e*n*(1+Number.EPSILON);return To(r)/n}var tu=new Map;function nu(e){return((""+e).split(".")[1]||"").length}function ru(e,t,n,r){for(var i=[],a=r.map(nu),o=t;o=0&&o>=0?0:u)+(o>=a[c]?0:a[c]),d=eu(s,f);i.push(d),tu.set(d,f)}return i}var iu={},au=[],ou=[null,null],uu=Array.isArray,lu=Number.isInteger;function cu(e){return"string"==typeof e}function su(e){var t=!1;if(null!=e){var n=e.constructor;t=null==n||n==Object}return t}function fu(e){return null!=e&&"object"==typeof e}var du=Object.getPrototypeOf(Uint8Array);function hu(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:su;if(uu(e)){var r=e.find((function(e){return null!=e}));if(uu(r)||n(r)){t=Array(e.length);for(var i=0;ia){for(r=o-1;r>=0&&null==e[r];)e[r--]=null;for(r=o+1;r12?t-12:t},AA:function(e){return e.getHours()>=12?"PM":"AM"},aa:function(e){return e.getHours()>=12?"pm":"am"},a:function(e){return e.getHours()>=12?"p":"a"},mm:function(e){return ku(e.getMinutes())},m:function(e){return e.getMinutes()},ss:function(e){return ku(e.getSeconds())},s:function(e){return e.getSeconds()},fff:function(e){return((t=e.getMilliseconds())<10?"00":t<100?"0":"")+t;var t}};function Cu(e,t){t=t||Du;for(var n,r=[],i=/\{([a-z]+)\}|[^{]+/gi;n=i.exec(e);)r.push("{"==n[0][0]?xu[n[1]]:n[0]);return function(e){for(var n="",i=0;i=o,p=f>=a&&f=i?i:f,M=_+(Fo(c)-Fo(g))+Jo(g-_,N);h.push(M);for(var F=t(M),T=F.getHours()+F.getMinutes()/n+F.getSeconds()/r,O=f/r,P=d/u.axes[l]._space;!((M=eu(M+f,1==e?0:3))>s);)if(O>1){var I=Fo(eu(T+O,6))%24,L=t(M).getHours()-I;L>1&&(L=-1),T=(T+O)%24,eu(((M-=L*r)-h[h.length-1])/f,3)*P>=.7&&h.push(M)}else h.push(M)}return h}}]}var Uu=v(Yu(1),3),Vu=Uu[0],qu=Uu[1],Wu=Uu[2],Qu=v(Yu(.001),3),Zu=Qu[0],Gu=Qu[1],Ku=Qu[2];function Ju(e,t){return e.map((function(e){return e.map((function(n,r){return 0==r||8==r||null==n?n:t(1==r||0==e[8]?n:e[1]+n)}))}))}function Xu(e,t){return function(n,r,i,a,o){var u,l,c,s,f,d,h=t.find((function(e){return o>=e[0]}))||t[t.length-1];return r.map((function(t){var n=e(t),r=n.getFullYear(),i=n.getMonth(),a=n.getDate(),o=n.getHours(),m=n.getMinutes(),p=n.getSeconds(),v=r!=u&&h[2]||i!=l&&h[3]||a!=c&&h[4]||o!=s&&h[5]||m!=f&&h[6]||p!=d&&h[7]||h[1];return u=r,l=i,c=a,s=o,f=m,d=p,v(n)}))}}function el(e,t,n){return new Date(e,t,n)}function tl(e,t){return t(e)}ru(2,-53,53,[1]);function nl(e,t){return function(n,r,i,a){return null==a?Qa:t(e(r))}}var rl={show:!0,live:!0,isolate:!1,mount:function(){},markers:{show:!0,width:2,stroke:function(e,t){var n=e.series[t];return n.width?n.stroke(e,t):n.points.width?n.points.stroke(e,t):null},fill:function(e,t){return e.series[t].fill(e,t)},dash:"solid"},idx:null,idxs:null,values:[]};var il=[0,0];function al(e,t,n){return function(e){0==e.button&&n(e)}}function ol(e,t,n){return n}var ul={show:!0,x:!0,y:!0,lock:!1,move:function(e,t,n){return il[0]=t,il[1]=n,il},points:{show:function(e,t){var n=e.cursor.points,r=ro(),i=n.size(e,t);to(r,Ta,i),to(r,Oa,i);var a=i/-2;to(r,"marginLeft",a),to(r,"marginTop",a);var o=n.width(e,t,i);return o&&to(r,"borderWidth",o),r},size:function(e,t){return e.series[t].points.size},width:0,stroke:function(e,t){var n=e.series[t].points;return n._stroke||n._fill},fill:function(e,t){var n=e.series[t].points;return n._fill||n._stroke}},bind:{mousedown:al,mouseup:al,click:al,dblclick:al,mousemove:ol,mouseleave:ol,mouseenter:ol},drag:{setScale:!0,x:!0,y:!1,dist:0,uni:null,click:function(e,t){t.stopPropagation(),t.stopImmediatePropagation()},_x:!1,_y:!1},focus:{prox:-1,bias:0},left:-10,top:-10,idx:null,dataIdx:function(e,t,n){return n},idxs:null},ll={show:!0,stroke:"rgba(0,0,0,0.07)",width:2},cl=mu({},ll,{filter:qo}),sl=mu({},cl,{size:10}),fl=mu({},ll,{show:!1}),dl='12px system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"',hl="bold "+dl,ml={show:!0,scale:"x",stroke:Ba,space:50,gap:5,size:50,labelGap:0,labelSize:30,labelFont:hl,side:2,grid:cl,ticks:sl,border:fl,font:dl,rotate:0},pl={show:!0,scale:"x",auto:!1,sorted:1,min:Ho,max:-Ho,idxs:[]};function vl(e,t,n,r,i){return t.map((function(e){return null==e?"":Eo(e)}))}function gl(e,t,n,r,i,a,o){for(var u=[],l=tu.get(i)||0,c=n=o?n:eu(Jo(n,i),l);c<=r;c=eu(c+i,l))u.push(Object.is(c,-0)?0:c);return u}function yl(e,t,n,r,i,a,o){var u=[],l=e.scales[e.axes[t].scale].log,c=Fo((10==l?Bo:zo)(n));i=Lo(l,c),10==l&&c<0&&(i=eu(i,-c));var s=n;do{u.push(s),s+=i,10==l&&(s=eu(s,tu.get(i))),s>=i*l&&(i=s)}while(s<=r);return u}function _l(e,t,n,r,i,a,o){var u=e.scales[e.axes[t].scale].asinh,l=r>u?yl(e,t,Io(u,n),r,i):[u],c=r>=0&&n<=0?[0]:[];return(n<-u?yl(e,t,Io(u,-r),-n,i):[u]).reverse().map((function(e){return-e})).concat(c,l)}var bl=/./,wl=/[12357]/,Dl=/[125]/,kl=/1/;function xl(e,t,n,r,i){var a=e.axes[n],o=a.scale,u=e.scales[o];if(3==u.distr&&2==u.log)return t;var l=e.valToPos,c=a._space,s=l(10,o),f=l(9,o)-s>=c?bl:l(7,o)-s>=c?wl:l(5,o)-s>=c?Dl:kl;return t.map((function(e){return 4==u.distr&&0==e||f.test(e)?e:null}))}function Cl(e,t,n,r){return null==r?Qa:null==t?"":Eo(t)}var Sl={show:!0,scale:"y",stroke:Ba,space:30,gap:5,size:50,labelGap:0,labelSize:30,labelFont:hl,side:3,grid:cl,ticks:sl,border:fl,font:dl,rotate:0};var El={scale:null,auto:!0,sorted:0,min:Ho,max:-Ho},Al=function(e,t,n,r,i){return i},Nl={show:!0,auto:!0,sorted:0,gaps:Al,alpha:1,facets:[mu({},El,{scale:"x"}),mu({},El,{scale:"y"})]},Ml={scale:"y",auto:!0,sorted:0,show:!0,spanGaps:!1,gaps:Al,alpha:1,points:{show:function(e,t){var n=e.series[0],r=n.scale,i=n.idxs,a=e._data[0],o=e.valToPos(a[i[0]],r,!0),u=e.valToPos(a[i[1]],r,!0),l=Mo(u-o)/(e.series[t].points.space*Qi);return i[1]-i[0]<=l},filter:null},values:null,min:Ho,max:-Ho,idxs:[],path:null,clip:null};function Fl(e,t,n,r,i){return n/10}var Tl={time:!0,auto:!0,distr:1,log:10,asinh:1,min:null,max:null,dir:1,ori:0},Ol=mu({},Tl,{time:!1,ori:1}),Pl={};function Il(e,t){var n=Pl[e];return n||(n={key:e,plots:[],sub:function(e){n.plots.push(e)},unsub:function(e){n.plots=n.plots.filter((function(t){return t!=e}))},pub:function(e,t,r,i,a,o,u){for(var l=0;l0){o=new Path2D;for(var u=0==t?Zl:Gl,l=n,c=0;cs[0]){var f=s[0]-l;f>0&&u(o,l,r,f,r+a),l=s[1]}}var d=n+i-l;d>0&&u(o,l,r,d,r+a)}return o}function $l(e,t,n,r,i,a,o){for(var u=[],l=e.length,c=1==i?n:r;c>=n&&c<=r;c+=i){if(null===t[c]){var s=c,f=c;if(1==i)for(;++c<=r&&null===t[c];)f=c;else for(;--c>=n&&null===t[c];)f=c;var d=a(e[s]),h=f==s?d:a(e[f]),m=s-i;d=o<=0&&m>=0&&m=0&&p>=0&&p=d&&u.push([d,h])}}return u}function Yl(e){return 0==e?Vo:1==e?To:function(t){return Ko(t,e)}}function Ul(e){var t=0==e?Vl:ql,n=0==e?function(e,t,n,r,i,a){e.arcTo(t,n,r,i,a)}:function(e,t,n,r,i,a){e.arcTo(n,t,i,r,a)},r=0==e?function(e,t,n,r,i){e.rect(t,n,r,i)}:function(e,t,n,r,i){e.rect(n,t,i,r)};return function(e,i,a,o,u){var l=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,c=arguments.length>6&&void 0!==arguments[6]?arguments[6]:0;0==l&&0==c?r(e,i,a,o,u):(l=Po(l,o/2,u/2),c=Po(c,o/2,u/2),t(e,i+l,a),n(e,i+o,a,i+o,a+u,l),n(e,i+o,a+u,i,a+u,c),n(e,i,a+u,i,a,c),n(e,i,a,i+o,a,l),e.closePath())}}var Vl=function(e,t,n){e.moveTo(t,n)},ql=function(e,t,n){e.moveTo(n,t)},Wl=function(e,t,n){e.lineTo(t,n)},Ql=function(e,t,n){e.lineTo(n,t)},Zl=Ul(0),Gl=Ul(1),Kl=function(e,t,n,r,i,a){e.arc(t,n,r,i,a)},Jl=function(e,t,n,r,i,a){e.arc(n,t,r,i,a)},Xl=function(e,t,n,r,i,a,o){e.bezierCurveTo(t,n,r,i,a,o)},ec=function(e,t,n,r,i,a,o){e.bezierCurveTo(n,t,i,r,o,a)};function tc(e){return function(e,t,n,r,i){return Rl(e,t,(function(t,a,o,u,l,c,s,f,d,h,m){var p,v,g=t.pxRound,y=t.points;0==u.ori?(p=Vl,v=Kl):(p=ql,v=Jl);var _=eu(y.width*Qi,3),b=(y.size-y.width)/2*Qi,w=eu(2*b,3),D=new Path2D,k=new Path2D,x=e.bbox,C=x.left,S=x.top,E=x.width,A=x.height;Zl(k,C-w,S-w,E+2*w,A+2*w);var N=function(e){if(null!=o[e]){var t=g(c(a[e],u,h,f)),n=g(s(o[e],l,m,d));p(D,t+b,n),v(D,t,n,b,0,2*No)}};if(i)i.forEach(N);else for(var M=n;M<=r;M++)N(M);return{stroke:_>0?D:null,fill:D,clip:k,flags:2|Ll}}))}}function nc(e){return function(t,n,r,i,a,o){r!=i&&(a!=r&&o!=r&&e(t,n,r),a!=i&&o!=i&&e(t,n,i),e(t,n,o))}}var rc=nc(Wl),ic=nc(Ql);function ac(e){var t=xo(null===e||void 0===e?void 0:e.alignGaps,0);return function(e,n,r,i){return Rl(e,n,(function(a,o,u,l,c,s,f,d,h,m,p){var g,y,b=a.pxRound,w=function(e){return b(s(e,l,m,d))},D=function(e){return b(f(e,c,p,h))};0==l.ori?(g=Wl,y=rc):(g=Ql,y=ic);for(var k,x,C,S=l.dir*(0==l.ori?1:-1),E={stroke:new Path2D,fill:null,clip:null,band:null,gaps:null,flags:Ll},A=E.stroke,N=Ho,M=-Ho,F=w(o[1==S?r:i]),T=vo(u,r,i,1*S),O=vo(u,r,i,-1*S),P=w(o[T]),I=w(o[O]),L=!1,R=1==S?r:i;R>=r&&R<=i;R+=S){var B=w(o[R]),z=u[R];B==F?null!=z?(x=D(z),N==Ho&&(g(A,B,x),k=x),N=Po(x,N),M=Io(x,M)):null===z&&(L=!0):(N!=Ho&&(y(A,F,N,M,k,x),C=F),null!=z?(g(A,B,x=D(z)),N=M=k=x):(N=Ho,M=-Ho,null===z&&(L=!0)),F=B)}N!=Ho&&N!=M&&C!=F&&y(A,F,N,M,k,x);var j=v(Bl(e,n),2),H=j[0],$=j[1];if(null!=a.fill||0!=H){var Y=E.fill=new Path2D(A),U=D(a.fillTo(e,n,a.min,a.max,H));g(Y,I,U),g(Y,P,U)}if(!a.spanGaps){var V,q=[];L&&(V=q).push.apply(V,_($l(o,u,r,i,S,w,t))),E.gaps=q=a.gaps(e,n,r,i,q),E.clip=Hl(q,l.ori,d,h,m,p)}return 0!=$&&(E.band=2==$?[jl(e,n,r,i,A,-1),jl(e,n,r,i,A,1)]:jl(e,n,r,i,A,$)),E}))}}function oc(e,t,n,r,i,a){var o=e.length;if(o<2)return null;var u=new Path2D;if(n(u,e[0],t[0]),2==o)r(u,e[1],t[1]);else{for(var l=Array(o),c=Array(o-1),s=Array(o-1),f=Array(o-1),d=0;d0!==c[h]>0?l[h]=0:(l[h]=3*(f[h-1]+f[h])/((2*f[h]+f[h-1])/c[h-1]+(f[h]+2*f[h-1])/c[h]),isFinite(l[h])||(l[h]=0));l[o-1]=c[o-2];for(var m=0;m=i&&a+(l<5?tu.get(l):0)<=17)return[l,c]}while(++u0?e:t.clamp(r,e,t.min,t.max,t.key)):4==t.distr?jo(e,t.asinh):e)-t._min)/(t._max-t._min)}function o(e,t,n,r){var i=a(e,t);return r+n*(-1==t.dir?1-i:i)}function u(e,t,n,r){var i=a(e,t);return r+n*(-1==t.dir?i:1-i)}function l(e,t,n,r){return 0==t.ori?o(e,t,n,r):u(e,t,n,r)}r.valToPosH=o,r.valToPosV=u;var c=!1;r.status=0;var s=r.root=ro("uplot");(null!=e.id&&(s.id=e.id),Xa(s,e.class),e.title)&&(ro("u-title",s).textContent=e.title);var f=no("canvas"),d=r.ctx=f.getContext("2d"),h=ro("u-wrap",s);ho("click",h,(function(e){(xt!=bt||Ct!=wt)&&Ft.click(r,e)}),!0);var m=r.under=ro("u-under",h);h.appendChild(f);var p=r.over=ro("u-over",h),g=+xo((e=hu(e)).pxAlign,1),y=Yl(g);(e.plugins||[]).forEach((function(t){t.opts&&(e=t.opts(r,e)||e)}));var _,b,w=e.ms||.001,D=r.series=1==i?fc(e.series||[],pl,Ml,!1):(_=e.series||[null],b=Nl,_.map((function(e,t){return 0==t?null:mu({},b,e)}))),k=r.axes=fc(e.axes||[],ml,Sl,!0),x=r.scales={},C=r.bands=e.bands||[];C.forEach((function(e){e.fill=Uo(e.fill||null),e.dir=xo(e.dir,-1)}));var S=2==i?D[1].facets[0].scale:D[0].scale,E={axes:function(){for(var e=function(){var e=k[t];if(!e.show||!e._show)return"continue";var n,i,a=e.side,o=a%2,u=e.stroke(r,t),c=0==a||3==a?-1:1;if(e.label){var s=e.labelGap*c,f=To((e._lpos+s)*Qi);nt(e.labelFont[0],u,"center",2==a?Pa:Ia),d.save(),1==o?(n=i=0,d.translate(f,To(pe+ge/2)),d.rotate((3==a?-No:No)/2)):(n=To(me+ve/2),i=f),d.fillText(e.label,n,i),d.restore()}var h=v(e._found,2),m=h[0],p=h[1];if(0==p)return"continue";var g=x[e.scale],_=0==o?ve:ge,b=0==o?me:pe,w=To(e.gap*Qi),D=e._splits,C=2==g.distr?D.map((function(e){return Ke[e]})):D,S=2==g.distr?Ke[D[1]]-Ke[D[0]]:m,E=e.ticks,A=e.border,N=E.show?To(E.size*Qi):0,M=e._rotate*-No/180,F=y(e._pos*Qi),T=F+(N+w)*c;i=0==o?T:0,n=1==o?T:0,nt(e.font[0],u,1==e.align?La:2==e.align?Ra:M>0?La:M<0?Ra:0==o?"center":3==a?Ra:La,M||1==o?"middle":2==a?Pa:Ia);for(var O=1.5*e.font[1],P=D.map((function(e){return y(l(e,g,_,b))})),I=e._values,L=0;L0&&(D.forEach((function(e,n){if(n>0&&e.show&&null==e._paths){var a=2==i?[0,t[n][0].length-1]:function(e){var t=Yo(Qe-1,0,Ie-1),n=Yo(Ze+1,0,Ie-1);for(;null==e[t]&&t>0;)t--;for(;null==e[n]&&n0&&e.show){Ve!=e.alpha&&(d.globalAlpha=Ve=e.alpha),it(t,!1),e._paths&&at(t,!1),it(t,!0);var n=e._paths?e._paths.gaps:null,i=e.points.show(r,t,Qe,Ze,n),a=e.points.filter(r,t,i,n);(i||a)&&(e.points._paths=e.points.paths(r,t,Qe,Ze,a),at(t,!0)),1!=Ve&&(d.globalAlpha=Ve=1),sn("drawSeries",t)}})))}},A=(e.drawOrder||["axes","series"]).map((function(e){return E[e]}));function N(t){var n=x[t];if(null==n){var r=(e.scales||iu)[t]||iu;if(null!=r.from)N(r.from),x[t]=mu({},x[r.from],r,{key:t});else{(n=x[t]=mu({},t==S?Tl:Ol,r)).key=t;var a=n.time,o=n.range,u=uu(o);if((t!=S||2==i&&!a)&&(!u||null!=o[0]&&null!=o[1]||(o={min:null==o[0]?bo:{mode:1,hard:o[0],soft:o[0]},max:null==o[1]?bo:{mode:1,hard:o[1],soft:o[1]}},u=!1),!u&&su(o))){var l=o;o=function(e,t,n){return null==t?ou:ko(t,n,l)}}n.range=Uo(o||(a?mc:t==S?3==n.distr?gc:4==n.distr?_c:hc:3==n.distr?vc:4==n.distr?yc:pc)),n.auto=Uo(!u&&n.auto),n.clamp=Uo(n.clamp||Fl),n._min=n._max=null}}}for(var M in N("x"),N("y"),1==i&&D.forEach((function(e){N(e.scale)})),k.forEach((function(e){N(e.scale)})),e.scales)N(M);var F,T,O=x[S],P=O.distr;0==O.ori?(Xa(s,"u-hz"),F=o,T=u):(Xa(s,"u-vt"),F=u,T=o);var I={};for(var L in x){var R=x[L];null==R.min&&null==R.max||(I[L]={min:R.min,max:R.max},R.min=R.max=null)}var B,z=e.tzDate||function(e){return new Date(To(e/w))},j=e.fmtDate||Cu,H=1==w?Wu(z):Ku(z),$=Xu(z,Ju(1==w?qu:Gu,j)),Y=nl(z,tl("{YYYY}-{MM}-{DD} {h}:{mm}{aa}",j)),U=[],V=r.legend=mu({},rl,e.legend),q=V.show,W=V.markers;V.idxs=U,W.width=Uo(W.width),W.dash=Uo(W.dash),W.stroke=Uo(W.stroke),W.fill=Uo(W.fill);var Q,Z=[],G=[],K=!1,J={};if(V.live){var X=D[1]?D[1].values:null;for(var ee in Q=(K=null!=X)?X(r,1,0):{_:0})J[ee]=Qa}if(q)if(B=no("table","u-legend",s),V.mount(r,B),K){var te=no("tr","u-thead",B);for(var ne in no("th",null,te),Q)no("th",Fa,te).textContent=ne}else Xa(B,"u-inline"),V.live&&Xa(B,"u-live");var re={show:!0},ie={show:!1};var ae=new Map;function oe(e,t,n){var i=ae.get(t)||{},a=Ee.bind[e](r,t,n);a&&(ho(e,t,i[e]=a),ae.set(t,i))}function ue(e,t,n){var r=ae.get(t)||{};for(var i in r)null!=e&&i!=e||(mo(i,t,r[i]),delete r[i]);null==e&&ae.delete(t)}var le=0,ce=0,se=0,fe=0,de=0,he=0,me=0,pe=0,ve=0,ge=0;r.bbox={};var ye=!1,_e=!1,be=!1,we=!1,De=!1,ke=!1;function xe(e,t,n){(n||e!=r.width||t!=r.height)&&Ce(e,t),ht(!1),be=!0,_e=!0,Ee.left>=0&&(we=ke=!0),Et()}function Ce(e,t){r.width=le=se=e,r.height=ce=fe=t,de=he=0,function(){var e=!1,t=!1,n=!1,r=!1;k.forEach((function(i,a){if(i.show&&i._show){var o=i.side,u=o%2,l=i._size+(null!=i.label?i.labelSize:0);l>0&&(u?(se-=l,3==o?(de+=l,r=!0):n=!0):(fe-=l,0==o?(he+=l,e=!0):t=!0))}})),Oe[0]=e,Oe[1]=n,Oe[2]=t,Oe[3]=r,se-=We[1]+We[3],de+=We[3],fe-=We[2]+We[0],he+=We[0]}(),function(){var e=de+se,t=he+fe,n=de,r=he;function i(i,a){switch(i){case 1:return(e+=a)-a;case 2:return(t+=a)-a;case 3:return(n-=a)+a;case 0:return(r-=a)+a}}k.forEach((function(e,t){if(e.show&&e._show){var n=e.side;e._pos=i(n,e._size),null!=e.label&&(e._lpos=i(n,e.labelSize))}}))}();var n=r.bbox;me=n.left=Ko(de*Qi,.5),pe=n.top=Ko(he*Qi,.5),ve=n.width=Ko(se*Qi,.5),ge=n.height=Ko(fe*Qi,.5)}var Se=3;r.setSize=function(e){xe(e.width,e.height)};var Ee=r.cursor=mu({},ul,{drag:{y:2==i}},e.cursor);Ee.idxs=U,Ee._lock=!1;var Ae=Ee.points;Ae.show=Uo(Ae.show),Ae.size=Uo(Ae.size),Ae.stroke=Uo(Ae.stroke),Ae.width=Uo(Ae.width),Ae.fill=Uo(Ae.fill);var Ne=r.focus=mu({},e.focus||{alpha:.3},Ee.focus);0!=Ne.bias&&(Ne.prox=1e5);var Me=Ne.prox>=0,Fe=[null];function Te(e,t){if(1==i||t>0){var n=1==i&&x[e.scale].time,a=e.value;e.value=n?cu(a)?nl(z,tl(a,j)):a||Y:a||Cl,e.label=e.label||(n?"Time":"Value")}if(t>0){e.width=null==e.width?1:e.width,e.paths=e.paths||cc||Wo,e.fillTo=Uo(e.fillTo||zl),e.pxAlign=+xo(e.pxAlign,g),e.pxRound=Yl(e.pxAlign),e.stroke=Uo(e.stroke||null),e.fill=Uo(e.fill||null),e._stroke=e._fill=e._paths=e._focus=null;var o=eu((3+2*(Io(1,e.width)||1))*1,3),u=e.points=mu({},{size:o,width:Io(1,.2*o),stroke:e.stroke,space:2*o,paths:sc,_stroke:null,_fill:null},e.points);u.show=Uo(u.show),u.filter=Uo(u.filter),u.fill=Uo(u.fill),u.stroke=Uo(u.stroke),u.paths=Uo(u.paths),u.pxAlign=e.pxAlign}if(q){var l=function(e,t){if(0==t&&(K||!V.live||2==i))return ou;var n=[],a=no("tr","u-series",B,B.childNodes[t]);Xa(a,e.class),e.show||Xa(a,Ma);var o=no("th",null,a);if(W.show){var u=ro("u-marker",o);if(t>0){var l=W.width(r,t);l&&(u.style.border=l+"px "+W.dash(r,t)+" "+W.stroke(r,t)),u.style.background=W.fill(r,t)}}var c=ro(Fa,o);for(var s in c.textContent=e.label,t>0&&(W.show||(c.style.color=e.width>0?W.stroke(r,t):W.fill(r,t)),oe("click",o,(function(t){if(!Ee._lock){var n=D.indexOf(e);if((t.ctrlKey||t.metaKey)!=V.isolate){var r=D.some((function(e,t){return t>0&&t!=n&&e.show}));D.forEach((function(e,t){t>0&&Ht(t,r?t==n?re:ie:re,!0,fn.setSeries)}))}else Ht(n,{show:!e.show},!0,fn.setSeries)}})),Me&&oe(Ya,o,(function(t){Ee._lock||Ht(D.indexOf(e),$t,!0,fn.setSeries)}))),Q){var f=no("td","u-value",a);f.textContent="--",n.push(f)}return[a,n]}(e,t);Z.splice(t,0,l[0]),G.splice(t,0,l[1]),V.values.push(null)}if(Ee.show){U.splice(t,0,null);var c=function(e,t){if(t>0){var n=Ee.points.show(r,t);if(n)return Xa(n,"u-cursor-pt"),Xa(n,e.class),ao(n,-10,-10,se,fe),p.insertBefore(n,Fe[t]),n}}(e,t);c&&Fe.splice(t,0,c)}sn("addSeries",t)}r.addSeries=function(e,t){t=null==t?D.length:t,e=1==i?dc(e,t,pl,Ml):dc(e,t,null,Nl),D.splice(t,0,e),Te(D[t],t)},r.delSeries=function(e){if(D.splice(e,1),q){V.values.splice(e,1),G.splice(e,1);var t=Z.splice(e,1)[0];ue(null,t.firstChild),t.remove()}Ee.show&&(U.splice(e,1),Fe.length>1&&Fe.splice(e,1)[0].remove()),sn("delSeries",e)};var Oe=[!1,!1,!1,!1];function Pe(e,t,n,r){var i=v(n,4),a=i[0],o=i[1],u=i[2],l=i[3],c=t%2,s=0;return 0==c&&(l||o)&&(s=0==t&&!a||2==t&&!u?To(ml.size/3):0),1==c&&(a||u)&&(s=1==t&&!o||3==t&&!l?To(Sl.size/2):0),s}var Ie,Le,Re,Be,ze,je,He,$e,Ye,Ue,Ve,qe=r.padding=(e.padding||[Pe,Pe,Pe,Pe]).map((function(e){return Uo(xo(e,Pe))})),We=r._padding=qe.map((function(e,t){return e(r,t,Oe,0)})),Qe=null,Ze=null,Ge=1==i?D[0].idxs:null,Ke=null,Je=!1;function Xe(e,n){if(t=null==e?[]:hu(e,fu),2==i){Ie=0;for(var a=1;a=0,ke=!0,Et()}}function et(){var e,n;if(Je=!0,1==i)if(Ie>0){if(Qe=Ge[0]=0,Ze=Ge[1]=Ie-1,e=t[0][Qe],n=t[0][Ze],2==P)e=Qe,n=Ze;else if(1==Ie)if(3==P){var r=v(go(e,e,O.log,!1),2);e=r[0],n=r[1]}else if(4==P){var a=v(yo(e,e,O.log,!1),2);e=a[0],n=a[1]}else if(O.time)n=e+To(86400/w);else{var o=v(ko(e,n,_o,!0),2);e=o[0],n=o[1]}}else Qe=Ge[0]=e=null,Ze=Ge[1]=n=null;jt(S,e,n)}function tt(e,t,n,r,i,a){var o,u,l,c,s;null!==(o=e)&&void 0!==o||(e=za),null!==(u=n)&&void 0!==u||(n=au),null!==(l=r)&&void 0!==l||(r="butt"),null!==(c=i)&&void 0!==c||(i=za),null!==(s=a)&&void 0!==s||(a="round"),e!=Le&&(d.strokeStyle=Le=e),i!=Re&&(d.fillStyle=Re=i),t!=Be&&(d.lineWidth=Be=t),a!=je&&(d.lineJoin=je=a),r!=He&&(d.lineCap=He=r),n!=ze&&d.setLineDash(ze=n)}function nt(e,t,n,r){t!=Re&&(d.fillStyle=Re=t),e!=$e&&(d.font=$e=e),n!=Ye&&(d.textAlign=Ye=n),r!=Ue&&(d.textBaseline=Ue=r)}function rt(e,t,n,i){var a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;if(i.length>0&&e.auto(r,Je)&&(null==t||null==t.min)){var o=xo(Qe,0),u=xo(Ze,i.length-1),l=null==n.min?3==e.distr?function(e,t,n){for(var r=Ho,i=-Ho,a=t;a<=n;a++)e[a]>0&&(r=Po(r,e[a]),i=Io(i,e[a]));return[r==Ho?1:r,i==-Ho?10:i]}(i,o,u):function(e,t,n,r){var i=Ho,a=-Ho;if(1==r)i=e[t],a=e[n];else if(-1==r)i=e[n],a=e[t];else for(var o=t;o<=n;o++)null!=e[o]&&(i=Po(i,e[o]),a=Io(a,e[o]));return[i,a]}(i,o,u,a):[n.min,n.max];e.min=Po(e.min,n.min=l[0]),e.max=Io(e.max,n.max=l[1])}}function it(e,t){var n=t?D[e].points:D[e];n._stroke=n.stroke(r,e),n._fill=n.fill(r,e)}function at(e,n){var i=n?D[e].points:D[e],a=i._stroke,o=i._fill,u=i._paths,l=u.stroke,c=u.fill,s=u.clip,f=u.flags,h=null,m=eu(i.width*Qi,3),p=m%2/2;n&&null==o&&(o=m>0?"#fff":a);var v=1==i.pxAlign;if(v&&d.translate(p,p),!n){var g=me,y=pe,_=ve,b=ge,w=m*Qi/2;0==i.min&&(b+=w),0==i.max&&(y-=w,b+=w),(h=new Path2D).rect(g,y,_,b)}n?ut(a,m,i.dash,i.cap,o,l,c,f,s):function(e,n,i,a,o,u,l,c,s,f,d){var h=!1;C.forEach((function(m,p){if(m.series[0]==e){var v,g=D[m.series[1]],y=t[m.series[1]],_=(g._paths||iu).band;uu(_)&&(_=1==m.dir?_[0]:_[1]);var b=null;g.show&&_&&function(e,t,n){for(t=xo(t,0),n=xo(n,e.length-1);t<=n;){if(null!=e[t])return!0;t++}return!1}(y,Qe,Ze)?(b=m.fill(r,p)||u,v=g._paths.clip):_=null,ut(n,i,a,o,b,l,c,s,f,d,v,_),h=!0}})),h||ut(n,i,a,o,u,l,c,s,f,d)}(e,a,m,i.dash,i.cap,o,l,c,f,h,s),v&&d.translate(-p,-p)}r.setData=Xe;var ot=2|Ll;function ut(e,t,n,r,i,a,o,u,l,c,s,f){tt(e,t,n,r,i),(l||c||f)&&(d.save(),l&&d.clip(l),c&&d.clip(c)),f?(u&ot)==ot?(d.clip(f),s&&d.clip(s),ct(i,o),lt(e,a,t)):2&u?(ct(i,o),d.clip(f),lt(e,a,t)):u&Ll&&(d.save(),d.clip(f),s&&d.clip(s),ct(i,o),d.restore(),lt(e,a,t)):(ct(i,o),lt(e,a,t)),(l||c||f)&&d.restore()}function lt(e,t,n){n>0&&(t instanceof Map?t.forEach((function(e,t){d.strokeStyle=Le=t,d.stroke(e)})):null!=t&&e&&d.stroke(t))}function ct(e,t){t instanceof Map?t.forEach((function(e,t){d.fillStyle=Re=t,d.fill(e)})):null!=t&&e&&d.fill(t)}function st(e,t,n,r,i,a,o,u,l,c){var s=o%2/2;1==g&&d.translate(s,s),tt(u,o,l,c,u),d.beginPath();var f,h,m,p,v=i+(0==r||3==r?-a:a);0==n?(h=i,p=v):(f=i,m=v);for(var y=0;y0&&(t._paths=null,e&&(1==i?(t.min=null,t.max=null):t.facets.forEach((function(e){e.min=null,e.max=null}))))}))}var mt,pt,vt,gt,yt,_t,bt,wt,Dt,kt,xt,Ct,St=!1;function Et(){St||(vu(At),St=!0)}function At(){ye&&(!function(){var e=hu(x,fu);for(var n in e){var a=e[n],o=I[n];if(null!=o&&null!=o.min)mu(a,o),n==S&&ht(!0);else if(n!=S||2==i)if(0==Ie&&null==a.from){var u=a.range(r,null,null,n);a.min=u[0],a.max=u[1]}else a.min=Ho,a.max=-Ho}if(Ie>0)for(var l in D.forEach((function(n,a){if(1==i){var o=n.scale,u=e[o],l=I[o];if(0==a){var c=u.range(r,u.min,u.max,o);u.min=c[0],u.max=c[1],Qe=po(u.min,t[0]),(Ze=po(u.max,t[0]))-Qe>1&&(t[0][Qe]u.max&&Ze--),n.min=Ke[Qe],n.max=Ke[Ze]}else n.show&&n.auto&&rt(u,l,n,t[a],n.sorted);n.idxs[0]=Qe,n.idxs[1]=Ze}else if(a>0&&n.show&&n.auto){var s=v(n.facets,2),f=s[0],d=s[1],h=f.scale,m=d.scale,p=v(t[a],2),g=p[0],y=p[1];rt(e[h],I[h],f,g,f.sorted),rt(e[m],I[m],d,y,d.sorted),n.min=d.min,n.max=d.max}})),e){var c=e[l],s=I[l];if(null==c.from&&(null==s||null==s.min)){var f=c.range(r,c.min==Ho?null:c.min,c.max==-Ho?null:c.max,l);c.min=f[0],c.max=f[1]}}for(var d in e){var h=e[d];if(null!=h.from){var m=e[h.from];if(null==m.min)h.min=h.max=null;else{var p=h.range(r,m.min,m.max,d);h.min=p[0],h.max=p[1]}}}var g={},y=!1;for(var _ in e){var b=e[_],w=x[_];if(w.min!=b.min||w.max!=b.max){w.min=b.min,w.max=b.max;var k=w.distr;w._min=3==k?Bo(w.min):4==k?jo(w.min,w.asinh):w.min,w._max=3==k?Bo(w.max):4==k?jo(w.max,w.asinh):w.max,g[_]=y=!0}}if(y){for(var C in D.forEach((function(e,t){2==i?t>0&&g.y&&(e._paths=null):g[e.scale]&&(e._paths=null)})),g)be=!0,sn("setScale",C);Ee.show&&Ee.left>=0&&(we=ke=!0)}for(var E in I)I[E]=null}(),ye=!1),be&&(!function(){for(var e=!1,t=0;!e;){var n=ft(++t),i=dt(t);(e=t==Se||n&&i)||(Ce(r.width,r.height),_e=!0)}}(),be=!1),_e&&(to(m,La,de),to(m,Pa,he),to(m,Ta,se),to(m,Oa,fe),to(p,La,de),to(p,Pa,he),to(p,Ta,se),to(p,Oa,fe),to(h,Ta,le),to(h,Oa,ce),f.width=To(le*Qi),f.height=To(ce*Qi),k.forEach((function(e){var t=e._el,n=e._show,r=e._size,i=e._pos,a=e.side;if(null!=t)if(n){var o=a%2==1;to(t,o?"left":"top",i-(3===a||0===a?r:0)),to(t,o?"width":"height",r),to(t,o?"top":"left",o?he:de),to(t,o?"height":"width",o?fe:se),eo(t,Ma)}else Xa(t,Ma)})),Le=Re=Be=je=He=$e=Ye=Ue=ze=null,Ve=1,Jt(!0),sn("setSize"),_e=!1),le>0&&ce>0&&(d.clearRect(0,0,f.width,f.height),sn("drawClear"),A.forEach((function(e){return e()})),sn("draw")),Rt.show&&De&&(zt(Rt),De=!1),Ee.show&&we&&(Gt(null,!0,!1),we=!1),V.show&&V.live&&ke&&(Qt(),ke=!1),c||(c=!0,r.status=1,sn("ready")),Je=!1,St=!1}function Nt(e,n){var i=x[e];if(null==i.from){if(0==Ie){var a=i.range(r,n.min,n.max,e);n.min=a[0],n.max=a[1]}if(n.min>n.max){var o=n.min;n.min=n.max,n.max=o}if(Ie>1&&null!=n.min&&null!=n.max&&n.max-n.min<1e-16)return;e==S&&2==i.distr&&Ie>0&&(n.min=po(n.min,t[0]),n.max=po(n.max,t[0]),n.min==n.max&&n.max++),I[e]=n,ye=!0,Et()}}r.redraw=function(e,t){be=t||!1,!1!==e?jt(S,O.min,O.max):Et()},r.setScale=Nt;var Mt=!1,Ft=Ee.drag,Tt=Ft.x,Ot=Ft.y;Ee.show&&(Ee.x&&(mt=ro("u-cursor-x",p)),Ee.y&&(pt=ro("u-cursor-y",p)),0==O.ori?(vt=mt,gt=pt):(vt=pt,gt=mt),xt=Ee.left,Ct=Ee.top);var Pt,It,Lt,Rt=r.select=mu({show:!0,over:!0,left:0,width:0,top:0,height:0},e.select),Bt=Rt.show?ro("u-select",Rt.over?p:m):null;function zt(e,t){if(Rt.show){for(var n in e)Rt[n]=e[n],n in tn&&to(Bt,n,e[n]);!1!==t&&sn("setSelect")}}function jt(e,t,n){Nt(e,{min:t,max:n})}function Ht(e,t,n,a){null!=t.focus&&function(e){if(e!=Lt){var t=null==e,n=1!=Ne.alpha;D.forEach((function(r,i){var a=t||0==i||i==e;r._focus=t?null:a,n&&function(e,t){D[e].alpha=t,Ee.show&&Fe[e]&&(Fe[e].style.opacity=t);q&&Z[e]&&(Z[e].style.opacity=t)}(i,a?1:Ne.alpha)})),Lt=e,n&&Et()}}(e),null!=t.show&&D.forEach((function(n,r){r>0&&(e==r||null==e)&&(n.show=t.show,function(e,t){var n=D[e],r=q?Z[e]:null;n.show?r&&eo(r,Ma):(r&&Xa(r,Ma),Fe.length>1&&ao(Fe[e],-10,-10,se,fe))}(r,t.show),jt(2==i?n.facets[1].scale:n.scale,null,null),Et())})),!1!==n&&sn("setSeries",e,t),a&&mn("setSeries",r,e,t)}r.setSelect=zt,r.setSeries=Ht,r.addBand=function(e,t){e.fill=Uo(e.fill||null),e.dir=xo(e.dir,-1),t=null==t?C.length:t,C.splice(t,0,e)},r.setBand=function(e,t){mu(C[e],t)},r.delBand=function(e){null==e?C.length=0:C.splice(e,1)};var $t={focus:!0};function Yt(e,t,n){var r=x[t];n&&(e=e/Qi-(1==r.ori?he:de));var i=se;1==r.ori&&(e=(i=fe)-e),-1==r.dir&&(e=i-e);var a=r._min,o=a+(r._max-a)*(e/i),u=r.distr;return 3==u?Lo(10,o):4==u?function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return Ao.sinh(e)*t}(o,r.asinh):o}function Ut(e,t){to(Bt,La,Rt.left=e),to(Bt,Ta,Rt.width=t)}function Vt(e,t){to(Bt,Pa,Rt.top=e),to(Bt,Oa,Rt.height=t)}q&&Me&&ho(Ua,B,(function(e){Ee._lock||null!=Lt&&Ht(null,$t,!0,fn.setSeries)})),r.valToIdx=function(e){return po(e,t[0])},r.posToIdx=function(e,n){return po(Yt(e,S,n),t[0],Qe,Ze)},r.posToVal=Yt,r.valToPos=function(e,t,n){return 0==x[t].ori?o(e,x[t],n?ve:se,n?me:0):u(e,x[t],n?ge:fe,n?pe:0)},r.batch=function(e){e(r),Et()},r.setCursor=function(e,t,n){xt=e.left,Ct=e.top,Gt(null,t,n)};var qt=0==O.ori?Ut:Vt,Wt=1==O.ori?Ut:Vt;function Qt(e,t){null!=e&&(e.idxs?e.idxs.forEach((function(e,t){U[t]=e})):void 0!==e.idx&&U.fill(e.idx),V.idx=U[0]);for(var n=0;n0||1==i&&!K)&&Zt(n,U[n]);q&&V.live&&function(){if(q&&V.live)for(var e=2==i?1:0;eZe;Pt=Ho;var c=0==O.ori?se:fe,s=1==O.ori?se:fe;if(xt<0||0==Ie||l){o=null;for(var f=0;f0&&Fe.length>1&&ao(Fe[f],-10,-10,se,fe);Me&&Ht(null,$t,!0,null==e&&fn.setSeries),V.live&&(U.fill(o),ke=!0)}else{var d,h;1==i&&(o=po(d=Yt(0==O.ori?xt:Ct,S),t[0],Qe,Ze),h=F(t[0][o],O,c,0));for(var m=2==i?1:0;m0&&p.show){var k=null==b?-10:Jo(T(b,1==i?x[p.scale]:x[p.facets[1].scale],s,0),1);if(Me&&k>=0&&1==i){var C=Mo(k-Ct),E=Ne.bias;if(0!=E){var A=Yt(1==O.ori?xt:Ct,p.scale),N=A>=0?1:-1;N==(b>=0?1:-1)&&C=A:b<=A:1==E?b<=A:b>=A)&&(Pt=C,It=m)}else C1){uo(Fe[m],Ee.points.fill(r,m),Ee.points.stroke(r,m));var I=void 0,L=void 0,R=void 0,B=void 0,z=!0,j=Ee.points.bbox;if(null!=j){z=!1;var H=j(r,m);R=H.left,B=H.top,I=H.width,L=H.height}else R=M,B=P,I=L=Ee.points.size(r,m);co(Fe[m],I,L,z),ao(Fe[m],R,B,se,fe)}}}}if(Ee.idx=o,Ee.left=xt,Ee.top=Ct,ke&&(V.idx=o,Qt()),Rt.show&&Mt)if(null!=e){var $=v(fn.scales,2),Y=$[0],q=$[1],W=v(fn.match,2),Q=W[0],Z=W[1],G=v(e.cursor.sync.scales,2),K=G[0],J=G[1],X=e.cursor.drag;if(Tt=X._x,Ot=X._y,Tt||Ot){var ee,te,ne,re,ie,ae=e.select,oe=ae.left,ue=ae.top,le=ae.width,ce=ae.height,de=e.scales[Y].ori,he=e.posToVal,me=null!=Y&&Q(Y,K),pe=null!=q&&Z(q,J);me&&Tt?(0==de?(ee=oe,te=le):(ee=ue,te=ce),ne=x[Y],re=F(he(ee,K),ne,c,0),ie=F(he(ee+te,K),ne,c,0),qt(Po(re,ie),Mo(ie-re))):qt(0,c),pe&&Ot?(1==de?(ee=oe,te=le):(ee=ue,te=ce),ne=x[q],re=T(he(ee,J),ne,s,0),ie=T(he(ee+te,J),ne,s,0),Wt(Po(re,ie),Mo(ie-re))):Wt(0,s)}else nn()}else{var ve=Mo(Dt-yt),ge=Mo(kt-_t);if(1==O.ori){var ye=ve;ve=ge,ge=ye}Tt=Ft.x&&ve>=Ft.dist,Ot=Ft.y&&ge>=Ft.dist;var _e,be,we=Ft.uni;null!=we?Tt&&Ot&&(Ot=ge>=we,(Tt=ve>=we)||Ot||(ge>ve?Ot=!0:Tt=!0)):Ft.x&&Ft.y&&(Tt||Ot)&&(Tt=Ot=!0),Tt&&(0==O.ori?(_e=bt,be=xt):(_e=wt,be=Ct),qt(Po(_e,be),Mo(be-_e)),Ot||Wt(0,s)),Ot&&(1==O.ori?(_e=bt,be=xt):(_e=wt,be=Ct),Wt(Po(_e,be),Mo(be-_e)),Tt||qt(0,c)),Tt||Ot||(qt(0,0),Wt(0,0))}if(Ft._x=Tt,Ft._y=Ot,null==e){if(a){if(null!=dn){var De=v(fn.scales,2),xe=De[0],Ce=De[1];fn.values[0]=null!=xe?Yt(0==O.ori?xt:Ct,xe):null,fn.values[1]=null!=Ce?Yt(1==O.ori?xt:Ct,Ce):null}mn(ja,r,xt,Ct,se,fe,o)}if(Me){var Se=a&&fn.setSeries,Ae=Ne.prox;null==Lt?Pt<=Ae&&Ht(It,$t,!0,Se):Pt>Ae?Ht(null,$t,!0,Se):It!=Lt&&Ht(It,$t,!0,Se)}}!1!==n&&sn("setCursor")}r.setLegend=Qt;var Kt=null;function Jt(e){!0===e?Kt=null:sn("syncRect",Kt=p.getBoundingClientRect())}function Xt(e,t,n,r,i,a,o){Ee._lock||Mt&&null!=e&&0==e.movementX&&0==e.movementY||(en(e,t,n,r,i,a,o,!1,null!=e),null!=e?Gt(null,!0,!0):Gt(t,!0,!1))}function en(e,t,n,i,a,o,u,c,s){if(null==Kt&&Jt(!1),null!=e)n=e.clientX-Kt.left,i=e.clientY-Kt.top;else{if(n<0||i<0)return xt=-10,void(Ct=-10);var f=v(fn.scales,2),d=f[0],h=f[1],m=t.cursor.sync,p=v(m.values,2),g=p[0],y=p[1],_=v(m.scales,2),b=_[0],w=_[1],D=v(fn.match,2),k=D[0],C=D[1],S=t.axes[0].side%2==1,E=0==O.ori?se:fe,A=1==O.ori?se:fe,N=S?o:a,M=S?a:o,F=S?i:n,T=S?n:i;if(n=null!=b?k(d,b)?l(g,x[d],E,0):-10:E*(F/N),i=null!=w?C(h,w)?l(y,x[h],A,0):-10:A*(T/M),1==O.ori){var P=n;n=i,i=P}}if(s&&((n<=1||n>=se-1)&&(n=Ko(n,se)),(i<=1||i>=fe-1)&&(i=Ko(i,fe))),c){yt=n,_t=i;var I=v(Ee.move(r,n,i),2);bt=I[0],wt=I[1]}else xt=n,Ct=i}var tn={width:0,height:0,left:0,top:0};function nn(){zt(tn,!1)}function rn(e,t,n,i,a,o,u){Mt=!0,Tt=Ot=Ft._x=Ft._y=!1,en(e,t,n,i,a,o,0,!0,!1),null!=e&&(oe($a,Ga,an),mn(Ha,r,bt,wt,se,fe,null))}function an(e,t,n,i,a,o,u){Mt=Ft._x=Ft._y=!1,en(e,t,n,i,a,o,0,!1,!0);var l=Rt.left,c=Rt.top,s=Rt.width,f=Rt.height,d=s>0||f>0;if(d&&zt(Rt),Ft.setScale&&d){var h=l,m=s,p=c,v=f;if(1==O.ori&&(h=c,m=f,p=l,v=s),Tt&&jt(S,Yt(h,S),Yt(h+m,S)),Ot)for(var g in x){var y=x[g];g!=S&&null==y.from&&y.min!=Ho&&jt(g,Yt(p+v,g),Yt(p,g))}nn()}else Ee.lock&&(Ee._lock=!Ee._lock,Ee._lock||Gt(null,!0,!1));null!=e&&(ue($a,Ga),mn($a,r,xt,Ct,se,fe,null))}function on(e,t,n,i,a,o,u){et(),nn(),null!=e&&mn(Va,r,xt,Ct,se,fe,null)}function un(){k.forEach(Dc),xe(r.width,r.height,!0)}ho(Wa,Ka,un);var ln={};ln.mousedown=rn,ln.mousemove=Xt,ln.mouseup=an,ln.dblclick=on,ln.setSeries=function(e,t,n,r){Ht(n,r,!0,!1)},Ee.show&&(oe(Ha,p,rn),oe(ja,p,Xt),oe(Ya,p,Jt),oe(Ua,p,(function(e,t,n,r,i,a,o){if(!Ee._lock){var u=Mt;if(Mt){var l,c,s=!0,f=!0;0==O.ori?(l=Tt,c=Ot):(l=Ot,c=Tt),l&&c&&(s=xt<=10||xt>=se-10,f=Ct<=10||Ct>=fe-10),l&&s&&(xt=xt=3&&10==i.log?xl:qo)),e.font=wc(e.font),e.labelFont=wc(e.labelFont),e._size=e.size(r,null,t,0),e._space=e._rotate=e._incrs=e._found=e._splits=e._values=null,e._size>0&&(Oe[t]=!0,e._el=ro("u-axis",h))}})),n?n instanceof HTMLElement?(n.appendChild(s),pn()):n(r,pn):pn(),r}kc.assign=mu,kc.fmtNum=Eo,kc.rangeNum=ko,kc.rangeLog=go,kc.rangeAsinh=yo,kc.orient=Rl,kc.pxRatio=Qi,kc.join=function(e,t){for(var n=new Set,r=0;r=o&&I<=u;I+=M){var L=s[I];if(null!=L){var R=C(c[I]),B=S(L);1==t?E(N,R,F):E(N,O,B),E(N,R,B),F=B,O=R}}var z=O;i&&1==t&&E(N,z=k+x,F);var j=v(Bl(e,a),2),H=j[0],$=j[1];if(null!=l.fill||0!=H){var Y=A.fill=new Path2D(N),U=S(l.fillTo(e,a,l.min,l.max,H));E(Y,z,U),E(Y,P,U)}if(!l.spanGaps){var V,q=[];(V=q).push.apply(V,_($l(c,s,o,u,M,C,r)));var W=l.width*Qi/2,Q=n||1==t?W:-W,Z=n||-1==t?-W:W;q.forEach((function(e){e[0]+=Q,e[1]+=Z})),A.gaps=q=l.gaps(e,a,o,u,q),A.clip=Hl(q,f.ori,p,g,y,b)}return 0!=$&&(A.band=2==$?[jl(e,a,o,u,N,-1),jl(e,a,o,u,N,1)]:jl(e,a,o,u,N,$)),A}))}},xc.bars=function(e){var t=xo((e=e||iu).size,[.6,Ho,1]),n=e.align||0,r=(e.gap||0)*Qi,i=e.radius,a=Uo(i=null==i?[0,0]:"number"==typeof i?[i,0]:i),o=1-t[0],u=xo(t[1],Ho)*Qi,l=xo(t[2],1)*Qi,c=xo(e.disp,iu),s=xo(e.each,(function(e){})),f=c.fill,d=c.stroke;return function(e,t,i,h){return Rl(e,t,(function(m,p,g,y,_,b,w,D,k,x,C){var S,E,A=m.pxRound;if(0==y.ori){var N=v(a(e,t),2);S=N[0],E=N[1]}else{var M=v(a(e,t),2);E=M[0],S=M[1]}var F,T,O=y.dir*(0==y.ori?1:-1),P=_.dir*(1==_.ori?1:-1),I=0==y.ori?Zl:Gl,L=0==y.ori?s:function(e,t,n,r,i,a,o){s(e,t,n,i,r,o,a)},R=v(Bl(e,t),2),B=R[0],z=R[1],j=3==_.distr?1==B?_.max:_.min:0,H=w(j,_,C,k),$=A(m.width*Qi),Y=!1,U=null,V=null,q=null,W=null;null==f||0!=$&&null==d||(Y=!0,U=f.values(e,t,i,h),V=new Map,new Set(U).forEach((function(e){null!=e&&V.set(e,new Path2D)})),$>0&&(q=d.values(e,t,i,h),W=new Map,new Set(q).forEach((function(e){null!=e&&W.set(e,new Path2D)}))));var Q=c.x0,Z=c.size;if(null!=Q&&null!=Z){p=Q.values(e,t,i,h),2==Q.unit&&(p=p.map((function(t){return e.posToVal(D+t*x,y.key,!0)})));var G=Z.values(e,t,i,h);T=A((T=2==Z.unit?G[0]*x:b(G[0],y,x,D)-b(0,y,x,D))-$),F=1==O?-$/2:T+$/2}else{var K=x;if(p.length>1)for(var J=null,X=0,ee=1/0;X=i&&fe<=h;fe+=O){var de=g[fe];if(void 0!==de){var he=b(2!=y.distr||null!=c?p[fe]:fe,y,x,D),me=w(xo(de,j),_,C,k);null!=le&&null!=de&&(H=w(le[fe],_,C,k));var pe=A(he-F),ve=A(Io(me,H)),ge=A(Po(me,H)),ye=ve-ge;if(null!=de){var _e=de<0?se:ce,be=de<0?ce:se;Y?($>0&&null!=q[fe]&&I(W.get(q[fe]),pe,ge+Fo($/2),T,Io(0,ye-$),_e,be),null!=U[fe]&&I(V.get(U[fe]),pe,ge+Fo($/2),T,Io(0,ye-$),_e,be)):I(ie,pe,ge+Fo($/2),T,Io(0,ye-$),_e,be),L(e,t,fe,pe-$/2,ge,T+$,ye)}0!=z&&(P*z==1?(ve=ge,ge=ne):(ge=ve,ve=ne),I(ae,pe-$/2,ge,T+$,Io(0,ye=ve-ge),0,0))}}return $>0&&(re.stroke=Y?W:ie),re.fill=Y?V:ie,re}))}},xc.spline=function(e){return function(e,t){var n=xo(null===t||void 0===t?void 0:t.alignGaps,0);return function(t,r,i,a){return Rl(t,r,(function(o,u,l,c,s,f,d,h,m,p,g){var y,b,w,D=o.pxRound,k=function(e){return D(f(e,c,p,h))},x=function(e){return D(d(e,s,g,m))};0==c.ori?(y=Vl,w=Wl,b=Xl):(y=ql,w=Ql,b=ec);var C=c.dir*(0==c.ori?1:-1);i=vo(l,i,a,1),a=vo(l,i,a,-1);for(var S=k(u[1==C?i:a]),E=S,A=[],N=[],M=1==C?i:a;M>=i&&M<=a;M+=C)if(null!=l[M]){var F=k(u[M]);A.push(E=F),N.push(x(l[M]))}var T={stroke:e(A,N,y,w,b,D),fill:null,clip:null,band:null,gaps:null,flags:Ll},O=T.stroke,P=v(Bl(t,r),2),I=P[0],L=P[1];if(null!=o.fill||0!=I){var R=T.fill=new Path2D(O),B=x(o.fillTo(t,r,o.min,o.max,I));w(R,E,B),w(R,S,B)}if(!o.spanGaps){var z,j=[];(z=j).push.apply(z,_($l(u,l,i,a,C,k,n))),T.gaps=j=o.gaps(t,r,i,a,j),T.clip=Hl(j,c.ori,h,m,p,g)}return 0!=L&&(T.band=2==L?[jl(t,r,i,a,O,-1),jl(t,r,i,a,O,1)]:jl(t,r,i,a,O,L)),T}))}}(oc,e)};var Cc=function(e){for(var t=e.length,n=-1/0;t--;){var r=e[t];Number.isFinite(r)&&r>n&&(n=r)}return Number.isFinite(n)?n:null},Sc=function(e){for(var t=e.length,n=1/0;t--;){var r=e[t];Number.isFinite(r)&&r>1]},Ac=function(e){for(var t=e.length;t--;){var n=e[t];if(Number.isFinite(n))return n}},Nc=function(e,t,n){if(void 0===e||null===e)return"";n=n||0,t=t||0;var r=Math.abs(n-t);if(isNaN(r)||0==r)return Math.abs(e)>=1e3?e.toLocaleString("en-US"):e.toString();var i=3+Math.floor(1+Math.log10(Math.max(Math.abs(t),Math.abs(n)))-Math.log10(r));return(isNaN(i)||i>20)&&(i=20),e.toLocaleString("en-US",{minimumSignificantDigits:1,maximumSignificantDigits:i})},Mc=function(e){var t=(null===e||void 0===e?void 0:e.metric)||{},n=Object.keys(t).filter((function(e){return"__name__"!=e})).map((function(e){return"".concat(e,"=").concat(JSON.stringify(t[e]))})),r=t.__name__||"";return n.length>0&&(r+="{"+n.join(",")+"}"),r},Fc=[[31536e3,"{YYYY}",null,null,null,null,null,null,1],[2419200,"{MMM}","\n{YYYY}",null,null,null,null,null,1],[86400,"{MM}-{DD}","\n{YYYY}",null,null,null,null,null,1],[3600,"{HH}:{mm}","\n{YYYY}-{MM}-{DD}",null,"\n{MM}-{DD}",null,null,null,1],[60,"{HH}:{mm}","\n{YYYY}-{MM}-{DD}",null,"\n{MM}-{DD}",null,null,null,1],[1,"{HH}:{mm}:{ss}","\n{YYYY}-{MM}-{DD}",null,"\n{MM}-{DD} {HH}:{mm}",null,null,null,1],[.001,":{ss}.{fff}","\n{YYYY}-{MM}-{DD} {HH}:{mm}",null,"\n{MM}-{DD} {HH}:{mm}",null,"\n{HH}:{mm}",null,1]],Tc=function(e,t){return Array.from(new Set(e.map((function(e){return e.scale})))).map((function(e){var n="10px Arial",r=It("color-text"),i={scale:e,show:!0,size:Pc,stroke:r,font:n,values:function(e,n){return function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",r=t[0],i=t[t.length-1];return n?t.map((function(e){return"".concat(Nc(e,r,i)," ").concat(n)})):t.map((function(e){return Nc(e,r,i)}))}(e,n,t)}};return e?Number(e)%2?i:st(st({},i),{},{side:1}):{space:80,values:Fc,stroke:r,font:n}}))},Oc=function(e,t){if(null==e||null==t)return[-1,1];var n=.02*(Math.abs(t-e)||Math.abs(e)||1);return[e-n,t+n]},Pc=function(e,t,n,r){var i,a=e.axes[n];if(r>1)return a._size||60;var o=6+((null===a||void 0===a||null===(i=a.ticks)||void 0===i?void 0:i.size)||0)+(a.gap||0),u=(null!==t&&void 0!==t?t:[]).reduce((function(e,t){return(null===t||void 0===t?void 0:t.length)>e.length?t:e}),"");return""!=u&&(o+=function(e,t){var n=document.createElement("span");n.innerText=e,n.style.cssText="position: absolute; z-index: -1; pointer-events: none; opacity: 0; font: ".concat(t),document.body.appendChild(n);var r=n.offsetWidth;return n.remove(),r}(u,"10px Arial")),Math.ceil(o)},Ic=["#e54040","#32a9dc","#2ee329","#7126a1","#e38f0f","#3d811a","#ffea00","#2d2d2d","#da42a6","#a44e0c"],Lc=["__name__"],Rc=function(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=e.metric,i=r.__name__,a=Tr(r,Lc),o=t||"".concat(n?"[Query ".concat(e.group,"] "):"").concat(i||"");return 0==Object.keys(a).length?o||"value":"".concat(o,"{").concat(Object.entries(a).map((function(e){return"".concat(e[0],"=").concat(JSON.stringify(e[1]))})).join(", "),"}")},Bc=function(e){switch(e){case"NaN":return NaN;case"Inf":case"+Inf":return 1/0;case"-Inf":return-1/0;default:return parseFloat(e)}},zc=function(e){if(e.length<2)return!1;var t=["le","vmrange"],n=Object.keys(e[0].metric).filter((function(e){return!t.includes(e)}));return e.every((function(r){var i=Object.keys(r.metric).filter((function(e){return!t.includes(e)}));return n.length===i.length&&i.every((function(t){return r.metric[t]===e[0].metric[t]}))}))&&e.every((function(e){return t.some((function(t){return t in e.metric}))}))},jc=function(e,t,n){for(var r=[],i=0;i0&&(i=Math.min(i,n[o]),a=Math.max(a,n[o]));for(var u=a-i,l=r.length,c=Array(n.length),s=0;s0&&b[I]>=(o.min||-1/0)&&b[I]<=(o.max||1/0)&&w[I]>=(u.min||-1/0)&&w[I]<=(u.max||1/0)){var L=P[~~(I/E)],R=O[I%E];g(S[x[I]],L,R,F,T)}e.ctx.save(),e.ctx.rect(e.bbox.left,e.bbox.top,e.bbox.width,e.bbox.height),e.ctx.clip(),S.forEach((function(t,n){e.ctx.fillStyle=C[n],e.ctx.fill(t)})),e.ctx.restore()}))}},$c=function(e){var t=(e.metric.vmrange||e.metric.le||"").split("...");return Bc(t[t.length-1])},Yc=function(e,t){return $c(e)-$c(t)},Uc=function(e,t){if(!t)return e;var n=function(e){var t;if(!e.every((function(e){return e.metric.le})))return e;var n,r=e.sort((function(e,t){return parseFloat(e.metric.le)-parseFloat(t.metric.le)})),i=(null===(t=e[0])||void 0===t?void 0:t.group)||1,a={metric:{le:""},values:[],group:i},o=[],u=g(r);try{for(u.s();!(n=u.n()).done;){var l,c=n.value,s=[a.metric.le,c.metric.le].filter((function(e){return e})).join("..."),f=[],d=g(c.values);try{var h=function(){var e,t=v(l.value,2),n=t[0],r=+t[1]-+((null===(e=a.values.find((function(e){return e[0]===n})))||void 0===e?void 0:e[1])||0);f.push([n,"".concat(r)])};for(d.s();!(l=d.n()).done;)h()}catch(m){d.e(m)}finally{d.f()}o.push({metric:{vmrange:s},values:f,group:i}),a=c}}catch(m){u.e(m)}finally{u.f()}return o}(e.sort(Yc)),r={};return n.forEach((function(e){return e.values.forEach((function(e){var t=v(e,2),n=t[0],i=t[1];r[n]=(r[n]||0)+ +i}))})),n.map((function(e){var t=e.values.map((function(e){var t=v(e,2),n=t[0],i=t[1],a=r[n];return[n,"".concat(Math.round(+i/a*100))]}));return st(st({},e),{},{values:t})})).filter((function(e){return!e.values.every((function(e){return"0"===e[1]}))}))},Vc=function(e,t,n){for(var r={},i=e.map((function(e){var t=e.values.map((function(e){return Bc(e[1])}));return{min:Sc(t),max:Cc(t),median:Ec(t),last:Ac(t)}})),a=Math.min(e.length,Ic.length),o=0;o0)for(var a=0;ar&&(r=e[a].charCodeAt(0)),i=parseInt(String(t/r)),n=(n+e[a].charCodeAt(0)*i*49979693)%t;var o=(n*e.length%t).toString(16);return o=o.padEnd(6,o),"#".concat(o)}(o),l=i[a],c=l.min,s=l.max,f=l.median,d=l.last;return{label:o,freeFormFields:e.metric,width:1.4,stroke:u,show:!Wc(o,t),scale:"1",points:{size:4.2,width:1.4},calculations:{min:Nc(c,c,s),max:Nc(s,c,s),median:Nc(f,c,s),last:Nc(d,c,s)}}}},qc=function(e,t){return{group:t,label:e.label||"",color:e.stroke,checked:e.show||!1,freeFormFields:e.freeFormFields,calculations:e.calculations}},Wc=function(e,t){return t.includes("".concat(e))},Qc=function(e){for(var t=e.series.length-1;t>=0;t--)e.delSeries(t)},Zc=function(e){var t=e.width,n=void 0===t?400:t,r=e.height;return{width:n,height:void 0===r?500:r,series:[],tzDate:function(e){return a()(pn(gn(e))).local().toDate()},legend:{show:!1},cursor:{drag:{x:!0,y:!1},focus:{prox:30},points:{size:5.6,width:1.4},bind:{click:function(){return null},dblclick:function(){return null}}}}},Gc=function(e){Qc(e),function(e){Object.keys(e.hooks).forEach((function(t){e.hooks[t]=[]}))}(e),e.setData([])},Kc=function(e){return[e.min,e.max]},Jc=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,r=arguments.length>3?arguments[3]:void 0,i=arguments.length>4?arguments[4]:void 0;return i.limits.enable?i.limits.range[r]:Oc(t,n)},Xc=function(e,t){var n={x:{range:function(){return Kc(t)}}},r=Object.keys(e.limits.range);return(r.length?r:["1"]).forEach((function(t){n[t]={range:function(n){return Jc(n,arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,t,e)}}})),n},es=function(e){return function(t){var n=t.posToVal(t.select.left,"x"),r=t.posToVal(t.select.left+t.select.width,"x");e({min:n,max:r})}},ts=function(e){return function(e){return e instanceof MouseEvent}(e)?e.clientX:e.touches[0].clientX},ns=function(e){var t=e.dragSpeed,n=void 0===t?.85:t,i=e.setPanning,a=e.setPlotScale,o=(0,r.useRef)({leftStart:0,xUnitsPerPx:0,scXMin:0,scXMax:0}),u=function(e){e.preventDefault();var t=ts(e),r=o.current,i=r.leftStart,u=r.xUnitsPerPx,l=r.scXMin,c=r.scXMax,s=u*((t-i)*n);a({min:l-s,max:c-s})},l=function e(){i(!1),document.removeEventListener("mousemove",u),document.removeEventListener("mouseup",e),document.removeEventListener("touchmove",u),document.removeEventListener("touchend",e)};return function(e){var t=e.e,n=e.u;t.preventDefault(),i(!0),o.current={leftStart:ts(t),xUnitsPerPx:n.posToVal(1,"x")-n.posToVal(0,"x"),scXMin:n.scales.x.min||0,scXMax:n.scales.x.max||0},document.addEventListener("mousemove",u),document.addEventListener("mouseup",l),document.addEventListener("touchmove",u),document.addEventListener("touchend",l)}},rs=function(e){var t=v((0,r.useState)(!1),2),n=t[0],i=t[1],a=ns({dragSpeed:.9,setPanning:i,setPlotScale:e});return{onReadyChart:function(t){var n=function(e){var n=e instanceof MouseEvent&&function(e){var t=e.ctrlKey,n=e.metaKey;return 0===e.button&&(t||n)}(e),r=e instanceof TouchEvent&&e.touches.length>1;(n||r)&&a({u:t,e:e})};t.over.addEventListener("mousedown",n),t.over.addEventListener("touchstart",n),t.over.addEventListener("wheel",(function(n){if(n.ctrlKey||n.metaKey){n.preventDefault();var r=t.over.getBoundingClientRect().width,i=t.cursor.left&&t.cursor.left>0?t.cursor.left:0,a=t.posToVal(i,"x"),o=(t.scales.x.max||0)-(t.scales.x.min||0),u=n.deltaY<0?.9*o:o/.9,l=a-i/r*u,c=l+u;t.batch((function(){return e({min:l,max:c})}))}}))},isPanning:n}},is=function(e){var t=e[0].clientX-e[1].clientX,n=e[0].clientY-e[1].clientY;return Math.sqrt(t*t+n*n)},as=function(e){var t=e.uPlotInst,n=e.xRange,i=e.setPlotScale,a=v((0,r.useState)(0),2),o=a[0],u=a[1],l=(0,r.useCallback)((function(e){var r=e.target,a=e.ctrlKey,o=e.metaKey,u=e.key,l=r instanceof HTMLInputElement||r instanceof HTMLTextAreaElement;if(t&&!l){var c="+"===u||"="===u;if(("-"===u||c)&&!(a||o)){e.preventDefault();var s=(n.max-n.min)/10*(c?1:-1);i({min:n.min+s,max:n.max-s})}}}),[t,n]),c=(0,r.useCallback)((function(e){if(t&&2===e.touches.length){e.preventDefault();var r=is(e.touches),a=o-r,u=t.scales.x.max||n.max,l=t.scales.x.min||n.min,c=(u-l)/50*(a>0?-1:1);t.batch((function(){return i({min:l+c,max:u-c})}))}}),[t,o,n]);return Rr("keydown",l),Rr("touchmove",c),Rr("touchstart",(function(e){2===e.touches.length&&(e.preventDefault(),u(is(e.touches)))})),null},os=function(e){var t=e.period,n=e.setPeriod,i=v((0,r.useState)({min:t.start,max:t.end}),2),o=i[0],u=i[1];return(0,r.useEffect)((function(){u({min:t.start,max:t.end})}),[t]),{xRange:o,setPlotScale:function(e){var t=e.min,r=e.max,i=1e3*(r-t);itn||n({from:a()(1e3*t).toDate(),to:a()(1e3*r).toDate()})}}},us=function(e){var t=e.u,n=e.metrics,i=e.series,o=e.unit,u=v((0,r.useState)(!1),2),l=u[0],c=u[1],s=v((0,r.useState)({seriesIdx:-1,dataIdx:-1}),2),f=s[0],d=s[1],h=v((0,r.useState)([]),2),m=h[0],p=h[1],g=(0,r.useCallback)((function(){var e=f.seriesIdx,r=f.dataIdx,u=n[e-1],l=i[e],c=new Set(n.map((function(e){return e.group}))),s=(null===u||void 0===u?void 0:u.group)||0,d=Ct()(t,["data",e,r],0),h=Ct()(t,["scales","1","min"],0),m=Ct()(t,["scales","1","max"],1),p=Ct()(t,["data",0,r],0),v={top:t?t.valToPos(d||0,(null===l||void 0===l?void 0:l.scale)||"1"):0,left:t?t.valToPos(p,"x"):0};return{unit:o,point:v,u:t,id:"".concat(e,"_").concat(r),title:c.size>1?"Query ".concat(s):"",dates:[p?a()(1e3*p).tz().format(Gt):"-"],value:Nc(d,h,m),info:Mc(u),stats:null===l||void 0===l?void 0:l.calculations,marker:"".concat(null===l||void 0===l?void 0:l.stroke)}}),[t,f,n,i,o]),y=(0,r.useCallback)((function(){if(l){var e=g();m.find((function(t){return t.id===e.id}))||p((function(t){return[].concat(_(t),[e])}))}}),[g,m,l]);return(0,r.useEffect)((function(){c(-1!==f.dataIdx&&-1!==f.seriesIdx)}),[f]),Rr("click",y),{showTooltip:l,stickyTooltips:m,handleUnStick:function(e){p((function(t){return t.filter((function(t){return t.id!==e}))}))},getTooltipProps:g,seriesFocus:function(e,t){var n=null!==t&&void 0!==t?t:-1;d((function(e){return st(st({},e),{},{seriesIdx:n})}))},setCursor:function(e){var t,n=null!==(t=e.cursor.idx)&&void 0!==t?t:-1;d((function(e){return st(st({},e),{},{dataIdx:n})}))},resetTooltips:function(){p([]),d({seriesIdx:-1,dataIdx:-1})}}},ls=function(e){var t=e.u,n=e.id,i=e.title,a=e.dates,o=e.value,u=e.point,l=e.unit,c=void 0===l?"":l,s=e.info,f=e.stats,d=e.isSticky,h=e.marker,m=e.onClose,p=(0,r.useRef)(null),g=v((0,r.useState)({top:-999,left:-999}),2),y=g[0],_=g[1],b=v((0,r.useState)(!1),2),w=b[0],D=b[1],k=v((0,r.useState)(!1),2),x=k[0],C=k[1],S=(0,r.useCallback)((function(e){if(w){var t=e.clientX,n=e.clientY;_({top:n,left:t})}}),[w]);return(0,r.useEffect)((function(){if(p.current&&t){var e=u.top,n=u.left,r=parseFloat(t.over.style.left),i=parseFloat(t.over.style.top),a=t.over.getBoundingClientRect(),o=a.width,l=a.height,c=p.current.getBoundingClientRect(),s=c.width,f=c.height,d={top:e+i+10-(e+f>=l?f+20:0),left:n+r+10-(n+s>=o?s+20:0)};d.left<0&&(d.left=20),d.top<0&&(d.top=20),_(d)}}),[t,o,u,p]),Rr("mousemove",S),Rr("mouseup",(function(){D(!1)})),t?r.default.createPortal(Yt("div",{className:Fr()({"vm-chart-tooltip":!0,"vm-chart-tooltip_sticky":d,"vm-chart-tooltip_moved":x}),ref:p,style:y,children:[Yt("div",{className:"vm-chart-tooltip-header",children:[i&&Yt("div",{className:"vm-chart-tooltip-header__title",children:i}),Yt("div",{className:"vm-chart-tooltip-header__date",children:a.map((function(e,t){return Yt("span",{children:e},t)}))}),d&&Yt(Ht.HY,{children:[Yt(mi,{className:"vm-chart-tooltip-header__drag",variant:"text",size:"small",startIcon:Yt(yr,{}),onMouseDown:function(e){C(!0),D(!0);var t=e.clientX,n=e.clientY;_({top:n,left:t})},ariaLabel:"drag the tooltip"}),Yt(mi,{className:"vm-chart-tooltip-header__close",variant:"text",size:"small",startIcon:Yt(qn,{}),onClick:function(){m&&m(n)},ariaLabel:"close the tooltip"})]})]}),Yt("div",{className:"vm-chart-tooltip-data",children:[h&&Yt("span",{className:"vm-chart-tooltip-data__marker",style:{background:h}}),Yt("p",{className:"vm-chart-tooltip-data__value",children:[Yt("b",{children:o}),c]})]}),f&&Yt("table",{className:"vm-chart-tooltip-stats",children:At.map((function(e,t){return Yt("div",{className:"vm-chart-tooltip-stats-row",children:[Yt("span",{className:"vm-chart-tooltip-stats-row__key",children:[e,":"]}),Yt("span",{className:"vm-chart-tooltip-stats-row__value",children:f[e]})]},t)}))}),s&&Yt("p",{className:"vm-chart-tooltip__info",children:s})]}),t.root):null},cs=function(e){var t=e.showTooltip,n=e.tooltipProps,i=e.stickyTooltips,a=e.handleUnStick;return Yt(Ht.HY,{children:[t&&n&&Yt(ls,st({},n)),i.map((function(e){return(0,r.createElement)(ls,st(st({},e),{},{isSticky:!0,key:e.id,onClose:a}))}))]})},ss=function(e){var t=e.data,n=e.series,i=e.metrics,a=void 0===i?[]:i,o=e.period,u=e.yaxis,l=e.unit,c=e.setPeriod,s=e.layoutSize,f=e.height,d=Vt().isDarkTheme,h=(0,r.useRef)(null),m=v((0,r.useState)(),2),p=m[0],g=m[1],y=os({period:o,setPeriod:c}),_=y.xRange,b=y.setPlotScale,w=rs(b),D=w.onReadyChart,k=w.isPanning;as({uPlotInst:p,xRange:_,setPlotScale:b});var x=us({u:p,metrics:a,series:n,unit:l}),C=x.showTooltip,S=x.stickyTooltips,E=x.handleUnStick,A=x.getTooltipProps,N=x.seriesFocus,M=x.setCursor,F=x.resetTooltips,T=st(st({},Zc({width:s.width,height:f})),{},{series:n,axes:Tc([{},{scale:"1"}],l),scales:Xc(u,_),hooks:{ready:[D],setSeries:[N],setCursor:[M],setSelect:[es(b)],destroy:[Gc]}});return(0,r.useEffect)((function(){if(F(),h.current){p&&p.destroy();var e=new kc(T,t,h.current);return g(e),e.destroy}}),[h,d]),(0,r.useEffect)((function(){p&&(p.setData(t),p.redraw())}),[t]),(0,r.useEffect)((function(){p&&(Qc(p),function(e,t){t.forEach((function(t){e.addSeries(t)}))}(p,n),p.redraw())}),[n]),(0,r.useEffect)((function(){p&&(Object.keys(u.limits.range).forEach((function(e){p.scales[e]&&(p.scales[e].range=function(t){return Jc(t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,e,u)})})),p.redraw())}),[u]),(0,r.useEffect)((function(){p&&(p.scales.x.range=function(){return Kc(_)},p.redraw())}),[_]),(0,r.useEffect)((function(){p&&(p.setSize({width:s.width||400,height:f||500}),p.redraw())}),[f,s]),Yt("div",{className:Fr()({"vm-line-chart":!0,"vm-line-chart_panning":k}),style:{minWidth:"".concat(s.width||400,"px"),minHeight:"".concat(f||500,"px")},children:[Yt("div",{className:"vm-line-chart__u-plot",ref:h}),Yt(cs,{showTooltip:C,tooltipProps:A(),stickyTooltips:S,handleUnStick:E})]})},fs=function(){var e=(0,r.useContext)(oi).showInfoMessage;return function(){var t=Bi(Li().mark((function t(n,r){var i;return Li().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(null!==(i=navigator)&&void 0!==i&&i.clipboard){t.next=4;break}return e({text:"Clipboard not supported",type:"error"}),console.warn("Clipboard not supported"),t.abrupt("return",!1);case 4:return t.prev=4,t.next=7,navigator.clipboard.writeText(n);case 7:return r&&e({text:r,type:"success"}),t.abrupt("return",!0);case 11:return t.prev=11,t.t0=t.catch(4),t.t0 instanceof Error&&e({text:"".concat(t.t0.name,": ").concat(t.t0.message),type:"error"}),console.warn("Copy failed",t.t0),t.abrupt("return",!1);case 16:case"end":return t.stop()}}),t,null,[[4,11]])})));return function(e,n){return t.apply(this,arguments)}}()},ds=function(e){var t=e.legend,n=e.onChange,i=e.isHeatmap,a=fs(),o=(0,r.useMemo)((function(){var e=function(e){return Object.keys(e.freeFormFields).filter((function(e){return"__name__"!==e})).map((function(t){var n="".concat(t,"=").concat(JSON.stringify(e.freeFormFields[t]));return{id:"".concat(e.label,".").concat(n),freeField:n,key:t}}))}(t);return i?e.filter((function(e){return"vmrange"!==e.key})):e}),[t,i]),u=t.calculations,l=Object.values(u).some((function(e){return e})),c=function(){var e=Bi(Li().mark((function e(t){return Li().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,a(t,"".concat(t," has been copied"));case 2:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();return Yt("div",{className:Fr()({"vm-legend-item":!0,"vm-legend-row":!0,"vm-legend-item_hide":!t.checked&&!i,"vm-legend-item_static":i}),onClick:function(e){return function(t){n&&n(e,t.ctrlKey||t.metaKey)}}(t),children:[!i&&Yt("div",{className:"vm-legend-item__marker",style:{backgroundColor:t.color}}),Yt("div",{className:"vm-legend-item-info",children:Yt("span",{className:"vm-legend-item-info__label",children:[t.freeFormFields.__name__,!!o.length&&Yt(Ht.HY,{children:"{"}),o.map((function(e,t){return Yt("span",{className:"vm-legend-item-info__free-fields",onClick:(n=e.freeField,function(e){e.stopPropagation(),c(n)}),title:"copy to clipboard",children:[e.freeField,t+11;return Yt(Ht.HY,{children:Yt("div",{className:"vm-legend",children:a.map((function(e){return Yt("div",{className:"vm-legend-group",children:Yt(wa,{defaultExpanded:!0,title:Yt("div",{className:"vm-legend-group-title",children:[o&&Yt("span",{className:"vm-legend-group-title__count",children:["Query ",e,": "]}),Yt("span",{className:"vm-legend-group-title__query",children:n[e-1]})]}),children:Yt("div",{children:t.filter((function(t){return t.group===e})).map((function(e){return Yt(ds,{legend:e,onChange:i},e.label)}))})})},e)}))})})},ms=function(e){var t,n=e.min,i=e.max,a=e.legendValue,o=e.series,u=v((0,r.useState)(0),2),l=u[0],c=u[1],s=v((0,r.useState)(""),2),f=s[0],d=s[1],h=v((0,r.useState)(""),2),m=h[0],p=h[1],g=v((0,r.useState)(""),2),y=g[0],_=g[1],b=(0,r.useMemo)((function(){return parseFloat(String((null===a||void 0===a?void 0:a.value)||0).replace("%",""))}),[a]);return(0,r.useEffect)((function(){c(b?(b-n)/(i-n)*100:0),d(b?"".concat(b,"%"):""),p("".concat(n,"%")),_("".concat(i,"%"))}),[b,n,i]),Yt("div",{className:"vm-legend-heatmap__wrapper",children:[Yt("div",{className:"vm-legend-heatmap",children:[Yt("div",{className:"vm-legend-heatmap-gradient",style:{background:"linear-gradient(to right, ".concat(jc.join(", "),")")},children:!!b&&Yt("div",{className:"vm-legend-heatmap-gradient__value",style:{left:"".concat(l,"%")},children:Yt("span",{children:f})})}),Yt("div",{className:"vm-legend-heatmap__value",children:m}),Yt("div",{className:"vm-legend-heatmap__value",children:y})]}),o[1]&&Yt(ds,{legend:o[1],isHeatmap:!0},null===(t=o[1])||void 0===t?void 0:t.label)]})},ps=function(e){var t=e.u,n=e.metrics,i=e.unit,o=v((0,r.useState)({left:0,top:0}),2),u=o[0],l=o[1],c=v((0,r.useState)([]),2),s=c[0],f=c[1],d=(0,r.useCallback)((function(){var e,r=u.left,o=u.top,l=Ct()(t,["data",1,0],[])||[],c=t?t.posToVal(r,"x"):0,s=t?t.posToVal(o,"y"):0,f=l.findIndex((function(e,t){return c>=e&&c0}}),[t,u,n,i]),h=(0,r.useCallback)((function(){var e=d();e.show&&(s.find((function(t){return t.id===e.id}))||f((function(t){return[].concat(_(t),[e])})))}),[d,s]);return Rr("click",h),{stickyTooltips:s,handleUnStick:function(e){f((function(t){return t.filter((function(t){return t.id!==e}))}))},getTooltipProps:d,setCursor:function(e){var t=e.cursor.left||0,n=e.cursor.top||0;l({left:t,top:n})},resetTooltips:function(){f([]),l({left:0,top:0})}}},vs=function(e){var t=e.data,n=e.metrics,i=void 0===n?[]:n,a=e.period,o=e.unit,u=e.setPeriod,l=e.layoutSize,c=e.height,s=e.onChangeLegend,f=Vt().isDarkTheme,d=(0,r.useRef)(null),h=v((0,r.useState)(),2),m=h[0],p=h[1],g=os({period:a,setPeriod:u}),y=g.xRange,b=g.setPlotScale,w=rs(b),D=w.onReadyChart,k=w.isPanning;as({uPlotInst:m,xRange:y,setPlotScale:b});var x=ps({u:m,metrics:i,unit:o}),C=x.stickyTooltips,S=x.handleUnStick,E=x.getTooltipProps,A=x.setCursor,N=x.resetTooltips,M=(0,r.useMemo)((function(){return E()}),[E]),F=st(st({},Zc({width:l.width,height:c})),{},{mode:2,series:[{},{paths:Hc(),facets:[{scale:"x",auto:!0,sorted:1},{scale:"y",auto:!0}]}],axes:function(){var e=Tc([{}],o);return[].concat(_(e),[{scale:"y",stroke:e[0].stroke,font:e[0].font,size:Pc,splits:i.map((function(e,t){return t})),values:i.map((function(e){return e.metric.vmrange}))}])}(),scales:{x:{time:!0},y:{log:2,time:!1,range:function(e,t,n){return[t-1,n+1]}}},hooks:{ready:[D],setCursor:[A],setSelect:[es(b)],destroy:[Gc]}});return(0,r.useEffect)((function(){N();var e=null===t[0]&&Array.isArray(t[1]);if(d.current&&e){var n=new kc(F,t,d.current);return p(n),n.destroy}}),[d,t,f]),(0,r.useEffect)((function(){m&&(m.setSize({width:l.width||400,height:c||500}),m.redraw())}),[c,l]),(0,r.useEffect)((function(){s(M)}),[M]),Yt("div",{className:Fr()({"vm-line-chart":!0,"vm-line-chart_panning":k}),style:{minWidth:"".concat(l.width||400,"px"),minHeight:"".concat(c||500,"px")},children:[Yt("div",{className:"vm-line-chart__u-plot",ref:d}),Yt(cs,{showTooltip:!!M.show,tooltipProps:M,stickyTooltips:C,handleUnStick:S})]})},gs=function(){var e=v((0,r.useState)(null),2),t=e[0],n=e[1],i=v((0,r.useState)({width:0,height:0}),2),a=i[0],o=i[1],u=(0,r.useCallback)((function(){o({width:(null===t||void 0===t?void 0:t.offsetWidth)||0,height:(null===t||void 0===t?void 0:t.offsetHeight)||0})}),[null===t||void 0===t?void 0:t.offsetHeight,null===t||void 0===t?void 0:t.offsetWidth]);return Rr("resize",u),Lr(u,[null===t||void 0===t?void 0:t.offsetHeight,null===t||void 0===t?void 0:t.offsetWidth]),[n,a]},ys=function(e){var t=e.data,n=void 0===t?[]:t,i=e.period,a=e.customStep,o=e.query,u=e.yaxis,l=e.unit,c=e.showLegend,s=void 0===c||c,f=e.setYaxisLimits,d=e.setPeriod,h=e.alias,m=void 0===h?[]:h,p=e.fullWidth,y=void 0===p||p,b=e.height,w=e.isHistogram,D=ri().isMobile,k=On().timezone,x=(0,r.useMemo)((function(){return a||i.step||"1s"}),[i.step,a]),C=(0,r.useMemo)((function(){return Uc(n,w)}),[w,n]),S=v((0,r.useState)([[]]),2),E=S[0],A=S[1],N=v((0,r.useState)([]),2),M=N[0],F=N[1],T=v((0,r.useState)([]),2),O=T[0],P=T[1],I=v((0,r.useState)([]),2),L=I[0],R=I[1],B=v((0,r.useState)(null),2),z=B[0],j=B[1],H=(0,r.useMemo)((function(){return Vc(C,L,m)}),[C,L,m]),$=function(e){var t=function(e,t){var n={},r=Object.values(e).flat(),i=Sc(r)||0,a=Cc(r)||1;return n[1]=t?Oc(i,a):[i,a],n}(e,!w);f(t)};(0,r.useEffect)((function(){var e=[],t={},n=[],r=[{}];null===C||void 0===C||C.forEach((function(i,a){var o=H(i,a);r.push(o),n.push(qc(o,i.group));var u,l=t[i.group]||[],c=g(i.values);try{for(c.s();!(u=c.n()).done;){var s=u.value;e.push(s[0]),l.push(Bc(s[1]))}}catch(f){c.e(f)}finally{c.f()}t[i.group]=l}));var a=function(e,t,n){for(var r=fn(t)||1,i=Array.from(new Set(e)).sort((function(e,t){return e-t})),a=n.start,o=un(n.end+r),u=0,l=[];a<=o;){for(;u=i.length||i[u]>a)&&l.push(a)}for(;l.length<2;)l.push(a),a=un(a+r);return l}(e,x,i),o=C.map((function(e){var t,n=[],r=e.values,i=r.length,o=0,u=g(a);try{for(u.s();!(t=u.n()).done;){for(var l=t.value;o1e10*h?n.map((function(){return f})):n}));o.unshift(a),$(t);var u=w?function(e){var t=e.slice(1,e.length),n=[],r=[];t.forEach((function(e,n){e.forEach((function(e,i){var a=i*t.length+n;r[a]=e}))})),e[0].forEach((function(e){var r=new Array(t.length).fill(e);n.push.apply(n,_(r))}));var i=new Array(n.length).fill(0).map((function(e,n){return n%t.length}));return[null,[n,i,r]]}(o):o;A(u),F(r),P(n)}),[C,k,w]),(0,r.useEffect)((function(){var e=[],t=[{}];null===C||void 0===C||C.forEach((function(n,r){var i=H(n,r);t.push(i),e.push(qc(i,n.group))})),F(t),P(e)}),[L]);var Y=v(gs(),2),U=Y[0],V=Y[1];return Yt("div",{className:Fr()({"vm-graph-view":!0,"vm-graph-view_full-width":y,"vm-graph-view_full-width_mobile":y&&D}),ref:U,children:[!w&&Yt(ss,{data:E,series:M,metrics:C,period:i,yaxis:u,unit:l,setPeriod:d,layoutSize:V,height:b}),w&&Yt(vs,{data:E,metrics:C,period:i,unit:l,setPeriod:d,layoutSize:V,height:b,onChangeLegend:j}),!w&&s&&Yt(hs,{labels:O,query:o,onChange:function(e,t){R(function(e){var t=e.hideSeries,n=e.legend,r=e.metaKey,i=e.series,a=n.label,o=Wc(a,t),u=i.map((function(e){return e.label||""}));return r?o?t.filter((function(e){return e!==a})):[].concat(_(t),[a]):t.length?o?_(u.filter((function(e){return e!==a}))):[]:_(u.filter((function(e){return e!==a})))}({hideSeries:L,legend:e,metaKey:t,series:M}))}}),w&&s&&Yt(ms,{series:M,min:u.limits.range[1][0]||0,max:u.limits.range[1][1]||0,legendValue:z})]})},_s=function(e){var t=e.value,n=e.options,i=e.anchor,a=e.disabled,o=e.maxWords,u=void 0===o?1:o,l=e.minLength,c=void 0===l?2:l,s=e.fullWidth,f=e.selected,d=e.noOptionsText,h=e.label,m=e.disabledFullScreen,p=e.onSelect,g=e.onOpenAutocomplete,y=e.onFoundOptions,_=ri().isMobile,b=(0,r.useRef)(null),w=v((0,r.useState)(-1),2),D=w[0],k=w[1],x=pi(!1),C=x.value,S=x.setValue,E=x.setFalse,A=(0,r.useMemo)((function(){if(!C)return[];try{var e=new RegExp(String(t),"i");return n.filter((function(n){return e.test(n)&&n!==t})).sort((function(t,n){var r,i;return((null===(r=t.match(e))||void 0===r?void 0:r.index)||0)-((null===(i=n.match(e))||void 0===i?void 0:i.index)||0)}))}catch(r){return[]}}),[C,n,t]),N=(0,r.useMemo)((function(){return d&&!A.length}),[d,A]),M=(0,r.useCallback)((function(e){var t=e.key,n=e.ctrlKey,r=e.metaKey,i=e.shiftKey,a=n||r||i,o=A.length;if("ArrowUp"===t&&!a&&o&&(e.preventDefault(),k((function(e){return e<=0?0:e-1}))),"ArrowDown"===t&&!a&&o){e.preventDefault();var u=A.length-1;k((function(e){return e>=u?u:e+1}))}if("Enter"===t){var l=A[D];l&&p(l),f||E()}"Escape"===t&&E()}),[D,A,E,p,f]);return(0,r.useEffect)((function(){var e=(t.match(/[a-zA-Z_:.][a-zA-Z0-9_:.]*/gm)||[]).length;S(t.length>c&&e<=u)}),[t]),Rr("keydown",M),(0,r.useEffect)((function(){if(b.current){var e=b.current.childNodes[D];null!==e&&void 0!==e&&e.scrollIntoView&&e.scrollIntoView({block:"center"})}}),[D,A]),(0,r.useEffect)((function(){k(-1)}),[A]),(0,r.useEffect)((function(){g&&g(C)}),[C]),(0,r.useEffect)((function(){y&&y(A)}),[A]),Yt(vi,{open:C,buttonRef:i,placement:"bottom-left",onClose:E,fullWidth:s,title:_?h:void 0,disabledFullScreen:m,children:Yt("div",{className:Fr()({"vm-autocomplete":!0,"vm-autocomplete_mobile":_&&!m}),ref:b,children:[N&&Yt("div",{className:"vm-autocomplete__no-options",children:d}),A.map((function(e,t){return Yt("div",{className:Fr()({"vm-list-item":!0,"vm-list-item_mobile":_,"vm-list-item_active":t===D,"vm-list-item_multiselect":f,"vm-list-item_multiselect_selected":null===f||void 0===f?void 0:f.includes(e)}),id:"$autocomplete$".concat(e),onClick:(n=e,function(){a||(p(n),f||E())}),children:[(null===f||void 0===f?void 0:f.includes(e))&&Yt(hr,{}),Yt("span",{children:e})]},e);var n}))]})})},bs="No match! \nThis query hasn't selected any time series from database.\nEither the requested metrics are missing in the database,\nor there is a typo in series selector.",ws="The shown results are marked as PARTIAL.\nThe result is marked as partial if one or more vmstorage nodes failed to respond to the query.",Ds=function(e){var t=e.value,n=e.onChange,i=e.onEnter,a=e.onArrowUp,o=e.onArrowDown,u=e.autocomplete,l=e.error,c=e.stats,s=e.options,f=e.label,d=e.disabled,h=void 0!==d&&d,m=v((0,r.useState)(!1),2),p=m[0],g=m[1],y=(0,r.useRef)(null),_=[{show:"0"===(null===c||void 0===c?void 0:c.seriesFetched)&&!c.resultLength,text:bs},{show:null===c||void 0===c?void 0:c.isPartial,text:ws}].filter((function(e){return e.show})).map((function(e){return e.text})).join("");return Yt("div",{className:"vm-query-editor",ref:y,children:[Yt(qi,{value:t,label:f,type:"textarea",autofocus:!!t,error:l,warning:_,onKeyDown:function(e){var t=e.key,n=e.ctrlKey,r=e.metaKey,u=e.shiftKey,l=(e.target.value||"").split("\n").length>1,c=n||r,s="ArrowDown"===t,f="Enter"===t;"ArrowUp"===t&&c&&(e.preventDefault(),a()),s&&c&&(e.preventDefault(),o()),f&&p&&e.preventDefault(),!f||u||l&&!c||p||(e.preventDefault(),i())},onChange:n,disabled:h,inputmode:"search"}),u&&Yt(_s,{disabledFullScreen:!0,value:t,options:s,anchor:y,onSelect:function(e){n(e)},onFoundOptions:function(e){g(!!e.length)}})]})},ks=function(e){var t,n=e.value,r=void 0!==n&&n,i=e.disabled,a=void 0!==i&&i,o=e.label,u=e.color,l=void 0===u?"secondary":u,c=e.fullWidth,s=e.onChange;return Yt("div",{className:Fr()((lt(t={"vm-switch":!0,"vm-switch_full-width":c,"vm-switch_disabled":a,"vm-switch_active":r},"vm-switch_".concat(l,"_active"),r),lt(t,"vm-switch_".concat(l),l),t)),onClick:function(){a||s(!r)},children:[Yt("div",{className:"vm-switch-track",children:Yt("div",{className:"vm-switch-track__thumb"})}),o&&Yt("span",{className:"vm-switch__label",children:o})]})},xs=function(e){var t=e.isMobile,n=jn().autocomplete,r=Hn(),i=Qr(),a=i.nocache,o=i.isTracingEnabled,u=Zr();return Yt("div",{className:Fr()({"vm-additional-settings":!0,"vm-additional-settings_mobile":t}),children:[Yt(ks,{label:"Autocomplete",value:n,onChange:function(){r({type:"TOGGLE_AUTOCOMPLETE"})},fullWidth:t}),Yt(ks,{label:"Disable cache",value:a,onChange:function(){u({type:"TOGGLE_NO_CACHE"})},fullWidth:t}),Yt(ks,{label:"Trace query",value:o,onChange:function(){u({type:"TOGGLE_QUERY_TRACING"})},fullWidth:t})]})},Cs=function(){var e=ri().isMobile,t=(0,r.useRef)(null),n=pi(!1),i=n.value,a=n.toggle,o=n.setFalse;return e?Yt(Ht.HY,{children:[Yt("div",{ref:t,children:Yt(mi,{variant:"outlined",startIcon:Yt(Cr,{}),onClick:a,ariaLabel:"additional the query settings"})}),Yt(vi,{open:i,buttonRef:t,placement:"bottom-left",onClose:o,title:"Query settings",children:Yt(xs,{isMobile:e})})]}):Yt(xs,{})},Ss=function(e,t){return e.length===t.length&&e.every((function(e,n){return e===t[n]}))};var Es=function(e){var t=e.query,n=e.favorites,i=e.onRun,a=e.onToggleFavorite,o=fs(),u=(0,r.useMemo)((function(){return n.includes(t)}),[t,n]),l=function(){var e=Bi(Li().mark((function e(){return Li().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o(t,"Query has been copied");case 2:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return Yt("div",{className:"vm-query-history-item",children:[Yt("span",{className:"vm-query-history-item__value",children:t}),Yt("div",{className:"vm-query-history-item__buttons",children:[Yt(Di,{title:"Execute query",children:Yt(mi,{size:"small",variant:"text",onClick:function(){i(t)},startIcon:Yt(or,{})})}),Yt(Di,{title:"Copy query",children:Yt(mi,{size:"small",variant:"text",onClick:l,startIcon:Yt(gr,{})})}),Yt(Di,{title:u?"Remove Favorite":"Add to Favorites",children:Yt(mi,{size:"small",variant:"text",color:u?"warning":"primary",onClick:function(){a(t,u)},startIcon:Yt(u?Nr:Ar,{})})})]})]})},As="saved",Ns="favorite",Ms=[{label:"Session history",value:"session"},{label:"Saved history",value:As},{label:"Favorite queries",value:Ns}],Fs=function(e){var t=e.handleSelectQuery,n=jn().queryHistory,i=ri().isMobile,a=pi(!1),o=a.value,u=a.setTrue,l=a.setFalse,c=v((0,r.useState)(Ms[0].value),2),s=c[0],f=c[1],d=v((0,r.useState)(In("QUERY_HISTORY")),2),h=d[0],m=d[1],p=v((0,r.useState)(In("QUERY_FAVORITES")),2),g=p[0],y=p[1],b=(0,r.useMemo)((function(){return n.map((function(e){return e.values.filter((function(e){return e})).reverse()}))}),[n]),w=(0,r.useMemo)((function(){switch(s){case Ns:return g;case As:return h;default:return b}}),[s,g,h,b]),D=null===w||void 0===w?void 0:w.every((function(e){return!e.length})),k=(0,r.useMemo)((function(){return s===Ns?"Favorites queries are empty.\nTo see your favorites, mark a query as a favorite.":"Query history is empty.\nTo see the history, please make a query."}),[s]),x=function(e){return function(n){t(n,e),l()}},C=function(e,t){y((function(n){var r=n[0]||[];return t?[r.filter((function(t){return t!==e}))]:t||r.includes(e)?n:[[].concat(_(r),[e])]}))};return(0,r.useEffect)((function(){var e=g[0]||[],t=In("QUERY_FAVORITES")[0]||[];Ss(e,t)||Mt("QUERY_FAVORITES",JSON.stringify(g))}),[g]),Rr("storage",(function(){m(In("QUERY_HISTORY")),y(In("QUERY_FAVORITES"))})),Yt(Ht.HY,{children:[Yt(Di,{title:"Show history",children:Yt(mi,{color:"primary",variant:"text",onClick:u,startIcon:Yt(tr,{})})}),o&&Yt(wi,{title:"Query history",onClose:l,children:Yt("div",{className:Fr()({"vm-query-history":!0,"vm-query-history_mobile":i}),children:[Yt("div",{className:Fr()({"vm-query-history__tabs":!0,"vm-section-header__tabs":!0,"vm-query-history__tabs_mobile":i}),children:Yt(zr,{activeItem:s,items:Ms,onChange:f})}),Yt("div",{className:"vm-query-history-list",children:[D&&Yt("div",{className:"vm-query-history-list__no-data",children:k}),w.map((function(e,t){return Yt("div",{children:[w.length>1&&Yt("div",{className:Fr()({"vm-query-history-list__group-title":!0,"vm-query-history-list__group-title_first":0===t}),children:["Query ",t+1]}),e.map((function(e,n){return Yt(Es,{query:e,favorites:g.flat(),onRun:x(t),onToggleFavorite:C},n)}))]},t)})),s===As&&!D&&Yt("div",{className:"vm-query-history-footer",children:Yt(mi,{color:"error",variant:"outlined",size:"small",startIcon:Yt(sr,{}),onClick:function(){Mt("QUERY_HISTORY","")},children:"clear history"})})]})]})})]})},Ts=function(e){var t=e.queryErrors,n=e.setQueryErrors,i=e.setHideError,a=e.stats,o=e.queryOptions,u=e.onHideQuery,l=e.onRunQuery,c=ri().isMobile,s=jn(),f=s.query,d=s.queryHistory,h=s.autocomplete,m=Hn(),p=Pn(),g=v((0,r.useState)(f||[]),2),y=g[0],b=g[1],w=v((0,r.useState)([]),2),D=w[0],k=w[1],x=v((0,r.useState)(!1),2),C=x[0],S=x[1],E=Gi(y),A=function(){var e=Vt().serverUrl,t=function(){var t=Bi(Li().mark((function t(n){var r,i,a,o;return Li().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,r=encodeURIComponent(n),i="".concat(e,"/prettify-query?query=").concat(r),t.next=5,fetch(i);case 5:if(200==(a=t.sent).status){t.next=8;break}return t.abrupt("return",{query:n,error:"Error requesting /prettify-query, status: "+a.status});case 8:return t.next=10,a.json();case 10:if("success"==(o=t.sent).status){t.next=13;break}return t.abrupt("return",{query:n,error:String(o.msg)});case 13:return t.abrupt("return",{query:String(o.query),error:""});case 16:if(t.prev=16,t.t0=t.catch(0),console.error(t.t0),!(t.t0 instanceof Error&&"AbortError"!==t.t0.name)){t.next=21;break}return t.abrupt("return",{query:n,error:"".concat(t.t0.name,": ").concat(t.t0.message)});case 21:return t.abrupt("return",{query:n,error:String(t.t0)});case 22:case"end":return t.stop()}}),t,null,[[0,16]])})));return function(e){return t.apply(this,arguments)}}();return t}(),N=function(){m({type:"SET_QUERY_HISTORY",payload:y.map((function(e,t){var n=d[t]||{values:[]},r=e===n.values[n.values.length-1],i=!r&&e?[].concat(_(n.values),[e]):n.values;return i.length>25&&i.shift(),{index:n.values.length-Number(r),values:i}}))}),m({type:"SET_QUERY",payload:y}),p({type:"RUN_QUERY"}),l()},M=function(e,t){b((function(n){return n.map((function(n,r){return r===t?e:n}))}))},F=function(e,t){return function(){!function(e,t){var n=d[t],r=n.index,i=n.values,a=r+e;a<0||a>=i.length||(M(i[a]||"",t),m({type:"SET_QUERY_HISTORY_BY_INDEX",payload:{value:{values:i,index:a},queryNumber:t}}))}(e,t)}},T=function(e){return function(t){M(t,e)}},O=function(e){return function(){var t;t=e,b((function(e){return e.filter((function(e,n){return n!==t}))})),k((function(t){return t.includes(e)?t.filter((function(t){return t!==e})):t.map((function(t){return t>e?t-1:t}))}))}},P=function(e){return function(t){!function(e,t){var n=e.ctrlKey,r=e.metaKey;if(n||r){var i=y.map((function(e,t){return t})).filter((function(e){return e!==t}));k((function(e){return Ss(i,e)?[]:i}))}else k((function(e){return e.includes(t)?e.filter((function(e){return e!==t})):[].concat(_(e),[t])}))}(t,e)}},I=function(){var e=Bi(Li().mark((function e(t){var r;return Li().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,A(y[t]);case 2:r=e.sent,i(!1),M(r.query,t),n((function(e){return e[t]=r.error,_(e)}));case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();return(0,r.useEffect)((function(){E&&y.length1&&Yt(Di,{title:"Remove Query",children:Yt("div",{className:"vm-query-configurator-list-row__button",children:Yt(mi,{variant:"text",color:"error",startIcon:Yt(sr,{}),onClick:O(n),ariaLabel:"remove query"})})})]},n)}))}),Yt("div",{className:"vm-query-configurator-settings",children:[Yt(Cs,{}),Yt("div",{className:"vm-query-configurator-settings__buttons",children:[Yt(Fs,{handleSelectQuery:function(e,t){M(e,t),S(!0)}}),y.length<4&&Yt(mi,{variant:"outlined",onClick:function(){b((function(e){return[].concat(_(e),[""])}))},startIcon:Yt(fr,{}),children:"Add Query"}),Yt(mi,{variant:"contained",onClick:N,startIcon:Yt(ar,{}),children:c?"Execute":"Execute Query"})]})]})]})};function Os(e){var t,n,r,i=2;for("undefined"!=typeof Symbol&&(n=Symbol.asyncIterator,r=Symbol.iterator);i--;){if(n&&null!=(t=e[n]))return t.call(e);if(r&&null!=(t=e[r]))return new Ps(t.call(e));n="@@asyncIterator",r="@@iterator"}throw new TypeError("Object is not async iterable")}function Ps(e){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var t=e.done;return Promise.resolve(e.value).then((function(e){return{value:e,done:t}}))}return Ps=function(e){this.s=e,this.n=e.next},Ps.prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var n=this.s.return;return void 0===n?Promise.resolve({value:e,done:!0}):t(n.apply(this.s,arguments))},throw:function(e){var n=this.s.return;return void 0===n?Promise.reject(e):t(n.apply(this.s,arguments))}},new Ps(e)}var Is=n(936),Ls=n.n(Is),Rs=0,Bs=function(){function e(t,n){b(this,e),this.tracing=void 0,this.query=void 0,this.tracingChildren=void 0,this.originalTracing=void 0,this.id=void 0,this.tracing=t,this.originalTracing=JSON.parse(JSON.stringify(t)),this.query=n,this.id=Rs++;var r=t.children||[];this.tracingChildren=r.map((function(t){return new e(t,n)}))}return x(e,[{key:"queryValue",get:function(){return this.query}},{key:"idValue",get:function(){return this.id}},{key:"children",get:function(){return this.tracingChildren}},{key:"message",get:function(){return this.tracing.message}},{key:"duration",get:function(){return this.tracing.duration_msec}},{key:"JSON",get:function(){return JSON.stringify(this.tracing,null,2)}},{key:"originalJSON",get:function(){return JSON.stringify(this.originalTracing,null,2)}},{key:"setTracing",value:function(t){var n=this;this.tracing=t;var r=t.children||[];this.tracingChildren=r.map((function(t){return new e(t,n.query)}))}},{key:"setQuery",value:function(e){this.query=e}},{key:"resetTracing",value:function(){this.tracing=this.originalTracing}}]),e}(),zs=function(e){var t=e.predefinedQuery,n=e.visible,i=e.display,a=e.customStep,o=e.hideQuery,u=e.showAllSeries,l=jn().query,c=On().period,s=Qr(),f=s.displayType,d=s.nocache,h=s.isTracingEnabled,m=s.seriesLimits,p=Vt().serverUrl,g=Xr().isHistogram,y=v((0,r.useState)(!1),2),b=y[0],w=y[1],D=v((0,r.useState)(),2),k=D[0],x=D[1],C=v((0,r.useState)(),2),S=C[0],E=C[1],A=v((0,r.useState)(),2),N=A[0],M=A[1],F=v((0,r.useState)(),2),T=F[0],O=F[1],P=v((0,r.useState)([]),2),I=P[0],L=P[1],R=v((0,r.useState)([]),2),B=R[0],z=R[1],j=v((0,r.useState)(),2),H=j[0],$=j[1],Y=v((0,r.useState)([]),2),U=Y[0],V=Y[1],q=v((0,r.useState)(!1),2),W=q[0],Q=q[1],Z=(0,r.useMemo)((function(){var e=c.end,t=c.start;return dn(e-t,g)}),[c,g]),G=function(){var e=Bi(Li().mark((function e(t){var n,r,i,a,o,u,l,c,s,f,d,h,m,p,v,g,y,b,D,k,C,S,A;return Li().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=t.fetchUrl,r=t.fetchQueue,i=t.displayType,a=t.query,o=t.stateSeriesLimits,u=t.showAllSeries,l=t.hideQuery,c=new AbortController,V([].concat(_(r),[c])),e.prev=3,s="chart"===i,f=u?1/0:+o[i]||1/0,d=f,h=[],m=[],p=1,v=0,g=!1,y=!1,b=!1,e.prev=14,k=Li().mark((function e(){var t,n,r,i,o;return Li().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=S.value,!(null===l||void 0===l?void 0:l.includes(p-1))){e.next=7;break}return L((function(e){return[].concat(_(e),[""])})),z((function(e){return[].concat(_(e),[{}])})),p++,e.abrupt("return","continue");case 7:return e.next=9,fetch(t,{signal:c.signal});case 9:return n=e.sent,e.next=12,n.json();case 12:r=e.sent,n.ok?(z((function(e){return[].concat(_(e),[st(st({},null===r||void 0===r?void 0:r.stats),{},{isPartial:null===r||void 0===r?void 0:r.isPartial,resultLength:r.data.result.length})])})),L((function(e){return[].concat(_(e),[""])})),r.trace&&(i=new Bs(r.trace,a[p-1]),m.push(i)),g=s&&zc(r.data.result),o=(d=g?1/0:f)-h.length,r.data.result.slice(0,o).forEach((function(e){e.group=p,h.push(e)})),v+=r.data.result.length):(h.push({metric:{},values:[],group:p}),L((function(e){return[].concat(_(e),["".concat(r.errorType,"\r\n").concat(null===r||void 0===r?void 0:r.error)])}))),p++;case 15:case"end":return e.stop()}}),e)})),C=Os(n);case 17:return e.next=19,C.next();case 19:if(!(y=!(S=e.sent).done)){e.next=27;break}return e.delegateYield(k(),"t0",21);case 21:if("continue"!==e.t0){e.next=24;break}return e.abrupt("continue",24);case 24:y=!1,e.next=17;break;case 27:e.next=33;break;case 29:e.prev=29,e.t1=e.catch(14),b=!0,D=e.t1;case 33:if(e.prev=33,e.prev=34,!y||null==C.return){e.next=38;break}return e.next=38,C.return();case 38:if(e.prev=38,!b){e.next=41;break}throw D;case 41:return e.finish(38);case 42:return e.finish(33);case 43:A="Showing ".concat(h.length," series out of ").concat(v," series due to performance reasons. Please narrow down the query, so it returns less series"),$(v>d?A:""),s?x(h):E(h),M(m),Q((function(e){return v?g:e})),e.next=53;break;case 50:e.prev=50,e.t2=e.catch(3),e.t2 instanceof Error&&"AbortError"!==e.t2.name&&O("".concat(e.t2.name,": ").concat(e.t2.message));case 53:w(!1);case 54:case"end":return e.stop()}}),e,null,[[3,50],[14,29,33,43],[34,,38,42]])})));return function(t){return e.apply(this,arguments)}}(),K=(0,r.useCallback)(Ls()(G,300),[]),J=(0,r.useMemo)((function(){O(""),L([]),z([]);var e=null!==t&&void 0!==t?t:l,n="chart"===(i||f);if(c)if(p)if(e.every((function(e){return!e.trim()})))L(e.map((function(){return Ot.validQuery})));else{if(ga(p)){var r=st({},c);return r.step=a,e.map((function(e){return n?function(e,t,n,r,i){return"".concat(e,"/api/v1/query_range?query=").concat(encodeURIComponent(t),"&start=").concat(n.start,"&end=").concat(n.end,"&step=").concat(n.step).concat(r?"&nocache=1":"").concat(i?"&trace=1":"")}(p,e,r,d,h):function(e,t,n,r){return"".concat(e,"/api/v1/query?query=").concat(encodeURIComponent(t),"&time=").concat(n.end).concat(r?"&trace=1":"")}(p,e,r,h)}))}O(Ot.validServer)}else O(Ot.emptyServer)}),[p,c,f,a,o]),X=v((0,r.useState)([]),2),ee=X[0],te=X[1];return(0,r.useEffect)((function(){var e=J===ee&&!!t;n&&null!==J&&void 0!==J&&J.length&&!e&&(w(!0),K({fetchUrl:J,fetchQueue:U,displayType:i||f,query:null!==t&&void 0!==t?t:l,stateSeriesLimits:m,showAllSeries:u,hideQuery:o}),te(J))}),[J,n,m,u]),(0,r.useEffect)((function(){var e=U.slice(0,-1);e.length&&(e.map((function(e){return e.abort()})),V(U.filter((function(e){return!e.signal.aborted}))))}),[U]),(0,r.useEffect)((function(){Z===a&&x([])}),[W]),{fetchUrl:J,isLoading:b,graphData:k,liveData:S,error:T,queryErrors:I,setQueryErrors:L,queryStats:B,warning:H,traces:N,isHistogram:W}},js=function(e){var t=e.data,n=fs(),i=(0,r.useMemo)((function(){return JSON.stringify(t,null,2)}),[t]),a=function(){var e=Bi(Li().mark((function e(){return Li().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,n(i,"Formatted JSON has been copied");case 2:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return Yt("div",{className:"vm-json-view",children:[Yt("div",{className:"vm-json-view__copy",children:Yt(mi,{variant:"outlined",onClick:a,children:"Copy JSON"})}),Yt("pre",{className:"vm-json-view__code",children:Yt("code",{children:i})})]})},Hs=function(e){var t=e.yaxis,n=e.setYaxisLimits,i=e.toggleEnableLimits,a=ri().isMobile,o=(0,r.useMemo)((function(){return Object.keys(t.limits.range)}),[t.limits.range]),u=(0,r.useCallback)(Ls()((function(e,r,i){var a=t.limits.range;a[r][i]=+e,a[r][0]===a[r][1]||a[r][0]>a[r][1]||n(a)}),500),[t.limits.range]),l=function(e,t){return function(n){u(n,e,t)}};return Yt("div",{className:Fr()({"vm-axes-limits":!0,"vm-axes-limits_mobile":a}),children:[Yt(ks,{value:t.limits.enable,onChange:i,label:"Fix the limits for y-axis",fullWidth:a}),Yt("div",{className:"vm-axes-limits-list",children:o.map((function(e){return Yt("div",{className:"vm-axes-limits-list__inputs",children:[Yt(qi,{label:"Min ".concat(e),type:"number",disabled:!t.limits.enable,value:t.limits.range[e][0],onChange:l(e,0)}),Yt(qi,{label:"Max ".concat(e),type:"number",disabled:!t.limits.enable,value:t.limits.range[e][1],onChange:l(e,1)})]},e)}))})]})},$s="Axes settings",Ys=function(e){var t=e.yaxis,n=e.setYaxisLimits,i=e.toggleEnableLimits,a=(0,r.useRef)(null),o=(0,r.useRef)(null),u=pi(!1),l=u.value,c=u.toggle,s=u.setFalse;return Yt("div",{className:"vm-graph-settings",children:[Yt(Di,{title:$s,children:Yt("div",{ref:o,children:Yt(mi,{variant:"text",startIcon:Yt(Vn,{}),onClick:c,ariaLabel:"settings"})})}),Yt(vi,{open:l,buttonRef:o,placement:"bottom-right",onClose:s,title:$s,children:Yt("div",{className:"vm-graph-settings-popper",ref:a,children:Yt("div",{className:"vm-graph-settings-popper__body",children:Yt(Hs,{yaxis:t,setYaxisLimits:n,toggleEnableLimits:i})})})})]})},Us=function(e){var t=e.containerStyles,n=void 0===t?{}:t,r=e.message,i=Vt().isDarkTheme;return Yt("div",{className:Fr()({"vm-spinner":!0,"vm-spinner_dark":i}),style:n&&{},children:[Yt("div",{className:"half-circle-spinner",children:[Yt("div",{className:"circle circle-1"}),Yt("div",{className:"circle circle-2"})]}),r&&Yt("div",{className:"vm-spinner__message",children:r})]})},Vs=function(e){var t=e.value;return Yt("div",{className:"vm-line-progress",children:[Yt("div",{className:"vm-line-progress-track",children:Yt("div",{className:"vm-line-progress-track__thumb",style:{width:"".concat(t,"%")}})}),Yt("span",{children:[t.toFixed(2),"%"]})]})},qs=function e(t){var n=t.isRoot,i=t.trace,a=t.totalMsec,o=Vt().isDarkTheme,u=ri().isMobile,l=v((0,r.useState)({}),2),c=l[0],s=l[1],f=(0,r.useRef)(null),d=v((0,r.useState)(!1),2),h=d[0],m=d[1],p=v((0,r.useState)(!1),2),g=p[0],y=p[1],_=ln(i.duration/1e3)||"".concat(i.duration,"ms");(0,r.useEffect)((function(){if(f.current){var e=f.current,t=f.current.children[0].getBoundingClientRect().height;m(t>e.clientHeight)}}),[i]);var b,w=i.children&&!!i.children.length,D=i.duration/a*100;return Yt("div",{className:Fr()({"vm-nested-nav":!0,"vm-nested-nav_root":n,"vm-nested-nav_dark":o,"vm-nested-nav_mobile":u}),children:[Yt("div",{className:Fr()({"vm-nested-nav-header":!0,"vm-nested-nav-header_open":c[i.idValue]}),onClick:(b=i.idValue,function(){w&&s((function(e){return st(st({},e),{},lt({},b,!e[b]))}))}),children:[w&&Yt("div",{className:Fr()({"vm-nested-nav-header__icon":!0,"vm-nested-nav-header__icon_open":c[i.idValue]}),children:Yt(Xn,{})}),Yt("div",{className:"vm-nested-nav-header__progress",children:Yt(Vs,{value:D})}),Yt("div",{className:Fr()({"vm-nested-nav-header__message":!0,"vm-nested-nav-header__message_show-full":g}),ref:f,children:Yt("span",{children:i.message})}),Yt("div",{className:"vm-nested-nav-header-bottom",children:[Yt("div",{className:"vm-nested-nav-header-bottom__duration",children:"duration: ".concat(_)}),(h||g)&&Yt(mi,{variant:"text",size:"small",onClick:function(e){e.stopPropagation(),y((function(e){return!e}))},children:g?"Hide":"Show full query"})]})]}),c[i.idValue]&&Yt("div",{className:"vm-nested-nav__childrens",children:w&&i.children.map((function(t){return Yt(e,{trace:t,totalMsec:a},t.duration)}))})]})},Ws=function(e){var t=e.editable,n=void 0!==t&&t,i=e.defaultTile,a=void 0===i?"JSON":i,o=e.displayTitle,u=void 0===o||o,l=e.defaultJson,c=void 0===l?"":l,s=e.resetValue,f=void 0===s?"":s,d=e.onClose,h=e.onUpload,m=fs(),p=ri().isMobile,g=v((0,r.useState)(c),2),y=g[0],_=g[1],b=v((0,r.useState)(a),2),w=b[0],D=b[1],k=v((0,r.useState)(""),2),x=k[0],C=k[1],S=v((0,r.useState)(""),2),E=S[0],A=S[1],N=(0,r.useMemo)((function(){try{var e=JSON.parse(y),t=e.trace||e;return t.duration_msec?(new Bs(t,""),""):Ot.traceNotFound}catch(n){return n instanceof Error?n.message:"Unknown error"}}),[y]),M=function(){var e=Bi(Li().mark((function e(){return Li().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,m(y,"Formatted JSON has been copied");case 2:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),F=function(){A(N),w.trim()||C(Ot.emptyTitle),N||x||(h(y,w),d())};return Yt("div",{className:Fr()({"vm-json-form":!0,"vm-json-form_one-field":!u,"vm-json-form_one-field_mobile":!u&&p,"vm-json-form_mobile":p}),children:[u&&Yt(qi,{value:w,label:"Title",error:x,onEnter:F,onChange:function(e){D(e)}}),Yt(qi,{value:y,label:"JSON",type:"textarea",error:E,autofocus:!0,onChange:function(e){A(""),_(e)},onEnter:F,disabled:!n}),Yt("div",{className:"vm-json-form-footer",children:[Yt("div",{className:"vm-json-form-footer__controls",children:[Yt(mi,{variant:"outlined",startIcon:Yt(gr,{}),onClick:M,children:"Copy JSON"}),f&&Yt(mi,{variant:"text",startIcon:Yt(Wn,{}),onClick:function(){_(f)},children:"Reset JSON"})]}),Yt("div",{className:"vm-json-form-footer__controls vm-json-form-footer__controls_right",children:[Yt(mi,{variant:"outlined",color:"error",onClick:d,children:"Cancel"}),Yt(mi,{variant:"contained",onClick:F,children:"apply"})]})]})]})},Qs=function(e){var t=e.traces,n=e.jsonEditor,i=void 0!==n&&n,a=e.onDeleteClick,o=ri().isMobile,u=v((0,r.useState)(null),2),l=u[0],c=u[1],s=function(){c(null)};if(!t.length)return Yt(ai,{variant:"info",children:"Please re-run the query to see results of the tracing"});var f=function(e){return function(){a(e)}};return Yt(Ht.HY,{children:[Yt("div",{className:"vm-tracings-view",children:t.map((function(e){return Yt("div",{className:"vm-tracings-view-trace vm-block vm-block_empty-padding",children:[Yt("div",{className:"vm-tracings-view-trace-header",children:[Yt("h3",{className:"vm-tracings-view-trace-header-title",children:["Trace for ",Yt("b",{className:"vm-tracings-view-trace-header-title__query",children:e.queryValue})]}),Yt(Di,{title:"Open JSON",children:Yt(mi,{variant:"text",startIcon:Yt(cr,{}),onClick:(t=e,function(){c(t)}),ariaLabel:"open JSON"})}),Yt(Di,{title:"Remove trace",children:Yt(mi,{variant:"text",color:"error",startIcon:Yt(sr,{}),onClick:f(e),ariaLabel:"remove trace"})})]}),Yt("nav",{className:Fr()({"vm-tracings-view-trace__nav":!0,"vm-tracings-view-trace__nav_mobile":o}),children:Yt(qs,{isRoot:!0,trace:e,totalMsec:e.duration})})]},e.idValue);var t}))}),l&&Yt(wi,{title:l.queryValue,onClose:s,children:Yt(Ws,{editable:i,displayTitle:i,defaultTile:l.queryValue,defaultJson:l.JSON,resetValue:l.originalJSON,onClose:s,onUpload:function(e,t){if(i&&l)try{l.setTracing(JSON.parse(e)),l.setQuery(t),c(null)}catch(n){console.error(n)}}})})]})},Zs=function(e){var t,n=e.checked,r=void 0!==n&&n,i=e.disabled,a=void 0!==i&&i,o=e.label,u=e.color,l=void 0===u?"secondary":u,c=e.onChange;return Yt("div",{className:Fr()((lt(t={"vm-checkbox":!0,"vm-checkbox_disabled":a,"vm-checkbox_active":r},"vm-checkbox_".concat(l,"_active"),r),lt(t,"vm-checkbox_".concat(l),l),t)),onClick:function(){a||c(!r)},children:[Yt("div",{className:"vm-checkbox-track",children:Yt("div",{className:"vm-checkbox-track__thumb",children:Yt(hr,{})})}),o&&Yt("span",{className:"vm-checkbox__label",children:o})]})},Gs="Table settings",Ks=function(e){var t=e.columns,n=e.defaultColumns,i=void 0===n?[]:n,a=e.tableCompact,o=e.onChangeColumns,u=e.toggleTableCompact,l=ri().isMobile,c=(0,r.useRef)(null),s=pi(!1),f=s.value,d=s.toggle,h=s.setFalse,m=(0,r.useMemo)((function(){return!t.length}),[t]),p=function(e){return function(){!function(e){o(i.includes(e)?i.filter((function(t){return t!==e})):[].concat(_(i),[e]))}(e)}};return(0,r.useEffect)((function(){Ss(t,i)||o(t)}),[t]),Yt("div",{className:"vm-table-settings",children:[Yt(Di,{title:Gs,children:Yt("div",{ref:c,children:Yt(mi,{variant:"text",startIcon:Yt(Vn,{}),onClick:d,disabled:m,ariaLabel:"table settings"})})}),Yt(vi,{open:f,onClose:h,placement:"bottom-right",buttonRef:c,title:Gs,children:Yt("div",{className:Fr()({"vm-table-settings-popper":!0,"vm-table-settings-popper_mobile":l}),children:[Yt("div",{className:"vm-table-settings-popper-list vm-table-settings-popper-list_first",children:Yt(ks,{label:"Compact view",value:a,onChange:u})}),Yt("div",{className:"vm-table-settings-popper-list",children:[Yt("div",{className:"vm-table-settings-popper-list-header",children:[Yt("h3",{className:"vm-table-settings-popper-list-header__title",children:"Display columns"}),Yt(Di,{title:"Reset to default",children:Yt(mi,{color:"primary",variant:"text",size:"small",onClick:function(){h(),o(t)},startIcon:Yt(Wn,{}),ariaLabel:"reset columns"})})]}),t.map((function(e){return Yt("div",{className:"vm-table-settings-popper-list__item",children:Yt(Zs,{checked:i.includes(e),onChange:p(e),label:e,disabled:a})},e)}))]})]})})]})};function Js(e){return function(e,t){return Object.fromEntries(Object.entries(e).filter(t))}(e,(function(e){return!!e[1]||"number"===typeof e[1]}))}var Xs=function(e){var t={};return e.forEach((function(e){return Object.entries(e.metric).forEach((function(e){return t[e[0]]?t[e[0]].options.add(e[1]):t[e[0]]={options:new Set([e[1]])}}))})),Object.entries(t).map((function(e){return{key:e[0],variations:e[1].options.size}})).sort((function(e,t){return e.variations-t.variations}))},ef=function(e,t){return(0,r.useMemo)((function(){var n=Xs(e);return t?n.filter((function(e){return t.includes(e.key)})):n}),[e,t])},tf=["__name__"],nf=function(e){var t=e.data,n=e.displayColumns,i=fs(),a=ri().isMobile,o=Qr().tableCompact,u=(0,r.useRef)(null),l=v((0,r.useState)(""),2),c=l[0],s=l[1],f=v((0,r.useState)("asc"),2),d=f[0],h=f[1],m=o?ef([{group:0,metric:{Data:"Data"}}],["Data"]):ef(t,n),p=function(e){var t=e.__name__,n=Tr(e,tf);return t||Object.keys(n).length?"".concat(t," ").concat(JSON.stringify(n)):""},g=new Set(null===t||void 0===t?void 0:t.map((function(e){return e.group}))).size>1,y=(0,r.useMemo)((function(){var e=null===t||void 0===t?void 0:t.map((function(e){return{metadata:m.map((function(t){return o?Rc(e,"",g):e.metric[t.key]||"-"})),value:e.value?e.value[1]:"-",values:e.values?e.values.map((function(e){var t=v(e,2),n=t[0],r=t[1];return"".concat(r," @").concat(n)})):[],copyValue:p(e.metric)}})),n="Value"===c,r=m.findIndex((function(e){return e.key===c}));return n||-1!==r?e.sort((function(e,t){var i=n?Number(e.value):e.metadata[r],a=n?Number(t.value):t.metadata[r];return("asc"===d?ia)?-1:1})):e}),[m,t,c,d,o]),_=(0,r.useMemo)((function(){return y.some((function(e){return e.copyValue}))}),[y]),b=function(e){return function(){!function(e){h((function(t){return"asc"===t&&c===e?"desc":"asc"})),s(e)}(e)}};return y.length?Yt("div",{className:Fr()({"vm-table-view":!0,"vm-table-view_mobile":a}),children:Yt("table",{className:"vm-table",ref:u,children:[Yt("thead",{className:"vm-table-header",children:Yt("tr",{className:"vm-table__row vm-table__row_header",children:[m.map((function(e,t){return Yt("td",{className:"vm-table-cell vm-table-cell_header vm-table-cell_sort",onClick:b(e.key),children:Yt("div",{className:"vm-table-cell__content",children:[e.key,Yt("div",{className:Fr()({"vm-table__sort-icon":!0,"vm-table__sort-icon_active":c===e.key,"vm-table__sort-icon_desc":"desc"===d&&c===e.key}),children:Yt(er,{})})]})},t)})),Yt("td",{className:"vm-table-cell vm-table-cell_header vm-table-cell_right vm-table-cell_sort",onClick:b("Value"),children:Yt("div",{className:"vm-table-cell__content",children:[Yt("div",{className:Fr()({"vm-table__sort-icon":!0,"vm-table__sort-icon_active":"Value"===c,"vm-table__sort-icon_desc":"desc"===d}),children:Yt(er,{})}),"Value"]})}),_&&Yt("td",{className:"vm-table-cell vm-table-cell_header"})]})}),Yt("tbody",{className:"vm-table-body",children:y.map((function(e,t){return Yt("tr",{className:"vm-table__row",children:[e.metadata.map((function(e,n){return Yt("td",{className:Fr()({"vm-table-cell vm-table-cell_no-wrap":!0,"vm-table-cell_gray":y[t-1]&&y[t-1].metadata[n]===e}),children:e},n)})),Yt("td",{className:"vm-table-cell vm-table-cell_right vm-table-cell_no-wrap",children:e.values.length?e.values.map((function(e){return Yt("p",{children:e},e)})):e.value}),_&&Yt("td",{className:"vm-table-cell vm-table-cell_right",children:e.copyValue&&Yt("div",{className:"vm-table-cell__content",children:Yt(Di,{title:"Copy row",children:Yt(mi,{variant:"text",color:"gray",size:"small",startIcon:Yt(gr,{}),onClick:(n=e.copyValue,Bi(Li().mark((function e(){return Li().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,i(n,"Row has been copied");case 2:case"end":return e.stop()}}),e)})))),ariaLabel:"copy row"})})})})]},t);var n}))})]})}):Yt(ai,{variant:"warning",children:"No data to show"})},rf=function(e){var t=e.text,n=e.href,r=e.children,i=e.colored,a=void 0===i||i,o=e.underlined,u=void 0!==o&&o,l=e.withIcon,c=void 0!==l&&l;return Yt("a",{href:n,className:Fr()({"vm-link":!0,"vm-link_colored":a,"vm-link_underlined":u,"vm-link_with-icon":c}),target:"_blank",rel:"noreferrer",children:t||r})},af=Yt(rf,{text:"last_over_time",href:"https://docs.victoriametrics.com/MetricsQL.html#last_over_time",underlined:!0}),of=Yt(rf,{text:"instant query",href:"https://docs.victoriametrics.com/keyConcepts.html#instant-query",underlined:!0}),uf=function(){return Yt("div",{children:[Yt("p",{children:["This tab shows ",of," results for the last 5 minutes ending at the selected time range."]}),Yt("p",{children:["Please wrap the query into ",af," if you need results over arbitrary lookbehind interval."]})]})},lf=function(){var e=Qr(),t=e.displayType,n=e.isTracingEnabled,i=jn().query,a=On().period,o=Pn(),u=ri().isMobile;!function(){var e=Vt().tenantId,t=Qr().displayType,n=jn().query,i=On(),a=i.duration,o=i.relativeTime,u=i.period,l=u.date,c=u.step,s=Xr().customStep,f=v(ot(),2)[1],d=function(){var r={};n.forEach((function(n,i){var u,f="g".concat(i);r["".concat(f,".expr")]=n,r["".concat(f,".range_input")]=a,r["".concat(f,".end_input")]=l,r["".concat(f,".tab")]=(null===(u=jr.find((function(e){return e.value===t})))||void 0===u?void 0:u.prometheusCode)||0,r["".concat(f,".relative_time")]=o,r["".concat(f,".tenantID")]=e,c!==s&&s&&(r["".concat(f,".step_input")]=s)})),f(Js(r))};(0,r.useEffect)(d,[e,t,n,a,o,l,c,s]),(0,r.useEffect)(d,[])}();var l=v((0,r.useState)(),2),c=l[0],s=l[1],f=v((0,r.useState)([]),2),d=f[0],h=f[1],m=v((0,r.useState)([]),2),p=m[0],g=m[1],y=v((0,r.useState)(!i[0]),2),b=y[0],w=y[1],D=pi(!1),k=D.value,x=D.setTrue,C=D.setFalse,S=Xr(),E=S.customStep,A=S.yaxis,N=ei(),M=function(){var e=Vt().serverUrl,t=v((0,r.useState)([]),2),n=t[0],i=t[1],a=function(){var t=Bi(Li().mark((function t(){var n,r,a;return Li().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e){t.next=2;break}return t.abrupt("return");case 2:return n="".concat(e,"/api/v1/label/__name__/values"),t.prev=3,t.next=6,fetch(n);case 6:return r=t.sent,t.next=9,r.json();case 9:a=t.sent,r.ok&&i(a.data),t.next=16;break;case 13:t.prev=13,t.t0=t.catch(3),console.error(t.t0);case 16:case"end":return t.stop()}}),t,null,[[3,13]])})));return function(){return t.apply(this,arguments)}}();return(0,r.useEffect)((function(){a()}),[e]),{queryOptions:n}}(),F=M.queryOptions,T=zs({visible:!0,customStep:E,hideQuery:p,showAllSeries:k}),O=T.isLoading,P=T.liveData,I=T.graphData,L=T.error,R=T.queryErrors,B=T.setQueryErrors,z=T.queryStats,j=T.warning,H=T.traces,$=T.isHistogram,Y=function(e){N({type:"SET_YAXIS_LIMITS",payload:e})},U=(0,r.useMemo)((function(){return Xs(P||[]).map((function(e){return e.key}))}),[P]),V=Qr().tableCompact,q=Zr();return Rr("popstate",(function(){return window.location.reload()})),(0,r.useEffect)((function(){H&&h([].concat(_(d),_(H)))}),[H]),(0,r.useEffect)((function(){h([])}),[t]),(0,r.useEffect)(C,[i]),(0,r.useEffect)((function(){N({type:"SET_IS_HISTOGRAM",payload:$})}),[I]),Yt("div",{className:Fr()({"vm-custom-panel":!0,"vm-custom-panel_mobile":u}),children:[Yt(Ts,{queryErrors:b?[]:R,setQueryErrors:B,setHideError:w,stats:z,queryOptions:F,onHideQuery:function(e){g(e)},onRunQuery:function(){w(!1)}}),n&&Yt("div",{className:"vm-custom-panel__trace",children:Yt(Qs,{traces:d,onDeleteClick:function(e){var t=d.filter((function(t){return t.idValue!==e.idValue}));h(_(t))}})}),O&&Yt(Us,{}),!b&&L&&Yt(ai,{variant:"error",children:L}),!(null!==P&&void 0!==P&&P.length)&&"chart"!==t&&Yt(ai,{variant:"info",children:Yt(uf,{})}),j&&Yt(ai,{variant:"warning",children:Yt("div",{className:Fr()({"vm-custom-panel__warning":!0,"vm-custom-panel__warning_mobile":u}),children:[Yt("p",{children:j}),Yt(mi,{color:"warning",variant:"outlined",onClick:x,children:"Show all"})]})}),Yt("div",{className:Fr()({"vm-custom-panel-body":!0,"vm-custom-panel-body_mobile":u,"vm-block":!0,"vm-block_mobile":u}),children:[Yt("div",{className:"vm-custom-panel-body-header",children:[Yt(Hr,{}),"chart"===t&&Yt("div",{className:"vm-custom-panel-body-header__left",children:[Yt(Ei,{}),Yt(Ys,{yaxis:A,setYaxisLimits:Y,toggleEnableLimits:function(){N({type:"TOGGLE_ENABLE_YAXIS_LIMITS"})}})]}),"table"===t&&Yt(Ks,{columns:U,defaultColumns:c,onChangeColumns:s,tableCompact:V,toggleTableCompact:function(){q({type:"TOGGLE_TABLE_COMPACT"})}})]}),I&&a&&"chart"===t&&Yt(ys,{data:I,period:a,customStep:E,query:i,yaxis:A,setYaxisLimits:Y,setPeriod:function(e){var t=e.from,n=e.to;o({type:"SET_PERIOD",payload:{from:t,to:n}})},height:u?.5*window.innerHeight:500,isHistogram:$}),P&&"code"===t&&Yt(js,{data:P}),P&&"table"===t&&Yt(nf,{data:P,displayColumns:c})]})]})};function cf(e,t){!function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}(e,t),t.add(e)}function sf(e,t,n){if(!t.has(e))throw new TypeError("attempted to get private field on non-instance");return n}function ff(){return{async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,hooks:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}var df={async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,hooks:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1};function hf(e){df=e}var mf=/[&<>"']/,pf=new RegExp(mf.source,"g"),vf=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,gf=new RegExp(vf.source,"g"),yf={"&":"&","<":"<",">":">",'"':""","'":"'"},_f=function(e){return yf[e]};function bf(e,t){if(t){if(mf.test(e))return e.replace(pf,_f)}else if(vf.test(e))return e.replace(gf,_f);return e}var wf=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function Df(e){return e.replace(wf,(function(e,t){return"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""}))}var kf=/(^|[^\[])\^/g;function xf(e,t){e="string"===typeof e?e:e.source,t=t||"";var n={replace:function(t,r){return r=(r=r.source||r).replace(kf,"$1"),e=e.replace(t,r),n},getRegex:function(){return new RegExp(e,t)}};return n}var Cf=/[^\w:]/g,Sf=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function Ef(e,t,n){if(e){var r;try{r=decodeURIComponent(Df(n)).replace(Cf,"").toLowerCase()}catch(i){return null}if(0===r.indexOf("javascript:")||0===r.indexOf("vbscript:")||0===r.indexOf("data:"))return null}t&&!Sf.test(n)&&(n=function(e,t){Af[" "+e]||(Nf.test(e)?Af[" "+e]=e+"/":Af[" "+e]=Pf(e,"/",!0));e=Af[" "+e];var n=-1===e.indexOf(":");return"//"===t.substring(0,2)?n?t:e.replace(Mf,"$1")+t:"/"===t.charAt(0)?n?t:e.replace(Ff,"$1")+t:e+t}(t,n));try{n=encodeURI(n).replace(/%25/g,"%")}catch(i){return null}return n}var Af={},Nf=/^[^:]+:\/*[^/]*$/,Mf=/^([^:]+:)[\s\S]*$/,Ff=/^([^:]+:\/*[^/]*)[\s\S]*$/;var Tf={exec:function(){}};function Of(e,t){var n=e.replace(/\|/g,(function(e,t,n){for(var r=!1,i=t;--i>=0&&"\\"===n[i];)r=!r;return r?"|":" |"})).split(/ \|/),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n[n.length-1].trim()&&n.pop(),n.length>t)n.splice(t);else for(;n.length0)return{type:"space",raw:t[0]}}},{key:"code",value:function(e){var t=this.rules.block.code.exec(e);if(t){var n=t[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?n:Pf(n,"\n")}}}},{key:"fences",value:function(e){var t=this.rules.block.fences.exec(e);if(t){var n=t[0],r=function(e,t){var n=e.match(/^(\s+)(?:```)/);if(null===n)return t;var r=n[1];return t.split("\n").map((function(e){var t=e.match(/^\s+/);return null===t?e:v(t,1)[0].length>=r.length?e.slice(r.length):e})).join("\n")}(n,t[3]||"");return{type:"code",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline._escapes,"$1"):t[2],text:r}}}},{key:"heading",value:function(e){var t=this.rules.block.heading.exec(e);if(t){var n=t[2].trim();if(/#$/.test(n)){var r=Pf(n,"#");this.options.pedantic?n=r.trim():r&&!/ $/.test(r)||(n=r.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}},{key:"hr",value:function(e){var t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:t[0]}}},{key:"blockquote",value:function(e){var t=this.rules.block.blockquote.exec(e);if(t){var n=t[0].replace(/^ *>[ \t]?/gm,""),r=this.lexer.state.top;this.lexer.state.top=!0;var i=this.lexer.blockTokens(n);return this.lexer.state.top=r,{type:"blockquote",raw:t[0],tokens:i,text:n}}}},{key:"list",value:function(e){var t=this.rules.block.list.exec(e);if(t){var n,r,i,a,o,u,l,c,s,f,d,h,m=t[1].trim(),p=m.length>1,v={type:"list",raw:"",ordered:p,start:p?+m.slice(0,-1):"",loose:!1,items:[]};m=p?"\\d{1,9}\\".concat(m.slice(-1)):"\\".concat(m),this.options.pedantic&&(m=p?m:"[*+-]");for(var g=new RegExp("^( {0,3}".concat(m,")((?:[\t ][^\\n]*)?(?:\\n|$))"));e&&(h=!1,t=g.exec(e))&&!this.rules.block.hr.test(e);){if(n=t[0],e=e.substring(n.length),c=t[2].split("\n",1)[0].replace(/^\t+/,(function(e){return" ".repeat(3*e.length)})),s=e.split("\n",1)[0],this.options.pedantic?(a=2,d=c.trimLeft()):(a=(a=t[2].search(/[^ ]/))>4?1:a,d=c.slice(a),a+=t[1].length),u=!1,!c&&/^ *$/.test(s)&&(n+=s+"\n",e=e.substring(s.length+1),h=!0),!h)for(var y=new RegExp("^ {0,".concat(Math.min(3,a-1),"}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))")),_=new RegExp("^ {0,".concat(Math.min(3,a-1),"}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)")),b=new RegExp("^ {0,".concat(Math.min(3,a-1),"}(?:```|~~~)")),w=new RegExp("^ {0,".concat(Math.min(3,a-1),"}#"));e&&(s=f=e.split("\n",1)[0],this.options.pedantic&&(s=s.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),!b.test(s))&&!w.test(s)&&!y.test(s)&&!_.test(e);){if(s.search(/[^ ]/)>=a||!s.trim())d+="\n"+s.slice(a);else{if(u)break;if(c.search(/[^ ]/)>=4)break;if(b.test(c))break;if(w.test(c))break;if(_.test(c))break;d+="\n"+s}u||s.trim()||(u=!0),n+=f+"\n",e=e.substring(f.length+1),c=s.slice(a)}v.loose||(l?v.loose=!0:/\n *\n *$/.test(n)&&(l=!0)),this.options.gfm&&(r=/^\[[ xX]\] /.exec(d))&&(i="[ ] "!==r[0],d=d.replace(/^\[[ xX]\] +/,"")),v.items.push({type:"list_item",raw:n,task:!!r,checked:i,loose:!1,text:d}),v.raw+=n}v.items[v.items.length-1].raw=n.trimRight(),v.items[v.items.length-1].text=d.trimRight(),v.raw=v.raw.trimRight();var D=v.items.length;for(o=0;o0&&k.some((function(e){return/\n.*\n/.test(e.raw)}));v.loose=x}if(v.loose)for(o=0;o$/,"$1").replace(this.rules.inline._escapes,"$1"):"",i=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline._escapes,"$1"):t[3];return{type:"def",tag:n,raw:t[0],href:r,title:i}}}},{key:"table",value:function(e){var t=this.rules.block.table.exec(e);if(t){var n={type:"table",header:Of(t[1]).map((function(e){return{text:e}})),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),rows:t[3]&&t[3].trim()?t[3].replace(/\n[ \t]*$/,"").split("\n"):[]};if(n.header.length===n.align.length){n.raw=t[0];var r,i,a,o,u=n.align.length;for(r=0;r/i.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?"text":"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(t[0]):bf(t[0]):t[0]}}},{key:"link",value:function(e){var t=this.rules.inline.link.exec(e);if(t){var n=t[2].trim();if(!this.options.pedantic&&/^$/.test(n))return;var r=Pf(n.slice(0,-1),"\\");if((n.length-r.length)%2===0)return}else{var i=function(e,t){if(-1===e.indexOf(t[1]))return-1;for(var n=e.length,r=0,i=0;i-1){var a=(0===t[0].indexOf("!")?5:4)+t[1].length+i;t[2]=t[2].substring(0,i),t[0]=t[0].substring(0,a).trim(),t[3]=""}}var o=t[2],u="";if(this.options.pedantic){var l=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(o);l&&(o=l[1],u=l[3])}else u=t[3]?t[3].slice(1,-1):"";return o=o.trim(),/^$/.test(n)?o.slice(1):o.slice(1,-1)),If(t,{href:o?o.replace(this.rules.inline._escapes,"$1"):o,title:u?u.replace(this.rules.inline._escapes,"$1"):u},t[0],this.lexer)}}},{key:"reflink",value:function(e,t){var n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){var r=(n[2]||n[1]).replace(/\s+/g," ");if(!(r=t[r.toLowerCase()])){var i=n[0].charAt(0);return{type:"text",raw:i,text:i}}return If(n,r,n[0],this.lexer)}}},{key:"emStrong",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",r=this.rules.inline.emStrong.lDelim.exec(e);if(r&&((!r[3]||!n.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\uDE3F\uDE40\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\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDF50-\uDF59\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\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46]|\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\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD834[\uDEC0-\uDED3\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\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD40-\uDD49\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB\uDEF0-\uDEF9]|\uD839[\uDCD0-\uDCEB\uDCF0-\uDCF9\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-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])/))&&(!(r[1]||r[2]||"")||!n||this.rules.inline.punctuation.exec(n)))){var i,a,o=r[0].length-1,u=o,l=0,c="*"===r[0][0]?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(c.lastIndex=0,t=t.slice(-1*e.length+o);null!=(r=c.exec(t));)if(i=r[1]||r[2]||r[3]||r[4]||r[5]||r[6])if(a=i.length,r[3]||r[4])u+=a;else if(!((r[5]||r[6])&&o%3)||(o+a)%3){if(!((u-=a)>0)){a=Math.min(a,a+u+l);var s=e.slice(0,o+r.index+a+1);if(Math.min(o,a)%2){var f=s.slice(1,-1);return{type:"em",raw:s,text:f,tokens:this.lexer.inlineTokens(f)}}var d=s.slice(2,-2);return{type:"strong",raw:s,text:d,tokens:this.lexer.inlineTokens(d)}}}else l+=a}}},{key:"codespan",value:function(e){var t=this.rules.inline.code.exec(e);if(t){var n=t[2].replace(/\n/g," "),r=/[^ ]/.test(n),i=/^ /.test(n)&&/ $/.test(n);return r&&i&&(n=n.substring(1,n.length-1)),n=bf(n,!0),{type:"codespan",raw:t[0],text:n}}}},{key:"br",value:function(e){var t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}},{key:"del",value:function(e){var t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}},{key:"autolink",value:function(e,t){var n,r,i=this.rules.inline.autolink.exec(e);if(i)return r="@"===i[2]?"mailto:"+(n=bf(this.options.mangle?t(i[1]):i[1])):n=bf(i[1]),{type:"link",raw:i[0],text:n,href:r,tokens:[{type:"text",raw:n,text:n}]}}},{key:"url",value:function(e,t){var n;if(n=this.rules.inline.url.exec(e)){var r,i;if("@"===n[2])i="mailto:"+(r=bf(this.options.mangle?t(n[0]):n[0]));else{var a;do{a=n[0],n[0]=this.rules.inline._backpedal.exec(n[0])[0]}while(a!==n[0]);r=bf(n[0]),i="www."===n[1]?"http://"+n[0]:n[0]}return{type:"link",raw:n[0],text:r,href:i,tokens:[{type:"text",raw:r,text:r}]}}}},{key:"inlineText",value:function(e,t){var n,r=this.rules.inline.text.exec(e);if(r)return n=this.lexer.state.inRawBlock?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(r[0]):bf(r[0]):r[0]:bf(this.options.smartypants?t(r[0]):r[0]),{type:"text",raw:r[0],text:n}}}]),e}(),Rf={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]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,table:Tf,lheading:/^((?:(?!^bull ).|\n(?!\n|bull ))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\.|[^\[\]\\])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};Rf.def=xf(Rf.def).replace("label",Rf._label).replace("title",Rf._title).getRegex(),Rf.bullet=/(?:[*+-]|\d{1,9}[.)])/,Rf.listItemStart=xf(/^( *)(bull) */).replace("bull",Rf.bullet).getRegex(),Rf.list=xf(Rf.list).replace(/bull/g,Rf.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+Rf.def.source+")").getRegex(),Rf._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",Rf._comment=/|$)/,Rf.html=xf(Rf.html,"i").replace("comment",Rf._comment).replace("tag",Rf._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Rf.lheading=xf(Rf.lheading).replace(/bull/g,Rf.bullet).getRegex(),Rf.paragraph=xf(Rf._paragraph).replace("hr",Rf.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",")|<(?:script|pre|style|textarea|!--)").replace("tag",Rf._tag).getRegex(),Rf.blockquote=xf(Rf.blockquote).replace("paragraph",Rf.paragraph).getRegex(),Rf.normal=st({},Rf),Rf.gfm=st(st({},Rf.normal),{},{table:"^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),Rf.gfm.table=xf(Rf.gfm.table).replace("hr",Rf.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",")|<(?:script|pre|style|textarea|!--)").replace("tag",Rf._tag).getRegex(),Rf.gfm.paragraph=xf(Rf._paragraph).replace("hr",Rf.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("table",Rf.gfm.table).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Rf._tag).getRegex(),Rf.pedantic=st(st({},Rf.normal),{},{html:xf("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",Rf._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:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:Tf,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:xf(Rf.normal._paragraph).replace("hr",Rf.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",Rf.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});var Bf={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:Tf,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\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:Tf,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\.5&&(n="x"+n.toString(16)),r+="&#"+n+";";return r}Bf._punctuation="\\p{P}$+<=>`^|~",Bf.punctuation=xf(Bf.punctuation,"u").replace(/punctuation/g,Bf._punctuation).getRegex(),Bf.blockSkip=/\[[^[\]]*?\]\([^\(\)]*?\)|`[^`]*?`|<[^<>]*?>/g,Bf.anyPunctuation=/\\[punct]/g,Bf._escapes=/\\([punct])/g,Bf._comment=xf(Rf._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),Bf.emStrong.lDelim=xf(Bf.emStrong.lDelim,"u").replace(/punct/g,Bf._punctuation).getRegex(),Bf.emStrong.rDelimAst=xf(Bf.emStrong.rDelimAst,"gu").replace(/punct/g,Bf._punctuation).getRegex(),Bf.emStrong.rDelimUnd=xf(Bf.emStrong.rDelimUnd,"gu").replace(/punct/g,Bf._punctuation).getRegex(),Bf.anyPunctuation=xf(Bf.anyPunctuation,"gu").replace(/punct/g,Bf._punctuation).getRegex(),Bf._escapes=xf(Bf._escapes,"gu").replace(/punct/g,Bf._punctuation).getRegex(),Bf._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,Bf._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])?)+(?![-_])/,Bf.autolink=xf(Bf.autolink).replace("scheme",Bf._scheme).replace("email",Bf._email).getRegex(),Bf._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,Bf.tag=xf(Bf.tag).replace("comment",Bf._comment).replace("attribute",Bf._attribute).getRegex(),Bf._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,Bf._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,Bf._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,Bf.link=xf(Bf.link).replace("label",Bf._label).replace("href",Bf._href).replace("title",Bf._title).getRegex(),Bf.reflink=xf(Bf.reflink).replace("label",Bf._label).replace("ref",Rf._label).getRegex(),Bf.nolink=xf(Bf.nolink).replace("ref",Rf._label).getRegex(),Bf.reflinkSearch=xf(Bf.reflinkSearch,"g").replace("reflink",Bf.reflink).replace("nolink",Bf.nolink).getRegex(),Bf.normal=st({},Bf),Bf.pedantic=st(st({},Bf.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:xf(/^!?\[(label)\]\((.*?)\)/).replace("label",Bf._label).getRegex(),reflink:xf(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Bf._label).getRegex()}),Bf.gfm=st(st({},Bf.normal),{},{escape:xf(Bf.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]*?(?:(?=[\\1&&void 0!==arguments[1]?arguments[1]:[];e=this.options.pedantic?e.replace(/\t/g," ").replace(/^ +$/gm,""):e.replace(/^( *)(\t+)/gm,(function(e,t,n){return t+" ".repeat(n.length)}));for(var u=function(){if(a.options.extensions&&a.options.extensions.block&&a.options.extensions.block.some((function(n){return!!(t=n.call({lexer:a},e,o))&&(e=e.substring(t.raw.length),o.push(t),!0)})))return"continue";if(t=a.tokenizer.space(e))return e=e.substring(t.raw.length),1===t.raw.length&&o.length>0?o[o.length-1].raw+="\n":o.push(t),"continue";if(t=a.tokenizer.code(e))return e=e.substring(t.raw.length),!(n=o[o.length-1])||"paragraph"!==n.type&&"text"!==n.type?o.push(t):(n.raw+="\n"+t.raw,n.text+="\n"+t.text,a.inlineQueue[a.inlineQueue.length-1].src=n.text),"continue";if(t=a.tokenizer.fences(e))return e=e.substring(t.raw.length),o.push(t),"continue";if(t=a.tokenizer.heading(e))return e=e.substring(t.raw.length),o.push(t),"continue";if(t=a.tokenizer.hr(e))return e=e.substring(t.raw.length),o.push(t),"continue";if(t=a.tokenizer.blockquote(e))return e=e.substring(t.raw.length),o.push(t),"continue";if(t=a.tokenizer.list(e))return e=e.substring(t.raw.length),o.push(t),"continue";if(t=a.tokenizer.html(e))return e=e.substring(t.raw.length),o.push(t),"continue";if(t=a.tokenizer.def(e))return e=e.substring(t.raw.length),!(n=o[o.length-1])||"paragraph"!==n.type&&"text"!==n.type?a.tokens.links[t.tag]||(a.tokens.links[t.tag]={href:t.href,title:t.title}):(n.raw+="\n"+t.raw,n.text+="\n"+t.raw,a.inlineQueue[a.inlineQueue.length-1].src=n.text),"continue";if(t=a.tokenizer.table(e))return e=e.substring(t.raw.length),o.push(t),"continue";if(t=a.tokenizer.lheading(e))return e=e.substring(t.raw.length),o.push(t),"continue";if(r=e,a.options.extensions&&a.options.extensions.startBlock){var u,l=1/0,c=e.slice(1);a.options.extensions.startBlock.forEach((function(e){"number"===typeof(u=e.call({lexer:this},c))&&u>=0&&(l=Math.min(l,u))})),l<1/0&&l>=0&&(r=e.substring(0,l+1))}if(a.state.top&&(t=a.tokenizer.paragraph(r)))return n=o[o.length-1],i&&"paragraph"===n.type?(n.raw+="\n"+t.raw,n.text+="\n"+t.text,a.inlineQueue.pop(),a.inlineQueue[a.inlineQueue.length-1].src=n.text):o.push(t),i=r.length!==e.length,e=e.substring(t.raw.length),"continue";if(t=a.tokenizer.text(e))return e=e.substring(t.raw.length),(n=o[o.length-1])&&"text"===n.type?(n.raw+="\n"+t.raw,n.text+="\n"+t.text,a.inlineQueue.pop(),a.inlineQueue[a.inlineQueue.length-1].src=n.text):o.push(t),"continue";if(e){var s="Infinite loop on byte: "+e.charCodeAt(0);if(a.options.silent)return console.error(s),"break";throw new Error(s)}};e;){var l=u();if("continue"!==l&&"break"===l)break}return this.state.top=!0,o}},{key:"inline",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return this.inlineQueue.push({src:e,tokens:t}),t}},{key:"inlineTokens",value:function(e){var t,n,r,i,a,o,u=this,l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],c=e;if(this.tokens.links){var s=Object.keys(this.tokens.links);if(s.length>0)for(;null!=(i=this.tokenizer.rules.inline.reflinkSearch.exec(c));)s.includes(i[0].slice(i[0].lastIndexOf("[")+1,-1))&&(c=c.slice(0,i.index)+"["+"a".repeat(i[0].length-2)+"]"+c.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(i=this.tokenizer.rules.inline.blockSkip.exec(c));)c=c.slice(0,i.index)+"["+"a".repeat(i[0].length-2)+"]"+c.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;null!=(i=this.tokenizer.rules.inline.anyPunctuation.exec(c));)c=c.slice(0,i.index)+"++"+c.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(var f=function(){if(a||(o=""),a=!1,u.options.extensions&&u.options.extensions.inline&&u.options.extensions.inline.some((function(n){return!!(t=n.call({lexer:u},e,l))&&(e=e.substring(t.raw.length),l.push(t),!0)})))return"continue";if(t=u.tokenizer.escape(e))return e=e.substring(t.raw.length),l.push(t),"continue";if(t=u.tokenizer.tag(e))return e=e.substring(t.raw.length),(n=l[l.length-1])&&"text"===t.type&&"text"===n.type?(n.raw+=t.raw,n.text+=t.text):l.push(t),"continue";if(t=u.tokenizer.link(e))return e=e.substring(t.raw.length),l.push(t),"continue";if(t=u.tokenizer.reflink(e,u.tokens.links))return e=e.substring(t.raw.length),(n=l[l.length-1])&&"text"===t.type&&"text"===n.type?(n.raw+=t.raw,n.text+=t.text):l.push(t),"continue";if(t=u.tokenizer.emStrong(e,c,o))return e=e.substring(t.raw.length),l.push(t),"continue";if(t=u.tokenizer.codespan(e))return e=e.substring(t.raw.length),l.push(t),"continue";if(t=u.tokenizer.br(e))return e=e.substring(t.raw.length),l.push(t),"continue";if(t=u.tokenizer.del(e))return e=e.substring(t.raw.length),l.push(t),"continue";if(t=u.tokenizer.autolink(e,jf))return e=e.substring(t.raw.length),l.push(t),"continue";if(!u.state.inLink&&(t=u.tokenizer.url(e,jf)))return e=e.substring(t.raw.length),l.push(t),"continue";if(r=e,u.options.extensions&&u.options.extensions.startInline){var i,s=1/0,f=e.slice(1);u.options.extensions.startInline.forEach((function(e){"number"===typeof(i=e.call({lexer:this},f))&&i>=0&&(s=Math.min(s,i))})),s<1/0&&s>=0&&(r=e.substring(0,s+1))}if(t=u.tokenizer.inlineText(r,zf))return e=e.substring(t.raw.length),"_"!==t.raw.slice(-1)&&(o=t.raw.slice(-1)),a=!0,(n=l[l.length-1])&&"text"===n.type?(n.raw+=t.raw,n.text+=t.text):l.push(t),"continue";if(e){var d="Infinite loop on byte: "+e.charCodeAt(0);if(u.options.silent)return console.error(d),"break";throw new Error(d)}};e;){var d=f();if("continue"!==d&&"break"===d)break}return l}}],[{key:"rules",get:function(){return{block:Rf,inline:Bf}}},{key:"lex",value:function(t,n){return new e(n).lex(t)}},{key:"lexInline",value:function(t,n){return new e(n).inlineTokens(t)}}]),e}(),$f=function(){function e(t){b(this,e),this.options=t||df}return x(e,[{key:"code",value:function(e,t,n){var r=(t||"").match(/\S*/)[0];if(this.options.highlight){var i=this.options.highlight(e,r);null!=i&&i!==e&&(n=!0,e=i)}return e=e.replace(/\n$/,"")+"\n",r?'
    '+(n?e:bf(e,!0))+"
    \n":"
    "+(n?e:bf(e,!0))+"
    \n"}},{key:"blockquote",value:function(e){return"
    \n".concat(e,"
    \n")}},{key:"html",value:function(e,t){return e}},{key:"heading",value:function(e,t,n,r){if(this.options.headerIds){var i=this.options.headerPrefix+r.slug(n);return"').concat(e,"\n")}return"").concat(e,"\n")}},{key:"hr",value:function(){return this.options.xhtml?"
    \n":"
    \n"}},{key:"list",value:function(e,t,n){var r=t?"ol":"ul";return"<"+r+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+"\n"}},{key:"listitem",value:function(e){return"
  • ".concat(e,"
  • \n")}},{key:"checkbox",value:function(e){return" "}},{key:"paragraph",value:function(e){return"

    ".concat(e,"

    \n")}},{key:"table",value:function(e,t){return t&&(t="".concat(t,"")),"\n\n"+e+"\n"+t+"
    \n"}},{key:"tablerow",value:function(e){return"\n".concat(e,"\n")}},{key:"tablecell",value:function(e,t){var n=t.header?"th":"td";return(t.align?"<".concat(n,' align="').concat(t.align,'">'):"<".concat(n,">"))+e+"\n")}},{key:"strong",value:function(e){return"".concat(e,"")}},{key:"em",value:function(e){return"".concat(e,"")}},{key:"codespan",value:function(e){return"".concat(e,"")}},{key:"br",value:function(){return this.options.xhtml?"
    ":"
    "}},{key:"del",value:function(e){return"".concat(e,"")}},{key:"link",value:function(e,t,n){if(null===(e=Ef(this.options.sanitize,this.options.baseUrl,e)))return n;var r='
    "}},{key:"image",value:function(e,t,n){if(null===(e=Ef(this.options.sanitize,this.options.baseUrl,e)))return n;var r='').concat(n,'":">"}},{key:"text",value:function(e){return e}}]),e}(),Yf=function(){function e(){b(this,e)}return x(e,[{key:"strong",value:function(e){return e}},{key:"em",value:function(e){return e}},{key:"codespan",value:function(e){return e}},{key:"del",value:function(e){return e}},{key:"html",value:function(e){return e}},{key:"text",value:function(e){return e}},{key:"link",value:function(e,t,n){return""+n}},{key:"image",value:function(e,t,n){return""+n}},{key:"br",value:function(){return""}}]),e}(),Uf=function(){function e(){b(this,e),this.seen={}}return x(e,[{key:"serialize",value:function(e){return e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")}},{key:"getNextSafeSlug",value:function(e,t){var n=e,r=0;if(this.seen.hasOwnProperty(n)){r=this.seen[e];do{n=e+"-"+ ++r}while(this.seen.hasOwnProperty(n))}return t||(this.seen[e]=r,this.seen[n]=0),n}},{key:"slug",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.serialize(e);return this.getNextSafeSlug(n,t.dryrun)}}]),e}(),Vf=function(){function e(t){b(this,e),this.options=t||df,this.options.renderer=this.options.renderer||new $f,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new Yf,this.slugger=new Uf}return x(e,[{key:"parse",value:function(e){var t,n,r,i,a,o,u,l,c,s,f,d,h,m,p,v,g,y,_,b=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],w="",D=e.length;for(t=0;t0&&"paragraph"===p.tokens[0].type?(p.tokens[0].text=y+" "+p.tokens[0].text,p.tokens[0].tokens&&p.tokens[0].tokens.length>0&&"text"===p.tokens[0].tokens[0].type&&(p.tokens[0].tokens[0].text=y+" "+p.tokens[0].tokens[0].text)):p.tokens.unshift({type:"text",text:y}):m+=y),m+=this.parse(p.tokens,h),c+=this.renderer.listitem(m,g,v);w+=this.renderer.list(c,f,d);continue;case"html":w+=this.renderer.html(s.text,s.block);continue;case"paragraph":w+=this.renderer.paragraph(this.parseInline(s.tokens));continue;case"text":for(c=s.tokens?this.parseInline(s.tokens):s.text;t+1";return t?Promise.resolve(i):n?void n(null,i):i}if(t)return Promise.reject(r);if(!n)throw r;n(r)}}var Jf=new Zf(df);function Xf(e,t,n){return Jf.parse(e,t,n)}Xf.options=Xf.setOptions=function(e){return Jf.setOptions(e),Xf.defaults=Jf.defaults,hf(Xf.defaults),Xf},Xf.getDefaults=ff,Xf.defaults=df,Xf.use=function(){return Jf.use.apply(Jf,arguments),Xf.defaults=Jf.defaults,hf(Xf.defaults),Xf},Xf.walkTokens=function(e,t){return Jf.walkTokens(e,t)},Xf.parseInline=Jf.parseInline,Xf.Parser=Vf,Xf.parser=Vf.parse,Xf.Renderer=$f,Xf.TextRenderer=Yf,Xf.Lexer=Hf,Xf.lexer=Hf.lex,Xf.Tokenizer=Lf,Xf.Slugger=Uf,Xf.Hooks=qf,Xf.parse=Xf;Xf.options,Xf.setOptions,Xf.use,Xf.walkTokens,Xf.parseInline,Vf.parse,Hf.lex;var ed=function(e){var t=e.title,n=e.description,i=e.unit,a=e.expr,o=e.showLegend,u=e.filename,l=e.alias,c=ri().isMobile,s=On().period,f=Xr().customStep,d=Pn(),h=(0,r.useRef)(null),m=v((0,r.useState)(!1),2),p=m[0],g=m[1],y=v((0,r.useState)({limits:{enable:!1,range:{1:[0,0]}}}),2),_=y[0],b=y[1],w=(0,r.useMemo)((function(){return Array.isArray(a)&&a.every((function(e){return e}))}),[a]),D=zs({predefinedQuery:w?a:[],display:"chart",visible:p,customStep:f}),k=D.isLoading,x=D.graphData,C=D.error,S=D.warning,E=function(e){var t=st({},_);t.limits.range=e,b(t)};return(0,r.useEffect)((function(){var e=new IntersectionObserver((function(e){e.forEach((function(e){return g(e.isIntersecting)}))}),{threshold:.1});return h.current&&e.observe(h.current),function(){h.current&&e.unobserve(h.current)}}),[h]),w?Yt("div",{className:"vm-predefined-panel",ref:h,children:[Yt("div",{className:"vm-predefined-panel-header",children:[Yt(Di,{title:Yt((function(){return Yt("div",{className:"vm-predefined-panel-header__description vm-default-styles",children:[n&&Yt(Ht.HY,{children:[Yt("div",{children:[Yt("span",{children:"Description:"}),Yt("div",{dangerouslySetInnerHTML:{__html:Xf.parse(n)}})]}),Yt("hr",{})]}),Yt("div",{children:[Yt("span",{children:"Queries:"}),Yt("div",{children:a.map((function(e,t){return Yt("div",{children:e},"".concat(t,"_").concat(e))}))})]})]})}),{}),children:Yt("div",{className:"vm-predefined-panel-header__info",children:Yt(Qn,{})})}),Yt("h3",{className:"vm-predefined-panel-header__title",children:t||""}),Yt(Ys,{yaxis:_,setYaxisLimits:E,toggleEnableLimits:function(){var e=st({},_);e.limits.enable=!e.limits.enable,b(e)}})]}),Yt("div",{className:"vm-predefined-panel-body",children:[k&&Yt(Us,{}),C&&Yt(ai,{variant:"error",children:C}),S&&Yt(ai,{variant:"warning",children:S}),x&&Yt(ys,{data:x,period:s,customStep:f,query:a,yaxis:_,unit:i,alias:l,showLegend:o,setYaxisLimits:E,setPeriod:function(e){var t=e.from,n=e.to;d({type:"SET_PERIOD",payload:{from:t,to:n}})},fullWidth:!1,height:c?.5*window.innerHeight:500})]})]}):Yt(ai,{variant:"error",children:[Yt("code",{children:'"expr"'})," not found. Check the configuration file ",Yt("b",{children:u}),"."]})},td=function(e){var t=e.index,n=e.title,i=e.panels,a=e.filename,o=Br(),u=(0,r.useMemo)((function(){return o.width/12}),[o]),l=v((0,r.useState)(!t),2),c=l[0],s=l[1],f=v((0,r.useState)([]),2),d=f[0],h=f[1];(0,r.useEffect)((function(){h(i&&i.map((function(e){return e.width||12})))}),[i]);var m=v((0,r.useState)({start:0,target:0,enable:!1}),2),p=m[0],g=m[1],y=(0,r.useCallback)((function(e){if(p.enable){var t=p.start,n=Math.ceil((t-e.clientX)/u);if(!(Math.abs(n)>=12)){var r=d.map((function(e,t){return e-(t===p.target?n:0)}));h(r)}}}),[p,u]),_=(0,r.useCallback)((function(){g(st(st({},p),{},{enable:!1}))}),[p]),b=function(e){return function(t){!function(e,t){g({start:e.clientX,target:t,enable:!0})}(t,e)}};return Rr("mousemove",y),Rr("mouseup",_),Yt("div",{className:"vm-predefined-dashboard",children:Yt(wa,{defaultExpanded:c,onChange:function(e){return s(e)},title:Yt((function(){return Yt("div",{className:Fr()({"vm-predefined-dashboard-header":!0,"vm-predefined-dashboard-header_open":c}),children:[(n||a)&&Yt("span",{className:"vm-predefined-dashboard-header__title",children:n||"".concat(t+1,". ").concat(a)}),i&&Yt("span",{className:"vm-predefined-dashboard-header__count",children:["(",i.length," panels)"]})]})}),{}),children:Yt("div",{className:"vm-predefined-dashboard-panels",children:Array.isArray(i)&&i.length?i.map((function(e,t){return Yt("div",{className:"vm-predefined-dashboard-panels-panel vm-block vm-block_empty-padding",style:{gridColumn:"span ".concat(d[t])},children:[Yt(ed,{title:e.title,description:e.description,unit:e.unit,expr:e.expr,alias:e.alias,filename:a,showLegend:e.showLegend}),Yt("button",{className:"vm-predefined-dashboard-panels-panel__resizer",onMouseDown:b(t),"aria-label":"resize the panel"})]},t)})):Yt("div",{className:"vm-predefined-dashboard-panels-panel__alert",children:Yt(ai,{variant:"error",children:[Yt("code",{children:'"panels"'})," not found. Check the configuration file ",Yt("b",{children:a}),"."]})})})})})},nd=function(){!function(){var e=On(),t=e.duration,n=e.relativeTime,i=e.period.date,a=Xr().customStep,o=ha().setSearchParamsFromKeys,u=function(){var e,r=Js((lt(e={},"g0.range_input",t),lt(e,"g0.end_input",i),lt(e,"g0.step_input",a),lt(e,"g0.relative_time",n),e));o(r)};(0,r.useEffect)(u,[t,n,i,a]),(0,r.useEffect)(u,[])}();var e=ri().isMobile,t=si(),n=t.dashboardsSettings,i=t.dashboardsLoading,a=t.dashboardsError,o=v((0,r.useState)(0),2),u=o[0],l=o[1],c=(0,r.useMemo)((function(){return n.map((function(e,t){return{label:e.title||"",value:t}}))}),[n]),s=(0,r.useMemo)((function(){return n[u]||{}}),[n,u]),f=(0,r.useMemo)((function(){return null===s||void 0===s?void 0:s.rows}),[s]),d=(0,r.useMemo)((function(){return s.title||s.filename||""}),[s]),h=(0,r.useMemo)((function(){return Array.isArray(f)&&!!f.length}),[f]),m=function(e){return function(){!function(e){l(e)}(e)}};return Yt("div",{className:"vm-predefined-panels",children:[i&&Yt(Us,{}),!n.length&&a&&Yt(ai,{variant:"error",children:a}),!n.length&&Yt(ai,{variant:"info",children:"Dashboards not found"}),c.length>1&&Yt("div",{className:Fr()({"vm-predefined-panels-tabs":!0,"vm-predefined-panels-tabs_mobile":e}),children:c.map((function(e){return Yt("div",{className:Fr()({"vm-predefined-panels-tabs__tab":!0,"vm-predefined-panels-tabs__tab_active":e.value==u}),onClick:m(e.value),children:e.label},e.value)}))}),Yt("div",{className:"vm-predefined-panels__dashboards",children:[h&&f.map((function(e,t){return Yt(td,{index:t,filename:d,title:e.title,panels:e.panels},"".concat(u,"_").concat(t))})),!!n.length&&!h&&Yt(ai,{variant:"error",children:[Yt("code",{children:'"rows"'})," not found. Check the configuration file ",Yt("b",{children:d}),"."]})]})]})},rd=function(e,t){var n=t.match?"&match[]="+encodeURIComponent(t.match):"",r=t.focusLabel?"&focusLabel="+encodeURIComponent(t.focusLabel):"";return"".concat(e,"/api/v1/status/tsdb?topN=").concat(t.topN,"&date=").concat(t.date).concat(n).concat(r)},id=function(){function e(){b(this,e),this.tsdbStatus=void 0,this.tabsNames=void 0,this.isPrometheus=void 0,this.tsdbStatus=this.defaultTSDBStatus,this.tabsNames=["table","graph"],this.isPrometheus=!1,this.getDefaultState=this.getDefaultState.bind(this)}return x(e,[{key:"tsdbStatusData",get:function(){return this.tsdbStatus},set:function(e){this.isPrometheus=!(null===e||void 0===e||!e.headStats),this.tsdbStatus=e}},{key:"defaultTSDBStatus",get:function(){return{totalSeries:0,totalSeriesPrev:0,totalSeriesByAll:0,totalLabelValuePairs:0,seriesCountByMetricName:[],seriesCountByLabelName:[],seriesCountByFocusLabelValue:[],seriesCountByLabelValuePair:[],labelValueCountByLabelName:[]}}},{key:"isPrometheusData",get:function(){return this.isPrometheus}},{key:"keys",value:function(e,t){var n=e&&/__name__=".+"/.test(e),r=e&&/{.+=".+"}/g.test(e),i=e&&/__name__=".+", .+!=""/g.test(e),a=[];return a=t||i?a.concat("seriesCountByFocusLabelValue"):n?a.concat("labelValueCountByLabelName"):r?a.concat("seriesCountByMetricName","seriesCountByLabelName"):a.concat("seriesCountByMetricName","seriesCountByLabelName","seriesCountByLabelValuePair","labelValueCountByLabelName"),a}},{key:"getDefaultState",value:function(e,t){var n=this;return this.keys(e,t).reduce((function(e,t){return st(st({},e),{},{tabs:st(st({},e.tabs),{},lt({},t,n.tabsNames)),containerRefs:st(st({},e.containerRefs),{},lt({},t,(0,r.useRef)(null)))})}),{tabs:{},containerRefs:{}})}},{key:"sectionsTitles",value:function(e){return{seriesCountByMetricName:"Metric names with the highest number of series",seriesCountByLabelName:"Labels with the highest number of series",seriesCountByFocusLabelValue:'Values for "'.concat(e,'" label with the highest number of series'),seriesCountByLabelValuePair:"Label=value pairs with the highest number of series",labelValueCountByLabelName:"Labels with the highest number of unique values"}}},{key:"sectionsTips",get:function(){return{seriesCountByMetricName:"\n

    \n This table returns a list of metrics with the highest cardinality.\n The cardinality of a metric is the number of time series associated with that metric,\n where each time series is defined as a unique combination of key-value label pairs.\n

    \n

    \n When looking to reduce the number of active series in your data source,\n you can start by inspecting individual metrics with high cardinality\n (i.e. that have lots of active time series associated with them),\n since that single metric contributes a large fraction of the series that make up your total series count.\n

    ",seriesCountByLabelName:"\n

    \n This table returns a list of the labels with the highest number of series.\n

    \n

    \n Use this table to identify labels that are storing dimensions with high cardinality\n (many different label values).\n

    \n

    \n It is recommended to choose labels such that they have a finite set of values,\n since every unique combination of key-value label pairs creates a new time series\n and therefore can dramatically increase the number of time series in your system.\n

    ",seriesCountByFocusLabelValue:"\n

    \n This table returns a list of unique label values per selected label.\n

    \n

    \n Use this table to identify label values that are storing per each selected series.\n

    ",labelValueCountByLabelName:"\n

    \n This table returns a list of labels with the highest number of the unique values.\n

    \n ",seriesCountByLabelValuePair:"\n

    \n This table returns a list of the label values pairs with the highest number of series.\n

    \n

    \n Use this table to identify unique label values pairs. This helps to identify same labels \n is applied to count timeseries in your system, since every unique combination of key-value label pairs \n creates a new time series and therefore can dramatically increase the number of time series in your system\n

    "}}},{key:"tablesHeaders",get:function(){return{seriesCountByMetricName:ad,seriesCountByLabelName:od,seriesCountByFocusLabelValue:ud,seriesCountByLabelValuePair:ld,labelValueCountByLabelName:cd}}},{key:"totalSeries",value:function(e){return"labelValueCountByLabelName"===e?-1:arguments.length>1&&void 0!==arguments[1]&&arguments[1]?this.tsdbStatus.totalSeriesPrev:this.tsdbStatus.totalSeries}}]),e}(),ad=[{id:"name",label:"Metric name"},{id:"value",label:"Number of series"},{id:"percentage",label:"Share in total",info:"Shows the share of a metric to the total number of series"},{id:"action",label:""}],od=[{id:"name",label:"Label name"},{id:"value",label:"Number of series"},{id:"percentage",label:"Share in total",info:"Shows the share of the label to the total number of series"},{id:"action",label:""}],ud=[{id:"name",label:"Label value"},{id:"value",label:"Number of series"},{id:"percentage",label:"Share in total"},{disablePadding:!1,id:"action",label:"",numeric:!1}],ld=[{id:"name",label:"Label=value pair"},{id:"value",label:"Number of series"},{id:"percentage",label:"Share in total",info:"Shows the share of the label value pair to the total number of series"},{id:"action",label:""}],cd=[{id:"name",label:"Label name"},{id:"value",label:"Number of unique values"},{id:"action",label:""}],sd={seriesCountByMetricName:function(e){var t=e.query;return fd("__name__",t)},seriesCountByLabelName:function(e){var t=e.query;return"{".concat(t,'!=""}')},seriesCountByFocusLabelValue:function(e){var t=e.query,n=e.focusLabel;return fd(n,t)},seriesCountByLabelValuePair:function(e){var t=e.query.split("="),n=t[0],r=t.slice(1).join("=");return fd(n,r)},labelValueCountByLabelName:function(e){var t=e.query,n=e.match;return""===n?"{".concat(t,'!=""}'):"".concat(n.replace("}",""),", ").concat(t,'!=""}')}},fd=function(e,t){return e?"{"+e+"="+JSON.stringify(t)+"}":""},dd=function(e){var t,n=e.totalSeries,r=void 0===n?0:n,i=e.totalSeriesPrev,a=void 0===i?0:i,o=e.totalSeriesAll,u=void 0===o?0:o,l=e.seriesCountByMetricName,c=void 0===l?[]:l,s=e.isPrometheus,f=ri().isMobile,d=v(ot(),1)[0],h=d.get("match"),m=d.get("focusLabel"),p=/__name__/.test(h||""),g=(null===(t=c[0])||void 0===t?void 0:t.value)/u*100,y=r-a,_=Math.abs(y)/a*100,b=[{title:"Total series",value:r.toLocaleString("en-US"),dynamic:r&&a&&!s?"".concat(_.toFixed(2),"%"):"",display:!m,info:'The total number of active time series. \n A time series is uniquely identified by its name plus a set of its labels. \n For example, temperature{city="NY",country="US"} and temperature{city="SF",country="US"} \n are two distinct series, since they differ by the city label.'},{title:"Percentage from total",value:isNaN(g)?"-":"".concat(g.toFixed(2),"%"),display:p,info:"The share of these series in the total number of time series."}].filter((function(e){return e.display}));return b.length?Yt("div",{className:Fr()({"vm-cardinality-totals":!0,"vm-cardinality-totals_mobile":f}),children:b.map((function(e){var t=e.title,n=e.value,r=e.info,i=e.dynamic;return Yt("div",{className:"vm-cardinality-totals-card",children:[Yt("h4",{className:"vm-cardinality-totals-card__title",children:[t,r&&Yt(Di,{title:Yt("p",{className:"vm-cardinality-totals-card__tooltip",children:r}),children:Yt("div",{className:"vm-cardinality-totals-card__info-icon",children:Yt(Qn,{})})})]}),Yt("span",{className:"vm-cardinality-totals-card__value",children:n}),!!i&&Yt(Di,{title:"in relation to the previous day: ".concat(a.toLocaleString("en-US")),children:Yt("span",{className:Fr()({"vm-dynamic-number":!0,"vm-dynamic-number_positive vm-dynamic-number_down":y<0,"vm-dynamic-number_negative vm-dynamic-number_up":y>0}),children:i})})]},t)}))}):null},hd=function(e,t){var n=v(ot(),1)[0],i=n.get(t)?n.get(t):e,a=v((0,r.useState)(i),2),o=a[0],u=a[1];return(0,r.useEffect)((function(){i!==o&&u(i)}),[i]),[o,u]},md=["isPrometheus","isCluster"],pd=function(e){var t=e.isPrometheus,n=e.isCluster,i=Tr(e,md),a=ri().isMobile,o=v(ot(),1)[0],u=ha().setSearchParamsFromKeys,l=o.get("tips")||"",c=v(hd("","match"),2),s=c[0],f=c[1],d=v(hd("","focusLabel"),2),h=d[0],m=d[1],p=v(hd(10,"topN"),2),g=p[0],y=p[1],_=(0,r.useMemo)((function(){return g<0?"Number must be bigger than zero":""}),[g]),b=function(){u({match:s,topN:g,focusLabel:h})};return(0,r.useEffect)((function(){var e=o.get("match"),t=+(o.get("topN")||10),n=o.get("focusLabel");e!==s&&f(e||""),t!==g&&y(t),n!==h&&m(n||"")}),[o]),Yt("div",{className:Fr()({"vm-cardinality-configurator":!0,"vm-cardinality-configurator_mobile":a,"vm-block":!0,"vm-block_mobile":a}),children:[Yt("div",{className:"vm-cardinality-configurator-controls",children:[Yt("div",{className:"vm-cardinality-configurator-controls__query",children:Yt(qi,{label:"Time series selector",type:"string",value:s,onChange:f,onEnter:b})}),Yt("div",{className:"vm-cardinality-configurator-controls__item",children:Yt(qi,{label:"Focus label",type:"text",value:h||"",onChange:m,onEnter:b,endIcon:Yt(Di,{title:Yt("div",{children:Yt("p",{children:"To identify values with the highest number of series for the selected label."})}),children:Yt(Dr,{})})})}),Yt("div",{className:"vm-cardinality-configurator-controls__item vm-cardinality-configurator-controls__item_limit",children:Yt(qi,{label:"Limit entries",type:"number",value:t?10:g,error:_,disabled:t,helperText:t?"not available for Prometheus":"",onChange:function(e){var t=+e;y(isNaN(t)?0:t)},onEnter:b})})]}),Yt("div",{className:"vm-cardinality-configurator-bottom",children:[Yt(dd,st({isPrometheus:t,isCluster:n},i)),n&&Yt("div",{className:"vm-cardinality-configurator-bottom-helpful",children:Yt(rf,{href:"https://docs.victoriametrics.com/#cardinality-explorer-statistic-inaccurancy",withIcon:!0,children:[Yt(br,{}),"Statistic inaccuracy explanation"]})}),Yt("div",{className:"vm-cardinality-configurator-bottom-helpful",children:Yt(rf,{href:"https://docs.victoriametrics.com/#cardinality-explorer",withIcon:!0,children:[Yt(br,{}),"Documentation"]})}),Yt("div",{className:"vm-cardinality-configurator-bottom__execute",children:[Yt(Di,{title:l?"Hide tips":"Show tips",children:Yt(mi,{variant:"text",color:l?"warning":"gray",startIcon:Yt(Sr,{}),onClick:function(){var e=o.get("tips")||"";u({tips:e?"":"true"})},ariaLabel:"visibility tips"})}),Yt(mi,{variant:"text",startIcon:Yt(Wn,{}),onClick:function(){u({match:"",focusLabel:""})},children:"Reset"}),Yt(mi,{startIcon:Yt(ar,{}),onClick:b,children:"Execute Query"})]})]})]})};function vd(e){var t=e.order,n=e.orderBy,r=e.onRequestSort,i=e.headerCells;return Yt("thead",{className:"vm-table-header vm-cardinality-panel-table__header",children:Yt("tr",{className:"vm-table__row vm-table__row_header",children:i.map((function(e){return Yt("th",{className:Fr()({"vm-table-cell vm-table-cell_header":!0,"vm-table-cell_sort":"action"!==e.id&&"percentage"!==e.id,"vm-table-cell_right":"action"===e.id}),onClick:(i=e.id,function(e){r(e,i)}),children:Yt("div",{className:"vm-table-cell__content",children:[e.info?Yt(Di,{title:e.info,children:[Yt("div",{className:"vm-metrics-content-header__tip-icon",children:Yt(Qn,{})}),e.label]}):Yt(Ht.HY,{children:e.label}),"action"!==e.id&&"percentage"!==e.id&&Yt("div",{className:Fr()({"vm-table__sort-icon":!0,"vm-table__sort-icon_active":n===e.id,"vm-table__sort-icon_desc":"desc"===t&&n===e.id}),children:Yt(er,{})})]})},e.id);var i}))})})}function gd(e,t,n){return t[n]e[n]?1:0}function yd(e,t){return"desc"===e?function(e,n){return gd(e,n,t)}:function(e,n){return-gd(e,n,t)}}function _d(e,t){var n=e.map((function(e,t){return[e,t]}));return n.sort((function(e,n){var r=t(e[0],n[0]);return 0!==r?r:e[1]-n[1]})),n.map((function(e){return e[0]}))}var bd=function(e){var t=e.rows,n=e.headerCells,i=e.defaultSortColumn,a=e.tableCells,o=v((0,r.useState)("desc"),2),u=o[0],l=o[1],c=v((0,r.useState)(i),2),s=c[0],f=c[1],d=_d(t,yd(u,s));return Yt("table",{className:"vm-table vm-cardinality-panel-table",children:[Yt(vd,{order:u,orderBy:s,onRequestSort:function(e,t){l(s===t&&"asc"===u?"desc":"asc"),f(t)},rowCount:t.length,headerCells:n}),Yt("tbody",{className:"vm-table-header",children:d.map((function(e){return Yt("tr",{className:"vm-table__row",children:a(e)},e.name)}))})]})},wd=function(e){var t=e.row,n=e.totalSeries,r=e.totalSeriesPrev,i=e.onActionClick,a=n>0?t.value/n*100:-1,o=r>0?t.valuePrev/r*100:-1,u=[a,o].some((function(e){return-1===e})),l=a-o,c=u?"":"".concat(l.toFixed(2),"%"),s=function(){i(t.name)};return Yt(Ht.HY,{children:[Yt("td",{className:"vm-table-cell",children:Yt("span",{className:"vm-link vm-link_colored",onClick:s,children:t.name})},t.name),Yt("td",{className:"vm-table-cell",children:[t.value,!!t.diff&&Yt(Di,{title:"in relation to the previous day: ".concat(t.valuePrev),children:Yt("span",{className:Fr()({"vm-dynamic-number":!0,"vm-dynamic-number_positive":t.diff<0,"vm-dynamic-number_negative":t.diff>0}),children:["\xa0",t.diff>0?"+":"",t.diff]})})]},t.value),a>0&&Yt("td",{className:"vm-table-cell",children:Yt("div",{className:"vm-cardinality-panel-table__progress",children:[Yt(Vs,{value:a}),c&&Yt(Di,{title:"in relation to the previous day",children:Yt("span",{className:Fr()({"vm-dynamic-number":!0,"vm-dynamic-number_positive vm-dynamic-number_down":l<0,"vm-dynamic-number_negative vm-dynamic-number_up":l>0}),children:c})})]})},t.progressValue),Yt("td",{className:"vm-table-cell vm-table-cell_right",children:Yt("div",{className:"vm-table-cell__content",children:Yt(Di,{title:"Filter by ".concat(t.name),children:Yt(mi,{variant:"text",size:"small",onClick:s,children:Yt(or,{})})})})},"action")]})},Dd=function(e){var t=e.data,n=v((0,r.useState)([]),2),i=n[0],a=n[1],o=v((0,r.useState)([0,0]),2),u=o[0],l=o[1];return(0,r.useEffect)((function(){var e=t.sort((function(e,t){return t.value-e.value})),n=function(e){var t=e.map((function(e){return e.value})),n=Math.ceil(t[0]||1),r=n/9;return new Array(11).fill(n+r).map((function(e,t){return Math.round(e-r*t)}))}(e);l(n),a(e.map((function(e){return st(st({},e),{},{percentage:e.value/n[0]*100})})))}),[t]),Yt("div",{className:"vm-simple-bar-chart",children:[Yt("div",{className:"vm-simple-bar-chart-y-axis",children:u.map((function(e){return Yt("div",{className:"vm-simple-bar-chart-y-axis__tick",children:e},e)}))}),Yt("div",{className:"vm-simple-bar-chart-data",children:i.map((function(e){var t=e.name,n=e.value,r=e.percentage;return Yt(Di,{title:"".concat(t,": ").concat(n),placement:"top-center",children:Yt("div",{className:"vm-simple-bar-chart-data-item",style:{maxHeight:"".concat(r||0,"%")}})},"".concat(t,"_").concat(n))}))})]})},kd=function(e){var t=e.rows,n=e.tabs,i=void 0===n?[]:n,a=e.chartContainer,o=e.totalSeries,u=e.totalSeriesPrev,l=e.onActionClick,c=e.sectionTitle,s=e.tip,f=e.tableHeaderCells,d=e.isPrometheus,h=ri().isMobile,m=v((0,r.useState)("table"),2),p=m[0],g=m[1],y=d&&!t.length,_=(0,r.useMemo)((function(){return i.map((function(e,t){return{value:e,label:e,icon:Yt(0===t?lr:ur,{})}}))}),[i]);return Yt("div",{className:Fr()({"vm-metrics-content":!0,"vm-metrics-content_mobile":h,"vm-block":!0,"vm-block_mobile":h}),children:[Yt("div",{className:"vm-metrics-content-header vm-section-header",children:[Yt("h5",{className:Fr()({"vm-metrics-content-header__title":!0,"vm-section-header__title":!0,"vm-section-header__title_mobile":h}),children:[!h&&s&&Yt(Di,{title:Yt("p",{dangerouslySetInnerHTML:{__html:s},className:"vm-metrics-content-header__tip"}),children:Yt("div",{className:"vm-metrics-content-header__tip-icon",children:Yt(Qn,{})})}),c]}),Yt("div",{className:"vm-section-header__tabs",children:Yt(zr,{activeItem:p,items:_,onChange:g})})]}),y&&Yt("div",{className:"vm-metrics-content-prom-data",children:[Yt("div",{className:"vm-metrics-content-prom-data__icon",children:Yt(Qn,{})}),Yt("h3",{className:"vm-metrics-content-prom-data__title",children:"Prometheus Data Limitation"}),Yt("p",{className:"vm-metrics-content-prom-data__text",children:["Due to missing data from your Prometheus source, some tables may appear empty.",Yt("br",{}),"This does not indicate an issue with your system or our tool."]})]}),!y&&"table"===p&&Yt("div",{ref:a,className:Fr()({"vm-metrics-content__table":!0,"vm-metrics-content__table_mobile":h}),children:Yt(bd,{rows:t,headerCells:f,defaultSortColumn:"value",tableCells:function(e){return Yt(wd,{row:e,totalSeries:o,totalSeriesPrev:u,onActionClick:l})}})}),!y&&"graph"===p&&Yt("div",{className:"vm-metrics-content__chart",children:Yt(Dd,{data:t.map((function(e){return{name:e.name,value:e.value}}))})})]})},xd=function(e){var t=e.title,n=e.children;return Yt("div",{className:"vm-cardinality-tip",children:[Yt("div",{className:"vm-cardinality-tip-header",children:[Yt("div",{className:"vm-cardinality-tip-header__tip-icon",children:Yt(Sr,{})}),Yt("h4",{className:"vm-cardinality-tip-header__title",children:t||"Tips"})]}),Yt("p",{className:"vm-cardinality-tip__description",children:n})]})},Cd=function(){return Yt(xd,{title:"Metrics with a high number of series",children:Yt("ul",{children:[Yt("li",{children:["Identify and eliminate labels with frequently changed values to reduce their\xa0",Yt(rf,{href:"https://docs.victoriametrics.com/FAQ.html#what-is-high-cardinality",children:"cardinality"}),"\xa0and\xa0",Yt(rf,{href:"https://docs.victoriametrics.com/FAQ.html#what-is-high-churn-rate",children:"high churn rate"})]}),Yt("li",{children:["Find unused time series and\xa0",Yt(rf,{href:"https://docs.victoriametrics.com/relabeling.html",children:"drop entire metrics"})]}),Yt("li",{children:["Aggregate time series before they got ingested into the database via\xa0",Yt(rf,{href:"https://docs.victoriametrics.com/stream-aggregation.html",children:"streaming aggregation"})]})]})})},Sd=function(){return Yt(xd,{title:"Labels with a high number of unique values",children:Yt("ul",{children:[Yt("li",{children:"Decrease the number of unique label values to reduce cardinality"}),Yt("li",{children:["Drop the label entirely via\xa0",Yt(rf,{href:"https://docs.victoriametrics.com/relabeling.html",children:"relabeling"})]}),Yt("li",{children:"For volatile label values (such as URL path, user session, etc.) consider printing them to the log file instead of adding to time series"})]})})},Ed=function(){return Yt(xd,{title:"Dashboard of a single metric",children:[Yt("p",{children:"This dashboard helps to understand the cardinality of a single metric."}),Yt("p",{children:"Each time series is a unique combination of key-value label pairs. Therefore a label key with many values can create a lot of time series for a particular metric. If you\u2019re trying to decrease the cardinality of a metric, start by looking at the labels with the highest number of values."}),Yt("p",{children:"Use the series selector at the top of the page to apply additional filters."})]})},Ad=function(){return Yt(xd,{title:"Dashboard of a label",children:[Yt("p",{children:"This dashboard helps you understand the count of time series per label."}),Yt("p",{children:"Use the selector at the top of the page to pick a label name you\u2019d like to inspect. For the selected label name, you\u2019ll see the label values that have the highest number of series associated with them. So if you\u2019ve chosen `instance` as your label name, you may see that `657` time series have value \u201chost-1\u201d attached to them and `580` time series have value `host-2` attached to them."}),Yt("p",{children:"This can be helpful in allowing you to determine where the bulk of your time series are coming from. If the label \u201cinstance=host-1\u201d was applied to 657 series and the label \u201cinstance=host-2\u201d was only applied to 580 series, you\u2019d know, for example, that host-01 was responsible for sending the majority of the time series."})]})},Nd=function(){var e=ri().isMobile,t=v(ot(),1)[0],n=ha().setSearchParamsFromKeys,i=t.get("tips")||"",o=t.get("match")||"",u=t.get("focusLabel")||"",l=function(){var e=new id,t=v(ot(),1)[0],n=t.get("match"),i=t.get("focusLabel"),o=+(t.get("topN")||10),u=t.get("date")||a()().tz().format(Qt),l=Vt().serverUrl,c=v((0,r.useState)(!1),2),s=c[0],f=c[1],d=v((0,r.useState)(),2),h=d[0],m=d[1],p=v((0,r.useState)(e.defaultTSDBStatus),2),g=p[0],y=p[1],_=v((0,r.useState)(!1),2),b=_[0],w=_[1],D=function(){var e=Bi(Li().mark((function e(t){var n;return Li().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch(t);case 2:if(!(n=e.sent).ok){e.next=7;break}return e.next=6,n.json();case 6:return e.abrupt("return",e.sent);case 7:throw new Error("Request failed with status ".concat(n.status));case 8:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),k=function(e,t){Object.keys(e).forEach((function(n){var r=n,i=e[r],a=t[r];Array.isArray(i)&&Array.isArray(a)&&i.forEach((function(e){var t,n=null===(t=a.find((function(t){return t.name===e.name})))||void 0===t?void 0:t.value;e.diff=n?e.value-n:0,e.valuePrev=n||0}))}))},x=function(){var t=Bi(Li().mark((function t(r){var i,o,u,c,s,d,h,p,g,_,b,w,x,C,S,E,A,N,M,F,T,O;return Li().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(l){t.next=2;break}return t.abrupt("return");case 2:return m(""),f(!0),y(e.defaultTSDBStatus),i=st(st({},r),{},{date:r.date,topN:0,match:"",focusLabel:""}),o=st(st({},r),{},{date:a()(r.date).subtract(1,"day").tz().format(Qt)}),u=[rd(l,r),rd(l,o),rd(l,i)],t.prev=8,t.next=11,Promise.all(u.map(D));case 11:C=t.sent,S=v(C,3),E=S[0],A=S[1],N=S[2],M=st({},A.data),F=N.data,T=st(st({},E.data),{},{totalSeries:(null===(c=E.data)||void 0===c?void 0:c.totalSeries)||(null===(s=E.data)||void 0===s||null===(d=s.headStats)||void 0===d?void 0:d.numSeries)||0,totalLabelValuePairs:(null===(h=E.data)||void 0===h?void 0:h.totalLabelValuePairs)||(null===(p=E.data)||void 0===p||null===(g=p.headStats)||void 0===g?void 0:g.numLabelValuePairs)||0,seriesCountByLabelName:(null===(_=E.data)||void 0===_?void 0:_.seriesCountByLabelName)||[],seriesCountByFocusLabelValue:(null===(b=E.data)||void 0===b?void 0:b.seriesCountByFocusLabelValue)||[],totalSeriesByAll:(null===F||void 0===F?void 0:F.totalSeries)||(null===F||void 0===F||null===(w=F.headStats)||void 0===w?void 0:w.numSeries)||0,totalSeriesPrev:(null===M||void 0===M?void 0:M.totalSeries)||(null===M||void 0===M||null===(x=M.headStats)||void 0===x?void 0:x.numSeries)||0}),O=null===n||void 0===n?void 0:n.replace(/[{}"]/g,""),T.seriesCountByLabelValuePair=T.seriesCountByLabelValuePair.filter((function(e){return e.name!==O})),k(T,M),y(T),f(!1),t.next=30;break;case 26:t.prev=26,t.t0=t.catch(8),f(!1),t.t0 instanceof Error&&m("".concat(t.t0.name,": ").concat(t.t0.message));case 30:case"end":return t.stop()}}),t,null,[[8,26]])})));return function(e){return t.apply(this,arguments)}}();return(0,r.useEffect)((function(){x({topN:o,match:n,date:u,focusLabel:i})}),[l,n,i,o,u]),(0,r.useEffect)((function(){h&&(y(e.defaultTSDBStatus),f(!1))}),[h]),(0,r.useEffect)((function(){var e=bt(l);w(!!e)}),[l]),e.tsdbStatusData=g,{isLoading:s,appConfigurator:e,error:h,isCluster:b}}(),c=l.isLoading,s=l.appConfigurator,f=l.error,d=l.isCluster,h=s.tsdbStatusData,m=s.getDefaultState,p=s.tablesHeaders,g=s.sectionsTips,y=m(o,u);return Yt("div",{className:Fr()({"vm-cardinality-panel":!0,"vm-cardinality-panel_mobile":e}),children:[c&&Yt(Us,{message:"Please wait while cardinality stats is calculated. \n This may take some time if the db contains big number of time series."}),Yt(pd,{isPrometheus:s.isPrometheusData,totalSeries:h.totalSeries,totalSeriesPrev:h.totalSeriesPrev,totalSeriesAll:h.totalSeriesByAll,totalLabelValuePairs:h.totalLabelValuePairs,seriesCountByMetricName:h.seriesCountByMetricName,isCluster:d}),i&&Yt("div",{className:"vm-cardinality-panel-tips",children:[!o&&!u&&Yt(Cd,{}),o&&!u&&Yt(Ed,{}),!o&&!u&&Yt(Sd,{}),u&&Yt(Ad,{})]}),f&&Yt(ai,{variant:"error",children:f}),s.keys(o,u).map((function(e){return Yt(kd,{sectionTitle:s.sectionsTitles(u)[e],tip:g[e],rows:h[e],onActionClick:(t=e,function(e){var r={match:sd[t]({query:e,focusLabel:u,match:o})};"labelValueCountByLabelName"!==t&&"seriesCountByLabelName"!=t||(r.focusLabel=e),"seriesCountByFocusLabelValue"==t&&(r.focusLabel=""),n(r)}),tabs:y.tabs[e],chartContainer:y.containerRefs[e],totalSeriesPrev:s.totalSeries(e,!0),totalSeries:s.totalSeries(e),tableHeaderCells:p[e],isPrometheus:s.isPrometheusData},e);var t}))]})},Md=function(e){var t=e.topN,n=e.maxLifetime,i=Vt().serverUrl,a=ha().setSearchParamsFromKeys,o=v((0,r.useState)(null),2),u=o[0],l=o[1],c=v((0,r.useState)(!1),2),s=c[0],f=c[1],d=v((0,r.useState)(),2),h=d[0],m=d[1],p=(0,r.useMemo)((function(){return function(e,t,n){return"".concat(e,"/api/v1/status/top_queries?topN=").concat(t||"","&maxLifetime=").concat(n||"")}(i,t,n)}),[i,t,n]),g=function(){var e=Bi(Li().mark((function e(){var r,i;return Li().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return f(!0),a({topN:t,maxLifetime:n}),e.prev=2,e.next=5,fetch(p);case 5:return r=e.sent,e.next=8,r.json();case 8:i=e.sent,r.ok&&["topByAvgDuration","topByCount","topBySumDuration"].forEach((function(e){var t=i[e];Array.isArray(t)&&t.forEach((function(e){return e.timeRange=vn(1e3*e.timeRangeSeconds)}))})),l(r.ok?i:null),m(String(i.error||"")),e.next=17;break;case 14:e.prev=14,e.t0=e.catch(2),e.t0 instanceof Error&&"AbortError"!==e.t0.name&&m("".concat(e.t0.name,": ").concat(e.t0.message));case 17:f(!1);case 18:case"end":return e.stop()}}),e,null,[[2,14]])})));return function(){return e.apply(this,arguments)}}();return{data:u,error:h,loading:s,fetch:g}},Fd=function(e){var t=e.rows,n=e.columns,i=e.defaultOrderBy,a=fs(),o=v((0,r.useState)(i||"count"),2),u=o[0],l=o[1],c=v((0,r.useState)("desc"),2),s=c[0],f=c[1],d=(0,r.useMemo)((function(){return _d(t,yd(s,u))}),[t,u,s]),h=function(e){return function(){var t;t=e,f((function(e){return"asc"===e&&u===t?"desc":"asc"})),l(t)}},m=function(e){var t=e.query;return Bi(Li().mark((function e(){return Li().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,a(t,"Query has been copied");case 2:case"end":return e.stop()}}),e)})))};return Yt("table",{className:"vm-table",children:[Yt("thead",{className:"vm-table-header",children:Yt("tr",{className:"vm-table__row vm-table__row_header",children:[n.map((function(e){return Yt("th",{className:"vm-table-cell vm-table-cell_header vm-table-cell_sort",onClick:h(e.sortBy||e.key),children:Yt("div",{className:"vm-table-cell__content",children:[e.title||e.key,Yt("div",{className:Fr()({"vm-table__sort-icon":!0,"vm-table__sort-icon_active":u===e.key,"vm-table__sort-icon_desc":"desc"===s&&u===e.key}),children:Yt(er,{})})]})},e.key)})),Yt("th",{className:"vm-table-cell vm-table-cell_header"})," "]})}),Yt("tbody",{className:"vm-table-body",children:d.map((function(e,t){return Yt("tr",{className:"vm-table__row",children:[n.map((function(t){return Yt("td",{className:"vm-table-cell",children:e[t.key]||"-"},t.key)})),Yt("td",{className:"vm-table-cell vm-table-cell_no-padding",children:Yt("div",{className:"vm-top-queries-panels__table-actions",children:[Yt(Di,{title:"Execute query",children:Yt(nt,{to:"".concat(pt.home,"?g0.expr=").concat(encodeURIComponent(e.query)),target:"_blank",rel:"noreferrer",children:Yt(mi,{variant:"text",size:"small",startIcon:Yt(or,{}),ariaLabel:"execute query"})})}),Yt(Di,{title:"Copy query",children:Yt(mi,{variant:"text",size:"small",startIcon:Yt(gr,{}),onClick:m(e),ariaLabel:"copy query"})})]})})]},t)}))})]})},Td=["table","JSON"].map((function(e,t){return{value:String(t),label:e,icon:Yt(0===t?lr:cr,{})}})),Od=function(e){var t=e.rows,n=e.title,i=e.columns,a=e.defaultOrderBy,o=ri().isMobile,u=v((0,r.useState)(0),2),l=u[0],c=u[1];return Yt("div",{className:Fr()({"vm-top-queries-panel":!0,"vm-block":!0,"vm-block_mobile":o}),children:[Yt("div",{className:Fr()({"vm-top-queries-panel-header":!0,"vm-section-header":!0,"vm-top-queries-panel-header_mobile":o}),children:[Yt("h5",{className:Fr()({"vm-section-header__title":!0,"vm-section-header__title_mobile":o}),children:n}),Yt("div",{className:"vm-section-header__tabs",children:Yt(zr,{activeItem:String(l),items:Td,onChange:function(e){c(+e)}})})]}),Yt("div",{className:Fr()({"vm-top-queries-panel__table":!0,"vm-top-queries-panel__table_mobile":o}),children:[0===l&&Yt(Fd,{rows:t,columns:i,defaultOrderBy:a}),1===l&&Yt(js,{data:t})]})]})},Pd=function(){var e=ri().isMobile,t=v(hd(10,"topN"),2),n=t[0],i=t[1],o=v(hd("10m","maxLifetime"),2),u=o[0],l=o[1],c=Md({topN:n,maxLifetime:u}),s=c.data,f=c.error,d=c.loading,h=c.fetch,m=(0,r.useMemo)((function(){var e=u.trim().split(" ").reduce((function(e,t){var n=sn(t);return n?st(st({},e),n):st({},e)}),{});return!!a().duration(e).asMilliseconds()}),[u]),p=(0,r.useMemo)((function(){return!!n&&n<1}),[n]),g=(0,r.useMemo)((function(){return p?"Number must be bigger than zero":""}),[p]),y=(0,r.useMemo)((function(){return m?"":"Invalid duration value"}),[m]),_=function(e){if(!s)return e;var t=s[e];return"number"===typeof t?Nc(t,t,t):t||e},b=function(e){"Enter"===e.key&&h()};return(0,r.useEffect)((function(){s&&(n||i(+s.topN),u||l(s.maxLifetime))}),[s]),(0,r.useEffect)((function(){return h(),window.addEventListener("popstate",h),function(){window.removeEventListener("popstate",h)}}),[]),Yt("div",{className:Fr()({"vm-top-queries":!0,"vm-top-queries_mobile":e}),children:[d&&Yt(Us,{containerStyles:{height:"500px"}}),Yt("div",{className:Fr()({"vm-top-queries-controls":!0,"vm-block":!0,"vm-block_mobile":e}),children:[Yt("div",{className:"vm-top-queries-controls-fields",children:[Yt("div",{className:"vm-top-queries-controls-fields__item",children:Yt(qi,{label:"Max lifetime",value:u,error:y,helperText:"For example ".concat("30ms, 15s, 3d4h, 1y2w"),onChange:function(e){l(e)},onKeyDown:b})}),Yt("div",{className:"vm-top-queries-controls-fields__item",children:Yt(qi,{label:"Number of returned queries",type:"number",value:n||"",error:g,onChange:function(e){i(+e)},onKeyDown:b})})]}),Yt("div",{className:Fr()({"vm-top-queries-controls-bottom":!0,"vm-top-queries-controls-bottom_mobile":e}),children:[Yt("div",{className:"vm-top-queries-controls-bottom__info",children:["VictoriaMetrics tracks the last\xa0",Yt(Di,{title:"search.queryStats.lastQueriesCount",children:Yt("b",{children:_("search.queryStats.lastQueriesCount")})}),"\xa0queries with durations at least\xa0",Yt(Di,{title:"search.queryStats.minQueryDuration",children:Yt("b",{children:_("search.queryStats.minQueryDuration")})})]}),Yt("div",{className:"vm-top-queries-controls-bottom__button",children:Yt(mi,{startIcon:Yt(ar,{}),onClick:h,children:"Execute"})})]})]}),f&&Yt(ai,{variant:"error",children:f}),s&&Yt(Ht.HY,{children:Yt("div",{className:"vm-top-queries-panels",children:[Yt(Od,{rows:s.topByCount,title:"Most frequently executed queries",columns:[{key:"query"},{key:"timeRange",sortBy:"timeRangeSeconds",title:"query time interval"},{key:"count"}]}),Yt(Od,{rows:s.topByAvgDuration,title:"Most heavy queries",columns:[{key:"query"},{key:"avgDurationSeconds",title:"avg duration, sec"},{key:"timeRange",sortBy:"timeRangeSeconds",title:"query time interval"},{key:"count"}],defaultOrderBy:"avgDurationSeconds"}),Yt(Od,{rows:s.topBySumDuration,title:"Queries with most summary time to execute",columns:[{key:"query"},{key:"sumDurationSeconds",title:"sum duration, sec"},{key:"timeRange",sortBy:"timeRangeSeconds",title:"query time interval"},{key:"count"}],defaultOrderBy:"sumDurationSeconds"})]})})]})},Id={"color-primary":"#589DF6","color-secondary":"#316eca","color-error":"#e5534b","color-warning":"#c69026","color-info":"#539bf5","color-success":"#57ab5a","color-background-body":"#22272e","color-background-block":"#2d333b","color-background-tooltip":"rgba(22, 22, 22, 0.8)","color-text":"#cdd9e5","color-text-secondary":"#768390","color-text-disabled":"#636e7b","box-shadow":"rgba(0, 0, 0, 0.16) 1px 2px 6px","box-shadow-popper":"rgba(0, 0, 0, 0.2) 0px 2px 8px 0px","border-divider":"1px solid rgba(99, 110, 123, 0.5)","color-hover-black":"rgba(0, 0, 0, 0.12)"},Ld={"color-primary":"#3F51B5","color-secondary":"#E91E63","color-error":"#FD080E","color-warning":"#FF8308","color-info":"#03A9F4","color-success":"#4CAF50","color-background-body":"#FEFEFF","color-background-block":"#FFFFFF","color-background-tooltip":"rgba(80,80,80,0.9)","color-text":"#110f0f","color-text-secondary":"#706F6F","color-text-disabled":"#A09F9F","box-shadow":"rgba(0, 0, 0, 0.08) 1px 2px 6px","box-shadow-popper":"rgba(0, 0, 0, 0.1) 0px 2px 8px 0px","border-divider":"1px solid rgba(0, 0, 0, 0.15)","color-hover-black":"rgba(0, 0, 0, 0.06)"},Rd=function(){var e=v((0,r.useState)(Rt()),2),t=e[0],n=e[1],i=function(e){n(e.matches)};return(0,r.useEffect)((function(){var e=window.matchMedia("(prefers-color-scheme: dark)");return e.addEventListener("change",i),function(){return e.removeEventListener("change",i)}}),[]),t},Bd=["primary","secondary","error","warning","info","success"],zd=function(e){var t,n=e.onLoaded,i=gt(),a=vt().palette,o=void 0===a?{}:a,u=Vt().theme,l=Rd(),c=qt(),s=Br(),f=v((0,r.useState)((lt(t={},Pt.dark,Id),lt(t,Pt.light,Ld),lt(t,Pt.system,Rt()?Id:Ld),t)),2),d=f[0],h=f[1],m=function(){var e=window,t=e.innerWidth,n=e.innerHeight,r=document.documentElement,i=r.clientWidth,a=r.clientHeight;Lt("scrollbar-width","".concat(t-i,"px")),Lt("scrollbar-height","".concat(n-a,"px")),Lt("vh","".concat(.01*n,"px"))},p=function(){Bd.forEach((function(e,t){var r=function(e){var t=e.replace("#","").trim();if(3===t.length&&(t=t[0]+t[0]+t[1]+t[1]+t[2]+t[2]),6!==t.length)throw new Error("Invalid HEX color.");return(299*parseInt(t.slice(0,2),16)+587*parseInt(t.slice(2,4),16)+114*parseInt(t.slice(4,6),16))/1e3>=128?"#000000":"#FFFFFF"}(It("color-".concat(e)));Lt("".concat(e,"-text"),r),t===Bd.length-1&&(c({type:"SET_DARK_THEME"}),n(!0))}))},g=function(){var e=Ft("THEME")||Pt.system,t=d[e];Object.entries(t).forEach((function(e){var t=v(e,2),n=t[0],r=t[1];Lt(n,r)})),p(),i&&(Bd.forEach((function(e){var t=o[e];t&&Lt("color-".concat(e),t)})),p())};return(0,r.useEffect)((function(){m(),g()}),[d]),(0,r.useEffect)(m,[s]),(0,r.useEffect)((function(){var e=Rt()?Id:Ld;d[Pt.system]!==e?h((function(t){return st(st({},t),{},lt({},Pt.system,e))})):g()}),[u,l]),(0,r.useEffect)((function(){i&&c({type:"SET_THEME",payload:Pt.light})}),[]),null},jd=function(){var e=v((0,r.useState)([]),2),t=e[0],n=e[1],i=v((0,r.useState)(!1),2),a=i[0],o=i[1],u=(0,r.useRef)(document.body),l=function(e){e.preventDefault(),e.stopPropagation(),"dragenter"===e.type||"dragover"===e.type?o(!0):"dragleave"===e.type&&o(!1)};return Rr("dragenter",l,u),Rr("dragleave",l,u),Rr("dragover",l,u),Rr("drop",(function(e){var t;e.preventDefault(),e.stopPropagation(),o(!1),null!==e&&void 0!==e&&null!==(t=e.dataTransfer)&&void 0!==t&&t.files&&e.dataTransfer.files[0]&&function(e){var t=Array.from(e||[]);n(t)}(e.dataTransfer.files)}),u),Rr("paste",(function(e){var t,r=null===(t=e.clipboardData)||void 0===t?void 0:t.items;if(r){var i=Array.from(r).filter((function(e){return"application/json"===e.type})).map((function(e){return e.getAsFile()})).filter((function(e){return null!==e}));n(i)}}),u),{files:t,dragging:a}},Hd=function(e){var t=e.onOpenModal,n=e.onChange;return Yt("div",{className:"vm-trace-page-controls",children:[Yt(mi,{variant:"outlined",onClick:t,children:"Paste JSON"}),Yt(Di,{title:"The file must contain tracing information in JSON format",children:Yt(mi,{children:["Upload Files",Yt("input",{id:"json",type:"file",accept:"application/json",multiple:!0,title:" ",onChange:n})]})})]})},$d=function(){var e=v((0,r.useState)([]),2),t=e[0],n=e[1],i=v((0,r.useState)([]),2),a=i[0],o=i[1],u=(0,r.useMemo)((function(){return!!t.length}),[t]),l=pi(!1),c=l.value,s=l.setTrue,f=l.setFalse,d=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";o((function(n){return[{filename:t,text:": ".concat(e.message)}].concat(_(n))}))},h=function(e,t){try{var r=JSON.parse(e),i=r.trace||r;if(!i.duration_msec)return void d(new Error(Ot.traceNotFound),t);var a=new Bs(i,t);n((function(e){return[a].concat(_(e))}))}catch(o){o instanceof Error&&d(o,t)}},m=function(e){e.map((function(e){var t=new FileReader,n=(null===e||void 0===e?void 0:e.name)||"";t.onload=function(e){var t,r=String(null===(t=e.target)||void 0===t?void 0:t.result);h(r,n)},t.readAsText(e)}))},p=function(e){o([]);var t=Array.from(e.target.files||[]);m(t),e.target.value=""},g=function(e){return function(){!function(e){o((function(t){return t.filter((function(t,n){return n!==e}))}))}(e)}},y=jd(),b=y.files,w=y.dragging;return(0,r.useEffect)((function(){m(b)}),[b]),Yt("div",{className:"vm-trace-page",children:[Yt("div",{className:"vm-trace-page-header",children:[Yt("div",{className:"vm-trace-page-header-errors",children:a.map((function(e,t){return Yt("div",{className:"vm-trace-page-header-errors-item",children:[Yt(ai,{variant:"error",children:[Yt("b",{className:"vm-trace-page-header-errors-item__filename",children:e.filename}),Yt("span",{children:e.text})]}),Yt(mi,{className:"vm-trace-page-header-errors-item__close",startIcon:Yt(qn,{}),variant:"text",color:"error",onClick:g(t)})]},"".concat(e,"_").concat(t))}))}),Yt("div",{children:u&&Yt(Hd,{onOpenModal:s,onChange:p})})]}),u&&Yt("div",{children:Yt(Qs,{jsonEditor:!0,traces:t,onDeleteClick:function(e){var r=t.filter((function(t){return t.idValue!==e.idValue}));n(_(r))}})}),!u&&Yt("div",{className:"vm-trace-page-preview",children:[Yt("p",{className:"vm-trace-page-preview__text",children:["Please, upload file with JSON response content.","\n","The file must contain tracing information in JSON format.","\n","In order to use tracing please refer to the doc:\xa0",Yt("a",{className:"vm-link vm-link_colored",href:"https://docs.victoriametrics.com/#query-tracing",target:"_blank",rel:"help noreferrer",children:"https://docs.victoriametrics.com/#query-tracing"}),"\n","Tracing graph will be displayed after file upload.","\n","Attach files by dragging & dropping, selecting or pasting them."]}),Yt(Hd,{onOpenModal:s,onChange:p})]}),c&&Yt(wi,{title:"Paste JSON",onClose:f,children:Yt(Ws,{editable:!0,displayTitle:!0,defaultTile:"JSON ".concat(t.length+1),onClose:f,onUpload:h})}),w&&Yt("div",{className:"vm-trace-page__dropzone"})]})},Yd=function(e){var t=Vt().serverUrl,n=On().period,i=v((0,r.useState)([]),2),a=i[0],o=i[1],u=v((0,r.useState)(!1),2),l=u[0],c=u[1],s=v((0,r.useState)(),2),f=s[0],d=s[1],h=(0,r.useMemo)((function(){return function(e,t,n){var r="{job=".concat(JSON.stringify(n),"}");return"".concat(e,"/api/v1/label/instance/values?match[]=").concat(encodeURIComponent(r),"&start=").concat(t.start,"&end=").concat(t.end)}(t,n,e)}),[t,n,e]);return(0,r.useEffect)((function(){if(e){var t=function(){var e=Bi(Li().mark((function e(){var t,n,r;return Li().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return c(!0),e.prev=1,e.next=4,fetch(h);case 4:return t=e.sent,e.next=7,t.json();case 7:n=e.sent,r=n.data||[],o(r.sort((function(e,t){return e.localeCompare(t)}))),t.ok?d(void 0):d("".concat(n.errorType,"\r\n").concat(null===n||void 0===n?void 0:n.error)),e.next=16;break;case 13:e.prev=13,e.t0=e.catch(1),e.t0 instanceof Error&&d("".concat(e.t0.name,": ").concat(e.t0.message));case 16:c(!1);case 17:case"end":return e.stop()}}),e,null,[[1,13]])})));return function(){return e.apply(this,arguments)}}();t().catch(console.error)}}),[h]),{instances:a,isLoading:l,error:f}},Ud=function(e,t){var n=Vt().serverUrl,i=On().period,a=v((0,r.useState)([]),2),o=a[0],u=a[1],l=v((0,r.useState)(!1),2),c=l[0],s=l[1],f=v((0,r.useState)(),2),d=f[0],h=f[1],m=(0,r.useMemo)((function(){return function(e,t,n,r){var i=Object.entries({job:n,instance:r}).filter((function(e){return e[1]})).map((function(e){var t=v(e,2),n=t[0],r=t[1];return"".concat(n,"=").concat(JSON.stringify(r))})).join(","),a="{".concat(i,"}");return"".concat(e,"/api/v1/label/__name__/values?match[]=").concat(encodeURIComponent(a),"&start=").concat(t.start,"&end=").concat(t.end)}(n,i,e,t)}),[n,i,e,t]);return(0,r.useEffect)((function(){if(e){var t=function(){var e=Bi(Li().mark((function e(){var t,n,r;return Li().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return s(!0),e.prev=1,e.next=4,fetch(m);case 4:return t=e.sent,e.next=7,t.json();case 7:n=e.sent,r=n.data||[],u(r.sort((function(e,t){return e.localeCompare(t)}))),t.ok?h(void 0):h("".concat(n.errorType,"\r\n").concat(null===n||void 0===n?void 0:n.error)),e.next=16;break;case 13:e.prev=13,e.t0=e.catch(1),e.t0 instanceof Error&&h("".concat(e.t0.name,": ").concat(e.t0.message));case 16:s(!1);case 17:case"end":return e.stop()}}),e,null,[[1,13]])})));return function(){return e.apply(this,arguments)}}();t().catch(console.error)}}),[m]),{names:o,isLoading:c,error:d}},Vd=function(e){var t=e.name,n=e.job,i=e.instance,a=e.rateEnabled,o=e.isBucket,u=e.height,l=ri().isMobile,c=Xr(),s=c.customStep,f=c.yaxis,d=On().period,h=ei(),m=Pn(),p=dn(d.end-d.start),g=fn(s),y=vn(10*g*1e3),_=v((0,r.useState)(!1),2),b=_[0],w=_[1],D=b&&s===p?y:s,k=pi(!1),x=k.value,C=k.setTrue,S=(0,r.useMemo)((function(){var e=Object.entries({job:n,instance:i}).filter((function(e){return e[1]})).map((function(e){var t=v(e,2),n=t[0],r=t[1];return"".concat(n,"=").concat(JSON.stringify(r))}));e.push("__name__=".concat(JSON.stringify(t))),"node_cpu_seconds_total"==t&&e.push('mode!="idle"');var r="{".concat(e.join(","),"}");if(o)return"sum(rate(".concat(r,")) by (vmrange, le)");var u=a?"rollup_rate(".concat(r,")"):"rollup(".concat(r,")");return"\nwith (q = ".concat(u,') (\n alias(min(label_match(q, "rollup", "min")), "min"),\n alias(max(label_match(q, "rollup", "max")), "max"),\n alias(avg(label_match(q, "rollup", "avg")), "avg"),\n)')}),[t,n,i,a,o]),E=zs({predefinedQuery:[S],visible:!0,customStep:D,showAllSeries:x}),A=E.isLoading,N=E.graphData,M=E.error,F=E.warning,T=E.isHistogram;return(0,r.useEffect)((function(){w(T)}),[T]),Yt("div",{className:Fr()({"vm-explore-metrics-graph":!0,"vm-explore-metrics-graph_mobile":l}),children:[A&&Yt(Us,{}),M&&Yt(ai,{variant:"error",children:M}),F&&Yt(ai,{variant:"warning",children:Yt("div",{className:"vm-explore-metrics-graph__warning",children:[Yt("p",{children:F}),Yt(mi,{color:"warning",variant:"outlined",onClick:C,children:"Show all"})]})}),N&&d&&Yt(ys,{data:N,period:d,customStep:D,query:[S],yaxis:f,setYaxisLimits:function(e){h({type:"SET_YAXIS_LIMITS",payload:e})},setPeriod:function(e){var t=e.from,n=e.to;m({type:"SET_PERIOD",payload:{from:t,to:n}})},showLegend:!1,height:u,isHistogram:T})]})},qd=function(e){var t=e.name,n=e.index,r=e.length,i=e.isBucket,a=e.rateEnabled,o=e.onChangeRate,u=e.onRemoveItem,l=e.onChangeOrder,c=ri().isMobile,s=pi(!1),f=s.value,d=s.setTrue,h=s.setFalse,m=function(){u(t)},p=function(){l(t,n,n+1)},v=function(){l(t,n,n-1)};return Yt("div",c?{className:"vm-explore-metrics-item-header vm-explore-metrics-item-header_mobile",children:[Yt("div",{className:"vm-explore-metrics-item-header__name",children:t}),Yt(mi,{variant:"text",size:"small",startIcon:Yt(xr,{}),onClick:d,ariaLabel:"open panel settings"}),f&&Yt(wi,{title:t,onClose:h,children:Yt("div",{className:"vm-explore-metrics-item-header-modal",children:[Yt("div",{className:"vm-explore-metrics-item-header-modal-order",children:[Yt(mi,{startIcon:Yt(dr,{}),variant:"outlined",onClick:v,disabled:0===n,ariaLabel:"move graph up"}),Yt("p",{children:["position:",Yt("span",{className:"vm-explore-metrics-item-header-modal-order__index",children:["#",n+1]})]}),Yt(mi,{endIcon:Yt(fr,{}),variant:"outlined",onClick:p,disabled:n===r-1,ariaLabel:"move graph down"})]}),!i&&Yt("div",{className:"vm-explore-metrics-item-header-modal__rate",children:[Yt(ks,{label:Yt("span",{children:["enable ",Yt("code",{children:"rate()"})]}),value:a,onChange:o,fullWidth:!0}),Yt("p",{children:"calculates the average per-second speed of metrics change"})]}),Yt(mi,{startIcon:Yt(qn,{}),color:"error",variant:"outlined",onClick:m,fullWidth:!0,children:"Remove graph"})]})})]}:{className:"vm-explore-metrics-item-header",children:[Yt("div",{className:"vm-explore-metrics-item-header-order",children:[Yt(Di,{title:"move graph up",children:Yt(mi,{className:"vm-explore-metrics-item-header-order__up",startIcon:Yt(Xn,{}),variant:"text",color:"gray",size:"small",onClick:v,ariaLabel:"move graph up"})}),Yt("div",{className:"vm-explore-metrics-item-header__index",children:["#",n+1]}),Yt(Di,{title:"move graph down",children:Yt(mi,{className:"vm-explore-metrics-item-header-order__down",startIcon:Yt(Xn,{}),variant:"text",color:"gray",size:"small",onClick:p,ariaLabel:"move graph down"})})]}),Yt("div",{className:"vm-explore-metrics-item-header__name",children:t}),!i&&Yt("div",{className:"vm-explore-metrics-item-header__rate",children:Yt(Di,{title:"calculates the average per-second speed of metric's change",children:Yt(ks,{label:Yt("span",{children:["enable ",Yt("code",{children:"rate()"})]}),value:a,onChange:o})})}),Yt("div",{className:"vm-explore-metrics-item-header__close",children:Yt(Di,{title:"close graph",children:Yt(mi,{startIcon:Yt(qn,{}),variant:"text",color:"gray",size:"small",onClick:m,ariaLabel:"close graph"})})})]})},Wd=function(e){var t=e.name,n=e.job,i=e.instance,a=e.index,o=e.length,u=e.size,l=e.onRemoveItem,c=e.onChangeOrder,s=(0,r.useMemo)((function(){return/_sum?|_total?|_count?/.test(t)}),[t]),f=(0,r.useMemo)((function(){return/_bucket?/.test(t)}),[t]),d=v((0,r.useState)(s),2),h=d[0],m=d[1],p=Br(),g=(0,r.useMemo)(u.height,[u,p]);return(0,r.useEffect)((function(){m(s)}),[n]),Yt("div",{className:"vm-explore-metrics-item vm-block vm-block_empty-padding",children:[Yt(qd,{name:t,index:a,length:o,isBucket:f,rateEnabled:h,size:u.id,onChangeRate:m,onRemoveItem:l,onChangeOrder:c}),Yt(Vd,{name:t,job:n,instance:i,rateEnabled:h,isBucket:f,height:g},"".concat(t,"_").concat(n,"_").concat(i,"_").concat(h))]})},Qd=function(e){var t=e.values,n=e.onRemoveItem,r=ri().isMobile;return r?Yt("span",{className:"vm-select-input-content__counter",children:["selected ",t.length]}):Yt(Ht.HY,{children:t.map((function(e){return Yt("div",{className:"vm-select-input-content__selected",children:[Yt("span",{children:e}),Yt("div",{onClick:(t=e,function(e){n(t),e.stopPropagation()}),children:Yt(qn,{})})]},e);var t}))})},Zd=function(e){var t=e.value,n=e.list,i=e.label,a=e.placeholder,o=e.noOptionsText,u=e.clearable,l=void 0!==u&&u,c=e.searchable,s=void 0!==c&&c,f=e.autofocus,d=e.onChange,h=Vt().isDarkTheme,m=ri().isMobile,p=v((0,r.useState)(""),2),g=p[0],y=p[1],_=(0,r.useRef)(null),b=v((0,r.useState)(!1),2),w=b[0],D=b[1],k=(0,r.useRef)(null),x=Array.isArray(t),C=Array.isArray(t)?t:void 0,S=m&&x&&!(null===C||void 0===C||!C.length),E=(0,r.useMemo)((function(){return w?g:Array.isArray(t)?"":t}),[t,g,w,x]),A=(0,r.useMemo)((function(){return w?g||"(.+)":""}),[g,w]),N=function(){k.current&&k.current.blur()},M=function(e){d(e),x||(D(!1),N()),x&&k.current&&k.current.focus()};return(0,r.useEffect)((function(){y(""),w&&k.current&&k.current.focus(),w||N()}),[w,k]),(0,r.useEffect)((function(){f&&k.current&&!m&&k.current.focus()}),[f,k]),Rr("keyup",(function(e){k.current!==e.target&&D(!1)})),Yt("div",{className:Fr()({"vm-select":!0,"vm-select_dark":h}),children:[Yt("div",{className:"vm-select-input",onClick:function(e){e.target instanceof HTMLInputElement||D((function(e){return!e}))},ref:_,children:[Yt("div",{className:"vm-select-input-content",children:[!(null===C||void 0===C||!C.length)&&Yt(Qd,{values:C,onRemoveItem:M}),!S&&Yt("input",{value:E,type:"text",placeholder:a,onInput:function(e){y(e.target.value)},onFocus:function(){D(!0)},ref:k,readOnly:m||!s})]}),i&&Yt("span",{className:"vm-text-field__label",children:i}),l&&t&&Yt("div",{className:"vm-select-input__icon",onClick:function(e){return function(t){M(e),t.stopPropagation()}}(""),children:Yt(qn,{})}),Yt("div",{className:Fr()({"vm-select-input__icon":!0,"vm-select-input__icon_open":w}),children:Yt(er,{})})]}),Yt(_s,{label:i,value:A,options:n,anchor:_,selected:C,maxWords:10,minLength:0,fullWidth:!0,noOptionsText:o,onSelect:M,onOpenAutocomplete:D})]})},Gd=Et.map((function(e){return e.id})),Kd=function(e){var t=e.jobs,n=e.instances,i=e.names,a=e.job,o=e.instance,u=e.size,l=e.selectedMetrics,c=e.onChangeJob,s=e.onChangeInstance,f=e.onToggleMetric,d=e.onChangeSize,h=(0,r.useMemo)((function(){return a?"":"No instances. Please select job"}),[a]),m=(0,r.useMemo)((function(){return a?"":"No metric names. Please select job"}),[a]),p=ri().isMobile,v=pi("false"!==Ft("EXPLORE_METRICS_TIPS")),g=v.value,y=v.toggle,_=v.setFalse;return(0,r.useEffect)((function(){Mt("EXPLORE_METRICS_TIPS","".concat(g))}),[g]),Yt(Ht.HY,{children:[Yt("div",{className:Fr()({"vm-explore-metrics-header":!0,"vm-explore-metrics-header_mobile":p,"vm-block":!0,"vm-block_mobile":p}),children:[Yt("div",{className:"vm-explore-metrics-header__job",children:Yt(Zd,{value:a,list:t,label:"Job",placeholder:"Please select job",onChange:c,autofocus:!a,searchable:!0})}),Yt("div",{className:"vm-explore-metrics-header__instance",children:Yt(Zd,{value:o,list:n,label:"Instance",placeholder:"Please select instance",onChange:s,noOptionsText:h,clearable:!0,searchable:!0})}),Yt("div",{className:"vm-explore-metrics-header__size",children:[Yt(Zd,{label:"Size graphs",value:u,list:Gd,onChange:d}),Yt(Di,{title:"".concat(g?"Hide":"Show"," tip"),children:Yt(mi,{variant:"text",color:g?"warning":"gray",startIcon:Yt(Sr,{}),onClick:y,ariaLabel:"visibility tips"})})]}),Yt("div",{className:"vm-explore-metrics-header-metrics",children:Yt(Zd,{label:"Metrics",value:l,list:i,placeholder:"Search metric name",onChange:f,noOptionsText:m,clearable:!0,searchable:!0})})]}),g&&Yt(ai,{variant:"warning",children:Yt("div",{className:"vm-explore-metrics-header-description",children:[Yt("p",{children:["Please note: this page is solely designed for exploring Prometheus metrics. Prometheus metrics always contain ",Yt("code",{children:"job"})," and ",Yt("code",{children:"instance"})," labels (see ",Yt("a",{className:"vm-link vm-link_colored",href:"https://prometheus.io/docs/concepts/jobs_instances/",children:"these docs"}),"), and this page relies on them as filters. ",Yt("br",{}),"Please use this page for Prometheus metrics only, in accordance with their naming conventions."]}),Yt(mi,{variant:"text",size:"small",startIcon:Yt(qn,{}),onClick:_,ariaLabel:"close tips"})]})})]})},Jd=Nt("job",""),Xd=Nt("instance",""),eh=Nt("metrics",""),th=Nt("size",""),nh=Et.find((function(e){return th?e.id===th:e.isDefault}))||Et[0],rh=function(){var e=v((0,r.useState)(Jd),2),t=e[0],n=e[1],i=v((0,r.useState)(Xd),2),a=i[0],o=i[1],u=v((0,r.useState)(eh?eh.split("&"):[]),2),l=u[0],c=u[1],s=v((0,r.useState)(nh),2),f=s[0],d=s[1];!function(e){var t=e.job,n=e.instance,i=e.metrics,a=e.size,o=On(),u=o.duration,l=o.relativeTime,c=o.period.date,s=Xr().customStep,f=ha().setSearchParamsFromKeys,d=function(){var e,r=Js((lt(e={},"g0.range_input",u),lt(e,"g0.end_input",c),lt(e,"g0.step_input",s),lt(e,"g0.relative_time",l),lt(e,"size",a),lt(e,"job",t),lt(e,"instance",n),lt(e,"metrics",i),e));f(r)};(0,r.useEffect)(d,[u,l,c,s,t,n,i,a]),(0,r.useEffect)(d,[])}({job:t,instance:a,metrics:l.join("&"),size:f.id});var h=function(){var e=Vt().serverUrl,t=On().period,n=v((0,r.useState)([]),2),i=n[0],a=n[1],o=v((0,r.useState)(!1),2),u=o[0],l=o[1],c=v((0,r.useState)(),2),s=c[0],f=c[1],d=(0,r.useMemo)((function(){return function(e,t){return"".concat(e,"/api/v1/label/job/values?start=").concat(t.start,"&end=").concat(t.end)}(e,t)}),[e,t]);return(0,r.useEffect)((function(){var e=function(){var e=Bi(Li().mark((function e(){var t,n,r;return Li().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return l(!0),e.prev=1,e.next=4,fetch(d);case 4:return t=e.sent,e.next=7,t.json();case 7:n=e.sent,r=n.data||[],a(r.sort((function(e,t){return e.localeCompare(t)}))),t.ok?f(void 0):f("".concat(n.errorType,"\r\n").concat(null===n||void 0===n?void 0:n.error)),e.next=16;break;case 13:e.prev=13,e.t0=e.catch(1),e.t0 instanceof Error&&f("".concat(e.t0.name,": ").concat(e.t0.message));case 16:l(!1);case 17:case"end":return e.stop()}}),e,null,[[1,13]])})));return function(){return e.apply(this,arguments)}}();e().catch(console.error)}),[d]),{jobs:i,isLoading:u,error:s}}(),m=h.jobs,p=h.isLoading,g=h.error,y=Yd(t),b=y.instances,w=y.isLoading,D=y.error,k=Ud(t,a),x=k.names,C=k.isLoading,S=k.error,E=(0,r.useMemo)((function(){return p||w||C}),[p,w,C]),A=(0,r.useMemo)((function(){return g||D||S}),[g,D,S]),N=function(e){c(e?function(t){return t.includes(e)?t.filter((function(t){return t!==e})):[].concat(_(t),[e])}:[])},M=function(e,t,n){var r=n>l.length-1;n<0||r||c((function(e){var r=_(e),i=v(r.splice(t,1),1)[0];return r.splice(n,0,i),r}))};return(0,r.useEffect)((function(){a&&b.length&&!b.includes(a)&&o("")}),[b,a]),Yt("div",{className:"vm-explore-metrics",children:[Yt(Kd,{jobs:m,instances:b,names:x,job:t,size:f.id,instance:a,selectedMetrics:l,onChangeJob:n,onChangeSize:function(e){var t=Et.find((function(t){return t.id===e}));t&&d(t)},onChangeInstance:o,onToggleMetric:N}),E&&Yt(Us,{}),A&&Yt(ai,{variant:"error",children:A}),!t&&Yt(ai,{variant:"info",children:"Please select job to see list of metric names."}),t&&!l.length&&Yt(ai,{variant:"info",children:"Please select metric names to see the graphs."}),Yt("div",{className:"vm-explore-metrics-body",children:l.map((function(e,n){return Yt(Wd,{name:e,job:t,instance:a,index:n,length:l.length,size:f,onRemoveItem:N,onChangeOrder:M},e)}))})]})},ih=function(){var t=fs();return Yt("div",{className:"vm-preview-icons",children:Object.entries(e).map((function(e){var n,r=v(e,2),i=r[0],a=r[1];return Yt("div",{className:"vm-preview-icons-item",onClick:(n=i,Bi(Li().mark((function e(){return Li().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t("<".concat(n,"/>"),"<".concat(n,"/> has been copied"));case 2:case"end":return e.stop()}}),e)})))),children:[Yt("div",{className:"vm-preview-icons-item__svg",children:a()}),Yt("div",{className:"vm-preview-icons-item__name",children:"<".concat(i,"/>")})]},i)}))})},ah=function(e){return e.copy="Copy",e.copied="Copied",e}(ah||{}),oh=function(e){var t=e.code,n=v((0,r.useState)(ah.copy),2),i=n[0],a=n[1];return(0,r.useEffect)((function(){var e=null;return i===ah.copied&&(e=setTimeout((function(){return a(ah.copy)}),1e3)),function(){e&&clearTimeout(e)}}),[i]),Yt("code",{className:"vm-code-example",children:[t,Yt("div",{className:"vm-code-example__copy",children:Yt(Di,{title:i,children:Yt(mi,{size:"small",variant:"text",onClick:function(){navigator.clipboard.writeText(t),a(ah.copied)},startIcon:Yt(gr,{}),ariaLabel:"close"})})})]})},uh=function(){return Yt("a",{className:"vm-link vm-link_colored",href:"https://docs.victoriametrics.com/MetricsQL.html",target:"_blank",rel:"help noreferrer",children:"MetricsQL"})},lh=function(){return Yt("a",{className:"vm-link vm-link_colored",href:"https://grafana.com/grafana/dashboards/1860-node-exporter-full/",target:"_blank",rel:"help noreferrer",children:"Node Exporter Full"})},ch=function(){return Yt("section",{className:"vm-with-template-tutorial",children:[Yt("h2",{className:"vm-with-template-tutorial__title",children:["Tutorial for WITH expressions in ",Yt(uh,{})]}),Yt("div",{className:"vm-with-template-tutorial-section",children:[Yt("p",{className:"vm-with-template-tutorial-section__text",children:["Let's look at the following real query from ",Yt(lh,{})," dashboard:"]}),Yt(oh,{code:'(\n (\n node_memory_MemTotal_bytes{instance=~"$node:$port", job=~"$job"}\n -\n node_memory_MemFree_bytes{instance=~"$node:$port", job=~"$job"}\n )\n /\n node_memory_MemTotal_bytes{instance=~"$node:$port", job=~"$job"}\n) * 100'}),Yt("p",{className:"vm-with-template-tutorial-section__text",children:"It is clear the query calculates the percentage of used memory for the given $node, $port and $job. Isn't it? :)"})]}),Yt("div",{className:"vm-with-template-tutorial-section",children:[Yt("p",{className:"vm-with-template-tutorial-section__text",children:"What's wrong with this query? Copy-pasted label filters for distinct timeseries which makes it easy to mistype these filters during modification. Let's simplify the query with WITH expressions:"}),Yt(oh,{code:'WITH (\n commonFilters = {instance=~"$node:$port",job=~"$job"}\n)\n(\n node_memory_MemTotal_bytes{commonFilters}\n -\n node_memory_MemFree_bytes{commonFilters}\n)\n /\nnode_memory_MemTotal_bytes{commonFilters} * 100'})]}),Yt("div",{className:"vm-with-template-tutorial-section",children:[Yt("p",{className:"vm-with-template-tutorial-section__text",children:["Now label filters are located in a single place instead of three distinct places. The query mentions node_memory_MemTotal_bytes metric twice and ","{commonFilters}"," three times. WITH expressions may improve this:"]}),Yt(oh,{code:'WITH (\n my_resource_utilization(free, limit, filters) = (limit{filters} - free{filters}) / limit{filters} * 100\n)\nmy_resource_utilization(\n node_memory_MemFree_bytes,\n node_memory_MemTotal_bytes,\n {instance=~"$node:$port",job=~"$job"},\n)'}),Yt("p",{className:"vm-with-template-tutorial-section__text",children:"Now the template function my_resource_utilization() may be used for monitoring arbitrary resources - memory, CPU, network, storage, you name it."})]}),Yt("div",{className:"vm-with-template-tutorial-section",children:[Yt("p",{className:"vm-with-template-tutorial-section__text",children:["Let's take another nice query from ",Yt(lh,{})," dashboard:"]}),Yt(oh,{code:'(\n (\n (\n count(\n count(node_cpu_seconds_total{instance=~"$node:$port",job=~"$job"}) by (cpu)\n )\n )\n -\n avg(\n sum by (mode) (rate(node_cpu_seconds_total{mode=\'idle\',instance=~"$node:$port",job=~"$job"}[5m]))\n )\n )\n *\n 100\n)\n /\ncount(\n count(node_cpu_seconds_total{instance=~"$node:$port",job=~"$job"}) by (cpu)\n)'}),Yt("p",{className:"vm-with-template-tutorial-section__text",children:"Do you understand what does this mess do? Is it manageable? :) WITH expressions are happy to help in a few iterations."})]}),Yt("div",{className:"vm-with-template-tutorial-section",children:[Yt("p",{className:"vm-with-template-tutorial-section__text",children:"1. Extract common filters used in multiple places into a commonFilters variable:"}),Yt(oh,{code:'WITH (\n commonFilters = {instance=~"$node:$port",job=~"$job"}\n)\n(\n (\n (\n count(\n count(node_cpu_seconds_total{commonFilters}) by (cpu)\n )\n )\n -\n avg(\n sum by (mode) (rate(node_cpu_seconds_total{mode=\'idle\',commonFilters}[5m]))\n )\n )\n *\n 100\n)\n /\ncount(\n count(node_cpu_seconds_total{commonFilters}) by (cpu)\n)'})]}),Yt("div",{className:"vm-with-template-tutorial-section",children:[Yt("p",{className:"vm-with-template-tutorial-section__text",children:'2. Extract "count(count(...) by (cpu))" into cpuCount variable:'}),Yt(oh,{code:'WITH (\n commonFilters = {instance=~"$node:$port",job=~"$job"},\n cpuCount = count(count(node_cpu_seconds_total{commonFilters}) by (cpu))\n)\n(\n (\n cpuCount\n -\n avg(\n sum by (mode) (rate(node_cpu_seconds_total{mode=\'idle\',commonFilters}[5m]))\n )\n )\n *\n 100\n) / cpuCount'})]}),Yt("div",{className:"vm-with-template-tutorial-section",children:[Yt("p",{className:"vm-with-template-tutorial-section__text",children:"3. Extract rate(...) part into cpuIdle variable, since it is clear now that this part calculates the number of idle CPUs:"}),Yt(oh,{code:'WITH (\n commonFilters = {instance=~"$node:$port",job=~"$job"},\n cpuCount = count(count(node_cpu_seconds_total{commonFilters}) by (cpu)),\n cpuIdle = sum(rate(node_cpu_seconds_total{mode=\'idle\',commonFilters}[5m]))\n)\n((cpuCount - cpuIdle) * 100) / cpuCount'})]}),Yt("div",{className:"vm-with-template-tutorial-section",children:[Yt("p",{className:"vm-with-template-tutorial-section__text",children:["4. Put node_cpu_seconds_total","{commonFilters}"," into its own varialbe with the name cpuSeconds:"]}),Yt(oh,{code:'WITH (\n cpuSeconds = node_cpu_seconds_total{instance=~"$node:$port",job=~"$job"},\n cpuCount = count(count(cpuSeconds) by (cpu)),\n cpuIdle = sum(rate(cpuSeconds{mode=\'idle\'}[5m]))\n)\n((cpuCount - cpuIdle) * 100) / cpuCount'}),Yt("p",{className:"vm-with-template-tutorial-section__text",children:"Now the query became more clear comparing to the initial query."})]}),Yt("div",{className:"vm-with-template-tutorial-section",children:[Yt("p",{className:"vm-with-template-tutorial-section__text",children:"WITH expressions may be nested and may be put anywhere. Try expanding the following query:"}),Yt(oh,{code:"WITH (\n f(a, b) = WITH (\n f1(x) = b-x,\n f2(x) = x+x\n ) f1(a)*f2(b)\n) f(foo, with(x=bar) x)"})]})]})},sh=function(e,t){return"".concat(e,"/expand-with-exprs?query=").concat(encodeURIComponent(t),"&format=json")},fh=function(){var e=v(ot(),1)[0],t=function(){var e=Vt().serverUrl,t=v(ot(),2),n=t[0],i=t[1],a=v((0,r.useState)(""),2),o=a[0],u=a[1],l=v((0,r.useState)(!1),2),c=l[0],s=l[1],f=v((0,r.useState)(),2),d=f[0],h=f[1],m=function(){var t=Bi(Li().mark((function t(r){var a,o,l;return Li().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n.set("expr",r),i(n),a=sh(e,r),s(!0),t.prev=4,t.next=7,fetch(a);case 7:return o=t.sent,t.next=10,o.json();case 10:l=t.sent,u((null===l||void 0===l?void 0:l.expr)||""),h(String(l.error||"")),t.next=18;break;case 15:t.prev=15,t.t0=t.catch(4),t.t0 instanceof Error&&"AbortError"!==t.t0.name&&h("".concat(t.t0.name,": ").concat(t.t0.message));case 18:s(!1);case 19:case"end":return t.stop()}}),t,null,[[4,15]])})));return function(e){return t.apply(this,arguments)}}();return{data:o,error:d,loading:c,expand:m}}(),n=t.data,i=t.loading,a=t.error,o=t.expand,u=v((0,r.useState)(e.get("expr")||""),2),l=u[0],c=u[1],s=function(){o(l)};return(0,r.useEffect)((function(){l&&o(l)}),[]),Yt("section",{className:"vm-with-template",children:[i&&Yt(Us,{}),Yt("div",{className:"vm-with-template-body vm-block",children:[Yt("div",{className:"vm-with-template-body__expr",children:Yt(qi,{type:"textarea",label:"MetricsQL query with optional WITH expressions",value:l,error:a,autofocus:!0,onEnter:s,onChange:function(e){c(e)}})}),Yt("div",{className:"vm-with-template-body__result",children:Yt(qi,{type:"textarea",label:"MetricsQL query after expanding WITH expressions and applying other optimizations",value:n,disabled:!0})}),Yt("div",{className:"vm-with-template-body-top",children:Yt(mi,{variant:"contained",onClick:s,startIcon:Yt(ar,{}),children:"Expand"})})]}),Yt("div",{className:"vm-block",children:Yt(ch,{})})]})},dh=function(e,t,n){var r=["format=json","relabel_configs=".concat(encodeURIComponent(t)),"metric=".concat(encodeURIComponent(n))];return"".concat(e,"/metric-relabel-debug?").concat(r.join("&"))},hh='- if: \'{bar_label=~"b.*"}\'\n source_labels: [foo_label, bar_label]\n separator: "_"\n target_label: foobar\n- action: labeldrop\n regex: "foo_.*"\n- target_label: job\n replacement: "my-application-2"',mh='{__name__="my_metric", bar_label="bar", foo_label="foo", job="my-application", instance="192.168.0.1"}',ph=function(){var e=v(ot(),2),t=e[0],n=e[1],i=function(){var e=Vt().serverUrl,t=v((0,r.useState)(null),2),n=t[0],i=t[1],a=v((0,r.useState)(!1),2),o=a[0],u=a[1],l=v((0,r.useState)(),2),c=l[0],s=l[1],f=function(){var t=Bi(Li().mark((function t(n,r){var a,o,l;return Li().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=dh(e,n,r),u(!0),t.prev=2,t.next=5,fetch(a);case 5:return o=t.sent,t.next=8,o.json();case 8:l=t.sent,i(l.error?null:l),s(String(l.error||"")),t.next=16;break;case 13:t.prev=13,t.t0=t.catch(2),t.t0 instanceof Error&&"AbortError"!==t.t0.name&&s("".concat(t.t0.name,": ").concat(t.t0.message));case 16:u(!1);case 17:case"end":return t.stop()}}),t,null,[[2,13]])})));return function(e,n){return t.apply(this,arguments)}}();return{data:n,error:c,loading:o,fetchData:f}}(),a=i.data,o=i.loading,u=i.error,l=i.fetchData,c=v(hd("","config"),2),s=c[0],f=c[1],d=v(hd("","labels"),2),h=d[0],m=d[1],p=(0,r.useCallback)((function(){l(s,h),t.set("config",s),t.set("labels",h),n(t)}),[s,h]);return(0,r.useEffect)((function(){var e=t.get("config")||"",n=t.get("labels")||"";(n||e)&&(l(e,n),f(e),m(n))}),[]),Yt("section",{className:"vm-relabeling",children:[o&&Yt(Us,{}),Yt("div",{className:"vm-relabeling-header vm-block",children:[Yt("div",{className:"vm-relabeling-header-configs",children:Yt(qi,{type:"textarea",label:"Relabel configs",value:s,autofocus:!0,onChange:function(e){f(e||"")},onEnter:p})}),Yt("div",{className:"vm-relabeling-header__labels",children:Yt(qi,{type:"textarea",label:"Labels",value:h,onChange:function(e){m(e||"")},onEnter:p})}),Yt("div",{className:"vm-relabeling-header-bottom",children:[Yt("a",{className:"vm-link vm-link_with-icon",target:"_blank",href:"https://docs.victoriametrics.com/relabeling.html",rel:"help noreferrer",children:[Yt(Qn,{}),"Relabeling cookbook"]}),Yt("a",{className:"vm-link vm-link_with-icon",target:"_blank",href:"https://docs.victoriametrics.com/vmagent.html#relabeling",rel:"help noreferrer",children:[Yt(br,{}),"Documentation"]}),Yt(mi,{variant:"text",onClick:function(){var e=hh,r=mh;f(e),m(r),l(e,r),t.set("config",e),t.set("labels",r),n(t)},children:"Try example"}),Yt(mi,{variant:"contained",onClick:p,startIcon:Yt(ar,{}),children:"Submit"})]})]}),u&&Yt(ai,{variant:"error",children:u}),a&&Yt("div",{className:"vm-relabeling-steps vm-block",children:[a.originalLabels&&Yt("div",{className:"vm-relabeling-steps-item",children:Yt("div",{className:"vm-relabeling-steps-item__row",children:[Yt("span",{children:"Original labels:"}),Yt("code",{dangerouslySetInnerHTML:{__html:a.originalLabels}})]})}),a.steps.map((function(e,t){return Yt("div",{className:"vm-relabeling-steps-item",children:[Yt("div",{className:"vm-relabeling-steps-item__row",children:[Yt("span",{children:"Step:"}),t+1]}),Yt("div",{className:"vm-relabeling-steps-item__row",children:[Yt("span",{children:"Relabeling Rule:"}),Yt("code",{children:Yt("pre",{children:e.rule})})]}),Yt("div",{className:"vm-relabeling-steps-item__row",children:[Yt("span",{children:"Input Labels:"}),Yt("code",{children:Yt("pre",{dangerouslySetInnerHTML:{__html:e.inLabels}})})]}),Yt("div",{className:"vm-relabeling-steps-item__row",children:[Yt("span",{children:"Output labels:"}),Yt("code",{children:Yt("pre",{dangerouslySetInnerHTML:{__html:e.outLabels}})})]})]},t)})),a.resultingLabels&&Yt("div",{className:"vm-relabeling-steps-item",children:Yt("div",{className:"vm-relabeling-steps-item__row",children:[Yt("span",{children:"Resulting labels:"}),Yt("code",{dangerouslySetInnerHTML:{__html:a.resultingLabels}})]})})]})]})},vh=function(e){var t=e.rows,n=e.columns,i=e.defaultOrderBy,a=e.copyToClipboard,o=e.paginationOffset,u=v((0,r.useState)(i),2),l=u[0],c=u[1],s=v((0,r.useState)("desc"),2),f=s[0],d=s[1],h=v((0,r.useState)(null),2),m=h[0],p=h[1],g=(0,r.useMemo)((function(){var e=o.startIndex,n=o.endIndex;return _d(t,yd(f,l)).slice(e,n)}),[t,l,f,o]),y=function(e,t){return Bi(Li().mark((function n(){return Li().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(m!==t){n.next=2;break}return n.abrupt("return");case 2:return n.prev=2,n.next=5,navigator.clipboard.writeText(String(e));case 5:p(t),n.next=11;break;case 8:n.prev=8,n.t0=n.catch(2),console.error(n.t0);case 11:case"end":return n.stop()}}),n,null,[[2,8]])})))};return(0,r.useEffect)((function(){if(null!==m){var e=setTimeout((function(){return p(null)}),2e3);return function(){return clearTimeout(e)}}}),[m]),Yt("table",{className:"vm-table",children:[Yt("thead",{className:"vm-table-header",children:Yt("tr",{className:"vm-table__row vm-table__row_header",children:[n.map((function(e){return Yt("th",{className:"vm-table-cell vm-table-cell_header vm-table-cell_sort",onClick:(t=e.key,function(){d((function(e){return"asc"===e&&l===t?"desc":"asc"})),c(t)}),children:Yt("div",{className:"vm-table-cell__content",children:[Yt("div",{children:String(e.title||e.key)}),Yt("div",{className:Fr()({"vm-table__sort-icon":!0,"vm-table__sort-icon_active":l===e.key,"vm-table__sort-icon_desc":"desc"===f&&l===e.key}),children:Yt(er,{})})]})},String(e.key));var t})),a&&Yt("th",{className:"vm-table-cell vm-table-cell_header"})]})}),Yt("tbody",{className:"vm-table-body",children:g.map((function(e,t){return Yt("tr",{className:"vm-table__row",children:[n.map((function(t){return Yt("td",{className:Fr()(lt({"vm-table-cell":!0},"".concat(t.className),t.className)),children:e[t.key]||"-"},String(t.key))})),a&&Yt("td",{className:"vm-table-cell vm-table-cell_right",children:e[a]&&Yt("div",{className:"vm-table-cell__content",children:Yt(Di,{title:m===t?"Copied":"Copy row",children:Yt(mi,{variant:"text",color:m===t?"success":"gray",size:"small",startIcon:Yt(m===t?hr:gr,{}),onClick:y(e[a],t),ariaLabel:"copy row"})})})})]},t)}))})]})},gh=function(){var e=ri().isMobile,t=On().timezone,n=function(){var e=Vt().serverUrl,t=v((0,r.useState)([]),2),n=t[0],i=t[1],o=v((0,r.useState)(a()().format(Gt)),2),u=o[0],l=o[1],c=v((0,r.useState)(!1),2),s=c[0],f=c[1],d=v((0,r.useState)(),2),h=d[0],m=d[1],p=(0,r.useMemo)((function(){return"".concat(e,"/api/v1/status/active_queries")}),[e]),g=function(){var e=Bi(Li().mark((function e(){var t,n;return Li().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return f(!0),e.prev=1,e.next=4,fetch(p);case 4:return t=e.sent,e.next=7,t.json();case 7:n=e.sent,i(n.data),l(a()().format("HH:mm:ss:SSS")),t.ok?m(void 0):m("".concat(n.errorType,"\r\n").concat(null===n||void 0===n?void 0:n.error)),e.next=16;break;case 13:e.prev=13,e.t0=e.catch(1),e.t0 instanceof Error&&m("".concat(e.t0.name,": ").concat(e.t0.message));case 16:f(!1);case 17:case"end":return e.stop()}}),e,null,[[1,13]])})));return function(){return e.apply(this,arguments)}}();return(0,r.useEffect)((function(){g().catch(console.error)}),[p]),{data:n,lastUpdated:u,isLoading:s,error:h,fetchData:g}}(),i=n.data,o=n.lastUpdated,u=n.isLoading,l=n.error,c=n.fetchData,s=(0,r.useMemo)((function(){return i.map((function(e){var t=a()(e.start).tz().format(Zt),n=a()(e.end).tz().format(Zt);return{duration:e.duration,remote_addr:e.remote_addr,query:e.query,args:"".concat(t," to ").concat(n,", step=").concat(cn(e.step)),data:JSON.stringify(e,null,2)}}))}),[i,t]),f=(0,r.useMemo)((function(){if(null===s||void 0===s||!s.length)return[];var e=Object.keys(s[0]),t={remote_addr:"client address"},n=["data"];return e.filter((function(e){return!n.includes(e)})).map((function(e){return{key:e,title:t[e]||e}}))}),[s]),d=function(){var e=Bi(Li().mark((function e(){return Li().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:c().catch(console.error);case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return Yt("div",{className:"vm-active-queries",children:[u&&Yt(Us,{}),Yt("div",{className:"vm-active-queries-header",children:[!s.length&&!l&&Yt(ai,{variant:"info",children:"There are currently no active queries running"}),l&&Yt(ai,{variant:"error",children:l}),Yt("div",{className:"vm-active-queries-header-controls",children:[Yt(mi,{variant:"contained",onClick:d,startIcon:Yt(Jn,{}),children:"Update"}),Yt("div",{className:"vm-active-queries-header__update-msg",children:["Last updated: ",o]})]})]}),!!s.length&&Yt("div",{className:Fr()({"vm-block":!0,"vm-block_mobile":e}),children:Yt(vh,{rows:s,columns:f,defaultOrderBy:"duration",copyToClipboard:"data",paginationOffset:{startIndex:0,endIndex:1/0}})})]})},yh=function(){var e=v((0,r.useState)(!1),2),t=e[0],n=e[1];return Yt(Ht.HY,{children:Yt(Xe,{children:Yt(fi,{children:Yt(Ht.HY,{children:[Yt(zd,{onLoaded:n}),t&&Yt(Ue,{children:Yt($e,{path:"/",element:Yt(Na,{}),children:[Yt($e,{path:pt.home,element:Yt(lf,{})}),Yt($e,{path:pt.metrics,element:Yt(rh,{})}),Yt($e,{path:pt.cardinality,element:Yt(Nd,{})}),Yt($e,{path:pt.topQueries,element:Yt(Pd,{})}),Yt($e,{path:pt.trace,element:Yt($d,{})}),Yt($e,{path:pt.dashboards,element:Yt(nd,{})}),Yt($e,{path:pt.withTemplate,element:Yt(fh,{})}),Yt($e,{path:pt.relabel,element:Yt(ph,{})}),Yt($e,{path:pt.activeQueries,element:Yt(gh,{})}),Yt($e,{path:pt.icons,element:Yt(ih,{})})]})})]})})})})},_h=function(e){e&&n.e(522).then(n.bind(n,522)).then((function(t){var n=t.getCLS,r=t.getFID,i=t.getFCP,a=t.getLCP,o=t.getTTFB;n(e),r(e),i(e),a(e),o(e)}))},bh=document.getElementById("root");bh&&(0,r.render)(Yt(yh,{}),bh),_h()}()}(); \ No newline at end of file diff --git a/app/vmselect/vmui/static/media/Lato-Bold.32360ba4b57802daa4d6.ttf b/app/vmselect/vmui/static/media/Lato-Bold.32360ba4b57802daa4d6.ttf deleted file mode 100644 index 59c46f128..000000000 Binary files a/app/vmselect/vmui/static/media/Lato-Bold.32360ba4b57802daa4d6.ttf and /dev/null differ diff --git a/app/vmselect/vmui/static/media/Lato-Regular.d714fec1633b69a9c2e9.ttf b/app/vmselect/vmui/static/media/Lato-Regular.d714fec1633b69a9c2e9.ttf deleted file mode 100644 index 64ac535cb..000000000 Binary files a/app/vmselect/vmui/static/media/Lato-Regular.d714fec1633b69a9c2e9.ttf and /dev/null differ diff --git a/app/vmselect/vmui/static/media/MetricsQL.957b90ab4cb4852eec26.md b/app/vmselect/vmui/static/media/MetricsQL.957b90ab4cb4852eec26.md new file mode 100644 index 000000000..81df16782 --- /dev/null +++ b/app/vmselect/vmui/static/media/MetricsQL.957b90ab4cb4852eec26.md @@ -0,0 +1,2014 @@ +--- +sort: 14 +weight: 14 +title: MetricsQL +menu: + docs: + parent: "victoriametrics" + weight: 14 +aliases: +- /ExtendedPromQL.html +- /MetricsQL.html +--- + +# MetricsQL + +[VictoriaMetrics](https://github.com/VictoriaMetrics/VictoriaMetrics) implements MetricsQL - +query language inspired by [PromQL](https://prometheus.io/docs/prometheus/latest/querying/basics/). +MetricsQL is backwards-compatible with PromQL, so Grafana dashboards backed by Prometheus datasource should work +the same after switching from Prometheus to VictoriaMetrics. +However, there are some [intentional differences](https://medium.com/@romanhavronenko/victoriametrics-promql-compliance-d4318203f51e) between these two languages. + +[Standalone MetricsQL package](https://godoc.org/github.com/VictoriaMetrics/metricsql) can be used for parsing MetricsQL in external apps. + +If you are unfamiliar with PromQL, then it is suggested reading [this tutorial for beginners](https://medium.com/@valyala/promql-tutorial-for-beginners-9ab455142085). + +The following functionality is implemented differently in MetricsQL compared to PromQL. This improves user experience: + +* MetricsQL takes into account the previous point before the window in square brackets for range functions such as [rate](#rate) and [increase](#increase). + This allows returning the exact results users expect for `increase(metric[$__interval])` queries instead of incomplete results Prometheus returns for such queries. +* MetricsQL doesn't extrapolate range function results. This addresses [this issue from Prometheus](https://github.com/prometheus/prometheus/issues/3746). + See technical details about VictoriaMetrics and Prometheus calculations for [rate](#rate) + and [increase](#increase) [in this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1215#issuecomment-850305711). +* MetricsQL returns the expected non-empty responses for [rate](#rate) with `step` values smaller than scrape interval. + This addresses [this issue from Grafana](https://github.com/grafana/grafana/issues/11451). + See also [this blog post](https://www.percona.com/blog/2020/02/28/better-prometheus-rate-function-with-victoriametrics/). +* MetricsQL treats `scalar` type the same as `instant vector` without labels, since subtle differences between these types usually confuse users. + See [the corresponding Prometheus docs](https://prometheus.io/docs/prometheus/latest/querying/basics/#expression-language-data-types) for details. +* MetricsQL removes all the `NaN` values from the output, so some queries like `(-1)^0.5` return empty results in VictoriaMetrics, + while returning a series of `NaN` values in Prometheus. Note that Grafana doesn't draw any lines or dots for `NaN` values, + so the end result looks the same for both VictoriaMetrics and Prometheus. +* MetricsQL keeps metric names after applying functions, which don't change the meaning of the original time series. + For example, [min_over_time(foo)](#min_over_time) or [round(foo)](#round) leaves `foo` metric name in the result. + See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/674) for details. + +Read more about the differences between PromQL and MetricsQL in [this article](https://medium.com/@romanhavronenko/victoriametrics-promql-compliance-d4318203f51e). + +Other PromQL functionality should work the same in MetricsQL. +[File an issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues) if you notice discrepancies between PromQL and MetricsQL results other than mentioned above. + +## MetricsQL features + +MetricsQL implements [PromQL](https://medium.com/@valyala/promql-tutorial-for-beginners-9ab455142085) +and provides additional functionality mentioned below, which is aimed towards solving practical cases. +Feel free [filing a feature request](https://github.com/VictoriaMetrics/VictoriaMetrics/issues) if you think MetricsQL misses certain useful functionality. + +This functionality can be evaluated at [VictoriaMetrics playground](https://play.victoriametrics.com/select/accounting/1/6a716b0f-38bc-4856-90ce-448fd713e3fe/prometheus/graph/) +or at your own [VictoriaMetrics instance](https://docs.victoriametrics.com/#how-to-start-victoriametrics). + +The list of MetricsQL features on top of PromQL: + +* Graphite-compatible filters can be passed via `{__graphite__="foo.*.bar"}` syntax. + See [these docs](https://docs.victoriametrics.com/#selecting-graphite-metrics). + VictoriaMetrics also can be used as Graphite datasource in Grafana. + See [these docs](https://docs.victoriametrics.com/#graphite-api-usage) for details. + See also [label_graphite_group](#label_graphite_group) function, which can be used for extracting the given groups from Graphite metric name. +* Lookbehind window in square brackets may be omitted. VictoriaMetrics automatically selects the lookbehind window + depending on the current step used for building the graph (e.g. `step` query arg passed to [/api/v1/query_range](https://docs.victoriametrics.com/keyConcepts.html#range-query)). + For instance, the following query is valid in VictoriaMetrics: `rate(node_network_receive_bytes_total)`. + It is equivalent to `rate(node_network_receive_bytes_total[$__interval])` when used in Grafana. +* Numeric values can contain `_` delimiters for better readability. For example, `1_234_567_890` can be used in queries instead of `1234567890`. +* [Series selectors](https://docs.victoriametrics.com/keyConcepts.html#filtering) accept multiple `or` filters. For example, `{env="prod",job="a" or env="dev",job="b"}` + selects series with either `{env="prod",job="a"}` or `{env="dev",job="b"}` labels. + See [these docs](https://docs.victoriametrics.com/keyConcepts.html#filtering-by-multiple-or-filters) for details. +* Support for `group_left(*)` and `group_right(*)` for copying all the labels from time series on the `one` side + of [many-to-one operations](https://prometheus.io/docs/prometheus/latest/querying/operators/#many-to-one-and-one-to-many-vector-matches). + The copied label names may clash with the existing label names, so MetricsQL provides an ability to add prefix to the copied metric names + via `group_left(*) prefix "..."` syntax. + For example, the following query copies all the `namespace`-related labels from `kube_namespace_labels` to `kube_pod_info` series, + while adding `ns_` prefix to the copied labels: `kube_pod_info * on(namespace) group_left(*) prefix "ns_" kube_namespace_labels`. + Labels from the `on()` list aren't copied. +* [Aggregate functions](#aggregate-functions) accept arbitrary number of args. + For example, `avg(q1, q2, q3)` would return the average values for every point across time series returned by `q1`, `q2` and `q3`. +* [@ modifier](https://prometheus.io/docs/prometheus/latest/querying/basics/#modifier) can be put anywhere in the query. + For example, `sum(foo) @ end()` calculates `sum(foo)` at the `end` timestamp of the selected time range `[start ... end]`. +* Arbitrary subexpression can be used as [@ modifier](https://prometheus.io/docs/prometheus/latest/querying/basics/#modifier). + For example, `foo @ (end() - 1h)` calculates `foo` at the `end - 1 hour` timestamp on the selected time range `[start ... end]`. +* [offset](https://prometheus.io/docs/prometheus/latest/querying/basics/#offset-modifier), lookbehind window in square brackets + and `step` value for [subquery](#subqueries) may refer to the current step aka `$__interval` value from Grafana with `[Ni]` syntax. + For instance, `rate(metric[10i] offset 5i)` would return per-second rate over a range covering 10 previous steps with the offset of 5 steps. +* [offset](https://prometheus.io/docs/prometheus/latest/querying/basics/#offset-modifier) may be put anywhere in the query. For instance, `sum(foo) offset 24h`. +* Lookbehind window in square brackets and [offset](https://prometheus.io/docs/prometheus/latest/querying/basics/#offset-modifier) may be fractional. + For instance, `rate(node_network_receive_bytes_total[1.5m] offset 0.5d)`. +* The duration suffix is optional. The duration is in seconds if the suffix is missing. + For example, `rate(m[300] offset 1800)` is equivalent to `rate(m[5m]) offset 30m`. +* The duration can be placed anywhere in the query. For example, `sum_over_time(m[1h]) / 1h` is equivalent to `sum_over_time(m[1h]) / 3600`. +* Numeric values can have `K`, `Ki`, `M`, `Mi`, `G`, `Gi`, `T` and `Ti` suffixes. For example, `8K` is equivalent to `8000`, while `1.2Mi` is equivalent to `1.2*1024*1024`. +* Trailing commas on all the lists are allowed - label filters, function args and with expressions. + For instance, the following queries are valid: `m{foo="bar",}`, `f(a, b,)`, `WITH (x=y,) x`. + This simplifies maintenance of multi-line queries. +* Metric names and label names may contain any unicode letter. For example `температура{город="Киев"}` is a value MetricsQL expression. +* Metric names and labels names may contain escaped chars. For example, `foo\-bar{baz\=aa="b"}` is valid expression. + It returns time series with name `foo-bar` containing label `baz=aa` with value `b`. + Additionally, the following escape sequences are supported: + - `\xXX`, where `XX` is hexadecimal representation of the escaped ascii char. + - `\uXXXX`, where `XXXX` is a hexadecimal representation of the escaped unicode char. +* Aggregate functions support optional `limit N` suffix in order to limit the number of output series. + For example, `sum(x) by (y) limit 3` limits the number of output time series after the aggregation to 3. + All the other time series are dropped. +* [histogram_quantile](#histogram_quantile) accepts optional third arg - `boundsLabel`. + In this case it returns `lower` and `upper` bounds for the estimated percentile. + See [this issue for details](https://github.com/prometheus/prometheus/issues/5706). +* `default` binary operator. `q1 default q2` fills gaps in `q1` with the corresponding values from `q2`. +* `if` binary operator. `q1 if q2` removes values from `q1` for missing values from `q2`. +* `ifnot` binary operator. `q1 ifnot q2` removes values from `q1` for existing values from `q2`. +* `WITH` templates. This feature simplifies writing and managing complex queries. + Go to [WITH templates playground](https://play.victoriametrics.com/select/accounting/1/6a716b0f-38bc-4856-90ce-448fd713e3fe/expand-with-exprs) and try it. +* String literals may be concatenated. This is useful with `WITH` templates: + `WITH (commonPrefix="long_metric_prefix_") {__name__=commonPrefix+"suffix1"} / {__name__=commonPrefix+"suffix2"}`. +* `keep_metric_names` modifier can be applied to all the [rollup functions](#rollup-functions), [transform functions](#transform-functions) and [binary operators](https://prometheus.io/docs/prometheus/latest/querying/operators/#binary-operators). + This modifier prevents from dropping metric names in function results. See [these docs](#keep_metric_names). + +## keep_metric_names + +By default, metric names are dropped after applying functions or [binary operators](https://prometheus.io/docs/prometheus/latest/querying/operators/#binary-operators), +since they may change the meaning of the original time series. +This may result in `duplicate time series` error when the function is applied to multiple time series with different names. +This error can be fixed by applying `keep_metric_names` modifier to the function or binary operator. + +For example: +- `rate({__name__=~"foo|bar"}) keep_metric_names` leaves `foo` and `bar` metric names in the returned time series. +- `({__name__=~"foo|bar"} / 10) keep_metric_names` leaves `foo` and `bar` metric names in the returned time series. + +## MetricsQL functions + +If you are unfamiliar with PromQL, then please read [this tutorial](https://medium.com/@valyala/promql-tutorial-for-beginners-9ab455142085) at first. + +MetricsQL provides the following functions: + +* [Rollup functions](#rollup-functions) +* [Transform functions](#transform-functions) +* [Label manipulation functions](#label-manipulation-functions) +* [Aggregate functions](#aggregate-functions) + +### Rollup functions + +**Rollup functions** (aka range functions or window functions) calculate rollups over **raw samples** +on the given lookbehind window for the [selected time series](https://docs.victoriametrics.com/keyConcepts.html#filtering). +For example, `avg_over_time(temperature[24h])` calculates the average temperature over raw samples for the last 24 hours. + +Additional details: + +* If rollup functions are used for building graphs in Grafana, then the rollup is calculated independently per each point on the graph. + For example, every point for `avg_over_time(temperature[24h])` graph shows the average temperature for the last 24 hours ending at this point. + The interval between points is set as `step` query arg passed by Grafana to [/api/v1/query_range](https://docs.victoriametrics.com/keyConcepts.html#range-query). +* If the given [series selector](https://docs.victoriametrics.com/keyConcepts.html#filtering) returns multiple time series, + then rollups are calculated individually per each returned series. +* If lookbehind window in square brackets is missing, then MetricsQL automatically sets the lookbehind window + to the interval between points on the graph (aka `step` query arg at [/api/v1/query_range](https://docs.victoriametrics.com/keyConcepts.html#range-query), + `$__interval` value from Grafana or `1i` duration in MetricsQL). + For example, `rate(http_requests_total)` is equivalent to `rate(http_requests_total[$__interval])` in Grafana. + It is also equivalent to `rate(http_requests_total[1i])`. +* Every [series selector](https://docs.victoriametrics.com/keyConcepts.html#filtering) in MetricsQL must be wrapped into a rollup function. + Otherwise, it is automatically wrapped into [default_rollup](#default_rollup). For example, `foo{bar="baz"}` + is automatically converted to `default_rollup(foo{bar="baz"}[1i])` before performing the calculations. +* If something other than [series selector](https://docs.victoriametrics.com/keyConcepts.html#filtering) is passed to rollup function, + then the inner arg is automatically converted to a [subquery](#subqueries). +* All the rollup functions accept optional `keep_metric_names` modifier. If it is set, then the function keeps metric names in results. + See [these docs](#keep_metric_names). + +See also [implicit query conversions](#implicit-query-conversions). + +The list of supported rollup functions: + +#### absent_over_time + +`absent_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which returns 1 +if the given lookbehind window `d` doesn't contain raw samples. Otherwise, it returns an empty result. + +This function is supported by PromQL. See also [present_over_time](#present_over_time). + +#### aggr_over_time + +`aggr_over_time(("rollup_func1", "rollup_func2", ...), series_selector[d])` is a [rollup function](#rollup-functions), +which calculates all the listed `rollup_func*` for raw samples on the given lookbehind window `d`. +The calculations are performed individually per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +`rollup_func*` can contain any rollup function. For instance, `aggr_over_time(("min_over_time", "max_over_time", "rate"), m[d])` +would calculate [min_over_time](#min_over_time), [max_over_time](#max_over_time) and [rate](#rate) for `m[d]`. + +#### ascent_over_time + +`ascent_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates +ascent of raw sample values on the given lookbehind window `d`. The calculations are performed individually +per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +This function is useful for tracking height gains in GPS tracking. Metric names are stripped from the resulting rollups. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [descent_over_time](#descent_over_time). + +#### avg_over_time + +`avg_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the average value +over raw samples on the given lookbehind window `d` per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +This function is supported by PromQL. See also [median_over_time](#median_over_time). + +#### changes + +`changes(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the number of times +the raw samples changed on the given lookbehind window `d` per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Unlike `changes()` in Prometheus it takes into account the change from the last sample before the given lookbehind window `d`. +See [this article](https://medium.com/@romanhavronenko/victoriametrics-promql-compliance-d4318203f51e) for details. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [changes_prometheus](#changes_prometheus). + +#### changes_prometheus + +`changes_prometheus(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the number of times +the raw samples changed on the given lookbehind window `d` per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +It doesn't take into account the change from the last sample before the given lookbehind window `d` in the same way as Prometheus does. +See [this article](https://medium.com/@romanhavronenko/victoriametrics-promql-compliance-d4318203f51e) for details. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [changes](#changes). + +#### count_eq_over_time + +`count_eq_over_time(series_selector[d], eq)` is a [rollup function](#rollup-functions), which calculates the number of raw samples +on the given lookbehind window `d`, which are equal to `eq`. It is calculated independently per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [count_over_time](#count_over_time). + +#### count_gt_over_time + +`count_gt_over_time(series_selector[d], gt)` is a [rollup function](#rollup-functions), which calculates the number of raw samples +on the given lookbehind window `d`, which are bigger than `gt`. It is calculated independently per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [count_over_time](#count_over_time). + +#### count_le_over_time + +`count_le_over_time(series_selector[d], le)` is a [rollup function](#rollup-functions), which calculates the number of raw samples +on the given lookbehind window `d`, which don't exceed `le`. It is calculated independently per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [count_over_time](#count_over_time). + +#### count_ne_over_time + +`count_ne_over_time(series_selector[d], ne)` is a [rollup function](#rollup-functions), which calculates the number of raw samples +on the given lookbehind window `d`, which aren't equal to `ne`. It is calculated independently per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [count_over_time](#count_over_time). + +#### count_over_time + +`count_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the number of raw samples +on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [count_le_over_time](#count_le_over_time), [count_gt_over_time](#count_gt_over_time), +[count_eq_over_time](#count_eq_over_time) and [count_ne_over_time](#count_ne_over_time). + +#### decreases_over_time + +`decreases_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the number of raw sample value decreases +over the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [increases_over_time](#increases_over_time). + +#### default_rollup + +`default_rollup(series_selector[d])` is a [rollup function](#rollup-functions), which returns the last raw sample value on the given lookbehind window `d` +per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +#### delta + +`delta(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the difference between +the last sample before the given lookbehind window `d` and the last sample at the given lookbehind window `d` +per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +The behaviour of `delta()` function in MetricsQL is slightly different to the behaviour of `delta()` function in Prometheus. +See [this article](https://medium.com/@romanhavronenko/victoriametrics-promql-compliance-d4318203f51e) for details. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [increase](#increase) and [delta_prometheus](#delta_prometheus). + +#### delta_prometheus + +`delta_prometheus(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the difference between +the first and the last samples at the given lookbehind window `d` per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +The behaviour of `delta_prometheus()` is close to the behaviour of `delta()` function in Prometheus. +See [this article](https://medium.com/@romanhavronenko/victoriametrics-promql-compliance-d4318203f51e) for details. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [delta](#delta). + +#### deriv + +`deriv(series_selector[d])` is a [rollup function](#rollup-functions), which calculates per-second derivative over the given lookbehind window `d` +per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). +The derivative is calculated using linear regression. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [deriv_fast](#deriv_fast) and [ideriv](#ideriv). + +#### deriv_fast + +`deriv_fast(series_selector[d])` is a [rollup function](#rollup-functions), which calculates per-second derivative +using the first and the last raw samples on the given lookbehind window `d` per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [deriv](#deriv) and [ideriv](#ideriv). + +#### descent_over_time + +`descent_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates descent of raw sample values +on the given lookbehind window `d`. The calculations are performed individually per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +This function is useful for tracking height loss in GPS tracking. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [ascent_over_time](#ascent_over_time). + +#### distinct_over_time + +`distinct_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which returns the number of distinct raw sample values +on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +#### duration_over_time + +`duration_over_time(series_selector[d], max_interval)` is a [rollup function](#rollup-functions), which returns the duration in seconds +when time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering) were present +over the given lookbehind window `d`. It is expected that intervals between adjacent samples per each series don't exceed the `max_interval`. +Otherwise, such intervals are considered as gaps and aren't counted. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [lifetime](#lifetime) and [lag](#lag). + +#### first_over_time + +`first_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which returns the first raw sample value +on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +See also [last_over_time](#last_over_time) and [tfirst_over_time](#tfirst_over_time). + +#### geomean_over_time + +`geomean_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates [geometric mean](https://en.wikipedia.org/wiki/Geometric_mean) +over raw samples on the given lookbehind window `d` per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +#### histogram_over_time + +`histogram_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates +[VictoriaMetrics histogram](https://godoc.org/github.com/VictoriaMetrics/metrics#Histogram) over raw samples on the given lookbehind window `d`. +It is calculated individually per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). +The resulting histograms are useful to pass to [histogram_quantile](#histogram_quantile) for calculating quantiles +over multiple [gauges](https://docs.victoriametrics.com/keyConcepts.html#gauge). +For example, the following query calculates median temperature by country over the last 24 hours: + +`histogram_quantile(0.5, sum(histogram_over_time(temperature[24h])) by (vmrange,country))`. + +#### hoeffding_bound_lower + +`hoeffding_bound_lower(phi, series_selector[d])` is a [rollup function](#rollup-functions), which calculates +lower [Hoeffding bound](https://en.wikipedia.org/wiki/Hoeffding%27s_inequality) for the given `phi` in the range `[0...1]`. + +See also [hoeffding_bound_upper](#hoeffding_bound_upper). + +#### hoeffding_bound_upper + +`hoeffding_bound_upper(phi, series_selector[d])` is a [rollup function](#rollup-functions), which calculates +upper [Hoeffding bound](https://en.wikipedia.org/wiki/Hoeffding%27s_inequality) for the given `phi` in the range `[0...1]`. + +See also [hoeffding_bound_lower](#hoeffding_bound_lower). + +#### holt_winters + +`holt_winters(series_selector[d], sf, tf)` is a [rollup function](#rollup-functions), which calculates Holt-Winters value +(aka [double exponential smoothing](https://en.wikipedia.org/wiki/Exponential_smoothing#Double_exponential_smoothing)) for raw samples +over the given lookbehind window `d` using the given smoothing factor `sf` and the given trend factor `tf`. +Both `sf` and `tf` must be in the range `[0...1]`. It is expected that the [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering) +returns time series of [gauge type](https://docs.victoriametrics.com/keyConcepts.html#gauge). + +This function is supported by PromQL. See also [range_linear_regression](#range_linear_regression). + +#### idelta + +`idelta(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the difference between the last two raw samples +on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [delta](#delta). + +#### ideriv + +`ideriv(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the per-second derivative based on the last two raw samples +over the given lookbehind window `d`. The derivative is calculated independently per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [deriv](#deriv). + +#### increase + +`increase(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the increase over the given lookbehind window `d` +per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). +It is expected that the `series_selector` returns time series of [counter type](https://docs.victoriametrics.com/keyConcepts.html#counter). + +Unlike Prometheus, it takes into account the last sample before the given lookbehind window `d` when calculating the result. +See [this article](https://medium.com/@romanhavronenko/victoriametrics-promql-compliance-d4318203f51e) for details. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [increase_pure](#increase_pure), [increase_prometheus](#increase_prometheus) and [delta](#delta). + +#### increase_prometheus + +`increase_prometheus(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the increase +over the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). +It is expected that the `series_selector` returns time series of [counter type](https://docs.victoriametrics.com/keyConcepts.html#counter). +It doesn't take into account the last sample before the given lookbehind window `d` when calculating the result in the same way as Prometheus does. +See [this article](https://medium.com/@romanhavronenko/victoriametrics-promql-compliance-d4318203f51e) for details. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [increase_pure](#increase_pure) and [increase](#increase). + +#### increase_pure + +`increase_pure(series_selector[d])` is a [rollup function](#rollup-functions), which works the same as [increase](#increase) except +of the following corner case - it assumes that [counters](https://docs.victoriametrics.com/keyConcepts.html#counter) always start from 0, +while [increase](#increase) ignores the first value in a series if it is too big. + +#### increases_over_time + +`increases_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the number of raw sample value increases +over the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [decreases_over_time](#decreases_over_time). + +#### integrate + +`integrate(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the integral over raw samples on the given lookbehind window `d` +per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +#### irate + +`irate(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the "instant" per-second increase rate over the last two raw samples +on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). +It is expected that the `series_selector` returns time series of [counter type](https://docs.victoriametrics.com/keyConcepts.html#counter). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [rate](#rate) and [rollup_rate](#rollup_rate). + +#### lag + +`lag(series_selector[d])` is a [rollup function](#rollup-functions), which returns the duration in seconds between the last sample +on the given lookbehind window `d` and the timestamp of the current point. It is calculated independently per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [lifetime](#lifetime) and [duration_over_time](#duration_over_time). + +#### last_over_time + +`last_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which returns the last raw sample value on the given lookbehind window `d` +per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +This function is supported by PromQL. See also [first_over_time](#first_over_time) and [tlast_over_time](#tlast_over_time). + +#### lifetime + +`lifetime(series_selector[d])` is a [rollup function](#rollup-functions), which returns the duration in seconds between the last and the first sample +on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [duration_over_time](#duration_over_time) and [lag](#lag). + +#### mad_over_time + +`mad_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates [median absolute deviation](https://en.wikipedia.org/wiki/Median_absolute_deviation) +over raw samples on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +See also [mad](#mad) and [range_mad](#range_mad). + +#### max_over_time + +`max_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the maximum value over raw samples +on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +This function is supported by PromQL. See also [tmax_over_time](#tmax_over_time). + +#### median_over_time + +`median_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates median value over raw samples +on the given lookbehind window `d` per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +See also [avg_over_time](#avg_over_time). + +#### min_over_time + +`min_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the minimum value over raw samples +on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +This function is supported by PromQL. See also [tmin_over_time](#tmin_over_time). + +#### mode_over_time + +`mode_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates [mode](https://en.wikipedia.org/wiki/Mode_(statistics)) +for raw samples on the given lookbehind window `d`. It is calculated individually per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). It is expected that raw sample values are discrete. + +#### predict_linear + +`predict_linear(series_selector[d], t)` is a [rollup function](#rollup-functions), which calculates the value `t` seconds in the future using +linear interpolation over raw samples on the given lookbehind window `d`. The predicted value is calculated individually per each time series +returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +This function is supported by PromQL. See also [range_linear_regression](#range_linear_regression). + +#### present_over_time + +`present_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which returns 1 if there is at least a single raw sample +on the given lookbehind window `d`. Otherwise, an empty result is returned. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. + +#### quantile_over_time + +`quantile_over_time(phi, series_selector[d])` is a [rollup function](#rollup-functions), which calculates `phi`-quantile over raw samples +on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). +The `phi` value must be in the range `[0...1]`. + +This function is supported by PromQL. See also [quantiles_over_time](#quantiles_over_time). + +#### quantiles_over_time + +`quantiles_over_time("phiLabel", phi1, ..., phiN, series_selector[d])` is a [rollup function](#rollup-functions), which calculates `phi*`-quantiles +over raw samples on the given lookbehind window `d` per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). +The function returns individual series per each `phi*` with `{phiLabel="phi*"}` label. `phi*` values must be in the range `[0...1]`. + +See also [quantile_over_time](#quantile_over_time). + +#### range_over_time + +`range_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates value range over raw samples +on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). +E.g. it calculates `max_over_time(series_selector[d]) - min_over_time(series_selector[d])`. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +#### rate + +`rate(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the average per-second increase rate +over the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). +It is expected that the `series_selector` returns time series of [counter type](https://docs.victoriametrics.com/keyConcepts.html#counter). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [irate](#irate) and [rollup_rate](#rollup_rate). + +#### rate_over_sum + +`rate_over_sum(series_selector[d])` is a [rollup function](#rollup-functions), which calculates per-second rate over the sum of raw samples +on the given lookbehind window `d`. The calculations are performed individually per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +#### resets + +`resets(series_selector[d])` is a [rollup function](#rollup-functions), which returns the number +of [counter](https://docs.victoriametrics.com/keyConcepts.html#counter) resets over the given lookbehind window `d` +per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). +It is expected that the `series_selector` returns time series of [counter type](https://docs.victoriametrics.com/keyConcepts.html#counter). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. + +#### rollup + +`rollup(series_selector[d])` is a [rollup function](#rollup-functions), which calculates `min`, `max` and `avg` values for raw samples +on the given lookbehind window `d` and returns them in time series with `rollup="min"`, `rollup="max"` and `rollup="avg"` additional labels. +These values are calculated individually per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Optional 2nd argument `"min"`, `"max"` or `"avg"` can be passed to keep only one calculation result and without adding a label. + +#### rollup_candlestick + +`rollup_candlestick(series_selector[d])` is a [rollup function](#rollup-functions), which calculates `open`, `high`, `low` and `close` values (aka OHLC) +over raw samples on the given lookbehind window `d` and returns them in time series with `rollup="open"`, `rollup="high"`, `rollup="low"` and `rollup="close"` additional labels. +The calculations are performed individually per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). This function is useful for financial applications. + +Optional 2nd argument `"min"`, `"max"` or `"avg"` can be passed to keep only one calculation result and without adding a label. + +#### rollup_delta + +`rollup_delta(series_selector[d])` is a [rollup function](#rollup-functions), which calculates differences between adjacent raw samples +on the given lookbehind window `d` and returns `min`, `max` and `avg` values for the calculated differences +and returns them in time series with `rollup="min"`, `rollup="max"` and `rollup="avg"` additional labels. +The calculations are performed individually per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Optional 2nd argument `"min"`, `"max"` or `"avg"` can be passed to keep only one calculation result and without adding a label. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [rollup_increase](#rollup_increase). + +#### rollup_deriv + +`rollup_deriv(series_selector[d])` is a [rollup function](#rollup-functions), which calculates per-second derivatives +for adjacent raw samples on the given lookbehind window `d` and returns `min`, `max` and `avg` values for the calculated per-second derivatives +and returns them in time series with `rollup="min"`, `rollup="max"` and `rollup="avg"` additional labels. +The calculations are performed individually per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Optional 2nd argument `"min"`, `"max"` or `"avg"` can be passed to keep only one calculation result and without adding a label. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +#### rollup_increase + +`rollup_increase(series_selector[d])` is a [rollup function](#rollup-functions), which calculates increases for adjacent raw samples +on the given lookbehind window `d` and returns `min`, `max` and `avg` values for the calculated increases +and returns them in time series with `rollup="min"`, `rollup="max"` and `rollup="avg"` additional labels. +The calculations are performed individually per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Optional 2nd argument `"min"`, `"max"` or `"avg"` can be passed to keep only one calculation result and without adding a label. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. See also [rollup_delta](#rollup_delta). + +#### rollup_rate + +`rollup_rate(series_selector[d])` is a [rollup function](#rollup-functions), which calculates per-second change rates for adjacent raw samples +on the given lookbehind window `d` and returns `min`, `max` and `avg` values for the calculated per-second change rates +and returns them in time series with `rollup="min"`, `rollup="max"` and `rollup="avg"` additional labels. + +See [this article](https://valyala.medium.com/why-irate-from-prometheus-doesnt-capture-spikes-45f9896d7832) in order to understand better +when to use `rollup_rate()`. + +Optional 2nd argument `"min"`, `"max"` or `"avg"` can be passed to keep only one calculation result and without adding a label. + +The calculations are performed individually per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +#### rollup_scrape_interval + +`rollup_scrape_interval(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the interval in seconds between +adjacent raw samples on the given lookbehind window `d` and returns `min`, `max` and `avg` values for the calculated interval +and returns them in time series with `rollup="min"`, `rollup="max"` and `rollup="avg"` additional labels. +The calculations are performed individually per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Optional 2nd argument `"min"`, `"max"` or `"avg"` can be passed to keep only one calculation result and without adding a label. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. See also [scrape_interval](#scrape_interval). + +#### scrape_interval + +`scrape_interval(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the average interval in seconds between raw samples +on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [rollup_scrape_interval](#rollup_scrape_interval). + +#### share_gt_over_time + +`share_gt_over_time(series_selector[d], gt)` is a [rollup function](#rollup-functions), which returns share (in the range `[0...1]`) of raw samples +on the given lookbehind window `d`, which are bigger than `gt`. It is calculated independently per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +This function is useful for calculating SLI and SLO. Example: `share_gt_over_time(up[24h], 0)` - returns service availability for the last 24 hours. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [share_le_over_time](#share_le_over_time). + +#### share_le_over_time + +`share_le_over_time(series_selector[d], le)` is a [rollup function](#rollup-functions), which returns share (in the range `[0...1]`) of raw samples +on the given lookbehind window `d`, which are smaller or equal to `le`. It is calculated independently per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +This function is useful for calculating SLI and SLO. Example: `share_le_over_time(memory_usage_bytes[24h], 100*1024*1024)` returns +the share of time series values for the last 24 hours when memory usage was below or equal to 100MB. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [share_gt_over_time](#share_gt_over_time). + +#### share_eq_over_time + +`share_eq_over_time(series_selector[d], eq)` is a [rollup function](#rollup-functions), which returns share (in the range `[0...1]`) of raw samples +on the given lookbehind window `d`, which are equal to `eq`. It is calculated independently per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +#### stale_samples_over_time + +`stale_samples_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the number +of [staleness markers](https://docs.victoriametrics.com/vmagent.html#prometheus-staleness-markers) on the given lookbehind window `d` +per each time series matching the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +#### stddev_over_time + +`stddev_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates standard deviation over raw samples +on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [stdvar_over_time](#stdvar_over_time). + +#### stdvar_over_time + +`stdvar_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates standard variance over raw samples +on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [stddev_over_time](#stddev_over_time). + +#### sum_over_time + +`sum_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the sum of raw sample values +on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. + +#### sum2_over_time + +`sum2_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which calculates the sum of squares for raw sample values +on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +#### timestamp + +`timestamp(series_selector[d])` is a [rollup function](#rollup-functions), which returns the timestamp in seconds for the last raw sample +on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [timestamp_with_name](#timestamp_with_name). + +#### timestamp_with_name + +`timestamp_with_name(series_selector[d])` is a [rollup function](#rollup-functions), which returns the timestamp in seconds for the last raw sample +on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are preserved in the resulting rollups. + +See also [timestamp](#timestamp). + +#### tfirst_over_time + +`tfirst_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which returns the timestamp in seconds for the first raw sample +on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [first_over_time](#first_over_time). + +#### tlast_change_over_time + +`tlast_change_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which returns the timestamp in seconds for the last change +per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering) on the given lookbehind window `d`. + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [last_over_time](#last_over_time). + +#### tlast_over_time + +`tlast_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which is an alias for [timestamp](#timestamp). + +See also [tlast_change_over_time](#tlast_change_over_time). + +#### tmax_over_time + +`tmax_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which returns the timestamp in seconds for the raw sample +with the maximum value on the given lookbehind window `d`. It is calculated independently per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [max_over_time](#max_over_time). + +#### tmin_over_time + +`tmin_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which returns the timestamp in seconds for the raw sample +with the minimum value on the given lookbehind window `d`. It is calculated independently per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [min_over_time](#min_over_time). + +#### zscore_over_time + +`zscore_over_time(series_selector[d])` is a [rollup function](#rollup-functions), which returns [z-score](https://en.wikipedia.org/wiki/Standard_score) +for raw samples on the given lookbehind window `d`. It is calculated independently per each time series returned +from the given [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering). + +Metric names are stripped from the resulting rollups. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +See also [zscore](#zscore) and [range_trim_zscore](#range_trim_zscore). + + +### Transform functions + +**Transform functions** calculate transformations over [rollup results](#rollup-functions). +For example, `abs(delta(temperature[24h]))` calculates the absolute value for every point of every time series +returned from the rollup `delta(temperature[24h])`. + +Additional details: + +* If transform function is applied directly to a [series selector](https://docs.victoriametrics.com/keyConcepts.html#filtering), + then the [default_rollup()](#default_rollup) function is automatically applied before calculating the transformations. + For example, `abs(temperature)` is implicitly transformed to `abs(default_rollup(temperature[1i]))`. +* All the transform functions accept optional `keep_metric_names` modifier. If it is set, + then the function doesn't drop metric names from the resulting time series. See [these docs](#keep_metric_names). + +See also [implicit query conversions](#implicit-query-conversions). + +The list of supported transform functions: + +#### abs + +`abs(q)` is a [transform function](#transform-functions), which calculates the absolute value for every point of every time series returned by `q`. + +This function is supported by PromQL. + +#### absent + +`absent(q)` is a [transform function](#transform-functions), which returns 1 if `q` has no points. Otherwise, returns an empty result. + +This function is supported by PromQL. See also [absent_over_time](#absent_over_time). + +#### acos + +`acos(q)` is a [transform function](#transform-functions), which returns [inverse cosine](https://en.wikipedia.org/wiki/Inverse_trigonometric_functions) +for every point of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [asin](#asin) and [cos](#cos). + +#### acosh + +`acosh(q)` is a [transform function](#transform-functions), which returns +[inverse hyperbolic cosine](https://en.wikipedia.org/wiki/Inverse_hyperbolic_functions#Inverse_hyperbolic_cosine) for every point of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [sinh](#cosh). + +#### asin + +`asin(q)` is a [transform function](#transform-functions), which returns [inverse sine](https://en.wikipedia.org/wiki/Inverse_trigonometric_functions) +for every point of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [acos](#acos) and [sin](#sin). + +#### asinh + +`asinh(q)` is a [transform function](#transform-functions), which returns +[inverse hyperbolic sine](https://en.wikipedia.org/wiki/Inverse_hyperbolic_functions#Inverse_hyperbolic_sine) for every point of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [sinh](#sinh). + +#### atan + +`atan(q)` is a [transform function](#transform-functions), which returns [inverse tangent](https://en.wikipedia.org/wiki/Inverse_trigonometric_functions) +for every point of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [tan](#tan). + +#### atanh + +`atanh(q)` is a [transform function](#transform-functions), which returns +[inverse hyperbolic tangent](https://en.wikipedia.org/wiki/Inverse_hyperbolic_functions#Inverse_hyperbolic_tangent) for every point of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [tanh](#tanh). + +#### bitmap_and + +`bitmap_and(q, mask)` is a [transform function](#transform-functions), which calculates bitwise `v & mask` for every `v` point of every time series returned from `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +#### bitmap_or + +`bitmap_or(q, mask)` is a [transform function](#transform-functions), which calculates bitwise `v | mask` for every `v` point of every time series returned from `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +#### bitmap_xor + +`bitmap_xor(q, mask)` is a [transform function](#transform-functions), which calculates bitwise `v ^ mask` for every `v` point of every time series returned from `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +#### buckets_limit + +`buckets_limit(limit, buckets)` is a [transform function](#transform-functions), which limits the number +of [histogram buckets](https://valyala.medium.com/improving-histogram-usability-for-prometheus-and-grafana-bc7e5df0e350) to the given `limit`. + +See also [prometheus_buckets](#prometheus_buckets) and [histogram_quantile](#histogram_quantile). + +#### ceil + +`ceil(q)` is a [transform function](#transform-functions), which rounds every point for every time series returned by `q` to the upper nearest integer. + +This function is supported by PromQL. See also [floor](#floor) and [round](#round). + +#### clamp + +`clamp(q, min, max)` is a [transform function](#transform-functions), which clamps every point for every time series returned by `q` with the given `min` and `max` values. + +This function is supported by PromQL. See also [clamp_min](#clamp_min) and [clamp_max](#clamp_max). + +#### clamp_max + +`clamp_max(q, max)` is a [transform function](#transform-functions), which clamps every point for every time series returned by `q` with the given `max` value. + +This function is supported by PromQL. See also [clamp](#clamp) and [clamp_min](#clamp_min). + +#### clamp_min + +`clamp_min(q, min)` is a [transform function](#transform-functions), which clamps every point for every time series returned by `q` with the given `min` value. + +This function is supported by PromQL. See also [clamp](#clamp) and [clamp_max](#clamp_max). + +#### cos + +`cos(q)` is a [transform function](#transform-functions), which returns `cos(v)` for every `v` point of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [sin](#sin). + +#### cosh + +`cosh(q)` is a [transform function](#transform-functions), which returns [hyperbolic cosine](https://en.wikipedia.org/wiki/Hyperbolic_functions) +for every point of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. This function is supported by PromQL. See also [acosh](#acosh). + +#### day_of_month + +`day_of_month(q)` is a [transform function](#transform-functions), which returns the day of month for every point of every time series returned by `q`. +It is expected that `q` returns unix timestamps. The returned values are in the range `[1...31]`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. + +#### day_of_week + +`day_of_week(q)` is a [transform function](#transform-functions), which returns the day of week for every point of every time series returned by `q`. +It is expected that `q` returns unix timestamps. The returned values are in the range `[0...6]`, where `0` means Sunday and `6` means Saturday. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. + +#### days_in_month + +`days_in_month(q)` is a [transform function](#transform-functions), which returns the number of days in the month identified +by every point of every time series returned by `q`. It is expected that `q` returns unix timestamps. +The returned values are in the range `[28...31]`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. + +#### deg + +`deg(q)` is a [transform function](#transform-functions), which converts [Radians to degrees](https://en.wikipedia.org/wiki/Radian#Conversions) +for every point of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [rad](#rad). + +#### end + +`end()` is a [transform function](#transform-functions), which returns the unix timestamp in seconds for the last point. +It is known as `end` query arg passed to [/api/v1/query_range](https://docs.victoriametrics.com/keyConcepts.html#range-query). + +See also [start](#start), [time](#time) and [now](#now). + +#### exp + +`exp(q)` is a [transform function](#transform-functions), which calculates the `e^v` for every point `v` of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [ln](#ln). + +#### floor + +`floor(q)` is a [transform function](#transform-functions), which rounds every point for every time series returned by `q` to the lower nearest integer. + +This function is supported by PromQL. See also [ceil](#ceil) and [round](#round). + +#### histogram_avg + +`histogram_avg(buckets)` is a [transform function](#transform-functions), which calculates the average value for the given `buckets`. +It can be used for calculating the average over the given time range across multiple time series. +For example, `histogram_avg(sum(histogram_over_time(response_time_duration_seconds[5m])) by (vmrange,job))` would return the average response time +per each `job` over the last 5 minutes. + +#### histogram_quantile + +`histogram_quantile(phi, buckets)` is a [transform function](#transform-functions), which calculates `phi`-[percentile](https://en.wikipedia.org/wiki/Percentile) +over the given [histogram buckets](https://valyala.medium.com/improving-histogram-usability-for-prometheus-and-grafana-bc7e5df0e350). +`phi` must be in the range `[0...1]`. For example, `histogram_quantile(0.5, sum(rate(http_request_duration_seconds_bucket[5m])) by (le))` +would return median request duration for all the requests during the last 5 minutes. + +The function accepts optional third arg - `boundsLabel`. In this case it returns `lower` and `upper` bounds for the estimated percentile with the given `boundsLabel` label. +See [this issue for details](https://github.com/prometheus/prometheus/issues/5706). + +When the [percentile](https://en.wikipedia.org/wiki/Percentile) is calculated over multiple histograms, +then all the input histograms **must** have buckets with identical boundaries, e.g. they must have the same set of `le` or `vmrange` labels. +Otherwise, the returned result may be invalid. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3231) for details. + +This function is supported by PromQL (except of the `boundLabel` arg). See also [histogram_quantiles](#histogram_quantiles), [histogram_share](#histogram_share) +and [quantile](#quantile). + +#### histogram_quantiles + +`histogram_quantiles("phiLabel", phi1, ..., phiN, buckets)` is a [transform function](#transform-functions), which calculates the given `phi*`-quantiles +over the given [histogram buckets](https://valyala.medium.com/improving-histogram-usability-for-prometheus-and-grafana-bc7e5df0e350). +Argument `phi*` must be in the range `[0...1]`. For example, `histogram_quantiles('le', 0.3, 0.5, sum(rate(http_request_duration_seconds_bucket[5m]) by (le))`. +Each calculated quantile is returned in a separate time series with the corresponding `{phiLabel="phi*"}` label. + +See also [histogram_quantile](#histogram_quantile). + +#### histogram_share + +`histogram_share(le, buckets)` is a [transform function](#transform-functions), which calculates the share (in the range `[0...1]`) +for `buckets` that fall below `le`. This function is useful for calculating SLI and SLO. This is inverse to [histogram_quantile](#histogram_quantile). + +The function accepts optional third arg - `boundsLabel`. In this case it returns `lower` and `upper` bounds for the estimated share with the given `boundsLabel` label. + +#### histogram_stddev + +`histogram_stddev(buckets)` is a [transform function](#transform-functions), which calculates standard deviation for the given `buckets`. + +#### histogram_stdvar + +`histogram_stdvar(buckets)` is a [transform function](#transform-functions), which calculates standard variance for the given `buckets`. +It can be used for calculating standard deviation over the given time range across multiple time series. +For example, `histogram_stdvar(sum(histogram_over_time(temperature[24])) by (vmrange,country))` would return standard deviation +for the temperature per each country over the last 24 hours. + +#### hour + +`hour(q)` is a [transform function](#transform-functions), which returns the hour for every point of every time series returned by `q`. +It is expected that `q` returns unix timestamps. The returned values are in the range `[0...23]`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. + +#### interpolate + +`interpolate(q)` is a [transform function](#transform-functions), which fills gaps with linearly interpolated values calculated +from the last and the next non-empty points per each time series returned by `q`. + +See also [keep_last_value](#keep_last_value) and [keep_next_value](#keep_next_value). + +#### keep_last_value + +`keep_last_value(q)` is a [transform function](#transform-functions), which fills gaps with the value of the last non-empty point +in every time series returned by `q`. + +See also [keep_next_value](#keep_next_value) and [interpolate](#interpolate). + +#### keep_next_value + +`keep_next_value(q)` is a [transform function](#transform-functions), which fills gaps with the value of the next non-empty point +in every time series returned by `q`. + +See also [keep_last_value](#keep_last_value) and [interpolate](#interpolate). + +#### limit_offset + +`limit_offset(limit, offset, q)` is a [transform function](#transform-functions), which skips `offset` time series from series returned by `q` +and then returns up to `limit` of the remaining time series per each group. + +This allows implementing simple paging for `q` time series. See also [limitk](#limitk). + +#### ln + +`ln(q)` is a [transform function](#transform-functions), which calculates `ln(v)` for every point `v` of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [exp](#exp) and [log2](#log2). + +#### log2 + +`log2(q)` is a [transform function](#transform-functions), which calculates `log2(v)` for every point `v` of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [log10](#log10) and [ln](#ln). + +#### log10 + +`log10(q)` is a [transform function](#transform-functions), which calculates `log10(v)` for every point `v` of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [log2](#log2) and [ln](#ln). + +#### minute + +`minute(q)` is a [transform function](#transform-functions), which returns the minute for every point of every time series returned by `q`. +It is expected that `q` returns unix timestamps. The returned values are in the range `[0...59]`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. + +#### month + +`month(q)` is a [transform function](#transform-functions), which returns the month for every point of every time series returned by `q`. +It is expected that `q` returns unix timestamps. The returned values are in the range `[1...12]`, where `1` means January and `12` means December. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. + +#### now + +`now()` is a [transform function](#transform-functions), which returns the current timestamp as a floating-point value in seconds. + +See also [time](#time). + +#### pi + +`pi()` is a [transform function](#transform-functions), which returns [Pi number](https://en.wikipedia.org/wiki/Pi). + +This function is supported by PromQL. + +#### rad + +`rad(q)` is a [transform function](#transform-functions), which converts [degrees to Radians](https://en.wikipedia.org/wiki/Radian#Conversions) +for every point of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. See also [deg](#deg). + +#### prometheus_buckets + +`prometheus_buckets(buckets)` is a [transform function](#transform-functions), which converts +[VictoriaMetrics histogram buckets](https://valyala.medium.com/improving-histogram-usability-for-prometheus-and-grafana-bc7e5df0e350) with `vmrange` labels +to Prometheus histogram buckets with `le` labels. This may be useful for building heatmaps in Grafana. + +See also [histogram_quantile](#histogram_quantile) and [buckets_limit](#buckets_limit). + +#### rand + +`rand(seed)` is a [transform function](#transform-functions), which returns pseudo-random numbers on the range `[0...1]` with even distribution. +Optional `seed` can be used as a seed for pseudo-random number generator. + +See also [rand_normal](#rand_normal) and [rand_exponential](#rand_exponential). + +#### rand_exponential + +`rand_exponential(seed)` is a [transform function](#transform-functions), which returns pseudo-random numbers +with [exponential distribution](https://en.wikipedia.org/wiki/Exponential_distribution). Optional `seed` can be used as a seed for pseudo-random number generator. + +See also [rand](#rand) and [rand_normal](#rand_normal). + +#### rand_normal + +`rand_normal(seed)` is a [transform function](#transform-functions), which returns pseudo-random numbers +with [normal distribution](https://en.wikipedia.org/wiki/Normal_distribution). Optional `seed` can be used as a seed for pseudo-random number generator. + +See also [rand](#rand) and [rand_exponential](#rand_exponential). + +#### range_avg + +`range_avg(q)` is a [transform function](#transform-functions), which calculates the avg value across points per each time series returned by `q`. + +#### range_first + +`range_first(q)` is a [transform function](#transform-functions), which returns the value for the first point per each time series returned by `q`. + +#### range_last + +`range_last(q)` is a [transform function](#transform-functions), which returns the value for the last point per each time series returned by `q`. + +#### range_linear_regression + +`range_linear_regression(q)` is a [transform function](#transform-functions), which calculates [simple linear regression](https://en.wikipedia.org/wiki/Simple_linear_regression) +over the selected time range per each time series returned by `q`. This function is useful for capacity planning and predictions. + +#### range_mad + +`range_mad(q)` is a [transform function](#transform-functions), which calculates the [median absolute deviation](https://en.wikipedia.org/wiki/Median_absolute_deviation) +across points per each time series returned by `q`. + +See also [mad](#mad) and [mad_over_time](#mad_over_time). + +#### range_max + +`range_max(q)` is a [transform function](#transform-functions), which calculates the max value across points per each time series returned by `q`. + +#### range_median + +`range_median(q)` is a [transform function](#transform-functions), which calculates the median value across points per each time series returned by `q`. + +#### range_min + +`range_min(q)` is a [transform function](#transform-functions), which calculates the min value across points per each time series returned by `q`. + +#### range_normalize + +`range_normalize(q1, ...)` is a [transform function](#transform-functions), which normalizes values for time series returned by `q1, ...` into `[0 ... 1]` range. +This function is useful for correlating time series with distinct value ranges. + +See also [share](#share). + +#### range_quantile + +`range_quantile(phi, q)` is a [transform function](#transform-functions), which returns `phi`-quantile across points per each time series returned by `q`. +`phi` must be in the range `[0...1]`. + +#### range_stddev + +`range_stddev(q)` is a [transform function](#transform-functions), which calculates [standard deviation](https://en.wikipedia.org/wiki/Standard_deviation) +per each time series returned by `q` on the selected time range. + +#### range_stdvar + +`range_stdvar(q)` is a [transform function](#transform-functions), which calculates [standard variance](https://en.wikipedia.org/wiki/Variance) +per each time series returned by `q` on the selected time range. + +#### range_sum + +`range_sum(q)` is a [transform function](#transform-functions), which calculates the sum of points per each time series returned by `q`. + +#### range_trim_outliers + +`range_trim_outliers(k, q)` is a [transform function](#transform-functions), which drops points located farther than `k*range_mad(q)` +from the `range_median(q)`. E.g. it is equivalent to the following query: `q ifnot (abs(q - range_median(q)) > k*range_mad(q))`. + +See also [range_trim_spikes](#range_trim_spikes) and [range_trim_zscore](#range_trim_zscore). + +#### range_trim_spikes + +`range_trim_spikes(phi, q)` is a [transform function](#transform-functions), which drops `phi` percent of biggest spikes from time series returned by `q`. +The `phi` must be in the range `[0..1]`, where `0` means `0%` and `1` means `100%`. + +See also [range_trim_outliers](#range_trim_outliers) and [range_trim_zscore](#range_trim_zscore). + +#### range_trim_zscore + +`range_trim_zscore(z, q)` is a [transform function](#transform-functions), which drops points located farther than `z*range_stddev(q)` +from the `range_avg(q)`. E.g. it is equivalent to the following query: `q ifnot (abs(q - range_avg(q)) > z*range_avg(q))`. + +See also [range_trim_outliers](#range_trim_outliers) and [range_trim_spikes](#range_trim_spikes). + +#### range_zscore + +`range_zscore(q)` is a [transform function](#transform-functions), which calculates [z-score](https://en.wikipedia.org/wiki/Standard_score) +for points returned by `q`, e.g. it is equivalent to the following query: `(q - range_avg(q)) / range_stddev(q)`. + +#### remove_resets + +`remove_resets(q)` is a [transform function](#transform-functions), which removes counter resets from time series returned by `q`. + +#### round + +`round(q, nearest)` is a [transform function](#transform-functions), which rounds every point of every time series returned by `q` to the `nearest` multiple. +If `nearest` is missing then the rounding is performed to the nearest integer. + +This function is supported by PromQL. See also [floor](#floor) and [ceil](#ceil). + +#### ru + +`ru(free, max)` is a [transform function](#transform-functions), which calculates resource utilization in the range `[0%...100%]` for the given `free` and `max` resources. +For instance, `ru(node_memory_MemFree_bytes, node_memory_MemTotal_bytes)` returns memory utilization over [node_exporter](https://github.com/prometheus/node_exporter) metrics. + +#### running_avg + +`running_avg(q)` is a [transform function](#transform-functions), which calculates the running avg per each time series returned by `q`. + +#### running_max + +`running_max(q)` is a [transform function](#transform-functions), which calculates the running max per each time series returned by `q`. + +#### running_min + +`running_min(q)` is a [transform function](#transform-functions), which calculates the running min per each time series returned by `q`. + +#### running_sum + +`running_sum(q)` is a [transform function](#transform-functions), which calculates the running sum per each time series returned by `q`. + +#### scalar + +`scalar(q)` is a [transform function](#transform-functions), which returns `q` if `q` contains only a single time series. Otherwise, it returns nothing. + +This function is supported by PromQL. + +#### sgn + +`sgn(q)` is a [transform function](#transform-functions), which returns `1` if `v>0`, `-1` if `v<0` and `0` if `v==0` for every point `v` +of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. + +#### sin + +`sin(q)` is a [transform function](#transform-functions), which returns `sin(v)` for every `v` point of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by MetricsQL. See also [cos](#cos). + +#### sinh + +`sinh(q)` is a [transform function](#transform-functions), which returns [hyperbolic sine](https://en.wikipedia.org/wiki/Hyperbolic_functions) +for every point of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by MetricsQL. See also [cosh](#cosh). + +#### tan + +`tan(q)` is a [transform function](#transform-functions), which returns `tan(v)` for every `v` point of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by MetricsQL. See also [atan](#atan). + +#### tanh + +`tanh(q)` is a [transform function](#transform-functions), which returns [hyperbolic tangent](https://en.wikipedia.org/wiki/Hyperbolic_functions) +for every point of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by MetricsQL. See also [atanh](#atanh). + +#### smooth_exponential + +`smooth_exponential(q, sf)` is a [transform function](#transform-functions), which smooths points per each time series returned +by `q` using [exponential moving average](https://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average) with the given smooth factor `sf`. + +#### sort + +`sort(q)` is a [transform function](#transform-functions), which sorts series in ascending order by the last point in every time series returned by `q`. + +This function is supported by PromQL. See also [sort_desc](#sort_desc) and [sort_by_label](#sort_by_label). + +#### sort_desc + +`sort_desc(q)` is a [transform function](#transform-functions), which sorts series in descending order by the last point in every time series returned by `q`. + +This function is supported by PromQL. See also [sort](#sort) and [sort_by_label](#sort_by_label_desc). + +#### sqrt + +`sqrt(q)` is a [transform function](#transform-functions), which calculates square root for every point of every time series returned by `q`. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. + +#### start + +`start()` is a [transform function](#transform-functions), which returns unix timestamp in seconds for the first point. + +It is known as `start` query arg passed to [/api/v1/query_range](https://docs.victoriametrics.com/keyConcepts.html#range-query). + +See also [end](#end), [time](#time) and [now](#now). + +#### step + +`step()` is a [transform function](#transform-functions), which returns the step in seconds (aka interval) between the returned points. +It is known as `step` query arg passed to [/api/v1/query_range](https://docs.victoriametrics.com/keyConcepts.html#range-query). + +See also [start](#start) and [end](#end). + +#### time + +`time()` is a [transform function](#transform-functions), which returns unix timestamp for every returned point. + +This function is supported by PromQL. See also [now](#now), [start](#start) and [end](#end). + +#### timezone_offset + +`timezone_offset(tz)` is a [transform function](#transform-functions), which returns offset in seconds for the given timezone `tz` relative to UTC. +This can be useful when combining with datetime-related functions. For example, `day_of_week(time()+timezone_offset("America/Los_Angeles"))` +would return weekdays for `America/Los_Angeles` time zone. + +Special `Local` time zone can be used for returning an offset for the time zone set on the host where VictoriaMetrics runs. + +See [the list of supported timezones](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). + +#### ttf + +`ttf(free)` is a [transform function](#transform-functions), which estimates the time in seconds needed to exhaust `free` resources. +For instance, `ttf(node_filesystem_avail_byte)` returns the time to storage space exhaustion. This function may be useful for capacity planning. + +#### union + +`union(q1, ..., qN)` is a [transform function](#transform-functions), which returns a union of time series returned from `q1`, ..., `qN`. +The `union` function name can be skipped - the following queries are equivalent: `union(q1, q2)` and `(q1, q2)`. + +It is expected that each `q*` query returns time series with unique sets of labels. +Otherwise, only the first time series out of series with identical set of labels is returned. +Use [alias](#alias) and [label_set](#label_set) functions for giving unique labelsets per each `q*` query: + +#### vector + +`vector(q)` is a [transform function](#transform-functions), which returns `q`, e.g. it does nothing in MetricsQL. + +This function is supported by PromQL. + +#### year + +`year(q)` is a [transform function](#transform-functions), which returns the year for every point of every time series returned by `q`. +It is expected that `q` returns unix timestamps. + +Metric names are stripped from the resulting series. Add [keep_metric_names](#keep_metric_names) modifier in order to keep metric names. + +This function is supported by PromQL. + +### Label manipulation functions + +**Label manipulation functions** perform manipulations with labels on the selected [rollup results](#rollup-functions). + +Additional details: + +* If label manipulation function is applied directly to a [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering), + then the [default_rollup()](#default_rollup) function is automatically applied before performing the label transformation. + For example, `alias(temperature, "foo")` is implicitly transformed to `alias(default_rollup(temperature[1i]), "foo")`. + +See also [implicit query conversions](#implicit-query-conversions). + +The list of supported label manipulation functions: + +#### alias + +`alias(q, "name")` is [label manipulation function](#label-manipulation-functions), which sets the given `name` to all the time series returned by `q`. +For example, `alias(up, "foobar")` would rename `up` series to `foobar` series. + + +#### drop_common_labels + +`drop_common_labels(q1, ...., qN)` is [label manipulation function](#label-manipulation-functions), which drops common `label="value"` pairs +among time series returned from `q1, ..., qN`. + +#### label_copy + +`label_copy(q, "src_label1", "dst_label1", ..., "src_labelN", "dst_labelN")` is [label manipulation function](#label-manipulation-functions), +which copies label values from `src_label*` to `dst_label*` for all the time series returned by `q`. +If `src_label` is empty, then the corresponding `dst_label` is left untouched. + +#### label_del + +`label_del(q, "label1", ..., "labelN")` is [label manipulation function](#label-manipulation-functions), which deletes the given `label*` labels +from all the time series returned by `q`. + +#### label_graphite_group + +`label_graphite_group(q, groupNum1, ... groupNumN)` is [label manipulation function](#label-manipulation-functions), which replaces metric names +returned from `q` with the given Graphite group values concatenated via `.` char. + +For example, `label_graphite_group({__graphite__="foo*.bar.*"}, 0, 2)` would substitute `foo.bar.` metric names with `foo.`. + +This function is useful for aggregating Graphite metrics with [aggregate functions](#aggregate-functions). For example, the following query would return per-app memory usage: + +``` +sum by (__name__) ( + label_graphite_group({__graphite__="app*.host*.memory_usage"}, 0) +) +``` + +#### label_join + +`label_join(q, "dst_label", "separator", "src_label1", ..., "src_labelN")` is [label manipulation function](#label-manipulation-functions), +which joins `src_label*` values with the given `separator` and stores the result in `dst_label`. +This is performed individually per each time series returned by `q`. +For example, `label_join(up{instance="xxx",job="yyy"}, "foo", "-", "instance", "job")` would store `xxx-yyy` label value into `foo` label. + +This function is supported by PromQL. + +#### label_keep + +`label_keep(q, "label1", ..., "labelN")` is [label manipulation function](#label-manipulation-functions), which deletes all the labels +except of the listed `label*` labels in all the time series returned by `q`. + +#### label_lowercase + +`label_lowercase(q, "label1", ..., "labelN")` is [label manipulation function](#label-manipulation-functions), which lowercases values +for the given `label*` labels in all the time series returned by `q`. + +#### label_map + +`label_map(q, "label", "src_value1", "dst_value1", ..., "src_valueN", "dst_valueN")` is [label manipulation function](#label-manipulation-functions), +which maps `label` values from `src_*` to `dst*` for all the time series returned by `q`. + +#### label_match + +`label_match(q, "label", "regexp")` is [label manipulation function](#label-manipulation-functions), +which drops time series from `q` with `label` not matching the given `regexp`. +This function can be useful after [rollup](#rollup)-like functions, which may return multiple time series for every input series. + +See also [label_mismatch](#label_mismatch). + +#### label_mismatch + +`label_mismatch(q, "label", "regexp")` is [label manipulation function](#label-manipulation-functions), +which drops time series from `q` with `label` matching the given `regexp`. +This function can be useful after [rollup](#rollup)-like functions, which may return multiple time series for every input series. + +See also [label_match](#label_match). + +#### label_move + +`label_move(q, "src_label1", "dst_label1", ..., "src_labelN", "dst_labelN")` is [label manipulation function](#label-manipulation-functions), +which moves label values from `src_label*` to `dst_label*` for all the time series returned by `q`. +If `src_label` is empty, then the corresponding `dst_label` is left untouched. + +#### label_replace + +`label_replace(q, "dst_label", "replacement", "src_label", "regex")` is [label manipulation function](#label-manipulation-functions), +which applies the given `regex` to `src_label` and stores the `replacement` in `dst_label` if the given `regex` matches `src_label`. +The `replacement` may contain references to regex captures such as `$1`, `$2`, etc. +These references are substituted by the corresponding regex captures. +For example, `label_replace(up{job="node-exporter"}, "foo", "bar-$1", "job", "node-(.+)")` would store `bar-exporter` label value into `foo` label. + +This function is supported by PromQL. + +#### label_set + +`label_set(q, "label1", "value1", ..., "labelN", "valueN")` is [label manipulation function](#label-manipulation-functions), +which sets `{label1="value1", ..., labelN="valueN"}` labels to all the time series returned by `q`. + +#### label_transform + +`label_transform(q, "label", "regexp", "replacement")` is [label manipulation function](#label-manipulation-functions), +which substitutes all the `regexp` occurrences by the given `replacement` in the given `label`. + +#### label_uppercase + +`label_uppercase(q, "label1", ..., "labelN")` is [label manipulation function](#label-manipulation-functions), +which uppercases values for the given `label*` labels in all the time series returned by `q`. + +See also [label_lowercase](#label_lowercase). + +#### label_value + +`label_value(q, "label")` is [label manipulation function](#label-manipulation-functions), which returns numeric values +for the given `label` for every time series returned by `q`. + +For example, if `label_value(foo, "bar")` is applied to `foo{bar="1.234"}`, then it will return a time series +`foo{bar="1.234"}` with `1.234` value. Function will return no data for non-numeric label values. + +#### sort_by_label + +`sort_by_label(q, label1, ... labelN)` is [label manipulation function](#label-manipulation-functions), which sorts series in ascending order by the given set of labels. +For example, `sort_by_label(foo, "bar")` would sort `foo` series by values of the label `bar` in these series. + +See also [sort_by_label_desc](#sort_by_label_desc) and [sort_by_label_numeric](#sort_by_label_numeric). + +#### sort_by_label_desc + +`sort_by_label_desc(q, label1, ... labelN)` is [label manipulation function](#label-manipulation-functions), which sorts series in descending order by the given set of labels. +For example, `sort_by_label(foo, "bar")` would sort `foo` series by values of the label `bar` in these series. + +See also [sort_by_label](#sort_by_label) and [sort_by_label_numeric_desc](#sort_by_label_numeric_desc). + +#### sort_by_label_numeric + +`sort_by_label_numeric(q, label1, ... labelN)` is [label manipulation function](#label-manipulation-functions), which sorts series in ascending order by the given set of labels +using [numeric sort](https://www.gnu.org/software/coreutils/manual/html_node/Version-sort-is-not-the-same-as-numeric-sort.html). +For example, if `foo` series have `bar` label with values `1`, `101`, `15` and `2`, then `sort_by_label_numeric(foo, "bar")` would return series +in the following order of `bar` label values: `1`, `2`, `15` and `101`. + +See also [sort_by_label_numeric_desc](#sort_by_label_numeric_desc) and [sort_by_label](#sort_by_label). + +#### sort_by_label_numeric_desc + +`sort_by_label_numeric_desc(q, label1, ... labelN)` is [label manipulation function](#label-manipulation-functions), which sorts series in descending order +by the given set of labels using [numeric sort](https://www.gnu.org/software/coreutils/manual/html_node/Version-sort-is-not-the-same-as-numeric-sort.html). +For example, if `foo` series have `bar` label with values `1`, `101`, `15` and `2`, then `sort_by_label_numeric(foo, "bar")` +would return series in the following order of `bar` label values: `101`, `15`, `2` and `1`. + +See also [sort_by_label_numeric](#sort_by_label_numeric) and [sort_by_label_desc](#sort_by_label_desc). + + +### Aggregate functions + +**Aggregate functions** calculate aggregates over groups of [rollup results](#rollup-functions). + +Additional details: + +* By default, a single group is used for aggregation. Multiple independent groups can be set up by specifying grouping labels + in `by` and `without` modifiers. For example, `count(up) by (job)` would group [rollup results](#rollup-functions) by `job` label value + and calculate the [count](#count) aggregate function independently per each group, while `count(up) without (instance)` + would group [rollup results](#rollup-functions) by all the labels except `instance` before calculating [count](#count) aggregate function independently per each group. + Multiple labels can be put in `by` and `without` modifiers. +* If the aggregate function is applied directly to a [series_selector](https://docs.victoriametrics.com/keyConcepts.html#filtering), + then the [default_rollup()](#default_rollup) function is automatically applied before calculating the aggregate. + For example, `count(up)` is implicitly transformed to `count(default_rollup(up[1i]))`. +* Aggregate functions accept arbitrary number of args. For example, `avg(q1, q2, q3)` would return the average values for every point + across time series returned by `q1`, `q2` and `q3`. +* Aggregate functions support optional `limit N` suffix, which can be used for limiting the number of output groups. + For example, `sum(x) by (y) limit 3` limits the number of groups for the aggregation to 3. All the other groups are ignored. + +See also [implicit query conversions](#implicit-query-conversions). + +The list of supported aggregate functions: + +#### any + +`any(q) by (group_labels)` is [aggregate function](#aggregate-functions), which returns a single series per `group_labels` out of time series returned by `q`. + +See also [group](#group). + +#### avg + +`avg(q) by (group_labels)` is [aggregate function](#aggregate-functions), which returns the average value per `group_labels` for time series returned by `q`. +The aggregate is calculated individually per each group of points with the same timestamp. + +This function is supported by PromQL. + +#### bottomk + +`bottomk(k, q)` is [aggregate function](#aggregate-functions), which returns up to `k` points with the smallest values across all the time series returned by `q`. +The aggregate is calculated individually per each group of points with the same timestamp. + +This function is supported by PromQL. See also [topk](#topk). + +#### bottomk_avg + +`bottomk_avg(k, q, "other_label=other_value")` is [aggregate function](#aggregate-functions), which returns up to `k` time series from `q` with the smallest averages. +If an optional `other_label=other_value` arg is set, then the sum of the remaining time series is returned with the given label. +For example, `bottomk_avg(3, sum(process_resident_memory_bytes) by (job), "job=other")` would return up to 3 time series +with the smallest averages plus a time series with `{job="other"}` label with the sum of the remaining series if any. + +See also [topk_avg](#topk_avg). + +#### bottomk_last + +`bottomk_last(k, q, "other_label=other_value")` is [aggregate function](#aggregate-functions), which returns up to `k` time series from `q` with the smallest last values. +If an optional `other_label=other_value` arg is set, then the sum of the remaining time series is returned with the given label. +For example, `bottomk_max(3, sum(process_resident_memory_bytes) by (job), "job=other")` would return up to 3 time series +with the smallest maximums plus a time series with `{job="other"}` label with the sum of the remaining series if any. + +See also [topk_last](#topk_last). + +#### bottomk_max + +`bottomk_max(k, q, "other_label=other_value")` is [aggregate function](#aggregate-functions), which returns up to `k` time series from `q` with the smallest maximums. +If an optional `other_label=other_value` arg is set, then the sum of the remaining time series is returned with the given label. +For example, `bottomk_max(3, sum(process_resident_memory_bytes) by (job), "job=other")` would return up to 3 time series +with the smallest maximums plus a time series with `{job="other"}` label with the sum of the remaining series if any. + +See also [topk_max](#topk_max). + +#### bottomk_median + +`bottomk_median(k, q, "other_label=other_value")` is [aggregate function](#aggregate-functions), which returns up to `k` time series from `q` with the smallest medians. +If an optional`other_label=other_value` arg is set, then the sum of the remaining time series is returned with the given label. +For example, `bottomk_median(3, sum(process_resident_memory_bytes) by (job), "job=other")` would return up to 3 time series +with the smallest medians plus a time series with `{job="other"}` label with the sum of the remaining series if any. + +See also [topk_median](#topk_median). + +#### bottomk_min + +`bottomk_min(k, q, "other_label=other_value")` is [aggregate function](#aggregate-functions), which returns up to `k` time series from `q` with the smallest minimums. +If an optional `other_label=other_value` arg is set, then the sum of the remaining time series is returned with the given label. +For example, `bottomk_min(3, sum(process_resident_memory_bytes) by (job), "job=other")` would return up to 3 time series +with the smallest minimums plus a time series with `{job="other"}` label with the sum of the remaining series if any. + +See also [topk_min](#topk_min). + +#### count + +`count(q) by (group_labels)` is [aggregate function](#aggregate-functions), which returns the number of non-empty points per `group_labels` +for time series returned by `q`. The aggregate is calculated individually per each group of points with the same timestamp. + +This function is supported by PromQL. + +#### count_values + +`count_values("label", q)` is [aggregate function](#aggregate-functions), which counts the number of points with the same value +and stores the counts in a time series with an additional `label`, which contains each initial value. +The aggregate is calculated individually per each group of points with the same timestamp. + +This function is supported by PromQL. + +#### distinct + +`distinct(q)` is [aggregate function](#aggregate-functions), which calculates the number of unique values per each group of points with the same timestamp. + +#### geomean + +`geomean(q)` is [aggregate function](#aggregate-functions), which calculates geometric mean per each group of points with the same timestamp. + +#### group + +`group(q) by (group_labels)` is [aggregate function](#aggregate-functions), which returns `1` per each `group_labels` for time series returned by `q`. + +This function is supported by PromQL. See also [any](#any). + +#### histogram + +`histogram(q)` is [aggregate function](#aggregate-functions), which calculates +[VictoriaMetrics histogram](https://valyala.medium.com/improving-histogram-usability-for-prometheus-and-grafana-bc7e5df0e350) +per each group of points with the same timestamp. Useful for visualizing big number of time series via a heatmap. +See [this article](https://medium.com/@valyala/improving-histogram-usability-for-prometheus-and-grafana-bc7e5df0e350) for more details. + +See also [histogram_over_time](#histogram_over_time) and [histogram_quantile](#histogram_quantile). + +#### limitk + +`limitk(k, q) by (group_labels)` is [aggregate function](#aggregate-functions), which returns up to `k` time series per each `group_labels` +out of time series returned by `q`. The returned set of time series remain the same across calls. + +See also [limit_offset](#limit_offset). + +#### mad + +`mad(q) by (group_labels)` is [aggregate function](#aggregate-functions), which returns the [Median absolute deviation](https://en.wikipedia.org/wiki/Median_absolute_deviation) +per each `group_labels` for all the time series returned by `q`. The aggregate is calculated individually per each group of points with the same timestamp. + +See also [range_mad](#range_mad), [mad_over_time](#mad_over_time), [outliers_mad](#outliers_mad) and [stddev](#stddev). + +#### max + +`max(q) by (group_labels)` is [aggregate function](#aggregate-functions), which returns the maximum value per each `group_labels` +for all the time series returned by `q`. The aggregate is calculated individually per each group of points with the same timestamp. + +This function is supported by PromQL. + +#### median + +`median(q) by (group_labels)` is [aggregate function](#aggregate-functions), which returns the median value per each `group_labels` +for all the time series returned by `q`. The aggregate is calculated individually per each group of points with the same timestamp. + +#### min + +`min(q) by (group_labels)` is [aggregate function](#aggregate-functions), which returns the minimum value per each `group_labels` +for all the time series returned by `q`. The aggregate is calculated individually per each group of points with the same timestamp. + +This function is supported by PromQL. + +#### mode + +`mode(q) by (group_labels)` is [aggregate function](#aggregate-functions), which returns [mode](https://en.wikipedia.org/wiki/Mode_(statistics)) +per each `group_labels` for all the time series returned by `q`. The aggregate is calculated individually per each group of points with the same timestamp. + +#### outliers_mad + +`outliers_mad(tolerance, q)` is [aggregate function](#aggregate-functions), which returns time series from `q` with at least +a single point outside [Median absolute deviation](https://en.wikipedia.org/wiki/Median_absolute_deviation) (aka MAD) multiplied by `tolerance`. +E.g. it returns time series with at least a single point below `median(q) - mad(q)` or a single point above `median(q) + mad(q)`. + +See also [outliersk](#outliersk) and [mad](#mad). + +#### outliersk + +`outliersk(k, q)` is [aggregate function](#aggregate-functions), which returns up to `k` time series with the biggest standard deviation (aka outliers) +out of time series returned by `q`. + +See also [outliers_mad](#outliers_mad). + +#### quantile + +`quantile(phi, q) by (group_labels)` is [aggregate function](#aggregate-functions), which calculates `phi`-quantile per each `group_labels` +for all the time series returned by `q`. `phi` must be in the range `[0...1]`. +The aggregate is calculated individually per each group of points with the same timestamp. + +This function is supported by PromQL. See also [quantiles](#quantiles) and [histogram_quantile](#histogram_quantile). + +#### quantiles + +`quantiles("phiLabel", phi1, ..., phiN, q)` is [aggregate function](#aggregate-functions), which calculates `phi*`-quantiles for all the time series +returned by `q` and return them in time series with `{phiLabel="phi*"}` label. `phi*` must be in the range `[0...1]`. +The aggregate is calculated individually per each group of points with the same timestamp. + +See also [quantile](#quantile). + +#### share + +`share(q) by (group_labels)` is [aggregate function](#aggregate-functions), which returns shares in the range `[0..1]` +for every non-negative points returned by `q` per each timestamp, so the sum of shares per each `group_labels` equals 1. + +This function is useful for normalizing [histogram bucket](https://docs.victoriametrics.com/keyConcepts.html#histogram) shares +into `[0..1]` range: + +```metricsql +share( + sum( + rate(http_request_duration_seconds_bucket[5m]) + ) by (le, vmrange) +) +``` + +See also [range_normalize](#range_normalize). + +#### stddev + +`stddev(q) by (group_labels)` is [aggregate function](#aggregate-functions), which calculates standard deviation per each `group_labels` +for all the time series returned by `q`. The aggregate is calculated individually per each group of points with the same timestamp. + +This function is supported by PromQL. + +#### stdvar + +`stdvar(q) by (group_labels)` is [aggregate function](#aggregate-functions), which calculates standard variance per each `group_labels` +for all the time series returned by `q`. The aggregate is calculated individually per each group of points with the same timestamp. + +This function is supported by PromQL. + +#### sum + +`sum(q) by (group_labels)` is [aggregate function](#aggregate-functions), which returns the sum per each `group_labels` +for all the time series returned by `q`. The aggregate is calculated individually per each group of points with the same timestamp. + +This function is supported by PromQL. + +#### sum2 + +`sum2(q) by (group_labels)` is [aggregate function](#aggregate-functions), which calculates the sum of squares per each `group_labels` +for all the time series returned by `q`. The aggregate is calculated individually per each group of points with the same timestamp. + +#### topk + +`topk(k, q)` is [aggregate function](#aggregate-functions), which returns up to `k` points with the biggest values across all the time series returned by `q`. +The aggregate is calculated individually per each group of points with the same timestamp. + +This function is supported by PromQL. See also [bottomk](#bottomk). + +#### topk_avg + +`topk_avg(k, q, "other_label=other_value")` is [aggregate function](#aggregate-functions), which returns up to `k` time series from `q` with the biggest averages. +If an optional `other_label=other_value` arg is set, then the sum of the remaining time series is returned with the given label. +For example, `topk_avg(3, sum(process_resident_memory_bytes) by (job), "job=other")` would return up to 3 time series with the biggest averages +plus a time series with `{job="other"}` label with the sum of the remaining series if any. + +See also [bottomk_avg](#bottomk_avg). + +#### topk_last + +`topk_last(k, q, "other_label=other_value")` is [aggregate function](#aggregate-functions), which returns up to `k` time series from `q` with the biggest last values. +If an optional `other_label=other_value` arg is set, then the sum of the remaining time series is returned with the given label. +For example, `topk_max(3, sum(process_resident_memory_bytes) by (job), "job=other")` would return up to 3 time series with the biggest maximums +plus a time series with `{job="other"}` label with the sum of the remaining series if any. + +See also [bottomk_last](#bottomk_last). + +#### topk_max + +`topk_max(k, q, "other_label=other_value")` is [aggregate function](#aggregate-functions), which returns up to `k` time series from `q` with the biggest maximums. +If an optional `other_label=other_value` arg is set, then the sum of the remaining time series is returned with the given label. +For example, `topk_max(3, sum(process_resident_memory_bytes) by (job), "job=other")` would return up to 3 time series with the biggest maximums +plus a time series with `{job="other"}` label with the sum of the remaining series if any. + +See also [bottomk_max](#bottomk_max). + +#### topk_median + +`topk_median(k, q, "other_label=other_value")` is [aggregate function](#aggregate-functions), which returns up to `k` time series from `q` with the biggest medians. +If an optional `other_label=other_value` arg is set, then the sum of the remaining time series is returned with the given label. +For example, `topk_median(3, sum(process_resident_memory_bytes) by (job), "job=other")` would return up to 3 time series with the biggest medians +plus a time series with `{job="other"}` label with the sum of the remaining series if any. + +See also [bottomk_median](#bottomk_median). + +#### topk_min + +`topk_min(k, q, "other_label=other_value")` is [aggregate function](#aggregate-functions), which returns up to `k` time series from `q` with the biggest minimums. +If an optional `other_label=other_value` arg is set, then the sum of the remaining time series is returned with the given label. +For example, `topk_min(3, sum(process_resident_memory_bytes) by (job), "job=other")` would return up to 3 time series with the biggest minimums +plus a time series with `{job="other"}` label with the sum of the remaining series if any. + +See also [bottomk_min](#bottomk_min). + +#### zscore + +`zscore(q) by (group_labels)` is [aggregate function](#aggregate-functions), which returns [z-score](https://en.wikipedia.org/wiki/Standard_score) values +per each `group_labels` for all the time series returned by `q`. The aggregate is calculated individually per each group of points with the same timestamp. +This function is useful for detecting anomalies in the group of related time series. + +See also [zscore_over_time](#zscore_over_time) and [range_trim_zscore](#range_trim_zscore). + +## Subqueries + +MetricsQL supports and extends PromQL subqueries. See [this article](https://valyala.medium.com/prometheus-subqueries-in-victoriametrics-9b1492b720b3) for details. +Any [rollup function](#rollup-functions) for something other than [series selector](https://docs.victoriametrics.com/keyConcepts.html#filtering) form a subquery. +Nested rollup functions can be implicit thanks to the [implicit query conversions](#implicit-query-conversions). +For example, `delta(sum(m))` is implicitly converted to `delta(sum(default_rollup(m[1i]))[1i:1i])`, so it becomes a subquery, +since it contains [default_rollup](#default_rollup) nested into [delta](#delta). + +VictoriaMetrics performs subqueries in the following way: + +* It calculates the inner rollup function using the `step` value from the outer rollup function. + For example, for expression `max_over_time(rate(http_requests_total[5m])[1h:30s])` the inner function `rate(http_requests_total[5m])` + is calculated with `step=30s`. The resulting data points are aligned by the `step`. +* It calculates the outer rollup function over the results of the inner rollup function using the `step` value + passed by Grafana to [/api/v1/query_range](https://docs.victoriametrics.com/keyConcepts.html#range-query). + +## Implicit query conversions + +VictoriaMetrics performs the following implicit conversions for incoming queries before starting the calculations: + +* If lookbehind window in square brackets is missing inside [rollup function](#rollup-functions), + then `[1i]` is automatically added there. The `[1i]` means one `step` value, which is passed + to [/api/v1/query_range](https://docs.victoriametrics.com/keyConcepts.html#range-query). + It is also known as `$__interval` in Grafana. For example, `rate(http_requests_count)` is automatically transformed to `rate(http_requests_count[1i])`. +* All the [series selectors](https://docs.victoriametrics.com/keyConcepts.html#filtering), + which aren't wrapped into [rollup functions](#rollup-functions), are automatically wrapped into [default_rollup](#default_rollup) function. + Examples: + * `foo` is transformed to `default_rollup(foo[1i])` + * `foo + bar` is transformed to `default_rollup(foo[1i]) + default_rollup(bar[1i])` + * `count(up)` is transformed to `count(default_rollup(up[1i]))`, because [count](#count) isn't a [rollup function](#rollup-functions) - + it is [aggregate function](#aggregate-functions) + * `abs(temperature)` is transformed to `abs(default_rollup(temperature[1i]))`, because [abs](#abs) isn't a [rollup function](#rollup-functions) - + it is [transform function](#transform-functions) +* If `step` in square brackets is missing inside [subquery](#subqueries), then `1i` step is automatically added there. + For example, `avg_over_time(rate(http_requests_total[5m])[1h])` is automatically converted to `avg_over_time(rate(http_requests_total[5m])[1h:1i])`. +* If something other than [series selector](https://docs.victoriametrics.com/keyConcepts.html#filtering) + is passed to [rollup function](#rollup-functions), then a [subquery](#subqueries) with `1i` lookbehind window and `1i` step is automatically formed. + For example, `rate(sum(up))` is automatically converted to `rate((sum(default_rollup(up[1i])))[1i:1i])`. diff --git a/app/vmui/Dockerfile-web b/app/vmui/Dockerfile-web index 6c5663ede..687a3cc6a 100644 --- a/app/vmui/Dockerfile-web +++ b/app/vmui/Dockerfile-web @@ -1,4 +1,4 @@ -FROM golang:1.21.1 as build-web-stage +FROM golang:1.21.3 as build-web-stage COPY build /build WORKDIR /build diff --git a/app/vmui/packages/vmui/package-lock.json b/app/vmui/packages/vmui/package-lock.json index 5f5134198..60b77e973 100644 --- a/app/vmui/packages/vmui/package-lock.json +++ b/app/vmui/packages/vmui/package-lock.json @@ -84,46 +84,47 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", - "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", "dev": true, "dependencies": { - "@babel/highlight": "^7.22.5" + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", - "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz", + "integrity": "sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.9.tgz", - "integrity": "sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz", + "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.9", - "@babel/helper-module-transforms": "^7.22.9", - "@babel/helpers": "^7.22.6", - "@babel/parser": "^7.22.7", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.8", - "@babel/types": "^7.22.5", - "convert-source-map": "^1.7.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helpers": "^7.23.2", + "@babel/parser": "^7.23.0", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", + "json5": "^2.2.3", "semver": "^6.3.1" }, "engines": { @@ -135,9 +136,9 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.22.9.tgz", - "integrity": "sha512-xdMkt39/nviO/4vpVdrEYPwXCsYIXSSAr6mC7WQsNIlGnuxKyKE7GZjalcnbSWiC4OXGNNN3UQPeHfjSC6sTDA==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.22.15.tgz", + "integrity": "sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg==", "dev": true, "dependencies": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", @@ -148,7 +149,7 @@ "node": "^10.13.0 || ^12.13.0 || >=14.0.0" }, "peerDependencies": { - "@babel/core": ">=7.11.0", + "@babel/core": "^7.11.0", "eslint": "^7.5.0 || ^8.0.0" } }, @@ -162,12 +163,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.9.tgz", - "integrity": "sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5", + "@babel/types": "^7.23.0", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -189,46 +190,43 @@ } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.5.tgz", - "integrity": "sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz", - "integrity": "sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", "dev": true, "dependencies": { "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", "browserslist": "^4.21.9", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.9.tgz", - "integrity": "sha512-Pwyi89uO4YrGKxL/eNJ8lfEH55DnRloGPOseaA8NFNL6jAUnn+KccaISiFazCj5IolPPDjGSdzQzXVzODVRqUQ==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", + "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-function-name": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.15", "@babel/helper-optimise-call-expression": "^7.22.5", "@babel/helper-replace-supers": "^7.22.9", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", @@ -243,9 +241,9 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz", - "integrity": "sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", @@ -260,9 +258,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", - "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz", + "integrity": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", @@ -276,22 +274,22 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, "dependencies": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" @@ -310,40 +308,40 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz", - "integrity": "sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", - "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", + "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", "@babel/helper-simple-access": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.5" + "@babel/helper-validator-identifier": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -374,14 +372,14 @@ } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz", - "integrity": "sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-wrap-function": "^7.22.9" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -391,13 +389,13 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz", - "integrity": "sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", "@babel/helper-optimise-call-expression": "^7.22.5" }, "engines": { @@ -453,59 +451,59 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.9.tgz", - "integrity": "sha512-sZ+QzfauuUEfxSEjKFmi3qDSHgLsTPK/pEpoD/qonZKOtTPTLbf59oabPQ4rKekt9lFcj/hTZaOhWwFYrgjk+Q==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", "dev": true, "dependencies": { "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz", - "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", + "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", "dev": true, "dependencies": { - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.6", - "@babel/types": "^7.22.5" + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", - "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.22.5", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "engines": { @@ -513,9 +511,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz", - "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -525,9 +523,9 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz", - "integrity": "sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz", + "integrity": "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -540,14 +538,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz", - "integrity": "sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz", + "integrity": "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.5" + "@babel/plugin-transform-optional-chaining": "^7.22.15" }, "engines": { "node": ">=6.9.0" @@ -560,6 +558,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", "dev": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.18.6", @@ -573,16 +572,16 @@ } }, "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.22.7.tgz", - "integrity": "sha512-omXqPF7Onq4Bb7wHxXjM3jSMSJvUUbvDvmmds7KI5n9Cq6Ln5I05I1W2nRlRof1rGdiUxJrxwe285WF96XlBXQ==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.2.tgz", + "integrity": "sha512-eR0gJQc830fJVGz37oKLvt9W9uUIQSAovUl0e9sJ3YeO09dlcoBVYD3CLrjCj4qHdXmfiyTyFt8yeQYSN5fxLg==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.6", + "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/plugin-syntax-decorators": "^7.22.5" + "@babel/plugin-syntax-decorators": "^7.22.10" }, "engines": { "node": ">=6.9.0" @@ -595,6 +594,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", @@ -611,6 +611,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", @@ -627,6 +628,7 @@ "version": "7.21.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.20.2", @@ -644,6 +646,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead.", "dev": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.18.6", @@ -660,6 +663,7 @@ "version": "7.21.11", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz", "integrity": "sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead.", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", @@ -674,22 +678,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", - "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", @@ -743,9 +731,9 @@ } }, "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.22.5.tgz", - "integrity": "sha512-avpUOBS7IU6al8MmF1XpAyj9QYeLPuSDJI5D4pVMSMdL7xQokKqJPYQC67RCT0aCTashUXPiGwMJ0DEXXCEmMA==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.22.10.tgz", + "integrity": "sha512-z1KTVemBjnz+kSEilAsI4lbkPOl5TvJH7YDSY1CTIzvLWJ+KHXp+mRe8VPmfnyvqOPqar1V2gid2PleKzRUstQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1014,14 +1002,14 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.7.tgz", - "integrity": "sha512-7HmE7pk/Fmke45TODvxvkxRMV9RazV+ZZzhOL9AG8G29TLrr3jkjwF7uJfxZ30EoXpO+LJkq4oA8NjO2DTnEDg==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.2.tgz", + "integrity": "sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20", "@babel/plugin-syntax-async-generators": "^7.8.4" }, "engines": { @@ -1064,9 +1052,9 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.5.tgz", - "integrity": "sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz", + "integrity": "sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1095,12 +1083,12 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.5.tgz", - "integrity": "sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz", + "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.11", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, @@ -1112,18 +1100,18 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz", - "integrity": "sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz", + "integrity": "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-function-name": "^7.22.5", "@babel/helper-optimise-call-expression": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", "@babel/helper-split-export-declaration": "^7.22.6", "globals": "^11.1.0" }, @@ -1151,9 +1139,9 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.5.tgz", - "integrity": "sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz", + "integrity": "sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1197,9 +1185,9 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.5.tgz", - "integrity": "sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz", + "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1229,9 +1217,9 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz", - "integrity": "sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz", + "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1261,9 +1249,9 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz", - "integrity": "sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz", + "integrity": "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1293,9 +1281,9 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.5.tgz", - "integrity": "sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz", + "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1324,9 +1312,9 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.5.tgz", - "integrity": "sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz", + "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1355,12 +1343,12 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz", - "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz", + "integrity": "sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.0", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1371,12 +1359,12 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz", - "integrity": "sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz", + "integrity": "sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.0", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-simple-access": "^7.22.5" }, @@ -1388,15 +1376,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz", - "integrity": "sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz", + "integrity": "sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg==", "dev": true, "dependencies": { "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.0", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5" + "@babel/helper-validator-identifier": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -1453,9 +1441,9 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.5.tgz", - "integrity": "sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz", + "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1469,9 +1457,9 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.5.tgz", - "integrity": "sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz", + "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1485,16 +1473,16 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz", - "integrity": "sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz", + "integrity": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.5", + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.22.5" + "@babel/plugin-transform-parameters": "^7.22.15" }, "engines": { "node": ">=6.9.0" @@ -1520,9 +1508,9 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.5.tgz", - "integrity": "sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz", + "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1536,9 +1524,9 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.6.tgz", - "integrity": "sha512-Vd5HiWml0mDVtcLHIoEU5sw6HOUW/Zk0acLs/SAeuLzkGNOPc9DB4nkUajemhCmTIz3eiaKREZn2hQQqF79YTg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz", + "integrity": "sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1553,9 +1541,9 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz", - "integrity": "sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz", + "integrity": "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1584,13 +1572,13 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.5.tgz", - "integrity": "sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz", + "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.11", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, @@ -1648,16 +1636,16 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.5.tgz", - "integrity": "sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.15.tgz", + "integrity": "sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-jsx": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" @@ -1698,13 +1686,13 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.5.tgz", - "integrity": "sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", + "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", - "regenerator-transform": "^0.15.1" + "regenerator-transform": "^0.15.2" }, "engines": { "node": ">=6.9.0" @@ -1729,16 +1717,16 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.9.tgz", - "integrity": "sha512-9KjBH61AGJetCPYp/IEyLEp47SyybZb0nDRpBvmtEkm+rUIwxdlKpyNHI1TmsGkeuLclJdleQHRZ8XLBnnh8CQ==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.2.tgz", + "integrity": "sha512-XOntj6icgzMS58jPVtQpiuF6ZFWxQiJavISGx5KGjRj+3gqZr8+N6Kx+N9BApWzgS+DOjIZfXXj0ZesenOWDyA==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", - "babel-plugin-polyfill-corejs2": "^0.4.4", - "babel-plugin-polyfill-corejs3": "^0.8.2", - "babel-plugin-polyfill-regenerator": "^0.5.1", + "babel-plugin-polyfill-corejs2": "^0.4.6", + "babel-plugin-polyfill-corejs3": "^0.8.5", + "babel-plugin-polyfill-regenerator": "^0.5.3", "semver": "^6.3.1" }, "engines": { @@ -1825,13 +1813,13 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.9.tgz", - "integrity": "sha512-BnVR1CpKiuD0iobHPaM1iLvcwPYN2uVFAqoLVSpEDKWuOikoCv5HbKLxclhKYUXlWkX86DoZGtqI4XhbOsyrMg==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.15.tgz", + "integrity": "sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.9", + "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-typescript": "^7.22.5" }, @@ -1843,9 +1831,9 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.5.tgz", - "integrity": "sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", + "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1906,17 +1894,17 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.9.tgz", - "integrity": "sha512-wNi5H/Emkhll/bqPjsjQorSykrlfY5OWakd6AulLvMEytpKasMVUpVy8RL4qBIBs5Ac6/5i0/Rv0b/Fg6Eag/g==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.2.tgz", + "integrity": "sha512-BW3gsuDD+rvHL2VO2SjAUNTBe5YrjsTiDyqamPDWY723na3/yPQ65X5oQkFVJZ0o50/2d+svm1rkPoJeR1KxVQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.9", + "@babel/compat-data": "^7.23.2", + "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.15", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.15", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", @@ -1937,58 +1925,58 @@ "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.22.5", - "@babel/plugin-transform-async-generator-functions": "^7.22.7", + "@babel/plugin-transform-async-generator-functions": "^7.23.2", "@babel/plugin-transform-async-to-generator": "^7.22.5", "@babel/plugin-transform-block-scoped-functions": "^7.22.5", - "@babel/plugin-transform-block-scoping": "^7.22.5", + "@babel/plugin-transform-block-scoping": "^7.23.0", "@babel/plugin-transform-class-properties": "^7.22.5", - "@babel/plugin-transform-class-static-block": "^7.22.5", - "@babel/plugin-transform-classes": "^7.22.6", + "@babel/plugin-transform-class-static-block": "^7.22.11", + "@babel/plugin-transform-classes": "^7.22.15", "@babel/plugin-transform-computed-properties": "^7.22.5", - "@babel/plugin-transform-destructuring": "^7.22.5", + "@babel/plugin-transform-destructuring": "^7.23.0", "@babel/plugin-transform-dotall-regex": "^7.22.5", "@babel/plugin-transform-duplicate-keys": "^7.22.5", - "@babel/plugin-transform-dynamic-import": "^7.22.5", + "@babel/plugin-transform-dynamic-import": "^7.22.11", "@babel/plugin-transform-exponentiation-operator": "^7.22.5", - "@babel/plugin-transform-export-namespace-from": "^7.22.5", - "@babel/plugin-transform-for-of": "^7.22.5", + "@babel/plugin-transform-export-namespace-from": "^7.22.11", + "@babel/plugin-transform-for-of": "^7.22.15", "@babel/plugin-transform-function-name": "^7.22.5", - "@babel/plugin-transform-json-strings": "^7.22.5", + "@babel/plugin-transform-json-strings": "^7.22.11", "@babel/plugin-transform-literals": "^7.22.5", - "@babel/plugin-transform-logical-assignment-operators": "^7.22.5", + "@babel/plugin-transform-logical-assignment-operators": "^7.22.11", "@babel/plugin-transform-member-expression-literals": "^7.22.5", - "@babel/plugin-transform-modules-amd": "^7.22.5", - "@babel/plugin-transform-modules-commonjs": "^7.22.5", - "@babel/plugin-transform-modules-systemjs": "^7.22.5", + "@babel/plugin-transform-modules-amd": "^7.23.0", + "@babel/plugin-transform-modules-commonjs": "^7.23.0", + "@babel/plugin-transform-modules-systemjs": "^7.23.0", "@babel/plugin-transform-modules-umd": "^7.22.5", "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", "@babel/plugin-transform-new-target": "^7.22.5", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.5", - "@babel/plugin-transform-numeric-separator": "^7.22.5", - "@babel/plugin-transform-object-rest-spread": "^7.22.5", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", + "@babel/plugin-transform-numeric-separator": "^7.22.11", + "@babel/plugin-transform-object-rest-spread": "^7.22.15", "@babel/plugin-transform-object-super": "^7.22.5", - "@babel/plugin-transform-optional-catch-binding": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.6", - "@babel/plugin-transform-parameters": "^7.22.5", + "@babel/plugin-transform-optional-catch-binding": "^7.22.11", + "@babel/plugin-transform-optional-chaining": "^7.23.0", + "@babel/plugin-transform-parameters": "^7.22.15", "@babel/plugin-transform-private-methods": "^7.22.5", - "@babel/plugin-transform-private-property-in-object": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", "@babel/plugin-transform-property-literals": "^7.22.5", - "@babel/plugin-transform-regenerator": "^7.22.5", + "@babel/plugin-transform-regenerator": "^7.22.10", "@babel/plugin-transform-reserved-words": "^7.22.5", "@babel/plugin-transform-shorthand-properties": "^7.22.5", "@babel/plugin-transform-spread": "^7.22.5", "@babel/plugin-transform-sticky-regex": "^7.22.5", "@babel/plugin-transform-template-literals": "^7.22.5", "@babel/plugin-transform-typeof-symbol": "^7.22.5", - "@babel/plugin-transform-unicode-escapes": "^7.22.5", + "@babel/plugin-transform-unicode-escapes": "^7.22.10", "@babel/plugin-transform-unicode-property-regex": "^7.22.5", "@babel/plugin-transform-unicode-regex": "^7.22.5", "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.22.5", - "babel-plugin-polyfill-corejs2": "^0.4.4", - "babel-plugin-polyfill-corejs3": "^0.8.2", - "babel-plugin-polyfill-regenerator": "^0.5.1", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "@babel/types": "^7.23.0", + "babel-plugin-polyfill-corejs2": "^0.4.6", + "babel-plugin-polyfill-corejs3": "^0.8.5", + "babel-plugin-polyfill-regenerator": "^0.5.3", "core-js-compat": "^3.31.0", "semver": "^6.3.1" }, @@ -2012,14 +2000,12 @@ } }, "node_modules/@babel/preset-modules": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6.tgz", - "integrity": "sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg==", + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", "@babel/types": "^7.4.4", "esutils": "^2.0.2" }, @@ -2028,15 +2014,15 @@ } }, "node_modules/@babel/preset-react": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.22.5.tgz", - "integrity": "sha512-M+Is3WikOpEJHgR385HbuCITPTaPRaNkibTEa9oiofmJvIsrceb4yp9RL9Kb+TE8LznmeyZqpP+Lopwcx59xPQ==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.22.15.tgz", + "integrity": "sha512-Csy1IJ2uEh/PecCBXXoZGAZBeCATTuePzCSB7dLYWS0vOEj6CNpjxIhW4duWwZodBNueH7QO14WbGn8YyeuN9w==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", "@babel/plugin-transform-react-display-name": "^7.22.5", - "@babel/plugin-transform-react-jsx": "^7.22.5", + "@babel/plugin-transform-react-jsx": "^7.22.15", "@babel/plugin-transform-react-jsx-development": "^7.22.5", "@babel/plugin-transform-react-pure-annotations": "^7.22.5" }, @@ -2048,16 +2034,16 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.22.5.tgz", - "integrity": "sha512-YbPaal9LxztSGhmndR46FmAbkJ/1fAsw293tSU+I5E5h+cnJ3d4GTwyUgGYmOXJYdGA+uNePle4qbaRzj2NISQ==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.2.tgz", + "integrity": "sha512-u4UJc1XsS1GhIGteM8rnGiIvf9rJpiVgMEeCnwlLA7WJPC+jcXWJAGxYmeqs5hOZD8BbAfnV5ezBOxQbb4OUxA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", "@babel/plugin-syntax-jsx": "^7.22.5", - "@babel/plugin-transform-modules-commonjs": "^7.22.5", - "@babel/plugin-transform-typescript": "^7.22.5" + "@babel/plugin-transform-modules-commonjs": "^7.23.0", + "@babel/plugin-transform-typescript": "^7.22.15" }, "engines": { "node": ">=6.9.0" @@ -2073,45 +2059,45 @@ "dev": true }, "node_modules/@babel/runtime": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz", - "integrity": "sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", + "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", "dev": true, "dependencies": { - "regenerator-runtime": "^0.13.11" + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", - "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.22.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.8.tgz", - "integrity": "sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.7", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.22.7", - "@babel/types": "^7.22.5", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -2120,13 +2106,13 @@ } }, "node_modules/@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2458,18 +2444,18 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.0.tgz", - "integrity": "sha512-uiPeRISaglZnaZk8vwrjQZ1CxogZeY/4IYft6gBOTqu1WhVXWmCmZMWxUv2Q/pxSvPdp1JPaO62kLOcOkMqWrw==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz", + "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz", - "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -2490,9 +2476,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -2517,18 +2503,18 @@ } }, "node_modules/@eslint/js": { - "version": "8.44.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz", - "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==", + "version": "8.51.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz", + "integrity": "sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", - "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", + "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", @@ -3233,6 +3219,13 @@ "dev": true, "peer": true }, + "node_modules/@jest/transform/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true, + "peer": true + }, "node_modules/@jest/transform/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -3374,9 +3367,9 @@ } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "dev": true, "engines": { "node": ">=6.0.0" @@ -3408,21 +3401,15 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, "node_modules/@leichtgewicht/ip-codec": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", @@ -3475,9 +3462,9 @@ } }, "node_modules/@pmmmwh/react-refresh-webpack-plugin": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.10.tgz", - "integrity": "sha512-j0Ya0hCFZPd4x40qLzbhGsh9TMtdb+CJQiso+WxLOPNasohq9cc5SNUcwsZaRH6++Xh91Xkm/xHCkuIiIu0LUA==", + "version": "0.5.11", + "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz", + "integrity": "sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ==", "dev": true, "peer": true, "dependencies": { @@ -3498,7 +3485,7 @@ "@types/webpack": "4.x || 5.x", "react-refresh": ">=0.10.0 <1.0.0", "sockjs-client": "^1.4.0", - "type-fest": ">=0.17.0 <4.0.0", + "type-fest": ">=0.17.0 <5.0.0", "webpack": ">=4.43.0 <6.0.0", "webpack-dev-server": "3.x || 4.x", "webpack-hot-middleware": "2.x", @@ -3526,11 +3513,11 @@ } }, "node_modules/@remix-run/router": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.7.2.tgz", - "integrity": "sha512-7Lcn7IqGMV+vizMPoEl5F0XDshcdDYtMI6uJLQdQz5CfZAwy3vvGKYSUk789qndt5dEC4HfSjviSYlSoHGL2+A==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.10.0.tgz", + "integrity": "sha512-Lm+fYpMfZoEucJ7cMxgt4dYt8jLfbpwRCzAjm9UgSLOkmlqo9gupxt6YX3DY0Fk155NT9l17d/ydi+964uS9Lw==", "engines": { - "node": ">=14" + "node": ">=14.0.0" } }, "node_modules/@rollup/plugin-babel": { @@ -3618,9 +3605,9 @@ "peer": true }, "node_modules/@rushstack/eslint-patch": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.3.2.tgz", - "integrity": "sha512-V+MvGwaHH03hYhY+k6Ef/xKd6RYlc4q8WBx+2ANmipHJcKuktNcI/NgEsJgdSUF6Lw32njT6OnrRsKYCdgHjYw==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.5.1.tgz", + "integrity": "sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==", "dev": true }, "node_modules/@sinclair/typebox": { @@ -3919,9 +3906,9 @@ } }, "node_modules/@types/babel__core": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz", - "integrity": "sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz", + "integrity": "sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==", "dev": true, "peer": true, "dependencies": { @@ -3933,9 +3920,9 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "version": "7.6.5", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.5.tgz", + "integrity": "sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==", "dev": true, "peer": true, "dependencies": { @@ -3943,9 +3930,9 @@ } }, "node_modules/@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.2.tgz", + "integrity": "sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==", "dev": true, "peer": true, "dependencies": { @@ -3954,9 +3941,9 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.1.tgz", - "integrity": "sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.2.tgz", + "integrity": "sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==", "dev": true, "peer": true, "dependencies": { @@ -3964,9 +3951,9 @@ } }, "node_modules/@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "version": "1.19.3", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.3.tgz", + "integrity": "sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==", "dev": true, "peer": true, "dependencies": { @@ -3975,9 +3962,9 @@ } }, "node_modules/@types/bonjour": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", - "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "version": "3.5.11", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.11.tgz", + "integrity": "sha512-isGhjmBtLIxdHBDl2xGwUzEM8AOyOvWsADWq7rqirdi/ZQoHnLWErHvsThcEzTX8juDRiZtzp2Qkv5bgNh6mAg==", "dev": true, "peer": true, "dependencies": { @@ -3985,9 +3972,9 @@ } }, "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "version": "3.4.36", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz", + "integrity": "sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==", "dev": true, "peer": true, "dependencies": { @@ -3995,9 +3982,9 @@ } }, "node_modules/@types/connect-history-api-fallback": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", - "integrity": "sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.1.tgz", + "integrity": "sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw==", "dev": true, "peer": true, "dependencies": { @@ -4006,9 +3993,9 @@ } }, "node_modules/@types/eslint": { - "version": "8.44.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.0.tgz", - "integrity": "sha512-gsF+c/0XOguWgaOgvFs+xnnRqt9GwgTvIks36WpE6ueeI4KCEHHd8K/CKHqhOqrJKsYH8m27kRzQEvWXAwXUTw==", + "version": "8.44.4", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.4.tgz", + "integrity": "sha512-lOzjyfY/D9QR4hY9oblZ76B90MYTB3RrQ4z2vBIJKj9ROCRqdkYl2gSUx1x1a4IWPjKJZLL4Aw1Zfay7eMnmnA==", "dev": true, "dependencies": { "@types/estree": "*", @@ -4016,9 +4003,9 @@ } }, "node_modules/@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "version": "3.7.5", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.5.tgz", + "integrity": "sha512-JNvhIEyxVW6EoMIFIvj93ZOywYFatlpu9deeH6eSx6PE3WHYvHaQtmHmQeNw7aA81bYGBPPQqdtBm6b1SsQMmA==", "dev": true, "dependencies": { "@types/eslint": "*", @@ -4026,15 +4013,15 @@ } }, "node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.2.tgz", + "integrity": "sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==", "dev": true }, "node_modules/@types/express": { - "version": "4.17.17", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", - "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.19.tgz", + "integrity": "sha512-UtOfBtzN9OvpZPPbnnYunfjM7XCI4jyk1NvnFhTVz5krYAnW4o5DCoIekvms+8ApqhB4+9wSge1kBijdfTSmfg==", "dev": true, "peer": true, "dependencies": { @@ -4045,9 +4032,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.35", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz", - "integrity": "sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==", + "version": "4.17.37", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.37.tgz", + "integrity": "sha512-ZohaCYTgGFcOP7u6aJOhY9uIZQgZ2vxC2yWoArY+FeDXlqeH66ZVBjgvg+RLVAS/DWNq4Ap9ZXu1+SUQiiWYMg==", "dev": true, "peer": true, "dependencies": { @@ -4058,9 +4045,9 @@ } }, "node_modules/@types/graceful-fs": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", - "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.7.tgz", + "integrity": "sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw==", "dev": true, "peer": true, "dependencies": { @@ -4080,16 +4067,16 @@ "peer": true }, "node_modules/@types/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.2.tgz", + "integrity": "sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg==", "dev": true, "peer": true }, "node_modules/@types/http-proxy": { - "version": "1.17.11", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz", - "integrity": "sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==", + "version": "1.17.12", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.12.tgz", + "integrity": "sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw==", "dev": true, "peer": true, "dependencies": { @@ -4104,9 +4091,9 @@ "peer": true }, "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ==", "dev": true, "peer": true, "dependencies": { @@ -4114,9 +4101,9 @@ } }, "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A==", "dev": true, "peer": true, "dependencies": { @@ -4124,9 +4111,9 @@ } }, "node_modules/@types/json-schema": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", - "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "version": "7.0.13", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz", + "integrity": "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==", "dev": true }, "node_modules/@types/json5": { @@ -4136,9 +4123,9 @@ "dev": true }, "node_modules/@types/lodash": { - "version": "4.14.195", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.195.tgz", - "integrity": "sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg==" + "version": "4.14.199", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.199.tgz", + "integrity": "sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg==" }, "node_modules/@types/lodash.debounce": { "version": "4.0.7", @@ -4165,21 +4152,24 @@ } }, "node_modules/@types/marked": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@types/marked/-/marked-5.0.1.tgz", - "integrity": "sha512-Y3pAUzHKh605fN6fvASsz5FDSWbZcs/65Q6xYRmnIP9ZIYz27T4IOmXfH9gWJV1dpi7f1e7z7nBGUTx/a0ptpA==" + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@types/marked/-/marked-5.0.2.tgz", + "integrity": "sha512-OucS4KMHhFzhz27KxmWg7J+kIYqyqoW5kdIEI319hqARQQUTqhao3M/F+uFnDXD0Rg72iDDZxZNxq5gvctmLlg==" }, "node_modules/@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.3.tgz", + "integrity": "sha512-Ys+/St+2VF4+xuY6+kDIXGxbNRO0mesVg0bbxEfB97Od1Vjpjx9KD1qxs64Gcb3CWPirk9Xe+PT4YiiHQ9T+eg==", "dev": true, "peer": true }, "node_modules/@types/node": { - "version": "20.4.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.4.tgz", - "integrity": "sha512-CukZhumInROvLq3+b5gLev+vgpsIqC2D0deQr/yS1WnxvmYLlJXZpaQrQiseMY+6xusl79E04UjWoqyr+t1/Ew==" + "version": "20.8.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.6.tgz", + "integrity": "sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ==", + "dependencies": { + "undici-types": "~5.25.1" + } }, "node_modules/@types/parse-json": { "version": "4.0.0", @@ -4195,33 +4185,33 @@ "peer": true }, "node_modules/@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" + "version": "15.7.8", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.8.tgz", + "integrity": "sha512-kMpQpfZKSCBqltAJwskgePRaYRFukDkm1oItcAbC3gNELR20XIBcN9VRgg4+m8DKsTfkWeA4m4Imp4DDuWy7FQ==" }, "node_modules/@types/q": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", - "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==", + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.6.tgz", + "integrity": "sha512-IKjZ8RjTSwD4/YG+2gtj7BPFRB/lNbWKTiSj3M7U/TD2B7HfYCxvp2Zz6xA2WIY7pAuL1QOUPw8gQRbUrrq4fQ==", "dev": true, "peer": true }, "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" + "version": "6.9.8", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz", + "integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==" }, "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.5.tgz", + "integrity": "sha512-xrO9OoVPqFuYyR/loIHjnbvvyRZREYKLjxV4+dY6v3FQR3stQ9ZxIGkaclF7YhI9hfjpuTbu14hZEy94qKLtOA==", "dev": true, "peer": true }, "node_modules/@types/react": { - "version": "18.2.15", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.15.tgz", - "integrity": "sha512-oEjE7TQt1fFTFSbf8kkNuc798ahTUzn3Le67/PWjE8MAfYAD/qB7O8hSTcromLFqHCt9bcdOg5GXMokzTjJ5SA==", + "version": "18.2.28", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.28.tgz", + "integrity": "sha512-ad4aa/RaaJS3hyGz0BGegdnSRXQBkd1CCYDCdNjBPg90UUpLgo+WlJqb9fMYUxtehmzF3PJaTWqRZjko6BRzBg==", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -4229,18 +4219,18 @@ } }, "node_modules/@types/react-dom": { - "version": "18.2.7", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.7.tgz", - "integrity": "sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==", + "version": "18.2.13", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.13.tgz", + "integrity": "sha512-eJIUv7rPP+EC45uNYp/ThhSpE16k22VJUknt5OLoH9tbXoi8bMhwLf5xRuWMywamNbWzhrSmU7IBJfPup1+3fw==", "dev": true, "dependencies": { "@types/react": "*" } }, "node_modules/@types/react-input-mask": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/react-input-mask/-/react-input-mask-3.0.2.tgz", - "integrity": "sha512-WTli3kUyvUqqaOLYG/so2pLqUvRb+n4qnx2He5klfqZDiQmRyD07jVIt/bco/1BrcErkPMtpOm+bHii4Oed6cQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/react-input-mask/-/react-input-mask-3.0.3.tgz", + "integrity": "sha512-woaVZxXcze6i+I45mQfpImnG1n5S1ZFTMBx46BoP4xOyCuiF3DGy1a4lCKM4r7iQqdb34XN9f8IbrAOQGNsEkg==", "dependencies": { "@types/react": "*" } @@ -4282,20 +4272,20 @@ "peer": true }, "node_modules/@types/scheduler": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", - "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" + "version": "0.16.4", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.4.tgz", + "integrity": "sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ==" }, "node_modules/@types/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==", "dev": true }, "node_modules/@types/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", - "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.2.tgz", + "integrity": "sha512-aAG6yRf6r0wQ29bkS+x97BIs64ZLxeE/ARwyS6wrldMm3C1MdKwCcnnEwMC1slI8wuxJOpiUH9MioC0A0i+GJw==", "dev": true, "peer": true, "dependencies": { @@ -4304,9 +4294,9 @@ } }, "node_modules/@types/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.2.tgz", + "integrity": "sha512-asaEIoc6J+DbBKXtO7p2shWUpKacZOoMBEGBgPG91P8xhO53ohzHWGCs4ScZo5pQMf5ukQzVT9fhX1WzpHihig==", "dev": true, "peer": true, "dependencies": { @@ -4314,9 +4304,9 @@ } }, "node_modules/@types/serve-static": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz", - "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.3.tgz", + "integrity": "sha512-yVRvFsEMrv7s0lGhzrggJjNOSmZCdgCjw9xWrPr/kNNLp6FaDfMC1KaYl3TSJ0c58bECwNBMoQrZJ8hA8E1eFg==", "dev": true, "peer": true, "dependencies": { @@ -4326,9 +4316,9 @@ } }, "node_modules/@types/sockjs": { - "version": "0.3.33", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", - "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "version": "0.3.34", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.34.tgz", + "integrity": "sha512-R+n7qBFnm/6jinlteC9DBL5dGiDGjWAvjo4viUanpnc/dG1y7uDoacXPIQ/PQEg1fI912SMHIa014ZjRpvDw4g==", "dev": true, "peer": true, "dependencies": { @@ -4343,21 +4333,21 @@ "peer": true }, "node_modules/@types/trusted-types": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.3.tgz", - "integrity": "sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.4.tgz", + "integrity": "sha512-IDaobHimLQhjwsQ/NMwRVfa/yL7L/wriQPMhw1ZJall0KX6E1oxk29XMDeilW5qTIg5aoiqf5Udy8U/51aNoQQ==", "dev": true, "peer": true }, "node_modules/@types/webpack-env": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.18.1.tgz", - "integrity": "sha512-D0HJET2/UY6k9L6y3f5BL+IDxZmPkYmPT4+qBrRdmRLYRuV0qNKizMgTvYxXZYn+36zjPeoDZAEYBCM6XB+gww==" + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.18.2.tgz", + "integrity": "sha512-BFqcTHHTrrI8EBmIzNAmLPP3IqtEG9J1IPFWbPeS/F0/TGNmo0pI5svOa7JbMF9vSCXQCvJWT2gxLJNVuf9blw==" }, "node_modules/@types/ws": { - "version": "8.5.5", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", - "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==", + "version": "8.5.7", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.7.tgz", + "integrity": "sha512-6UrLjiDUvn40CMrAubXuIVtj2PEfKDffJS7ychvnPU44j+KVeXmdHHTgqcM/dxLUTHxlXHiFM8Skmb8ozGdTnQ==", "dev": true, "peer": true, "dependencies": { @@ -4365,9 +4355,9 @@ } }, "node_modules/@types/yargs": { - "version": "16.0.5", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", - "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "version": "16.0.6", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.6.tgz", + "integrity": "sha512-oTP7/Q13GSPrgcwEwdlnkoZSQ1Hg9THe644qq8PG6hhJzjZ3qj1JjEFPIwWV/IXVs5XGIVqtkNOS9kh63WIJ+A==", "dev": true, "peer": true, "dependencies": { @@ -4375,9 +4365,9 @@ } }, "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ==", "dev": true, "peer": true }, @@ -5145,15 +5135,15 @@ "peer": true }, "node_modules/array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", "is-string": "^1.0.7" }, "engines": { @@ -5172,15 +5162,34 @@ "node": ">=8" } }, - "node_modules/array.prototype.flat": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", - "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "node_modules/array.prototype.findlastindex": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", + "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", "es-shim-unscopables": "^1.0.0" }, "engines": { @@ -5191,14 +5200,14 @@ } }, "node_modules/array.prototype.flatmap": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", "es-shim-unscopables": "^1.0.0" }, "engines": { @@ -5209,15 +5218,15 @@ } }, "node_modules/array.prototype.reduce": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz", - "integrity": "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.6.tgz", + "integrity": "sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg==", "dev": true, "peer": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", "es-array-method-boxes-properly": "^1.0.0", "is-string": "^1.0.7" }, @@ -5229,27 +5238,28 @@ } }, "node_modules/array.prototype.tosorted": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", - "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz", + "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.1.3" + "get-intrinsic": "^1.2.1" } }, "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz", - "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.0", "call-bind": "^1.0.2", "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", "get-intrinsic": "^1.2.1", "is-array-buffer": "^3.0.2", "is-shared-array-buffer": "^1.0.2" @@ -5279,6 +5289,15 @@ "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" }, + "node_modules/asynciterator.prototype": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", + "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + } + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -5297,9 +5316,9 @@ } }, "node_modules/autoprefixer": { - "version": "10.4.14", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", - "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==", + "version": "10.4.16", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", + "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", "dev": true, "funding": [ { @@ -5309,13 +5328,17 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "peer": true, "dependencies": { - "browserslist": "^4.21.5", - "caniuse-lite": "^1.0.30001464", - "fraction.js": "^4.2.0", + "browserslist": "^4.21.10", + "caniuse-lite": "^1.0.30001538", + "fraction.js": "^4.3.6", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", "postcss-value-parser": "^4.2.0" @@ -5343,9 +5366,9 @@ } }, "node_modules/axe-core": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.2.tgz", - "integrity": "sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==", + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.8.2.tgz", + "integrity": "sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g==", "dev": true, "engines": { "node": ">=4" @@ -5557,13 +5580,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", - "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz", + "integrity": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==", "dev": true, "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.2", + "@babel/helper-define-polyfill-provider": "^0.4.3", "semver": "^6.3.1" }, "peerDependencies": { @@ -5571,25 +5594,25 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz", - "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.5.tgz", + "integrity": "sha512-Q6CdATeAvbScWPNLB8lzSO7fgUVBkQt6zLgNlfyeCr/EQaEQR+bWiBYYPYAFyE528BMjRhL+1QBMOI4jc/c5TA==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.2", - "core-js-compat": "^3.31.0" + "@babel/helper-define-polyfill-provider": "^0.4.3", + "core-js-compat": "^3.32.2" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", - "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz", + "integrity": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.2" + "@babel/helper-define-polyfill-provider": "^0.4.3" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -5679,15 +5702,16 @@ "peer": true }, "node_modules/bfj": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/bfj/-/bfj-7.0.2.tgz", - "integrity": "sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/bfj/-/bfj-7.1.0.tgz", + "integrity": "sha512-I6MMLkn+anzNdCUp9hMRyui1HaNEUCco50lxbvNS4+EyXg8lN3nJ48PjPWtbH8UVS9CuMoaKE9U2V3l29DaRQw==", "dev": true, "peer": true, "dependencies": { - "bluebird": "^3.5.5", - "check-types": "^11.1.1", + "bluebird": "^3.7.2", + "check-types": "^11.2.3", "hoopy": "^0.1.4", + "jsonpath": "^1.1.1", "tryer": "^1.0.1" }, "engines": { @@ -5848,9 +5872,9 @@ "peer": true }, "node_modules/browserslist": { - "version": "4.21.9", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", - "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", + "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", "dev": true, "funding": [ { @@ -5867,10 +5891,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001503", - "electron-to-chromium": "^1.4.431", - "node-releases": "^2.0.12", - "update-browserslist-db": "^1.0.11" + "caniuse-lite": "^1.0.30001541", + "electron-to-chromium": "^1.4.535", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.13" }, "bin": { "browserslist": "cli.js" @@ -5998,9 +6022,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001517", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz", - "integrity": "sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==", + "version": "1.0.30001549", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001549.tgz", + "integrity": "sha512-qRp48dPYSCYaP+KurZLhDYdVE+yEyht/3NlmcJgVQ2VMGt6JL36ndQ/7rgspdZsJuxDPFIo/OzBT2+GmIJ53BA==", "dev": true, "funding": [ { @@ -6052,9 +6076,9 @@ } }, "node_modules/check-types": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/check-types/-/check-types-11.2.2.tgz", - "integrity": "sha512-HBiYvXvn9Z70Z88XKjz3AEKd4HJhBXsa3j7xFnITAzoS8+q6eIGi8qDB8FKPBAjtuxjI/zFpwuiCb8oDtKOYrA==", + "version": "11.2.3", + "resolved": "https://registry.npmjs.org/check-types/-/check-types-11.2.3.tgz", + "integrity": "sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg==", "dev": true, "peer": true }, @@ -6105,9 +6129,9 @@ } }, "node_modules/ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "dev": true, "funding": [ { @@ -6375,9 +6399,10 @@ } }, "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true }, "node_modules/cookie": { "version": "0.5.0", @@ -6397,9 +6422,9 @@ "peer": true }, "node_modules/core-js": { - "version": "3.31.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.31.1.tgz", - "integrity": "sha512-2sKLtfq1eFST7l7v62zaqXacPc7uG8ZAya8ogijLhTtaKNcpzpB4TMoTw2Si+8GYKRwFPMMtUT0263QFWFfqyQ==", + "version": "3.33.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.33.0.tgz", + "integrity": "sha512-HoZr92+ZjFEKar5HS6MC776gYslNOKHt75mEBKWKnPeFDpZ6nH5OeF3S6HFT1mUAUZKrzkez05VboaX8myjSuw==", "dev": true, "hasInstallScript": true, "peer": true, @@ -6409,12 +6434,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.31.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.31.1.tgz", - "integrity": "sha512-wIDWd2s5/5aJSdpOJHfSibxNODxoGoWOBHt8JSPB41NOE94M7kuTPZCYLOlTtuoXTsBPKobpJ6T+y0SSy5L9SA==", + "version": "3.33.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.0.tgz", + "integrity": "sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw==", "dev": true, "dependencies": { - "browserslist": "^4.21.9" + "browserslist": "^4.22.1" }, "funding": { "type": "opencollective", @@ -6422,9 +6447,9 @@ } }, "node_modules/core-js-pure": { - "version": "3.31.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.31.1.tgz", - "integrity": "sha512-w+C62kvWti0EPs4KPMCMVv9DriHSXfQOCQ94bGGBiEW5rrbtt/Rz8n5Krhfw9cpFyzXBjf3DB3QnPdEzGDY4Fw==", + "version": "3.33.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.33.0.tgz", + "integrity": "sha512-FKSIDtJnds/YFIEaZ4HszRX7hkxGpNKM7FC9aJ9WLJbSd3lD4vOltFuVIBLR8asSx9frkTSqL0dw90SKQxgKrg==", "dev": true, "hasInstallScript": true, "peer": true, @@ -6796,9 +6821,9 @@ } }, "node_modules/cssdb": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.6.0.tgz", - "integrity": "sha512-Nna7rph8V0jC6+JBY4Vk4ndErUmfJfV6NJCaZdurL0omggabiy+QB2HCQtu5c/ACLZ0I7REv7A4QyPIoYzZx0w==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.8.0.tgz", + "integrity": "sha512-SkeezZOQr5AHt9MgJgSFNyiuJwg1p8AwoVln6JwaQJsyxduRW9QJ+HP/gAQzbsz8SIqINtYvpJKjxTRI67zxLg==", "dev": true, "funding": [ { @@ -7011,9 +7036,9 @@ } }, "node_modules/dayjs": { - "version": "1.11.9", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.9.tgz", - "integrity": "sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==" + "version": "1.11.10", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", + "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" }, "node_modules/debug": { "version": "4.3.4", @@ -7075,6 +7100,20 @@ "node": ">= 10" } }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/define-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", @@ -7086,11 +7125,12 @@ } }, "node_modules/define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, "dependencies": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" }, @@ -7237,9 +7277,9 @@ "peer": true }, "node_modules/dns-packet": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.0.tgz", - "integrity": "sha512-rza3UH1LwdHh9qyPXp8lkwpjSNk/AMD3dPytUoRoqnypDUhY0xvbdmVhWOfxO68frEfV9BU8V12Ez7ZsHGZpCQ==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", "dev": true, "peer": true, "dependencies": { @@ -7408,9 +7448,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.468", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.468.tgz", - "integrity": "sha512-6M1qyhaJOt7rQtNti1lBA0GwclPH+oKCmsra/hkcWs5INLxfXXD/dtdnaKUYQu/pjOBP/8Osoe4mAcNvvzoFag==", + "version": "1.4.557", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.557.tgz", + "integrity": "sha512-6x0zsxyMXpnMJnHrondrD3SuAeKcwij9S+83j2qHAQPXbGTDDfgImzzwgGlzrIcXbHQ42tkG4qA6U860cImNhw==", "dev": true }, "node_modules/emittery": { @@ -7495,18 +7535,18 @@ } }, "node_modules/es-abstract": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz", - "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==", + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", + "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.2", "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.5", + "function.prototype.name": "^1.1.6", "get-intrinsic": "^1.2.1", "get-symbol-description": "^1.0.0", "globalthis": "^1.0.3", @@ -7522,23 +7562,23 @@ "is-regex": "^1.1.4", "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", + "is-typed-array": "^1.1.12", "is-weakref": "^1.0.2", "object-inspect": "^1.12.3", "object-keys": "^1.1.1", "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.0", - "safe-array-concat": "^1.0.0", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.7", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", "typed-array-buffer": "^1.0.0", "typed-array-byte-length": "^1.0.0", "typed-array-byte-offset": "^1.0.0", "typed-array-length": "^1.0.4", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.10" + "which-typed-array": "^1.1.11" }, "engines": { "node": ">= 0.4" @@ -7554,10 +7594,32 @@ "dev": true, "peer": true }, + "node_modules/es-iterator-helpers": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", + "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", + "dev": true, + "dependencies": { + "asynciterator.prototype": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.1", + "es-set-tostringtag": "^2.0.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.0.1" + } + }, "node_modules/es-module-lexer": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", - "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz", + "integrity": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==", "dev": true }, "node_modules/es-set-tostringtag": { @@ -7656,27 +7718,27 @@ } }, "node_modules/eslint": { - "version": "8.45.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.45.0.tgz", - "integrity": "sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==", + "version": "8.51.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz", + "integrity": "sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.1.0", - "@eslint/js": "8.44.0", - "@humanwhocodes/config-array": "^0.11.10", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.51.0", + "@humanwhocodes/config-array": "^0.11.11", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.1", - "espree": "^9.6.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -7738,14 +7800,14 @@ } }, "node_modules/eslint-import-resolver-node": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", - "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, "dependencies": { "debug": "^3.2.7", - "is-core-module": "^2.11.0", - "resolve": "^1.22.1" + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" } }, "node_modules/eslint-import-resolver-node/node_modules/debug": { @@ -7802,26 +7864,28 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.27.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", - "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", + "version": "2.28.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz", + "integrity": "sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==", "dev": true, "dependencies": { "array-includes": "^3.1.6", + "array.prototype.findlastindex": "^1.2.2", "array.prototype.flat": "^1.3.1", "array.prototype.flatmap": "^1.3.1", "debug": "^3.2.7", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.7", - "eslint-module-utils": "^2.7.4", + "eslint-module-utils": "^2.8.0", "has": "^1.0.3", - "is-core-module": "^2.11.0", + "is-core-module": "^2.13.0", "is-glob": "^4.0.3", "minimatch": "^3.1.2", + "object.fromentries": "^2.0.6", + "object.groupby": "^1.0.0", "object.values": "^1.1.6", - "resolve": "^1.22.1", - "semver": "^6.3.0", - "tsconfig-paths": "^3.14.1" + "semver": "^6.3.1", + "tsconfig-paths": "^3.14.2" }, "engines": { "node": ">=4" @@ -7906,15 +7970,16 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.33.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.0.tgz", - "integrity": "sha512-qewL/8P34WkY8jAqdQxsiL82pDUeT7nhs8IsuXgfgnsEloKCT4miAV9N9kGtx7/KM9NH/NCGUE7Edt9iGxLXFw==", + "version": "7.33.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", + "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", "dev": true, "dependencies": { "array-includes": "^3.1.6", "array.prototype.flatmap": "^1.3.1", "array.prototype.tosorted": "^1.1.1", "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.12", "estraverse": "^5.3.0", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", @@ -7959,12 +8024,12 @@ } }, "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", - "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, "dependencies": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -7976,9 +8041,9 @@ } }, "node_modules/eslint-plugin-testing-library": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.0.tgz", - "integrity": "sha512-ELY7Gefo+61OfXKlQeXNIDVVLPcvKTeiQOoMZG9TeuWa7Ln4dUNRv8JdRWBQI9Mbb427XGlVB1aa1QPZxBJM8Q==", + "version": "5.11.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.1.tgz", + "integrity": "sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==", "dev": true, "dependencies": { "@typescript-eslint/utils": "^5.58.0" @@ -8014,9 +8079,9 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -8210,9 +8275,9 @@ } }, "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.1.tgz", - "integrity": "sha512-CvefSOsDdaYYvxChovdrPo/ZGt8d5lrJWleAc1diXRKhHGiTYEI26cvo8Kle/wGnsizoCJjK73FMg1/IkIwiNA==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", @@ -8226,9 +8291,9 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -8742,28 +8807,29 @@ } }, "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz", + "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==", "dev": true, "dependencies": { - "flatted": "^3.1.0", + "flatted": "^3.2.9", + "keyv": "^4.5.3", "rimraf": "^3.0.2" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=12.0.0" } }, "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", "dev": true }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", "dev": true, "funding": [ { @@ -9030,9 +9096,9 @@ } }, "node_modules/fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", "dev": true, "peer": true, "engines": { @@ -9040,7 +9106,7 @@ }, "funding": { "type": "patreon", - "url": "https://www.patreon.com/infusion" + "url": "https://github.com/sponsors/rawify" } }, "node_modules/fresh": { @@ -9069,9 +9135,9 @@ } }, "node_modules/fs-monkey": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.4.tgz", - "integrity": "sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", + "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==", "dev": true, "peer": true }, @@ -9081,9 +9147,9 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "hasInstallScript": true, "optional": true, "os": [ @@ -9094,20 +9160,23 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" }, "engines": { "node": ">= 0.4" @@ -9377,12 +9446,9 @@ "peer": true }, "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", "engines": { "node": ">= 0.4.0" } @@ -9807,9 +9873,9 @@ } }, "node_modules/immutable": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.1.tgz", - "integrity": "sha512-lj9cnmB/kVS0QHsJnYKD1uo3o39nrbKxszjnqS9Fr6NB7bZzW45U6WSGBPKXDL/CvDKqDNPA4r3DoDQ8GTxo2A==" + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", + "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==" }, "node_modules/import-fresh": { "version": "3.3.0", @@ -9929,6 +9995,21 @@ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-bigint": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", @@ -9981,9 +10062,9 @@ } }, "node_modules/is-core-module": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", - "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -10029,6 +10110,18 @@ "node": ">=0.10.0" } }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -10047,6 +10140,21 @@ "node": ">=6" } }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -10058,6 +10166,15 @@ "node": ">=0.10.0" } }, + "node_modules/is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", @@ -10175,6 +10292,15 @@ "node": ">=6" } }, + "node_modules/is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-shared-array-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", @@ -10252,6 +10378,15 @@ "dev": true, "peer": true }, + "node_modules/is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -10264,6 +10399,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -10315,18 +10463,18 @@ } }, "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "peer": true, "dependencies": { "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", + "make-dir": "^4.0.0", "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" } }, "node_modules/istanbul-lib-report/node_modules/has-flag": { @@ -10339,6 +10487,51 @@ "node": ">=8" } }, + "node_modules/istanbul-lib-report/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "peer": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "peer": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/istanbul-lib-report/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "peer": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/istanbul-lib-report/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -10352,6 +10545,13 @@ "node": ">=8" } }, + "node_modules/istanbul-lib-report/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "peer": true + }, "node_modules/istanbul-lib-source-maps": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", @@ -10378,9 +10578,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", "dev": true, "peer": true, "dependencies": { @@ -10391,6 +10591,19 @@ "node": ">=8" } }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, "node_modules/jake": { "version": "10.8.7", "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", @@ -12238,9 +12451,9 @@ } }, "node_modules/jest-watch-typeahead/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "version": "17.0.28", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.28.tgz", + "integrity": "sha512-N3e3fkS86hNhtk6BEnc0rj3zcehaxx8QWhCROJkqpl5Zaoi7nAic3jH8q94jVD3zu5LGk+PUB6KAiDmimYOEQw==", "dev": true, "peer": true, "dependencies": { @@ -12681,9 +12894,9 @@ } }, "node_modules/jiti": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.19.1.tgz", - "integrity": "sha512-oVhqoRDaBXf7sjkll95LHVS6Myyyb1zaunVwk4Z0+WPSW4gjS0pl01zYKHScTuyEhQsFxV5L4DR5r+YqSyqyyg==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.20.0.tgz", + "integrity": "sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==", "dev": true, "peer": true, "bin": { @@ -12766,6 +12979,12 @@ "node": ">=4" } }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", @@ -12816,6 +13035,32 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/jsonpath": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/jsonpath/-/jsonpath-1.1.1.tgz", + "integrity": "sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==", + "dev": true, + "peer": true, + "dependencies": { + "esprima": "1.2.2", + "static-eval": "2.0.2", + "underscore": "1.12.1" + } + }, + "node_modules/jsonpath/node_modules/esprima": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.2.tgz", + "integrity": "sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A==", + "dev": true, + "peer": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/jsonpointer": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", @@ -12827,9 +13072,9 @@ } }, "node_modules/jsx-ast-utils": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.4.tgz", - "integrity": "sha512-fX2TVdCViod6HwKEtSWGHs57oFhVfCMwieb9PuRDgjDPh5XeqJiHFFFJCHxU5cnTc3Bu/GRL+kPiFmw8XWOfKw==", + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", "dev": true, "dependencies": { "array-includes": "^3.1.6", @@ -12841,6 +13086,15 @@ "node": ">=4.0" } }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -12887,14 +13141,14 @@ } }, "node_modules/launch-editor": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz", - "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz", + "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", "dev": true, "peer": true, "dependencies": { "picocolors": "^1.0.0", - "shell-quote": "^1.7.3" + "shell-quote": "^1.8.1" } }, "node_modules/leven": { @@ -13095,14 +13349,14 @@ } }, "node_modules/marked": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/marked/-/marked-5.1.1.tgz", - "integrity": "sha512-bTmmGdEINWmOMDjnPWDxGPQ4qkDLeYorpYbEtFOXzOruTwUE671q4Guiuchn4N8h/v6NGd7916kXsm3Iz4iUSg==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-5.1.2.tgz", + "integrity": "sha512-ahRPGXJpjMjwSOlBoTMZAK7ATXkli5qCPxZ21TG44rx1KEo44bii4ekgTDQPNRQ4Kh7JMb9Ub1PVk1NxRSsorg==", "bin": { "marked": "bin/marked.js" }, "engines": { - "node": ">= 18" + "node": ">= 16" } }, "node_modules/mdn-data": { @@ -13535,9 +13789,9 @@ } }, "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.0.tgz", + "integrity": "sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g==", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -13570,28 +13824,28 @@ } }, "node_modules/object.entries": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", - "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", + "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { "node": ">= 0.4" } }, "node_modules/object.fromentries": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", - "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { "node": ">= 0.4" @@ -13601,16 +13855,16 @@ } }, "node_modules/object.getownpropertydescriptors": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.6.tgz", - "integrity": "sha512-lq+61g26E/BgHv0ZTFgRvi7NMEPuAxLkFU7rukXjc/AlwH4Am5xXVnIXy3un1bg/JPbXHrixRkK1itUzzPiIjQ==", + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.7.tgz", + "integrity": "sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g==", "dev": true, "peer": true, "dependencies": { - "array.prototype.reduce": "^1.0.5", + "array.prototype.reduce": "^1.0.6", "call-bind": "^1.0.2", "define-properties": "^1.2.0", - "es-abstract": "^1.21.2", + "es-abstract": "^1.22.1", "safe-array-concat": "^1.0.0" }, "engines": { @@ -13620,28 +13874,40 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.hasown": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", - "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", + "node_modules/object.groupby": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", + "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", "dev": true, "dependencies": { - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1" + } + }, + "node_modules/object.hasown": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", + "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { "node": ">= 0.4" @@ -14103,9 +14369,9 @@ } }, "node_modules/postcss": { - "version": "8.4.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.27.tgz", - "integrity": "sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==", + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", "dev": true, "funding": [ { @@ -14649,9 +14915,9 @@ } }, "node_modules/postcss-load-config/node_modules/yaml": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", - "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.3.tgz", + "integrity": "sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==", "dev": true, "peer": true, "engines": { @@ -15472,9 +15738,9 @@ "peer": true }, "node_modules/preact": { - "version": "10.16.0", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.16.0.tgz", - "integrity": "sha512-XTSj3dJ4roKIC93pald6rWuB2qQJO9gO2iLLyTe87MrjQN+HklueLsmskbywEWqCHlclgz3/M4YLL2iBr9UmMA==", + "version": "10.18.1", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.18.1.tgz", + "integrity": "sha512-mKUD7RRkQQM6s7Rkmi7IFkoEHjuFqRQUaXamO61E6Nn7vqF/bo7EZCmSyrUnp2UWHw0O7XjZ2eeXis+m7tf4lg==", "funding": { "type": "opencollective", "url": "https://opencollective.com/preact" @@ -15780,6 +16046,13 @@ "node": ">=14" } }, + "node_modules/react-app-polyfill/node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "dev": true, + "peer": true + }, "node_modules/react-app-rewired": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/react-app-rewired/-/react-app-rewired-2.2.1.tgz", @@ -15989,29 +16262,29 @@ } }, "node_modules/react-router": { - "version": "6.14.2", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.14.2.tgz", - "integrity": "sha512-09Zss2dE2z+T1D03IheqAFtK4UzQyX8nFPWx6jkwdYzGLXd5ie06A6ezS2fO6zJfEb/SpG6UocN2O1hfD+2urQ==", + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.17.0.tgz", + "integrity": "sha512-YJR3OTJzi3zhqeJYADHANCGPUu9J+6fT5GLv82UWRGSxu6oJYCKVmxUcaBQuGm9udpWmPsvpme/CdHumqgsoaA==", "dependencies": { - "@remix-run/router": "1.7.2" + "@remix-run/router": "1.10.0" }, "engines": { - "node": ">=14" + "node": ">=14.0.0" }, "peerDependencies": { "react": ">=16.8" } }, "node_modules/react-router-dom": { - "version": "6.14.2", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.14.2.tgz", - "integrity": "sha512-5pWX0jdKR48XFZBuJqHosX3AAHjRAzygouMTyimnBPOLdY3WjzUSKhus2FVMihUFWzeLebDgr4r8UeQFAct7Bg==", + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.17.0.tgz", + "integrity": "sha512-qWHkkbXQX+6li0COUUPKAUkxjNNqPJuiBd27dVwQGDNsuFBdMbrS6UZ0CLYc4CsbdLYTckn4oB4tGDuPZpPhaQ==", "dependencies": { - "@remix-run/router": "1.7.2", - "react-router": "6.14.2" + "@remix-run/router": "1.10.0", + "react-router": "6.17.0" }, "engines": { - "node": ">=14" + "node": ">=14.0.0" }, "peerDependencies": { "react": ">=16.8", @@ -16177,6 +16450,26 @@ "node": ">=6.0.0" } }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", + "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", @@ -16184,9 +16477,9 @@ "dev": true }, "node_modules/regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", "dev": true, "dependencies": { "regenerate": "^1.4.2" @@ -16196,15 +16489,15 @@ } }, "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", "dev": true }, "node_modules/regenerator-transform": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", - "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", "dev": true, "dependencies": { "@babel/runtime": "^7.8.4" @@ -16218,14 +16511,14 @@ "peer": true }, "node_modules/regexp.prototype.flags": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", - "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", - "functions-have-names": "^1.2.3" + "set-function-name": "^2.0.0" }, "engines": { "node": ">= 0.4" @@ -16322,12 +16615,12 @@ "peer": true }, "node_modules/resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "dependencies": { - "is-core-module": "^2.11.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -16399,6 +16692,13 @@ } } }, + "node_modules/resolve-url-loader/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true, + "peer": true + }, "node_modules/resolve-url-loader/node_modules/picocolors": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", @@ -16584,13 +16884,13 @@ } }, "node_modules/safe-array-concat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", - "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", + "get-intrinsic": "^1.2.1", "has-symbols": "^1.0.3", "isarray": "^2.0.5" }, @@ -16650,9 +16950,9 @@ "peer": true }, "node_modules/sass": { - "version": "1.64.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.64.1.tgz", - "integrity": "sha512-16rRACSOFEE8VN7SCgBu1MpYCyN7urj9At898tyzdXFhC+a+yOX5dXwAR7L8/IdPJ1NB8OYoXmD55DM30B2kEQ==", + "version": "1.69.4", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.4.tgz", + "integrity": "sha512-+qEreVhqAy8o++aQfCJwp0sklr2xyEzkm9Pp/Igu9wNPoe7EZEQ8X/MBvvXggI2ql607cxKg/RKOwDj6pp2XDA==", "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -16940,6 +17240,20 @@ "node": ">= 0.8.0" } }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -17112,6 +17426,11 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, + "node_modules/source-map-explorer/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, "node_modules/source-map-explorer/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -17280,6 +17599,115 @@ "dev": true, "peer": true }, + "node_modules/static-eval": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.2.tgz", + "integrity": "sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==", + "dev": true, + "peer": true, + "dependencies": { + "escodegen": "^1.8.1" + } + }, + "node_modules/static-eval/node_modules/escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dev": true, + "peer": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/static-eval/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/static-eval/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "peer": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/static-eval/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "peer": true, + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/static-eval/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/static-eval/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-eval/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "peer": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -17339,18 +17767,19 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/string.prototype.matchall": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", - "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", + "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.3", + "internal-slot": "^1.0.5", + "regexp.prototype.flags": "^1.5.0", + "set-function-name": "^2.0.0", "side-channel": "^1.0.4" }, "funding": { @@ -17358,14 +17787,14 @@ } }, "node_modules/string.prototype.trim": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", - "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { "node": ">= 0.4" @@ -17375,28 +17804,28 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -17871,9 +18300,9 @@ } }, "node_modules/terser": { - "version": "5.19.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz", - "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.22.0.tgz", + "integrity": "sha512-hHZVLgRA2z4NWcN6aS5rQDc+7Dcy58HOf2zbYwmFcQ+ua3h6eEFf5lIDKTzbWwlazPyOZsFQO8V80/IjVNExEw==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -18110,9 +18539,9 @@ } }, "node_modules/tslib": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", - "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true, "peer": true }, @@ -18288,6 +18717,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/underscore": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", + "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==", + "dev": true, + "peer": true + }, + "node_modules/undici-types": { + "version": "5.25.3", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz", + "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==" + }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", @@ -18380,9 +18821,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "dev": true, "funding": [ { @@ -18410,9 +18851,9 @@ } }, "node_modules/uplot": { - "version": "1.6.24", - "resolved": "https://registry.npmjs.org/uplot/-/uplot-1.6.24.tgz", - "integrity": "sha512-WpH2BsrFrqxkMu+4XBvc0eCDsRBhzoq9crttYeSI0bfxpzR5YoSVzZXOKFVWcVC7sp/aDXrdDPbDZGCtck2PVg==" + "version": "1.6.26", + "resolved": "https://registry.npmjs.org/uplot/-/uplot-1.6.26.tgz", + "integrity": "sha512-qN0mveL6UsP40TnHzHAJkUQvpfA3y8zSLXtXKVlJo/sLfj2+vjan/Z3g81MCZjy/hEDUFNtnLftPmETDA4s7Rg==" }, "node_modules/uri-js": { "version": "4.4.1", @@ -18499,6 +18940,13 @@ "node": ">=10.12.0" } }, + "node_modules/v8-to-istanbul/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true, + "peer": true + }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -18575,9 +19023,9 @@ } }, "node_modules/web-vitals": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-3.4.0.tgz", - "integrity": "sha512-n9fZ5/bG1oeDkyxLWyep0eahrNcPDF6bFqoyispt7xkW0xhDzpUBTgyDKqWDi1twT0MgH4HvvqzpUyh0ZxZV4A==" + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-3.5.0.tgz", + "integrity": "sha512-f5YnCHVG9Y6uLCePD4tY8bO/Ge15NPEQWtvm3tPzDKygloiqtb4SVqRHBcrIAqo2ztqX5XueqDn97zHF0LdT6w==" }, "node_modules/webidl-conversions": { "version": "6.1.0", @@ -18590,9 +19038,9 @@ } }, "node_modules/webpack": { - "version": "5.88.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", - "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", + "version": "5.89.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz", + "integrity": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", @@ -18835,9 +19283,9 @@ } }, "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", + "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", "dev": true, "peer": true, "engines": { @@ -18955,9 +19403,9 @@ } }, "node_modules/whatwg-fetch": { - "version": "3.6.17", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.17.tgz", - "integrity": "sha512-c4ghIvG6th0eudYwKZY5keb81wtFz9/WeAHAoy8+r18kcWlitUIrmGFQ2rWEl4UCKUilD3zCLHOIPheHx5ypRQ==", + "version": "3.6.19", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.19.tgz", + "integrity": "sha512-d67JP4dHSbm2TrpFj8AbO8DnL1JXL5J9u0Kq2xW6d0TFDbCA3Muhdt8orXC22utleTVj7Prqt82baN6RBvnEgw==", "dev": true, "peer": true }, @@ -19014,6 +19462,47 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/which-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "dev": true, + "dependencies": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/which-typed-array": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", @@ -19033,6 +19522,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/workbox-background-sync": { "version": "6.6.0", "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.6.0.tgz", diff --git a/app/vmui/packages/vmui/package.json b/app/vmui/packages/vmui/package.json index ad3e2d91a..7e9e58c06 100644 --- a/app/vmui/packages/vmui/package.json +++ b/app/vmui/packages/vmui/package.json @@ -30,7 +30,7 @@ "web-vitals": "^3.3.2" }, "scripts": { - "prestart": "npm run update-metricsql", + "prestart": "npm run copy-metricsql-docs", "start": "react-app-rewired start", "start:logs": "cross-env REACT_APP_LOGS=true npm run start", "build": "GENERATE_SOURCEMAP=false react-app-rewired build", diff --git a/app/vmui/packages/vmui/src/assets/fonts/Lato/Lato-Bold.ttf b/app/vmui/packages/vmui/src/assets/fonts/Lato/Lato-Bold.ttf deleted file mode 100644 index 59c46f128..000000000 Binary files a/app/vmui/packages/vmui/src/assets/fonts/Lato/Lato-Bold.ttf and /dev/null differ diff --git a/app/vmui/packages/vmui/src/assets/fonts/Lato/Lato-Regular.ttf b/app/vmui/packages/vmui/src/assets/fonts/Lato/Lato-Regular.ttf deleted file mode 100644 index 64ac535cb..000000000 Binary files a/app/vmui/packages/vmui/src/assets/fonts/Lato/Lato-Regular.ttf and /dev/null differ diff --git a/app/vmui/packages/vmui/src/components/Chart/ChartTooltip/ChartTooltip.tsx b/app/vmui/packages/vmui/src/components/Chart/ChartTooltip/ChartTooltip.tsx index f62421ece..bc192936a 100644 --- a/app/vmui/packages/vmui/src/components/Chart/ChartTooltip/ChartTooltip.tsx +++ b/app/vmui/packages/vmui/src/components/Chart/ChartTooltip/ChartTooltip.tsx @@ -6,7 +6,7 @@ import classNames from "classnames"; import uPlot from "uplot"; import Button from "../../Main/Button/Button"; import { CloseIcon, DragIcon } from "../../Main/Icons"; -import { SeriesItemStats } from "../../../types"; +import { SeriesItemStatsFormatted } from "../../../types"; import { STATS_ORDER } from "../../../constants/graph"; export interface ChartTooltipProps { @@ -17,7 +17,7 @@ export interface ChartTooltipProps { value: string | number | null; point: { top: number, left: number }; unit?: string; - stats?: SeriesItemStats; + statsFormatted?: SeriesItemStatsFormatted; isSticky?: boolean; info?: string; marker?: string; @@ -34,7 +34,7 @@ const ChartTooltip: FC = ({ point, unit = "", info, - stats, + statsFormatted, isSticky, marker, onClose @@ -159,7 +159,7 @@ const ChartTooltip: FC = ({ {value}{unit}

    - {stats && ( + {statsFormatted && ( {STATS_ORDER.map((key, i) => (
    = ({ key={i} > {key}: - {stats[key]} + {statsFormatted[key]}
    ))}
    diff --git a/app/vmui/packages/vmui/src/components/Chart/Line/Legend/Legend.tsx b/app/vmui/packages/vmui/src/components/Chart/Line/Legend/Legend.tsx index 71484ec12..677349131 100644 --- a/app/vmui/packages/vmui/src/components/Chart/Line/Legend/Legend.tsx +++ b/app/vmui/packages/vmui/src/components/Chart/Line/Legend/Legend.tsx @@ -35,7 +35,7 @@ const Legend: FC = ({ labels, query, onChange }) => { )} >
    - {labels.filter(l => l.group === group).map((legendItem: LegendItemType) => + {labels.filter(l => l.group === group).sort((x, y) => (y.median || 0) - (x.median || 0)).map((legendItem: LegendItemType) => = ({ legend, onChange, isHeatmap }) => { return isHeatmap ? result.filter(f => f.key !== "vmrange") : result; }, [legend, isHeatmap]); - const calculations = legend.calculations; - const showCalculations = Object.values(calculations).some(v => v); + const statsFormatted = legend.statsFormatted; + const showStats = Object.values(statsFormatted).some(v => v); const handleClickFreeField = async (val: string) => { await copyToClipboard(val, `${val} has been copied`); @@ -70,7 +70,7 @@ const LegendItem: FC = ({ legend, onChange, isHeatmap }) => { {!!freeFormFields.length && <>}}
    - {!isHeatmap && showCalculations && ( + {!isHeatmap && showStats && (
    {STATS_ORDER.map((key, i) => (
    = ({ legend, onChange, isHeatmap }) => { key={i} > {key}: - {calculations[key]} + {statsFormatted[key]}
    ))}
    diff --git a/app/vmui/packages/vmui/src/components/Chart/Line/Legend/LegendItem/style.scss b/app/vmui/packages/vmui/src/components/Chart/Line/Legend/LegendItem/style.scss index f2762c552..b1adcdcd5 100644 --- a/app/vmui/packages/vmui/src/components/Chart/Line/Legend/LegendItem/style.scss +++ b/app/vmui/packages/vmui/src/components/Chart/Line/Legend/LegendItem/style.scss @@ -10,7 +10,6 @@ background-color: $color-background-block; cursor: pointer; transition: 0.2s ease; - margin-bottom: $padding-small; font-size: $font-size-small; &:hover { diff --git a/app/vmui/packages/vmui/src/components/Main/Switch/style.scss b/app/vmui/packages/vmui/src/components/Main/Switch/style.scss index b212cfa89..f18686b45 100644 --- a/app/vmui/packages/vmui/src/components/Main/Switch/style.scss +++ b/app/vmui/packages/vmui/src/components/Main/Switch/style.scss @@ -7,6 +7,7 @@ $switch-handle-size: $switch-height - ($switch-padding * 2); $switch-border-radius: $switch-handle-size + ($switch-padding * 2); .vm-switch { + font-size: $font-size-small; display: flex; align-items: center; justify-content: flex-start; diff --git a/app/vmui/packages/vmui/src/components/Main/TextField/style.scss b/app/vmui/packages/vmui/src/components/Main/TextField/style.scss index d94b61e90..c23f34373 100644 --- a/app/vmui/packages/vmui/src/components/Main/TextField/style.scss +++ b/app/vmui/packages/vmui/src/components/Main/TextField/style.scss @@ -84,10 +84,10 @@ } &__input { + font-family: $font-family-monospace; display: block; border-radius: $border-radius-small; transition: border 200ms ease; - min-height: 40px; resize: none; overflow: hidden; background-color: transparent; diff --git a/app/vmui/packages/vmui/src/components/TraceQuery/NestedNav/NestedNav.tsx b/app/vmui/packages/vmui/src/components/TraceQuery/NestedNav/NestedNav.tsx index c5eb13603..2c7d747ca 100644 --- a/app/vmui/packages/vmui/src/components/TraceQuery/NestedNav/NestedNav.tsx +++ b/app/vmui/packages/vmui/src/components/TraceQuery/NestedNav/NestedNav.tsx @@ -89,12 +89,12 @@ const NestedNav: FC = ({ isRoot, trace, totalMsec }) => { })} ref={messageRef} > + + {duration} + {trace.message}
    -
    - {`duration: ${duration}`} -
    {(isExpanded || showFullMessage) && (
    vmagent also can accept Datadog metrics format. Depending on where vmagent will forward data, -pick [single-node or cluster URL]((https://docs.victoriametrics.com/url-examples.html#datadog)) formats. +pick [single-node or cluster URL](https://docs.victoriametrics.com/url-examples.html#datadog) formats. ### Sending metrics to Datadog and VictoriaMetrics @@ -854,71 +860,76 @@ For example, `/api/put?extra_label=foo=bar` would add `{foo="bar"}` label to all ## How to send data from NewRelic agent VictoriaMetrics accepts data from [NewRelic infrastructure agent](https://docs.newrelic.com/docs/infrastructure/install-infrastructure-agent) -at `/api/v1/newrelic/infra/v2/metrics/events/bulk` path. -NewRelic's infrastructure agent sends so-called [Events](https://docs.newrelic.com/docs/infrastructure/manage-your-data/data-instrumentation/default-infrastructure-monitoring-data/#infrastructure-events) -which then transformed by VictoriaMetrics to the [Prometheus exposition format](https://github.com/prometheus/docs/blob/main/content/docs/instrumenting/exposition_formats.md#text-based-format). +at `/newrelic/infra/v2/metrics/events/bulk` HTTP path. +VictoriaMetrics receives [Events](https://docs.newrelic.com/docs/infrastructure/manage-your-data/data-instrumentation/default-infrastructure-monitoring-data/#infrastructure-events) +from NewRelic agent at the given path, transforms them to [raw samples](https://docs.victoriametrics.com/keyConcepts.html#raw-samples) +according to [these docs](#newrelic-agent-data-mapping) before storing the raw samples to the database. -NewRelic's infrastructure agent allows configuring destinations for metrics forwarding via ENV variable `COLLECTOR_URL`. -It is also required to specify `NRIA_LICENSE_KEY`, which is available only after registration into account of the NewRelic cloud. +You need passing `COLLECTOR_URL` and `NRIA_LICENSE_KEY` environment variables to NewRelic infrastructure agent in order to send the collected metrics to VictoriaMetrics. +The `COLLECTOR_URL` must point to `/newrelic` HTTP endpoint at VictoriaMetrics, while the `NRIA_LICENSE_KEY` must contain NewRelic license key, +which can be obtained [here](https://newrelic.com/signup). +For example, if VictoriaMetrics runs at `localhost:8428`, then the following command can be used for running NewRelic infrastructure agent: -To configure NewRelic infrastructure agent for forwarding metrics to VictoriaMetrics use the following example: ```console -COLLECTOR_URL="http://localhost:8428/newrelic/api/v1" NRIA_LICENSE_KEY="YOUR_LICENSE_KEY" ./newrelic-infra +COLLECTOR_URL="http://localhost:8428/newrelic" NRIA_LICENSE_KEY="NEWRELIC_LICENSE_KEY" ./newrelic-infra ``` -### NewRelic agent data mapping +### NewRelic agent data mapping + +VictoriaMetrics maps [NewRelic Events](https://docs.newrelic.com/docs/infrastructure/manage-your-data/data-instrumentation/default-infrastructure-monitoring-data/#infrastructure-events) +to [raw samples](https://docs.victoriametrics.com/keyConcepts.html#raw-samples) in the following way: + +1. Every numeric field is converted into a raw sample with the corresponding name. +1. The `eventType` and all the other fields with `string` value type are attached to every raw sample as [metric labels](https://docs.victoriametrics.com/keyConcepts.html#labels). +1. The `timestamp` field is used as timestamp for the ingested [raw sample](https://docs.victoriametrics.com/keyConcepts.html#raw-samples). + The `timestamp` field may be specified either in seconds or in milliseconds since the [Unix Epoch](https://en.wikipedia.org/wiki/Unix_time). + If the `timestamp` field is missing, then the raw sample is stored with the current timestamp. + +For example, let's import the following NewRelic Events request to VictoriaMetrics: -As example, lets create `newrelic.json` file with the following content: ```json [ - { - "Events":[ - { - "eventType":"SystemSample", - "entityKey":"macbook-pro.local", - "cpuPercent":25.056660790748904, - "cpuUserPercent":8.687987912389374, - "cpuSystemPercent":16.36867287835953, - "cpuIOWaitPercent":0, - "cpuIdlePercent":74.94333920925109, - "cpuStealPercent":0, - "loadAverageOneMinute":5.42333984375, - "loadAverageFiveMinute":4.099609375, - "loadAverageFifteenMinute":3.58203125 - } - ] - } - ] + { + "Events":[ + { + "eventType":"SystemSample", + "entityKey":"macbook-pro.local", + "cpuPercent":25.056660790748904, + "cpuUserPercent":8.687987912389374, + "cpuSystemPercent":16.36867287835953, + "cpuIOWaitPercent":0, + "cpuIdlePercent":74.94333920925109, + "cpuStealPercent":0, + "loadAverageOneMinute":5.42333984375, + "loadAverageFiveMinute":4.099609375, + "loadAverageFifteenMinute":3.58203125 + } + ] + } +] ``` -Let's use cUrl to send `newrelic.json` to single-node VictoriaMetrics: +Save this JSON into `newrelic.json` file and then use the following command in order to import it into VictoriaMetrics: ```console -curl -X POST -H 'Content-Type: application/json' --data-binary @newrelic.json http://localhost:8428/newrelic/api/v1/infra/v2/metrics/events/bulk +curl -X POST -H 'Content-Type: application/json' --data-binary @newrelic.json http://localhost:8428/newrelic/infra/v2/metrics/events/bulk ``` -If data was successfully ingested, you'll get `{"status":"ok"}` response. Let's fetch ingested data from VictoriaMetrics -in vmui via query `{__name__!=""}`: +Let's fetch the ingested data via [data export API](#how-to-export-data-in-json-line-format): + ```console -system_sample_cpu_io_wait_percent{entity_key="macbook-pro.local"} 0 -system_sample_cpu_idle_percent{entity_key="macbook-pro.local"} 74.9433392092 -system_sample_cpu_percent{entity_key="macbook-pro.local"} 25.056660790748 -system_sample_cpu_steal_percent{entity_key="macbook-pro.local"} 0 -system_sample_cpu_system_percent{entity_key="macbook-pro.local"} 16.368672878359 -system_sample_cpu_user_percent{entity_key="macbook-pro.local"} 8.687987912389 -system_sample_load_average_fifteen_minute{entity_key="macbook-pro.local"} 3.58203125 -system_sample_load_average_five_minute{entity_key="macbook-pro.local"} 4.099609375 -system_sample_load_average_one_minute{entity_key="macbook-pro.local"} 5.42333984375 +curl http://localhost:8428/api/v1/export -d 'match={eventType="SystemSample"}' +{"metric":{"__name__":"cpuStealPercent","entityKey":"macbook-pro.local","eventType":"SystemSample"},"values":[0],"timestamps":[1697407970000]} +{"metric":{"__name__":"loadAverageFiveMinute","entityKey":"macbook-pro.local","eventType":"SystemSample"},"values":[4.099609375],"timestamps":[1697407970000]} +{"metric":{"__name__":"cpuIOWaitPercent","entityKey":"macbook-pro.local","eventType":"SystemSample"},"values":[0],"timestamps":[1697407970000]} +{"metric":{"__name__":"cpuSystemPercent","entityKey":"macbook-pro.local","eventType":"SystemSample"},"values":[16.368672878359],"timestamps":[1697407970000]} +{"metric":{"__name__":"loadAverageOneMinute","entityKey":"macbook-pro.local","eventType":"SystemSample"},"values":[5.42333984375],"timestamps":[1697407970000]} +{"metric":{"__name__":"cpuUserPercent","entityKey":"macbook-pro.local","eventType":"SystemSample"},"values":[8.687987912389],"timestamps":[1697407970000]} +{"metric":{"__name__":"cpuIdlePercent","entityKey":"macbook-pro.local","eventType":"SystemSample"},"values":[74.9433392092],"timestamps":[1697407970000]} +{"metric":{"__name__":"loadAverageFifteenMinute","entityKey":"macbook-pro.local","eventType":"SystemSample"},"values":[3.58203125],"timestamps":[1697407970000]} +{"metric":{"__name__":"cpuPercent","entityKey":"macbook-pro.local","eventType":"SystemSample"},"values":[25.056660790748],"timestamps":[1697407970000]} ``` -The fields in `newrelic.json` are transformed in the following way: -1. `eventType` filed is used as prefix for all metrics in the object; -2. `entityKey` or any other field with `string` value type is used as label attached to all metrics in the object; -3. the rest fields with numeric values will be used as metrics; -4. the additional field `timestamp` can be added to the payload to set the timestamp for all metrics. If omitted, -current time is used. - - ## Prometheus querying API usage VictoriaMetrics supports the following handlers from [Prometheus querying API](https://prometheus.io/docs/prometheus/latest/querying/api/): @@ -1063,7 +1074,7 @@ VictoriaMetrics supports the following handlers from [Graphite Tags API](https:/ ## How to build from sources -We recommend using either [binary releases](https://github.com/VictoriaMetrics/VictoriaMetrics/releases) or +We recommend using either [binary releases](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest) or [docker images](https://hub.docker.com/r/victoriametrics/victoria-metrics/) instead of building VictoriaMetrics from sources. Building from sources is reasonable when developing additional features specific to your needs or when testing bugfixes. @@ -1878,7 +1889,8 @@ to historical data. See [how to configure multiple retentions in VictoriaMetrics cluster](https://docs.victoriametrics.com/Cluster-VictoriaMetrics.html#retention-filters). -Retention filters can be evaluated for free by downloading and using enterprise binaries from [the releases page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases). +Retention filters can be evaluated for free by downloading and using enterprise binaries from [the releases page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest). +See how to request a free trial license [here](https://victoriametrics.com/products/enterprise/trial/). ## Downsampling @@ -1899,7 +1911,8 @@ Please, note that intervals of `-downsampling.period` must be multiples of each In case [deduplication](https://docs.victoriametrics.com/#deduplication) is enabled value of `-dedup.minScrapeInterval` must also be multiple of `-downsampling.period` intervals. This is required to ensure consistency of deduplication and downsampling results. -The downsampling can be evaluated for free by downloading and using enterprise binaries from [the releases page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases). +The downsampling can be evaluated for free by downloading and using enterprise binaries from [the releases page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest). +See how to request a free trial license [here](https://victoriametrics.com/products/enterprise/trial/). ## Multi-tenancy @@ -1962,7 +1975,7 @@ and [the general security page at VictoriaMetrics website](https://victoriametri The only option is increasing the limit on [the number of open files in the OS](https://medium.com/@muhammadtriwibowo/set-permanently-ulimit-n-open-files-in-ubuntu-4d61064429a). The recommendation is not specific for VictoriaMetrics only but also for any service which handles many HTTP connections and stores data on disk. * VictoriaMetrics is a write-heavy application and its performance depends on disk performance. So be careful with other - applications or utilities (like [fstrim](http://manpages.ubuntu.com/manpages/bionic/man8/fstrim.8.html)) + applications or utilities (like [fstrim](https://manpages.ubuntu.com/manpages/lunar/en/man8/fstrim.8.html)) which could [exhaust disk resources](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1521). * The recommended filesystem is `ext4`, the recommended persistent storage is [persistent HDD-based disk on GCP](https://cloud.google.com/compute/docs/disks/#pdspecs), since it is protected from hardware failures via internal replication and it can be [resized on the fly](https://cloud.google.com/compute/docs/disks/add-persistent-disk#resize_pd). @@ -2128,7 +2141,7 @@ and [cardinality explorer docs](#cardinality-explorer). * It is recommended inspecting logs during troubleshooting, since they may contain useful information. -* It is recommended upgrading to the latest available release from [this page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases), +* It is recommended upgrading to the latest available release from [this page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest), since the encountered issue could be already fixed there. * It is recommended to have at least 50% of spare resources for CPU, disk IO and RAM, so VictoriaMetrics could handle short spikes in the workload without performance issues. @@ -2139,6 +2152,11 @@ and [cardinality explorer docs](#cardinality-explorer). can be [monitored](#monitoring) via `vm_free_disk_space_bytes` metric. The total size of data stored on the disk can be monitored via sum of `vm_data_size_bytes` metrics. +* If you run VictoriaMetrics on a host with 16 or more CPU cores, then it may be needed to tune the `-search.maxWorkersPerQuery` command-line flag + in order to improve query performance. If VictoriaMetrics serves big number of concurrent `select` queries, then try reducing the value for this flag. + If VcitoriaMetrics serves heavy queries, which select `>10K` of [time series](https://docs.victoriametrics.com/keyConcepts.html#time-series) and/or process `>100M` + of [raw samples](https://docs.victoriametrics.com/keyConcepts.html#raw-samples) per query, then try setting the value for this flag to the number of available CPU cores. + * VictoriaMetrics buffers incoming data in memory for up to a few seconds before flushing it to persistent storage. This may lead to the following "issues": * Data becomes available for querying in a few seconds after inserting. It is possible to flush in-memory buffers to searchable parts @@ -2175,15 +2193,19 @@ and [cardinality explorer docs](#cardinality-explorer). This suppresses default gap filling algorithm used by VictoriaMetrics - by default it assumes each time series is continuous instead of discrete, so it fills gaps between real samples with regular intervals. -* Metrics and labels leading to [high cardinality](https://docs.victoriametrics.com/FAQ.html#what-is-high-cardinality) or [high churn rate](https://docs.victoriametrics.com/FAQ.html#what-is-high-churn-rate) can be determined via [cardinality explorer](#cardinality-explorer) and via [/api/v1/status/tsdb](#tsdb-stats) endpoint. +* Metrics and labels leading to [high cardinality](https://docs.victoriametrics.com/FAQ.html#what-is-high-cardinality) + or [high churn rate](https://docs.victoriametrics.com/FAQ.html#what-is-high-churn-rate) can be determined + via [cardinality explorer](#cardinality-explorer) and via [/api/v1/status/tsdb](#tsdb-stats) endpoint. * New time series can be logged if `-logNewSeries` command-line flag is passed to VictoriaMetrics. -* VictoriaMetrics limits the number of labels per each metric with `-maxLabelsPerTimeseries` command-line flag. - This prevents from ingesting metrics with too many labels. It is recommended [monitoring](#monitoring) `vm_metrics_with_dropped_labels_total` +* VictoriaMetrics limits the number of labels per each metric with `-maxLabelsPerTimeseries` command-line flag + and drops superflouos labels. This prevents from ingesting metrics with too many labels. + It is recommended [monitoring](#monitoring) `vm_metrics_with_dropped_labels_total` metric in order to determine whether `-maxLabelsPerTimeseries` must be adjusted for your workload. -* If you store Graphite metrics like `foo.bar.baz` in VictoriaMetrics, then `{__graphite__="foo.*.baz"}` filter can be used for selecting such metrics. See [these docs](#selecting-graphite-metrics) for details. +* If you store Graphite metrics like `foo.bar.baz` in VictoriaMetrics, then `{__graphite__="foo.*.baz"}` filter can be used for selecting such metrics. + See [these docs](#selecting-graphite-metrics) for details. You can also query Graphite metrics with [Graphite querying API](#graphite-render-api-usage). * VictoriaMetrics ignores `NaN` values during data ingestion. @@ -2325,7 +2347,8 @@ See also [high availability docs](#high-availability) and [backup docs](#backups VictoriaMetrics supports backups via [vmbackup](https://docs.victoriametrics.com/vmbackup.html) and [vmrestore](https://docs.victoriametrics.com/vmrestore.html) tools. We also provide [vmbackupmanager](https://docs.victoriametrics.com/vmbackupmanager.html) tool for enterprise subscribers. -Enterprise binaries can be downloaded and evaluated for free from [the releases page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases). +Enterprise binaries can be downloaded and evaluated for free from [the releases page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest). +See how to request a free trial license [here](https://victoriametrics.com/products/enterprise/trial/). ## vmalert @@ -2404,7 +2427,7 @@ Feel free asking any questions regarding VictoriaMetrics: * [Twitter](https://twitter.com/VictoriaMetrics/) * [Linkedin](https://www.linkedin.com/company/victoriametrics/) * [Reddit](https://www.reddit.com/r/VictoriaMetrics/) -* [Telegram-en](https://t.me/VictoriaMetrics_en?) +* [Telegram-en](https://t.me/VictoriaMetrics_en) * [Telegram-ru](https://t.me/VictoriaMetrics_ru1) * [Google groups](https://groups.google.com/forum/#!forum/victorametrics-users) * [Mastodon](https://mastodon.social/@victoriametrics/) @@ -2487,7 +2510,7 @@ Pass `-help` to VictoriaMetrics in order to see the list of supported command-li -denyQueryTracing Whether to disable the ability to trace queries. See https://docs.victoriametrics.com/#query-tracing -downsampling.period array - Comma-separated downsampling periods in the format 'offset:period'. For example, '30d:10m' instructs to leave a single sample per 10 minutes for samples older than 30 days. When setting multiple downsampling periods, it is necessary for the periods to be multiples of each other. See https://docs.victoriametrics.com/#downsampling for details. This flag is available only in VictoriaMetrics enterprise. See https://docs.victoriametrics.com/enterprise.html + Comma-separated downsampling periods in the format 'offset:period'. For example, '30d:10m' instructs to leave a single sample per 10 minutes for samples older than 30 days. When setting multiple downsampling periods, it is necessary for the periods to be multiples of each other. See https://docs.victoriametrics.com/#downsampling for details. This flag is available only in Enterprise binaries. See https://docs.victoriametrics.com/enterprise.html Supports an array of values separated by comma or specified via multiple flags. -dryRun Whether to check config files without running VictoriaMetrics. The following config files are checked: -promscrape.config, -relabelConfig and -streamAggr.config. Unknown config entries aren't allowed in -promscrape.config by default. This can be changed with -promscrape.config.strictParse=false command-line flag @@ -2498,7 +2521,7 @@ Pass `-help` to VictoriaMetrics in order to see the list of supported command-li -envflag.prefix string Prefix for environment variables if -envflag.enable is set -eula - Deprecated, please use -license or -licenseFile flags instead. By specifying this flag, you confirm that you have an enterprise license and accept the ESA https://victoriametrics.com/legal/esa/ . This flag is available only in VictoriaMetrics enterprise. See https://docs.victoriametrics.com/enterprise.html + Deprecated, please use -license or -licenseFile flags instead. By specifying this flag, you confirm that you have an enterprise license and accept the ESA https://victoriametrics.com/legal/esa/ . This flag is available only in Enterprise binaries. See https://docs.victoriametrics.com/enterprise.html -filestream.disableFadvise Whether to disable fadvise() syscall when reading large data files. The fadvise() syscall prevents from eviction of recently accessed data from OS page cache during background merges and backups. In some rare cases it is better to disable the syscall if it uses too much CPU -finalMergeDelay duration @@ -2571,11 +2594,11 @@ Pass `-help` to VictoriaMetrics in order to see the list of supported command-li -internStringMaxLen int The maximum length for strings to intern. A lower limit may save memory at the cost of higher CPU usage. See https://en.wikipedia.org/wiki/String_interning . See also -internStringDisableCache and -internStringCacheExpireDuration (default 500) -license string - enterprise license key. This flag is available only in VictoriaMetrics enterprise. Documentation - https://docs.victoriametrics.com/enterprise.html, for more information, visit https://victoriametrics.com/products/enterprise/ . To request a trial license, go to https://victoriametrics.com/products/enterprise/trial/ + Lisense key for VictoriaMetrics Enterprise. See https://victoriametrics.com/products/enterprise/ . Trial Enterprise license can be obtained from https://victoriametrics.com/products/enterprise/trial/ . This flag is available only in Enterprise binaries. The license key can be also passed via file specified by -licenseFile command-line flag -license.forceOffline - enables offline license verification. License keys issued must support this feature. Contact our support team for license keys with offline check support. + Whether to enable offline verification for VictoriaMetrics Enterprise license key, which has been passed either via -license or via -licenseFile command-line flag. The issued license key must support offline verification feature. Contact info@victoriametrics.com if you need offline license verification. This flag is avilable only in Enterprise binaries -licenseFile string - path to file with enterprise license key. This flag is available only in VictoriaMetrics enterprise. Documentation - https://docs.victoriametrics.com/enterprise.html, for more information, visit https://victoriametrics.com/products/enterprise/ . To request a trial license, go to https://victoriametrics.com/products/enterprise/trial/ + Path to file with license key for VictoriaMetrics Enterprise. See https://victoriametrics.com/products/enterprise/ . Trial Enterprise license can be obtained from https://victoriametrics.com/products/enterprise/trial/ . This flag is available only in Enterprise binaries. The license key can be also passed inline via -license command-line flag -logNewSeries Whether to log new series. This option is for debug purposes only. It can lead to performance issues when big number of new series are ingested into VictoriaMetrics -loggerDisableTimestamps @@ -2595,7 +2618,7 @@ Pass `-help` to VictoriaMetrics in order to see the list of supported command-li -loggerWarnsPerSecondLimit int Per-second limit on the number of WARN messages. If more than the given number of warns are emitted per second, then the remaining warns are suppressed. Zero values disable the rate limit -maxConcurrentInserts int - The maximum number of concurrent insert requests. The default value should work for most cases, since it minimizes memory usage. The default value can be increased when clients send data over slow networks. See also -insert.maxQueueDuration (default 8) + The maximum number of concurrent insert requests. Default value should work for most cases, since it minimizes the memory usage. The default value can be increased when clients send data over slow networks. See also -insert.maxQueueDuration (default 8) -maxInsertRequestSize size The maximum size in bytes of a single Prometheus remote_write API request Supports the following optional suffixes for size values: KB, MB, GB, TB, KiB, MiB, GiB, TiB (default 33554432) @@ -2633,14 +2656,16 @@ Pass `-help` to VictoriaMetrics in order to see the list of supported command-li Items in the previous caches are removed when the percent of requests it serves becomes lower than this value. Higher values reduce memory usage at the cost of higher CPU usage. See also -cacheExpireDuration (default 0.1) -promscrape.azureSDCheckInterval duration Interval for checking for changes in Azure. This works only if azure_sd_configs is configured in '-promscrape.config' file. See https://docs.victoriametrics.com/sd_configs.html#azure_sd_configs for details (default 1m0s) + -promscrape.cluster.memberLabel string + If non-empty, then the label with this name and the -promscrape.cluster.memberNum value is added to all the scraped metrics. See https://docs.victoriametrics.com/vmagent.html#scraping-big-number-of-targets for more info -promscrape.cluster.memberNum string - The number of number in the cluster of scrapers. It must be a unique value in the range 0 ... promscrape.cluster.membersCount-1 across scrapers in the cluster. Can be specified as pod name of Kubernetes StatefulSet - pod-name-Num, where Num is a numeric part of pod name (default "0") + The number of vmagent instance in the cluster of scrapers. It must be a unique value in the range 0 ... promscrape.cluster.membersCount-1 across scrapers in the cluster. Can be specified as pod name of Kubernetes StatefulSet - pod-name-Num, where Num is a numeric part of pod name. See also -promscrape.cluster.memberLabel . See https://docs.victoriametrics.com/vmagent.html#scraping-big-number-of-targets for more info (default "0") -promscrape.cluster.membersCount int - The number of members in a cluster of scrapers. Each member must have a unique -promscrape.cluster.memberNum in the range 0 ... promscrape.cluster.membersCount-1 . Each member then scrapes roughly 1/N of all the targets. By default, cluster scraping is disabled, i.e. a single scraper scrapes all the targets + The number of members in a cluster of scrapers. Each member must have a unique -promscrape.cluster.memberNum in the range 0 ... promscrape.cluster.membersCount-1 . Each member then scrapes roughly 1/N of all the targets. By default, cluster scraping is disabled, i.e. a single scraper scrapes all the targets. See https://docs.victoriametrics.com/vmagent.html#scraping-big-number-of-targets for more info (default 1) -promscrape.cluster.name string - Optional name of the cluster. If multiple vmagent clusters scrape the same targets, then each cluster must have unique name in order to properly de-duplicate samples received from these clusters. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/2679 + Optional name of the cluster. If multiple vmagent clusters scrape the same targets, then each cluster must have unique name in order to properly de-duplicate samples received from these clusters. See https://docs.victoriametrics.com/vmagent.html#scraping-big-number-of-targets for more info -promscrape.cluster.replicationFactor int - The number of members in the cluster, which scrape the same targets. If the replication factor is greater than 1, then the deduplication must be enabled at remote storage side. See https://docs.victoriametrics.com/#deduplication (default 1) + The number of members in the cluster, which scrape the same targets. If the replication factor is greater than 1, then the deduplication must be enabled at remote storage side. See https://docs.victoriametrics.com/vmagent.html#scraping-big-number-of-targets for more info (default 1) -promscrape.config string Optional path to Prometheus config file with 'scrape_configs' section containing targets to scrape. The path can point to local file and to http url. See https://docs.victoriametrics.com/#how-to-scrape-prometheus-exporters-such-as-node-exporter for details -promscrape.config.dryRun @@ -2731,7 +2756,7 @@ Pass `-help` to VictoriaMetrics in order to see the list of supported command-li -relabelConfig string Optional path to a file with relabeling rules, which are applied to all the ingested metrics. The path can point either to local file or to http url. See https://docs.victoriametrics.com/#relabeling for details. The config is reloaded on SIGHUP signal -retentionFilter array - Retention filter in the format 'filter:retention'. For example, '{env="dev"}:3d' configures the retention for time series with env="dev" label to 3 days. See https://docs.victoriametrics.com/#retention-filters for details. This flag is available only in VictoriaMetrics enterprise. See https://docs.victoriametrics.com/enterprise.html + Retention filter in the format 'filter:retention'. For example, '{env="dev"}:3d' configures the retention for time series with env="dev" label to 3 days. See https://docs.victoriametrics.com/#retention-filters for details. This flag is available only in Enterprise binaries. See https://docs.victoriametrics.com/enterprise.html Supports an array of values separated by comma or specified via multiple flags. -retentionPeriod value Data with timestamps outside the retentionPeriod is automatically deleted. The minimum retentionPeriod is 24h or 1d. See also -retentionFilter @@ -2809,6 +2834,8 @@ Pass `-help` to VictoriaMetrics in order to see the list of supported command-li The maximum number of tag values returned from /api/v1/label//values (default 100000) -search.maxUniqueTimeseries int The maximum number of unique time series, which can be selected during /api/v1/query and /api/v1/query_range queries. This option allows limiting memory usage (default 300000) + -search.maxWorkersPerQuery int + The maximum number of CPU cores a single query can use. The default value should work good for most cases. The flag can be set to lower values for improving performance of big number of concurrently executed queries. The flag can be set to bigger values for improving performance of heavy queries, which scan big number of time series (>10K) and/or big number of samples (>100M). There is no sense in setting this flag to values bigger than the number of CPU cores available on the system (default 4) -search.minStalenessInterval duration The minimum interval for staleness calculations. This flag could be useful for removing gaps on graphs generated from time series with irregular intervals between samples. See also '-search.maxStalenessInterval' -search.noStaleMarkers diff --git a/docs/Release-Guide.md b/docs/Release-Guide.md index 4d06d60e6..6ebfec621 100644 --- a/docs/Release-Guide.md +++ b/docs/Release-Guide.md @@ -1,11 +1,11 @@ --- -sort: 21 -weight: 21 +sort: 30 +weight: 30 title: Release process guidance menu: docs: - parent: "victoriametrics" - weight: 21 + parent: 'victoriametrics' + weight: 30 aliases: - /Release-Guide.html --- @@ -167,7 +167,7 @@ Do these updates to the following charts: 1. Update `cluster` chart versions in [`values.yaml`](https://github.com/VictoriaMetrics/helm-charts/blob/master/charts/victoria-metrics-cluster/values.yaml), bump version for `vmselect`, `vminsert` and `vmstorage` and [`Chart.yaml`](https://github.com/VictoriaMetrics/helm-charts/blob/master/charts/victoria-metrics-cluster/Chart.yaml) 1. Update `k8s-stack` chart versions in [`values.yaml`](https://github.com/VictoriaMetrics/helm-charts/blob/master/charts/victoria-metrics-k8s-stack/values.yaml), bump version for `vmselect`, `vminsert`, `vmstorage`, `vmsingle`, `vmalert`, `vmagent` and [`Chart.yaml`](https://github.com/VictoriaMetrics/helm-charts/blob/master/charts/victoria-metrics-k8s-stack/Chart.yaml) 1. Update `single-node` chart version in [`values.yaml`](https://github.com/VictoriaMetrics/helm-charts/blob/master/charts/victoria-metrics-single/values.yaml) and [`Chart.yaml`](https://github.com/VictoriaMetrics/helm-charts/blob/master/charts/victoria-metrics-single/Chart.yaml) -1. Update `vmgateway` chart version in [`values.yaml`](https://github.com/VictoriaMetrics/helm-charts/blob/master/charts/victoria-metrics-gateway/values.yamll) and [`Chart.yaml`](https://github.com/VictoriaMetrics/helm-charts/blob/master/charts/victoria-metrics-gateway/Chart.yaml) +1. Update `vmgateway` chart version in [`values.yaml`](https://github.com/VictoriaMetrics/helm-charts/blob/master/charts/victoria-metrics-gateway/values.yaml) and [`Chart.yaml`](https://github.com/VictoriaMetrics/helm-charts/blob/master/charts/victoria-metrics-gateway/Chart.yaml) Once updated, run the following commands: diff --git a/docs/Single-server-VictoriaMetrics.md b/docs/Single-server-VictoriaMetrics.md index 496d3886c..db91525aa 100644 --- a/docs/Single-server-VictoriaMetrics.md +++ b/docs/Single-server-VictoriaMetrics.md @@ -24,7 +24,7 @@ aliases: VictoriaMetrics is a fast, cost-effective and scalable monitoring solution and time series database. -VictoriaMetrics is available in [binary releases](https://github.com/VictoriaMetrics/VictoriaMetrics/releases), +VictoriaMetrics is available in [binary releases](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest), [Docker images](https://hub.docker.com/r/victoriametrics/victoria-metrics/), [Snap packages](https://snapcraft.io/victoriametrics) and [source code](https://github.com/VictoriaMetrics/VictoriaMetrics). @@ -40,7 +40,7 @@ If you have questions about VictoriaMetrics, then feel free asking them at [Vict [Contact us](mailto:info@victoriametrics.com) if you need enterprise support for VictoriaMetrics. See [features available in enterprise package](https://docs.victoriametrics.com/enterprise.html). Enterprise binaries can be downloaded and evaluated for free -from [the releases page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases). +from [the releases page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest). See how to request a free trial license [here](https://victoriametrics.com/products/enterprise/trial/). VictoriaMetrics is developed at a fast pace, so it is recommended periodically checking the [CHANGELOG](https://docs.victoriametrics.com/CHANGELOG.html) and performing [regular upgrades](#how-to-upgrade-victoriametrics). @@ -148,7 +148,8 @@ See also [articles and slides about VictoriaMetrics from our users](https://docs ### Install -To quickly try VictoriaMetrics, just download [VictoriaMetrics executable](https://github.com/VictoriaMetrics/VictoriaMetrics/releases) or [Docker image](https://hub.docker.com/r/victoriametrics/victoria-metrics/) and start it with the desired command-line flags. +To quickly try VictoriaMetrics, just download [VictoriaMetrics executable](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest) +or [Docker image](https://hub.docker.com/r/victoriametrics/victoria-metrics/) and start it with the desired command-line flags. See also [QuickStart guide](https://docs.victoriametrics.com/Quick-Start.html) for additional information. VictoriaMetrics can also be installed via these installation methods: @@ -225,8 +226,8 @@ After changes were made, trigger config re-read with the command `curl 127.0.0.1 ### Running as Windows service -In order to run as a windows service it is required to create a service configuration for [WinSW](https://github.com/winsw/winsw) -and then install it as a service. +In order to run VictoriaMetrics as a Windows service it is required to create a service configuration for [WinSW](https://github.com/winsw/winsw) +and then install it as a service according to the following guide: 1. Create a service configuration: @@ -236,23 +237,23 @@ and then install it as a service. VictoriaMetrics VictoriaMetrics %BASE%\victoria-metrics-windows-amd64-prod.exe" - + - + 1 hour - + -envflag.enable - + Normal - + 15 sec - + true Automatic 15 sec 1 sec - + %BASE%\logs 10240 @@ -262,7 +263,7 @@ and then install it as a service. - + ``` @@ -275,6 +276,9 @@ and then install it as a service. Get-Service VictoriaMetrics | Start-Service ``` +See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3781) for more details. + + ## Prometheus setup Add the following lines to Prometheus config file (it is usually located at `/etc/prometheus/prometheus.yml`) in order to send data to VictoriaMetrics: @@ -336,7 +340,7 @@ too high memory consumption of Prometheus, then try to lower `max_samples_per_se Keep in mind that these two params are tightly connected. Read more about tuning remote write for Prometheus [here](https://prometheus.io/docs/practices/remote_write). -It is recommended upgrading Prometheus to [v2.12.0](https://github.com/prometheus/prometheus/releases) or newer, +It is recommended upgrading Prometheus to [v2.12.0](https://github.com/prometheus/prometheus/releases/latest) or newer, since previous versions may have issues with `remote_write`. Take a look also at [vmagent](https://docs.victoriametrics.com/vmagent.html) @@ -363,9 +367,11 @@ See more in [description](https://github.com/VictoriaMetrics/grafana-datasource# VictoriaMetrics is developed at a fast pace, so it is recommended periodically checking [the CHANGELOG page](https://docs.victoriametrics.com/CHANGELOG.html) and performing regular upgrades. -It is safe upgrading VictoriaMetrics to new versions unless [release notes](https://github.com/VictoriaMetrics/VictoriaMetrics/releases) say otherwise. It is safe skipping multiple versions during the upgrade unless [release notes](https://github.com/VictoriaMetrics/VictoriaMetrics/releases) say otherwise. It is recommended performing regular upgrades to the latest version, since it may contain important bug fixes, performance optimizations or new features. +It is safe upgrading VictoriaMetrics to new versions unless [release notes](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest) say otherwise. +It is safe skipping multiple versions during the upgrade unless [release notes](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest) say otherwise. +It is recommended performing regular upgrades to the latest version, since it may contain important bug fixes, performance optimizations or new features. -It is also safe downgrading to older versions unless [release notes](https://github.com/VictoriaMetrics/VictoriaMetrics/releases) say otherwise. +It is also safe downgrading to older versions unless [release notes](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest) say otherwise. The following steps must be performed during the upgrade / downgrade procedure: @@ -544,7 +550,7 @@ dd_url: http://victoriametrics:8428/datadog vmagent also can accept Datadog metrics format. Depending on where vmagent will forward data, -pick [single-node or cluster URL]((https://docs.victoriametrics.com/url-examples.html#datadog)) formats. +pick [single-node or cluster URL](https://docs.victoriametrics.com/url-examples.html#datadog) formats. ### Sending metrics to Datadog and VictoriaMetrics @@ -862,71 +868,76 @@ For example, `/api/put?extra_label=foo=bar` would add `{foo="bar"}` label to all ## How to send data from NewRelic agent VictoriaMetrics accepts data from [NewRelic infrastructure agent](https://docs.newrelic.com/docs/infrastructure/install-infrastructure-agent) -at `/api/v1/newrelic/infra/v2/metrics/events/bulk` path. -NewRelic's infrastructure agent sends so-called [Events](https://docs.newrelic.com/docs/infrastructure/manage-your-data/data-instrumentation/default-infrastructure-monitoring-data/#infrastructure-events) -which then transformed by VictoriaMetrics to the [Prometheus exposition format](https://github.com/prometheus/docs/blob/main/content/docs/instrumenting/exposition_formats.md#text-based-format). +at `/newrelic/infra/v2/metrics/events/bulk` HTTP path. +VictoriaMetrics receives [Events](https://docs.newrelic.com/docs/infrastructure/manage-your-data/data-instrumentation/default-infrastructure-monitoring-data/#infrastructure-events) +from NewRelic agent at the given path, transforms them to [raw samples](https://docs.victoriametrics.com/keyConcepts.html#raw-samples) +according to [these docs](#newrelic-agent-data-mapping) before storing the raw samples to the database. -NewRelic's infrastructure agent allows configuring destinations for metrics forwarding via ENV variable `COLLECTOR_URL`. -It is also required to specify `NRIA_LICENSE_KEY`, which is available only after registration into account of the NewRelic cloud. +You need passing `COLLECTOR_URL` and `NRIA_LICENSE_KEY` environment variables to NewRelic infrastructure agent in order to send the collected metrics to VictoriaMetrics. +The `COLLECTOR_URL` must point to `/newrelic` HTTP endpoint at VictoriaMetrics, while the `NRIA_LICENSE_KEY` must contain NewRelic license key, +which can be obtained [here](https://newrelic.com/signup). +For example, if VictoriaMetrics runs at `localhost:8428`, then the following command can be used for running NewRelic infrastructure agent: -To configure NewRelic infrastructure agent for forwarding metrics to VictoriaMetrics use the following example: ```console -COLLECTOR_URL="http://localhost:8428/newrelic/api/v1" NRIA_LICENSE_KEY="YOUR_LICENSE_KEY" ./newrelic-infra +COLLECTOR_URL="http://localhost:8428/newrelic" NRIA_LICENSE_KEY="NEWRELIC_LICENSE_KEY" ./newrelic-infra ``` -### NewRelic agent data mapping +### NewRelic agent data mapping + +VictoriaMetrics maps [NewRelic Events](https://docs.newrelic.com/docs/infrastructure/manage-your-data/data-instrumentation/default-infrastructure-monitoring-data/#infrastructure-events) +to [raw samples](https://docs.victoriametrics.com/keyConcepts.html#raw-samples) in the following way: + +1. Every numeric field is converted into a raw sample with the corresponding name. +1. The `eventType` and all the other fields with `string` value type are attached to every raw sample as [metric labels](https://docs.victoriametrics.com/keyConcepts.html#labels). +1. The `timestamp` field is used as timestamp for the ingested [raw sample](https://docs.victoriametrics.com/keyConcepts.html#raw-samples). + The `timestamp` field may be specified either in seconds or in milliseconds since the [Unix Epoch](https://en.wikipedia.org/wiki/Unix_time). + If the `timestamp` field is missing, then the raw sample is stored with the current timestamp. + +For example, let's import the following NewRelic Events request to VictoriaMetrics: -As example, lets create `newrelic.json` file with the following content: ```json [ - { - "Events":[ - { - "eventType":"SystemSample", - "entityKey":"macbook-pro.local", - "cpuPercent":25.056660790748904, - "cpuUserPercent":8.687987912389374, - "cpuSystemPercent":16.36867287835953, - "cpuIOWaitPercent":0, - "cpuIdlePercent":74.94333920925109, - "cpuStealPercent":0, - "loadAverageOneMinute":5.42333984375, - "loadAverageFiveMinute":4.099609375, - "loadAverageFifteenMinute":3.58203125 - } - ] - } - ] + { + "Events":[ + { + "eventType":"SystemSample", + "entityKey":"macbook-pro.local", + "cpuPercent":25.056660790748904, + "cpuUserPercent":8.687987912389374, + "cpuSystemPercent":16.36867287835953, + "cpuIOWaitPercent":0, + "cpuIdlePercent":74.94333920925109, + "cpuStealPercent":0, + "loadAverageOneMinute":5.42333984375, + "loadAverageFiveMinute":4.099609375, + "loadAverageFifteenMinute":3.58203125 + } + ] + } +] ``` -Let's use cUrl to send `newrelic.json` to single-node VictoriaMetrics: +Save this JSON into `newrelic.json` file and then use the following command in order to import it into VictoriaMetrics: ```console -curl -X POST -H 'Content-Type: application/json' --data-binary @newrelic.json http://localhost:8428/newrelic/api/v1/infra/v2/metrics/events/bulk +curl -X POST -H 'Content-Type: application/json' --data-binary @newrelic.json http://localhost:8428/newrelic/infra/v2/metrics/events/bulk ``` -If data was successfully ingested, you'll get `{"status":"ok"}` response. Let's fetch ingested data from VictoriaMetrics -in vmui via query `{__name__!=""}`: +Let's fetch the ingested data via [data export API](#how-to-export-data-in-json-line-format): + ```console -system_sample_cpu_io_wait_percent{entity_key="macbook-pro.local"} 0 -system_sample_cpu_idle_percent{entity_key="macbook-pro.local"} 74.9433392092 -system_sample_cpu_percent{entity_key="macbook-pro.local"} 25.056660790748 -system_sample_cpu_steal_percent{entity_key="macbook-pro.local"} 0 -system_sample_cpu_system_percent{entity_key="macbook-pro.local"} 16.368672878359 -system_sample_cpu_user_percent{entity_key="macbook-pro.local"} 8.687987912389 -system_sample_load_average_fifteen_minute{entity_key="macbook-pro.local"} 3.58203125 -system_sample_load_average_five_minute{entity_key="macbook-pro.local"} 4.099609375 -system_sample_load_average_one_minute{entity_key="macbook-pro.local"} 5.42333984375 +curl http://localhost:8428/api/v1/export -d 'match={eventType="SystemSample"}' +{"metric":{"__name__":"cpuStealPercent","entityKey":"macbook-pro.local","eventType":"SystemSample"},"values":[0],"timestamps":[1697407970000]} +{"metric":{"__name__":"loadAverageFiveMinute","entityKey":"macbook-pro.local","eventType":"SystemSample"},"values":[4.099609375],"timestamps":[1697407970000]} +{"metric":{"__name__":"cpuIOWaitPercent","entityKey":"macbook-pro.local","eventType":"SystemSample"},"values":[0],"timestamps":[1697407970000]} +{"metric":{"__name__":"cpuSystemPercent","entityKey":"macbook-pro.local","eventType":"SystemSample"},"values":[16.368672878359],"timestamps":[1697407970000]} +{"metric":{"__name__":"loadAverageOneMinute","entityKey":"macbook-pro.local","eventType":"SystemSample"},"values":[5.42333984375],"timestamps":[1697407970000]} +{"metric":{"__name__":"cpuUserPercent","entityKey":"macbook-pro.local","eventType":"SystemSample"},"values":[8.687987912389],"timestamps":[1697407970000]} +{"metric":{"__name__":"cpuIdlePercent","entityKey":"macbook-pro.local","eventType":"SystemSample"},"values":[74.9433392092],"timestamps":[1697407970000]} +{"metric":{"__name__":"loadAverageFifteenMinute","entityKey":"macbook-pro.local","eventType":"SystemSample"},"values":[3.58203125],"timestamps":[1697407970000]} +{"metric":{"__name__":"cpuPercent","entityKey":"macbook-pro.local","eventType":"SystemSample"},"values":[25.056660790748],"timestamps":[1697407970000]} ``` -The fields in `newrelic.json` are transformed in the following way: -1. `eventType` filed is used as prefix for all metrics in the object; -2. `entityKey` or any other field with `string` value type is used as label attached to all metrics in the object; -3. the rest fields with numeric values will be used as metrics; -4. the additional field `timestamp` can be added to the payload to set the timestamp for all metrics. If omitted, -current time is used. - - ## Prometheus querying API usage VictoriaMetrics supports the following handlers from [Prometheus querying API](https://prometheus.io/docs/prometheus/latest/querying/api/): @@ -1071,7 +1082,7 @@ VictoriaMetrics supports the following handlers from [Graphite Tags API](https:/ ## How to build from sources -We recommend using either [binary releases](https://github.com/VictoriaMetrics/VictoriaMetrics/releases) or +We recommend using either [binary releases](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest) or [docker images](https://hub.docker.com/r/victoriametrics/victoria-metrics/) instead of building VictoriaMetrics from sources. Building from sources is reasonable when developing additional features specific to your needs or when testing bugfixes. @@ -1886,7 +1897,8 @@ to historical data. See [how to configure multiple retentions in VictoriaMetrics cluster](https://docs.victoriametrics.com/Cluster-VictoriaMetrics.html#retention-filters). -Retention filters can be evaluated for free by downloading and using enterprise binaries from [the releases page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases). +Retention filters can be evaluated for free by downloading and using enterprise binaries from [the releases page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest). +See how to request a free trial license [here](https://victoriametrics.com/products/enterprise/trial/). ## Downsampling @@ -1907,7 +1919,8 @@ Please, note that intervals of `-downsampling.period` must be multiples of each In case [deduplication](https://docs.victoriametrics.com/#deduplication) is enabled value of `-dedup.minScrapeInterval` must also be multiple of `-downsampling.period` intervals. This is required to ensure consistency of deduplication and downsampling results. -The downsampling can be evaluated for free by downloading and using enterprise binaries from [the releases page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases). +The downsampling can be evaluated for free by downloading and using enterprise binaries from [the releases page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest). +See how to request a free trial license [here](https://victoriametrics.com/products/enterprise/trial/). ## Multi-tenancy @@ -1970,7 +1983,7 @@ and [the general security page at VictoriaMetrics website](https://victoriametri The only option is increasing the limit on [the number of open files in the OS](https://medium.com/@muhammadtriwibowo/set-permanently-ulimit-n-open-files-in-ubuntu-4d61064429a). The recommendation is not specific for VictoriaMetrics only but also for any service which handles many HTTP connections and stores data on disk. * VictoriaMetrics is a write-heavy application and its performance depends on disk performance. So be careful with other - applications or utilities (like [fstrim](http://manpages.ubuntu.com/manpages/bionic/man8/fstrim.8.html)) + applications or utilities (like [fstrim](https://manpages.ubuntu.com/manpages/lunar/en/man8/fstrim.8.html)) which could [exhaust disk resources](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1521). * The recommended filesystem is `ext4`, the recommended persistent storage is [persistent HDD-based disk on GCP](https://cloud.google.com/compute/docs/disks/#pdspecs), since it is protected from hardware failures via internal replication and it can be [resized on the fly](https://cloud.google.com/compute/docs/disks/add-persistent-disk#resize_pd). @@ -2136,7 +2149,7 @@ and [cardinality explorer docs](#cardinality-explorer). * It is recommended inspecting logs during troubleshooting, since they may contain useful information. -* It is recommended upgrading to the latest available release from [this page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases), +* It is recommended upgrading to the latest available release from [this page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest), since the encountered issue could be already fixed there. * It is recommended to have at least 50% of spare resources for CPU, disk IO and RAM, so VictoriaMetrics could handle short spikes in the workload without performance issues. @@ -2147,6 +2160,11 @@ and [cardinality explorer docs](#cardinality-explorer). can be [monitored](#monitoring) via `vm_free_disk_space_bytes` metric. The total size of data stored on the disk can be monitored via sum of `vm_data_size_bytes` metrics. +* If you run VictoriaMetrics on a host with 16 or more CPU cores, then it may be needed to tune the `-search.maxWorkersPerQuery` command-line flag + in order to improve query performance. If VictoriaMetrics serves big number of concurrent `select` queries, then try reducing the value for this flag. + If VcitoriaMetrics serves heavy queries, which select `>10K` of [time series](https://docs.victoriametrics.com/keyConcepts.html#time-series) and/or process `>100M` + of [raw samples](https://docs.victoriametrics.com/keyConcepts.html#raw-samples) per query, then try setting the value for this flag to the number of available CPU cores. + * VictoriaMetrics buffers incoming data in memory for up to a few seconds before flushing it to persistent storage. This may lead to the following "issues": * Data becomes available for querying in a few seconds after inserting. It is possible to flush in-memory buffers to searchable parts @@ -2183,15 +2201,19 @@ and [cardinality explorer docs](#cardinality-explorer). This suppresses default gap filling algorithm used by VictoriaMetrics - by default it assumes each time series is continuous instead of discrete, so it fills gaps between real samples with regular intervals. -* Metrics and labels leading to [high cardinality](https://docs.victoriametrics.com/FAQ.html#what-is-high-cardinality) or [high churn rate](https://docs.victoriametrics.com/FAQ.html#what-is-high-churn-rate) can be determined via [cardinality explorer](#cardinality-explorer) and via [/api/v1/status/tsdb](#tsdb-stats) endpoint. +* Metrics and labels leading to [high cardinality](https://docs.victoriametrics.com/FAQ.html#what-is-high-cardinality) + or [high churn rate](https://docs.victoriametrics.com/FAQ.html#what-is-high-churn-rate) can be determined + via [cardinality explorer](#cardinality-explorer) and via [/api/v1/status/tsdb](#tsdb-stats) endpoint. * New time series can be logged if `-logNewSeries` command-line flag is passed to VictoriaMetrics. -* VictoriaMetrics limits the number of labels per each metric with `-maxLabelsPerTimeseries` command-line flag. - This prevents from ingesting metrics with too many labels. It is recommended [monitoring](#monitoring) `vm_metrics_with_dropped_labels_total` +* VictoriaMetrics limits the number of labels per each metric with `-maxLabelsPerTimeseries` command-line flag + and drops superflouos labels. This prevents from ingesting metrics with too many labels. + It is recommended [monitoring](#monitoring) `vm_metrics_with_dropped_labels_total` metric in order to determine whether `-maxLabelsPerTimeseries` must be adjusted for your workload. -* If you store Graphite metrics like `foo.bar.baz` in VictoriaMetrics, then `{__graphite__="foo.*.baz"}` filter can be used for selecting such metrics. See [these docs](#selecting-graphite-metrics) for details. +* If you store Graphite metrics like `foo.bar.baz` in VictoriaMetrics, then `{__graphite__="foo.*.baz"}` filter can be used for selecting such metrics. + See [these docs](#selecting-graphite-metrics) for details. You can also query Graphite metrics with [Graphite querying API](#graphite-render-api-usage). * VictoriaMetrics ignores `NaN` values during data ingestion. @@ -2333,7 +2355,8 @@ See also [high availability docs](#high-availability) and [backup docs](#backups VictoriaMetrics supports backups via [vmbackup](https://docs.victoriametrics.com/vmbackup.html) and [vmrestore](https://docs.victoriametrics.com/vmrestore.html) tools. We also provide [vmbackupmanager](https://docs.victoriametrics.com/vmbackupmanager.html) tool for enterprise subscribers. -Enterprise binaries can be downloaded and evaluated for free from [the releases page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases). +Enterprise binaries can be downloaded and evaluated for free from [the releases page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest). +See how to request a free trial license [here](https://victoriametrics.com/products/enterprise/trial/). ## vmalert @@ -2412,7 +2435,7 @@ Feel free asking any questions regarding VictoriaMetrics: * [Twitter](https://twitter.com/VictoriaMetrics/) * [Linkedin](https://www.linkedin.com/company/victoriametrics/) * [Reddit](https://www.reddit.com/r/VictoriaMetrics/) -* [Telegram-en](https://t.me/VictoriaMetrics_en?) +* [Telegram-en](https://t.me/VictoriaMetrics_en) * [Telegram-ru](https://t.me/VictoriaMetrics_ru1) * [Google groups](https://groups.google.com/forum/#!forum/victorametrics-users) * [Mastodon](https://mastodon.social/@victoriametrics/) @@ -2495,7 +2518,7 @@ Pass `-help` to VictoriaMetrics in order to see the list of supported command-li -denyQueryTracing Whether to disable the ability to trace queries. See https://docs.victoriametrics.com/#query-tracing -downsampling.period array - Comma-separated downsampling periods in the format 'offset:period'. For example, '30d:10m' instructs to leave a single sample per 10 minutes for samples older than 30 days. When setting multiple downsampling periods, it is necessary for the periods to be multiples of each other. See https://docs.victoriametrics.com/#downsampling for details. This flag is available only in VictoriaMetrics enterprise. See https://docs.victoriametrics.com/enterprise.html + Comma-separated downsampling periods in the format 'offset:period'. For example, '30d:10m' instructs to leave a single sample per 10 minutes for samples older than 30 days. When setting multiple downsampling periods, it is necessary for the periods to be multiples of each other. See https://docs.victoriametrics.com/#downsampling for details. This flag is available only in Enterprise binaries. See https://docs.victoriametrics.com/enterprise.html Supports an array of values separated by comma or specified via multiple flags. -dryRun Whether to check config files without running VictoriaMetrics. The following config files are checked: -promscrape.config, -relabelConfig and -streamAggr.config. Unknown config entries aren't allowed in -promscrape.config by default. This can be changed with -promscrape.config.strictParse=false command-line flag @@ -2506,7 +2529,7 @@ Pass `-help` to VictoriaMetrics in order to see the list of supported command-li -envflag.prefix string Prefix for environment variables if -envflag.enable is set -eula - Deprecated, please use -license or -licenseFile flags instead. By specifying this flag, you confirm that you have an enterprise license and accept the ESA https://victoriametrics.com/legal/esa/ . This flag is available only in VictoriaMetrics enterprise. See https://docs.victoriametrics.com/enterprise.html + Deprecated, please use -license or -licenseFile flags instead. By specifying this flag, you confirm that you have an enterprise license and accept the ESA https://victoriametrics.com/legal/esa/ . This flag is available only in Enterprise binaries. See https://docs.victoriametrics.com/enterprise.html -filestream.disableFadvise Whether to disable fadvise() syscall when reading large data files. The fadvise() syscall prevents from eviction of recently accessed data from OS page cache during background merges and backups. In some rare cases it is better to disable the syscall if it uses too much CPU -finalMergeDelay duration @@ -2579,11 +2602,11 @@ Pass `-help` to VictoriaMetrics in order to see the list of supported command-li -internStringMaxLen int The maximum length for strings to intern. A lower limit may save memory at the cost of higher CPU usage. See https://en.wikipedia.org/wiki/String_interning . See also -internStringDisableCache and -internStringCacheExpireDuration (default 500) -license string - enterprise license key. This flag is available only in VictoriaMetrics enterprise. Documentation - https://docs.victoriametrics.com/enterprise.html, for more information, visit https://victoriametrics.com/products/enterprise/ . To request a trial license, go to https://victoriametrics.com/products/enterprise/trial/ + Lisense key for VictoriaMetrics Enterprise. See https://victoriametrics.com/products/enterprise/ . Trial Enterprise license can be obtained from https://victoriametrics.com/products/enterprise/trial/ . This flag is available only in Enterprise binaries. The license key can be also passed via file specified by -licenseFile command-line flag -license.forceOffline - enables offline license verification. License keys issued must support this feature. Contact our support team for license keys with offline check support. + Whether to enable offline verification for VictoriaMetrics Enterprise license key, which has been passed either via -license or via -licenseFile command-line flag. The issued license key must support offline verification feature. Contact info@victoriametrics.com if you need offline license verification. This flag is avilable only in Enterprise binaries -licenseFile string - path to file with enterprise license key. This flag is available only in VictoriaMetrics enterprise. Documentation - https://docs.victoriametrics.com/enterprise.html, for more information, visit https://victoriametrics.com/products/enterprise/ . To request a trial license, go to https://victoriametrics.com/products/enterprise/trial/ + Path to file with license key for VictoriaMetrics Enterprise. See https://victoriametrics.com/products/enterprise/ . Trial Enterprise license can be obtained from https://victoriametrics.com/products/enterprise/trial/ . This flag is available only in Enterprise binaries. The license key can be also passed inline via -license command-line flag -logNewSeries Whether to log new series. This option is for debug purposes only. It can lead to performance issues when big number of new series are ingested into VictoriaMetrics -loggerDisableTimestamps @@ -2603,7 +2626,7 @@ Pass `-help` to VictoriaMetrics in order to see the list of supported command-li -loggerWarnsPerSecondLimit int Per-second limit on the number of WARN messages. If more than the given number of warns are emitted per second, then the remaining warns are suppressed. Zero values disable the rate limit -maxConcurrentInserts int - The maximum number of concurrent insert requests. The default value should work for most cases, since it minimizes memory usage. The default value can be increased when clients send data over slow networks. See also -insert.maxQueueDuration (default 8) + The maximum number of concurrent insert requests. Default value should work for most cases, since it minimizes the memory usage. The default value can be increased when clients send data over slow networks. See also -insert.maxQueueDuration (default 8) -maxInsertRequestSize size The maximum size in bytes of a single Prometheus remote_write API request Supports the following optional suffixes for size values: KB, MB, GB, TB, KiB, MiB, GiB, TiB (default 33554432) @@ -2641,14 +2664,16 @@ Pass `-help` to VictoriaMetrics in order to see the list of supported command-li Items in the previous caches are removed when the percent of requests it serves becomes lower than this value. Higher values reduce memory usage at the cost of higher CPU usage. See also -cacheExpireDuration (default 0.1) -promscrape.azureSDCheckInterval duration Interval for checking for changes in Azure. This works only if azure_sd_configs is configured in '-promscrape.config' file. See https://docs.victoriametrics.com/sd_configs.html#azure_sd_configs for details (default 1m0s) + -promscrape.cluster.memberLabel string + If non-empty, then the label with this name and the -promscrape.cluster.memberNum value is added to all the scraped metrics. See https://docs.victoriametrics.com/vmagent.html#scraping-big-number-of-targets for more info -promscrape.cluster.memberNum string - The number of number in the cluster of scrapers. It must be a unique value in the range 0 ... promscrape.cluster.membersCount-1 across scrapers in the cluster. Can be specified as pod name of Kubernetes StatefulSet - pod-name-Num, where Num is a numeric part of pod name (default "0") + The number of vmagent instance in the cluster of scrapers. It must be a unique value in the range 0 ... promscrape.cluster.membersCount-1 across scrapers in the cluster. Can be specified as pod name of Kubernetes StatefulSet - pod-name-Num, where Num is a numeric part of pod name. See also -promscrape.cluster.memberLabel . See https://docs.victoriametrics.com/vmagent.html#scraping-big-number-of-targets for more info (default "0") -promscrape.cluster.membersCount int - The number of members in a cluster of scrapers. Each member must have a unique -promscrape.cluster.memberNum in the range 0 ... promscrape.cluster.membersCount-1 . Each member then scrapes roughly 1/N of all the targets. By default, cluster scraping is disabled, i.e. a single scraper scrapes all the targets + The number of members in a cluster of scrapers. Each member must have a unique -promscrape.cluster.memberNum in the range 0 ... promscrape.cluster.membersCount-1 . Each member then scrapes roughly 1/N of all the targets. By default, cluster scraping is disabled, i.e. a single scraper scrapes all the targets. See https://docs.victoriametrics.com/vmagent.html#scraping-big-number-of-targets for more info (default 1) -promscrape.cluster.name string - Optional name of the cluster. If multiple vmagent clusters scrape the same targets, then each cluster must have unique name in order to properly de-duplicate samples received from these clusters. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/2679 + Optional name of the cluster. If multiple vmagent clusters scrape the same targets, then each cluster must have unique name in order to properly de-duplicate samples received from these clusters. See https://docs.victoriametrics.com/vmagent.html#scraping-big-number-of-targets for more info -promscrape.cluster.replicationFactor int - The number of members in the cluster, which scrape the same targets. If the replication factor is greater than 1, then the deduplication must be enabled at remote storage side. See https://docs.victoriametrics.com/#deduplication (default 1) + The number of members in the cluster, which scrape the same targets. If the replication factor is greater than 1, then the deduplication must be enabled at remote storage side. See https://docs.victoriametrics.com/vmagent.html#scraping-big-number-of-targets for more info (default 1) -promscrape.config string Optional path to Prometheus config file with 'scrape_configs' section containing targets to scrape. The path can point to local file and to http url. See https://docs.victoriametrics.com/#how-to-scrape-prometheus-exporters-such-as-node-exporter for details -promscrape.config.dryRun @@ -2739,7 +2764,7 @@ Pass `-help` to VictoriaMetrics in order to see the list of supported command-li -relabelConfig string Optional path to a file with relabeling rules, which are applied to all the ingested metrics. The path can point either to local file or to http url. See https://docs.victoriametrics.com/#relabeling for details. The config is reloaded on SIGHUP signal -retentionFilter array - Retention filter in the format 'filter:retention'. For example, '{env="dev"}:3d' configures the retention for time series with env="dev" label to 3 days. See https://docs.victoriametrics.com/#retention-filters for details. This flag is available only in VictoriaMetrics enterprise. See https://docs.victoriametrics.com/enterprise.html + Retention filter in the format 'filter:retention'. For example, '{env="dev"}:3d' configures the retention for time series with env="dev" label to 3 days. See https://docs.victoriametrics.com/#retention-filters for details. This flag is available only in Enterprise binaries. See https://docs.victoriametrics.com/enterprise.html Supports an array of values separated by comma or specified via multiple flags. -retentionPeriod value Data with timestamps outside the retentionPeriod is automatically deleted. The minimum retentionPeriod is 24h or 1d. See also -retentionFilter @@ -2817,6 +2842,8 @@ Pass `-help` to VictoriaMetrics in order to see the list of supported command-li The maximum number of tag values returned from /api/v1/label//values (default 100000) -search.maxUniqueTimeseries int The maximum number of unique time series, which can be selected during /api/v1/query and /api/v1/query_range queries. This option allows limiting memory usage (default 300000) + -search.maxWorkersPerQuery int + The maximum number of CPU cores a single query can use. The default value should work good for most cases. The flag can be set to lower values for improving performance of big number of concurrently executed queries. The flag can be set to bigger values for improving performance of heavy queries, which scan big number of time series (>10K) and/or big number of samples (>100M). There is no sense in setting this flag to values bigger than the number of CPU cores available on the system (default 4) -search.minStalenessInterval duration The minimum interval for staleness calculations. This flag could be useful for removing gaps on graphs generated from time series with irregular intervals between samples. See also '-search.maxStalenessInterval' -search.noStaleMarkers diff --git a/docs/Troubleshooting.md b/docs/Troubleshooting.md index e05bf9770..61f1d012b 100644 --- a/docs/Troubleshooting.md +++ b/docs/Troubleshooting.md @@ -1,11 +1,11 @@ --- -sort: 26 -weight: 26 +sort: 35 +weight: 35 title: Troubleshooting menu: docs: - parent: "victoriametrics" - weight: 26 + parent: 'victoriametrics' + weight: 35 aliases: - /Troubleshooting.html --- @@ -177,7 +177,7 @@ If you see unexpected or unreliable query results from VictoriaMetrics, then try to the static interval for gaps filling by setting `-search.minStalenessInterval=5m` cmd-line flag (`5m` is the static interval used by Prometheus). -1. Try upgrading to the [latest available version of VictoriaMetrics](https://github.com/VictoriaMetrics/VictoriaMetrics/releases) +1. Try upgrading to the [latest available version of VictoriaMetrics](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest) and verifying whether the issue is fixed there. 1. Try executing the query with `trace=1` query arg. This enables query tracing, which may contain diff --git a/docs/VictoriaLogs/CHANGELOG.md b/docs/VictoriaLogs/CHANGELOG.md index 45a49643b..99e15eaac 100644 --- a/docs/VictoriaLogs/CHANGELOG.md +++ b/docs/VictoriaLogs/CHANGELOG.md @@ -29,7 +29,7 @@ Released at 2023-10-04 Released at 2023-10-03 * FEATURE: add `-elasticsearch.version` command-line flag, which can be used for specifying Elasticsearch version returned by VictoriaLogs to Filebeat at [elasticsearch bulk API](https://docs.victoriametrics.com/VictoriaLogs/data-ingestion/#elasticsearch-bulk-api). This helps resolving [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/4777). -* FEATURE: expose the following metrics at [/metrics](monitoring) page: +* FEATURE: expose the following metrics at [/metrics](https://docs.victoriametrics.com/VictoriaLogs/#monitoring) page: * `vl_data_size_bytes{type="storage"}` - on-disk size for data excluding [log stream](https://docs.victoriametrics.com/VictoriaLogs/keyConcepts.html#stream-fields) indexes. * `vl_data_size_bytes{type="indexdb"}` - on-disk size for [log stream](https://docs.victoriametrics.com/VictoriaLogs/keyConcepts.html#stream-fields) indexes. * FEATURE: add `-insert.maxFieldsPerLine` command-line flag, which can be used for limiting the number of fields per line in logs sent to VictoriaLogs via ingestion protocols. This helps to avoid issues like [this](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/4762). diff --git a/docs/VictoriaLogs/README.md b/docs/VictoriaLogs/README.md index 43a5b123c..faa529033 100644 --- a/docs/VictoriaLogs/README.md +++ b/docs/VictoriaLogs/README.md @@ -1,6 +1,9 @@ --- title: VictoriaLogs weight: 0 +aliases: +- /VictoriaLogs/ +- /VictoriaLogs/index.html --- # VictoriaLogs @@ -47,11 +50,11 @@ VictoriaLogs emits its own logs to stdout. It is recommended to investigate thes ## Upgrading -It is safe upgrading VictoriaLogs to new versions unless [release notes](https://github.com/VictoriaMetrics/VictoriaMetrics/releases) say otherwise. -It is safe to skip multiple versions during the upgrade unless [release notes](https://github.com/VictoriaMetrics/VictoriaMetrics/releases) say otherwise. +It is safe upgrading VictoriaLogs to new versions unless [release notes](https://docs.victoriametrics.com/VictoriaLogs/CHANGELOG.html) say otherwise. +It is safe to skip multiple versions during the upgrade unless [release notes](https://docs.victoriametrics.com/VictoriaLogs/CHANGELOG.html) say otherwise. It is recommended to perform regular upgrades to the latest version, since it may contain important bug fixes, performance optimizations or new features. -It is also safe to downgrade to older versions unless [release notes](https://github.com/VictoriaMetrics/VictoriaMetrics/releases) say otherwise. +It is also safe to downgrade to older versions unless [release notes](https://docs.victoriametrics.com/VictoriaLogs/CHANGELOG.html) say otherwise. The following steps must be performed during the upgrade / downgrade procedure: diff --git a/docs/VictoriaLogs/data-ingestion/Promtail.md b/docs/VictoriaLogs/data-ingestion/Promtail.md index b8b34febd..3ee401f78 100644 --- a/docs/VictoriaLogs/data-ingestion/Promtail.md +++ b/docs/VictoriaLogs/data-ingestion/Promtail.md @@ -1,3 +1,14 @@ +--- +weight: 4 +title: Promtail setup +disableToc: true +menu: + docs: + parent: "victorialogs-data-ingestion" + weight: 4 +aliases: + - /VictoriaLogs/data-ingestion/Promtail.html +--- # Promtail setup [Promtail](https://grafana.com/docs/loki/latest/clients/promtail/) is a default log shipper for Grafana Loki. diff --git a/docs/VictoriaLogs/data-ingestion/README.md b/docs/VictoriaLogs/data-ingestion/README.md index a5e5486c4..8d4544390 100644 --- a/docs/VictoriaLogs/data-ingestion/README.md +++ b/docs/VictoriaLogs/data-ingestion/README.md @@ -7,6 +7,9 @@ menu: identifier: victorialogs-data-ingestion parent: "victorialogs" weight: 3 +aliases: + - /VictoriaLogs/data-ingestion/ + - /VictoriaLogs/data-ingestion/index.html --- # Data ingestion @@ -87,7 +90,7 @@ See also: - [How to debug data ingestion](#troubleshooting). - [HTTP parameters, which can be passed to the API](#http-parameters). -- [How to query VictoriaLogs](https://docs.victoriametrics.com/VictoriaLogs/querying.html). +- [How to query VictoriaLogs](https://docs.victoriametrics.com/VictoriaLogs/querying/). ### JSON stream API @@ -141,7 +144,7 @@ See also: - [How to debug data ingestion](#troubleshooting). - [HTTP parameters, which can be passed to the API](#http-parameters). -- [How to query VictoriaLogs](https://docs.victoriametrics.com/VictoriaLogs/querying.html). +- [How to query VictoriaLogs](https://docs.victoriametrics.com/VictoriaLogs/querying/). ### Loki JSON API @@ -182,7 +185,7 @@ See also: - [How to debug data ingestion](#troubleshooting). - [HTTP parameters, which can be passed to the API](#http-parameters). -- [How to query VictoriaLogs](https://docs.victoriametrics.com/VictoriaLogs/querying.html). +- [How to query VictoriaLogs](https://docs.victoriametrics.com/VictoriaLogs/querying/). ### HTTP parameters @@ -220,7 +223,7 @@ These headers may contain the needed tenant to ingest data to. See [multitenancy The following command can be used for verifying whether the data is successfully ingested into VictoriaLogs: -```logsql +```bash curl http://localhost:9428/select/logsql/query -d 'query=*' | head ``` diff --git a/docs/VictoriaLogs/data-ingestion/Vector.md b/docs/VictoriaLogs/data-ingestion/Vector.md index 736be1ec2..dae3d1e6e 100644 --- a/docs/VictoriaLogs/data-ingestion/Vector.md +++ b/docs/VictoriaLogs/data-ingestion/Vector.md @@ -1,15 +1,14 @@ --- -weight: 4 +weight: 5 title: Vector setup disableToc: true menu: docs: parent: "victorialogs-data-ingestion" - weight: 4 + weight: 5 aliases: - /VictoriaLogs/data-ingestion/Vector.html --- - # Vector setup Specify [Elasticsearch sink type](https://vector.dev/docs/reference/configuration/sinks/elasticsearch/) in the `vector.toml` diff --git a/docs/VictoriaLogs/querying/README.md b/docs/VictoriaLogs/querying/README.md index d1f77ff92..4c692e531 100644 --- a/docs/VictoriaLogs/querying/README.md +++ b/docs/VictoriaLogs/querying/README.md @@ -7,6 +7,9 @@ menu: identifier: victorialogs-querying parent: "victorialogs" weight: 4 +aliases: + - /VictoriaLogs/querying/ + - /VictoriaLogs/querying/index.html --- # Querying diff --git a/docs/enterprise.md b/docs/enterprise.md index 07fb1af69..eb7125a69 100644 --- a/docs/enterprise.md +++ b/docs/enterprise.md @@ -4,7 +4,7 @@ weight: 99 title: VictoriaMetrics Enterprise menu: docs: - parent: "victoriametrics" + parent: 'victoriametrics' weight: 99 aliases: - /enterprise.html @@ -12,35 +12,38 @@ aliases: # VictoriaMetrics Enterprise -VictoriaMetrics components are provided in two kinds - [community edition](https://victoriametrics.com/products/open-source/) -and [enterprise edition](https://victoriametrics.com/products/enterprise/). +VictoriaMetrics components are provided in two kinds - [Community edition](https://victoriametrics.com/products/open-source/) +and [Enterprise edition](https://victoriametrics.com/products/enterprise/). VictoriaMetrics community components are open source and are free to use - see [the source code](https://github.com/VictoriaMetrics/VictoriaMetrics/) and [the license](https://github.com/VictoriaMetrics/VictoriaMetrics/blob/master/LICENSE). -The use of VictoriaMetrics enterprise components is permitted in the following cases: +VictoriaMetrics Enterprise components are available in binary form at [releases page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest) +and at [docker hub](https://hub.docker.com/u/victoriametrics). Enterprise binaries and packages have `enterprise` suffix in their names. -- Evaluation use in non-production setups. Please, request trial license [here](https://victoriametrics.com/products/enterprise/). - Trial key will be sent to your email after filling the trial form. - Download components from usual places - [releases page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases) and [docker hub](https://hub.docker.com/u/victoriametrics). - Enterprise binaries and packages have `enterprise` suffix in their names. +## Valid cases for VictoriaMetrics Enterprise + +The use of VictoriaMetrics Enterprise components is permitted in the following cases: + +- Evaluation use in non-production setups. Please, request trial license [here](https://victoriametrics.com/products/enterprise/trial/) + and then pass it via `-license` or `-licenseFile` command-line flags as described [in these docs](#running-victoriametrics-enterprise). - Production use if you have a valid enterprise contract or valid permit from VictoriaMetrics company. - [Contact us](mailto:sales@victoriametrics.com) if you need such contract. + Please contact us via [this page](https://victoriametrics.com/products/enterprise/) if you are intereseted in such a contract. -- [Managed VictoriaMetrics](https://docs.victoriametrics.com/managed-victoriametrics/) is built on top of enterprise binaries of VictoriaMetrics. +- [Managed VictoriaMetrics](https://docs.victoriametrics.com/managed-victoriametrics/) is built on top of VictoriaMetrics Enterprise. -See [running VictoriaMetrics enterprise](#running-victoriametrics-enterprise) for details on how to run VictoriaMetrics enterprise. +See [these docs](#running-victoriametrics-enterprise) for details on how to run VictoriaMetrics enterprise. ## VictoriaMetrics enterprise features -VictoriaMetrics enterprise includes [all the features of the community edition](https://docs.victoriametrics.com/#prominent-features), +VictoriaMetrics Enterprise includes [all the features of the community edition](https://docs.victoriametrics.com/#prominent-features), plus the following additional features: - [Downsampling](https://docs.victoriametrics.com/#downsampling) - this feature allows reducing storage costs and increasing performance for queries over historical data. - [Multiple retentions](https://docs.victoriametrics.com/#retention-filters) - this feature allows reducing storage costs - by specifying different retentions to different datasets. + by specifying different retentions for different datasets. - [Automatic discovery of vmstorage nodes](https://docs.victoriametrics.com/Cluster-VictoriaMetrics.html#automatic-vmstorage-discovery) - this feature allows updating the list of `vmstorage` nodes at `vminsert` and `vmselect` without the need to restart these services. - [Backup automation](https://docs.victoriametrics.com/vmbackupmanager.html). @@ -49,23 +52,24 @@ plus the following additional features: - [mTLS for cluster components](https://docs.victoriametrics.com/Cluster-VictoriaMetrics.html#mtls-protection). - [Kafka integration](https://docs.victoriametrics.com/vmagent.html#kafka-integration). - [Multitenant support in vmalert](https://docs.victoriametrics.com/vmalert.html#multitenancy). -- [Ability to read alerting and recording rules from object storage](https://docs.victoriametrics.com/vmalert.html#reading-rules-from-object-storage). +- [Ability to read alerting and recording rules from Object Storage](https://docs.victoriametrics.com/vmalert.html#reading-rules-from-object-storage). - [Ability to filter incoming requests by IP at vmauth](https://docs.victoriametrics.com/vmauth.html#ip-filters). - [Anomaly Detection Service](https://docs.victoriametrics.com/vmanomaly.html). -On top of this, enterprise package of VictoriaMetrics includes the following important Enterprise features: +On top of this, Enterprise package of VictoriaMetrics includes the following important Enterprise features: -- First-class consulting and technical support provided by the core dev team. +- First-class consulting and technical support provided by the core VictoriaMetrics dev team. - [Monitoring of monitoring](https://victoriametrics.com/products/mom/) - this feature allows forecasting and preventing possible issues in VictoriaMetrics setups. - [Enterprise security compliance](https://victoriametrics.com/security/). - Prioritizing of feature requests from Enterprise customers. -[Contact us](mailto:info@victoriametrics.com) if you are interested in VictoriaMetrics enterprise. +Contact us via [this page](https://victoriametrics.com/products/enterprise/) if you are interested in VictoriaMetrics Enterprise. -## Running VictoriaMetrics enterprise +## Running VictoriaMetrics Enterprise + +VictoriaMetrics Enterprise components are available in the following forms: -There are several ways to run VictoriaMetrics enterprise: - [Binary releases](#binary-releases) - [Docker images](#docker-images) - [Helm charts](#helm-charts) @@ -73,55 +77,62 @@ There are several ways to run VictoriaMetrics enterprise: ### Binary releases -Binary releases of VictoriaMetrics enterprise are available [here](https://github.com/VictoriaMetrics/VictoriaMetrics/releases). +It is allowed to run VictoriaMetrics Enterprise components in [cases listed here](#valid-cases-for-victoriametrics-enterprise). + +Binary releases of VictoriaMetrics Enterprise are available [at the releases page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest). Enterprise binaries and packages have `enterprise` suffix in their names. For example, `victoria-metrics-linux-amd64-v1.94.0-enterprise.tar.gz`. -In order to run binary release of VictoriaMetrics enterprise, download the release for your OS and unpack it. -Then run `victoria-metrics-enterprise` binary from the unpacked directory. +In order to run binary release of VictoriaMetrics Enterprise component, please download the `*-enterprise.tar.gz` archive for your OS and architecture +from the [releases page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest) and unpack it. Then run the unpacked binary. -Before v1.94.0 all the enterprise apps required `-eula` command-line flag to be passed to them. -This flag acknowledges that your usage fits one of the cases listed above. +All the VictoriaMetrics Enterprise components prior `v1.94.0` release require `-eula` command-line flag to be passed to them. +This flag acknowledges that your usage fits one of the cases listed [here](#valid-cases-for-victoriametrics-enterprise). -After v1.94.0 either `-eula` flag or the following flags are used: -```console - -license string - enterprise license key. This flag is available only in VictoriaMetrics enterprise. Documentation - https://docs.victoriametrics.com/enterprise.html, for more information, visit https://victoriametrics.com/products/enterprise/ . To request a trial license, go to https://victoriametrics.com/products/enterprise/trial/ - -license.forceOffline - enables offline license verification. License keys issued must support this feature. Contact our support team for license keys with offline check support. - -licenseFile string - path to file with enterprise license key. This flag is available only in VictoriaMetrics enterprise. Documentation - https://docs.victoriametrics.com/enterprise.html, for more information, visit https://victoriametrics.com/products/enterprise/ . To request a trial license, go to https://victoriametrics.com/products/enterprise/trial/ -``` +The `-eula` command-line flag is deprecated starting from `v1.94.0` release in favor of new command-line flags: + +* `-license` - this flag accepts VictoriaMetrics Enterprise license key, which can be obtained at [this page](https://victoriametrics.com/products/enterprise/trial/) +* `-licenseFile` - this flag accepts a path to file with VictoriaMetrics Enterprise license key, + which can be obtained at [this page](https://victoriametrics.com/products/enterprise/trial/) . Use either `-license` or `-licenseFile`, but not both. +* `-license.forceOffline` - enables offline verification of VictoriaMetrics Enterprise license key. Contact us via [this page](https://victoriametrics.com/products/enterprise/) + if you need license key, which can be verified offline without the need to connect to VictoriaMetrics license server. + +For example, the following command runs VictoriaMetrics Enterprise binary with the Enterprise license +obtained at [this page](https://victoriametrics.com/products/enterprise/trial/): -For example, the following command runs `victoria-metrics-enterprise` binary with the specified license: ```console wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.94.0/victoria-metrics-linux-amd64-v1.94.0-enterprise.tar.gz tar -xzf victoria-metrics-linux-amd64-v1.94.0-enterprise.tar.gz -./victoria-metrics-prod -license={VM_KEY_VALUE} +./victoria-metrics-prod -license=BASE64_ENCODED_LICENSE_KEY ``` -Alternatively, the license can be specified via `-license-file` command-line flag: +Alternatively, VictoriaMetrics Enterprise license can be stored in the file and then referred via `-licenseFile` command-line flag: + ```console -./victoria-metrics-prod -license-file=/path/to/license/file +./victoria-metrics-prod -licenseFile=/path/to/vm-license ``` -The license file must contain the license key. - ### Docker images -Docker images for VictoriaMetrics enterprise are available [here](https://hub.docker.com/u/victoriametrics). +It is allowed to run VictoriaMetrics Enterprise components in [cases listed here](#valid-cases-for-victoriametrics-enterprise). + +Docker images for VictoriaMetrics Enterprise are available [at VictoriaMetrics DockerHub](https://hub.docker.com/u/victoriametrics). Enterprise docker images have `enterprise` suffix in their names. For example, `victoriametrics/victoria-metrics:v1.94.0-enteprise`. -In order to run docker image of VictoriaMetrics enterprise component it is required to provide the license key command-line -flag similar to the one described in the previous section. +In order to run Docker image of VictoriaMetrics Enterprise component, it is required to provide the license key via command-line +flag as described [here](#binary-releases). + +Enterprise license key can be obtained at [this page](https://victoriametrics.com/products/enterprise/trial/). + +For example, the following command runs VictoriaMetrics Enterprise Docker image with the specified license key: -For example, the following command runs [VictoriaMetrics single-node](https://docs.victoriametrics.com/Single-server-VictoriaMetrics.html) docker image with the specified license: ```console -docker run --name=victoria-metrics victoriametrics/victoria-metrics:v1.94.0-enteprise -license={VM_KEY_VALUE} +docker run --name=victoria-metrics victoriametrics/victoria-metrics:v1.94.0-enteprise -license=BASE64_ENCODED_LICENSE_KEY ``` -Alternatively, the license can be specified via `-license-file` command-line flag: +Alternatively, the license code can be stored in the file and then referred via `-licenseFile` command-line flag: + ```console -docker run --name=victoria-metrics -v /vm-license:/vm-license victoriametrics/victoria-metrics:v1.94.0-enteprise -license-file=/vm-license +docker run --name=victoria-metrics -v /vm-license:/vm-license victoriametrics/victoria-metrics:v1.94.0-enteprise -licenseFile=/path/to/vm-license ``` Example docker-compose configuration: @@ -137,32 +148,39 @@ services: - vmdata:/storage - /vm-license:/vm-license command: - - "--storageDataPath=/storage" - - "--license-file=/vm-license" + - "-storageDataPath=/storage" + - "-licenseFile=/vm-license" volumes: vmdata: {} ``` -Note, that example assumes that license file is located at `/vm-license` path on the host. + +The example assumes that the license file is stored at `/vm-license` on the host. ### Helm charts -Helm charts for VictoriaMetrics components are available [here](https://github.com/VictoriaMetrics/helm-charts). +It is allowed to run VictoriaMetrics Enterprise components in [cases listed here](#valid-cases-for-victoriametrics-enterprise). -In order to run VictoriaMetrics enterprise helm chart it is required to provide the license key via `license` value in `values.yaml` file -and adjust the image tag to the enterprise one. +Helm charts for VictoriaMetrics Enterprise components are available [here](https://github.com/VictoriaMetrics/helm-charts). -For example, the following values file for [VictoriaMetrics single-node chart](https://github.com/VictoriaMetrics/helm-charts/tree/master/charts/victoria-metrics-single) +In order to run VictoriaMetrics Enterprise helm chart it is required to provide the license key via `license` value in `values.yaml` file +and adjust the image tag to the Enterprise one as described [here](#docker-images). + +Enterprise license key can be obtained at [this page](https://victoriametrics.com/products/enterprise/trial/). + +For example, the following `values` file for [VictoriaMetrics single-node chart](https://github.com/VictoriaMetrics/helm-charts/tree/master/charts/victoria-metrics-single) is used to provide key in plain-text: + ```yaml server: image: tag: v1.94.0-enterprise license: - key: {VM_KEY_VALUE} + key: {BASE64_ENCODED_LICENSE_KEY} ``` In order to provide key via existing secret, the following values file is used: + ```yaml server: image: @@ -175,6 +193,7 @@ license: ``` Example secret with license key: + ```yaml apiVersion: v1 kind: Secret @@ -187,16 +206,21 @@ data: Or create secret via `kubectl`: ```console -kubectl create secret generic vm-license --from-literal=license={VM_KEY_VALUE} +kubectl create secret generic vm-license --from-literal=license={BASE64_ENCODED_LICENSE_KEY} ``` ### Kubernetes operator -VictoriaMetrics enterprise components can be deployed via [VictoriaMetrics operator](https://docs.victoriametrics.com/operator/). -In order to use enterprise components it is required to provide the license key via `license` field and adjust the image tag to the enterprise one. +It is allowed to run VictoriaMetrics Enterprise components in [cases listed here](#valid-cases-for-victoriametrics-enterprise). + +VictoriaMetrics Enterprise components can be deployed via [VictoriaMetrics operator](https://docs.victoriametrics.com/operator/). +In order to use Enterprise components it is required to provide the license key via `license` field and adjust the image tag to the enterprise one. + +Enterprise license key can be obtained at [this page](https://victoriametrics.com/products/enterprise/trial/). For example, the following custom resource for [VictoriaMetrics single-node](https://docs.victoriametrics.com/Single-server-VictoriaMetrics.html) is used to provide key in plain-text: + ```yaml apiVersion: operator.victoriametrics.com/v1beta1 kind: VMSingle @@ -205,12 +229,13 @@ metadata: spec: retentionPeriod: "1" license: - key: "VM_KEY_VALUE" + key: {BASE64_ENCODED_LICENSE_KEY} image: tag: v1.94.0-enterprise ``` In order to provide key via existing secret, the following custom resource is used: + ```yaml apiVersion: operator.victoriametrics.com/v1beta1 kind: VMSingle @@ -227,8 +252,8 @@ spec: ``` Example secret with license key: -```yaml +```yaml apiVersion: v1 kind: Secret metadata: @@ -240,24 +265,20 @@ data: Or create secret via `kubectl`: ```console -kubectl create secret generic vm-license --from-literal=license={VM_KEY_VALUE} +kubectl create secret generic vm-license --from-literal=license={BASE64_ENCODED_LICENSE_KEY} ``` See full list of CRD specifications [here](https://docs.victoriametrics.com/operator/api.html). ## Monitoring license expiration -All victoria metrics enterprise components expose the following metrics: -``` -vm_license_expires_at 1694304000 -vm_license_expires_in_seconds 1592720 -``` -Please, refer to monitoring section of each component for details on how to scrape these metrics. +All the VictoriaMetrics Enterprise components expose the following metrics at the `/metrics` page: -`vm_license_expires_at` is the expiration date in unix timestamp format. -`vm_license_expires_in_seconds` is the amount of seconds until the license expires. +* `vm_license_expires_at` - license expiration date in unix timestamp format +* `vm_license_expires_in_seconds` - the number of seconds left until the license expires + +Example alerts for [vmalert](https://docs.victoriametrics.com/vmalert.html) based on these metrics: -Example alerts for [vmalert](https://docs.victoriametrics.com/vmalert.html): {% raw %} ```yaml groups: diff --git a/docs/keyConcepts.md b/docs/keyConcepts.md index aca976cfe..c8e0a60d1 100644 --- a/docs/keyConcepts.md +++ b/docs/keyConcepts.md @@ -1,11 +1,11 @@ --- -sort: 25 -weight: 25 +sort: 34 +weight: 34 title: Key concepts menu: docs: - parent: "victoriametrics" - weight: 25 + parent: 'victoriametrics' + weight: 34 aliases: - /keyConcepts.html --- diff --git a/docs/managed-victoriametrics/alerting-vmalert-managed-victoria-metrics.md b/docs/managed-victoriametrics/alerting-vmalert-managed-victoria-metrics.md index c6fc73a9c..77fc49699 100644 --- a/docs/managed-victoriametrics/alerting-vmalert-managed-victoria-metrics.md +++ b/docs/managed-victoriametrics/alerting-vmalert-managed-victoria-metrics.md @@ -17,7 +17,7 @@ This guide explains the different ways in which you can use vmalert in conjuncti ## Preconditions -* [vmalert](https://docs.victoriametrics.com/vmalert.html) is installed. You can obtain it by building it from [source](https://docs.victoriametrics.com/vmalert.html#quickstart), downloading it from the [GitHub releases page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases), or using the [docker image](https://hub.docker.com/r/victoriametrics/vmalert) for the container ecosystem (such as docker, k8s, etc.). +* [vmalert](https://docs.victoriametrics.com/vmalert.html) is installed. You can obtain it by building it from [source](https://docs.victoriametrics.com/vmalert.html#quickstart), downloading it from the [GitHub releases page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest), or using the [docker image](https://hub.docker.com/r/victoriametrics/vmalert) for the container ecosystem (such as docker, k8s, etc.). * [Alertmanager](https://prometheus.io/docs/alerting/latest/alertmanager/) is installed. * You have a [single or cluster](https://docs.victoriametrics.com/managed-victoriametrics/quickstart.html#creating-deployment) deployment in [Managed VictoriaMetrics](https://docs.victoriametrics.com/managed-victoriametrics/overview.html). * If you are using helm, add the [VictoriaMetrics helm chart](https://github.com/VictoriaMetrics/helm-charts/tree/master/charts/victoria-metrics-alert#how-to-install) repository to your helm repositories. This step is optional. diff --git a/docs/managed-victoriametrics/quickstart.md b/docs/managed-victoriametrics/quickstart.md index b9666ffb0..7f9a94c9e 100644 --- a/docs/managed-victoriametrics/quickstart.md +++ b/docs/managed-victoriametrics/quickstart.md @@ -9,7 +9,7 @@ menu: aliases: - /managed-victoriametrics/quickstart.html --- -# Quick Start in Managed VictoriaMetrics +# Quick Start Managed VictoriaMetrics – is a database-as-a-service platform, where users can run the VictoriaMetrics that they know and love on AWS without the need to perform typical DevOps tasks such as proper configuration, diff --git a/docs/operator/CHANGELOG.md b/docs/operator/CHANGELOG.md index ced57999f..41f36419c 100644 --- a/docs/operator/CHANGELOG.md +++ b/docs/operator/CHANGELOG.md @@ -756,7 +756,7 @@ menu: - Adds alertmanager service scrape auto generation https://github.com/VictoriaMetrics/operator/issues/385 thanks [@FRosner](https://github.com/FRosner) - Auto-add routing for vminsert and vmselect CRD components for `VMUser` https://github.com/VictoriaMetrics/operator/issues/379 -- Updates docs for `VMAuth`https://github.com/VictoriaMetrics/operator/blob/master/docs/auth.MD +- Updates docs for `VMAuth`https://github.com/VictoriaMetrics/operator/blob/master/docs/auth.md - Allows changing default disk space usage for `VMAgent` https://github.com/VictoriaMetrics/operator/pull/381 thanks [@arctan90](https://github.com/arctan90) - Adds Arch labels for clusterversion template https://github.com/VictoriaMetrics/operator/commit/9e89c3b2459fb85faa8e973fa1f1558d924000f3 thanks [@yselkowitz](https://github.com/yselkowitz) - improves docs and fixes typos https://github.com/VictoriaMetrics/operator/commit/ae248dcb352a092d9f9caee87454b1ad25650a4c thanks [@flokli](https://github.com/flokli) @@ -801,7 +801,7 @@ menu: ### Breaking changes -- **changes default behavior for CR selectors, such serviceScrapeSelector at vmagent.spec. Now it select all targets if is missing https://github.com/VictoriaMetrics/operator/commit/519e89b457576099288af2ea135878f6da25b567 See more at docs https://github.com/VictoriaMetrics/operator/blob/master/docs/quick-start.MD#object-selectors** +- **changes default behavior for CR selectors, such serviceScrapeSelector at vmagent.spec. Now it select all targets if is missing https://github.com/VictoriaMetrics/operator/commit/519e89b457576099288af2ea135878f6da25b567 See more at docs https://github.com/VictoriaMetrics/operator/blob/master/docs/quick-start.md#object-selectors** - **operator doesn't add cluster domain name for in-cluster communication, now its empty value. It should resolve issue with using operator at clusters with custom k8s domain https://github.com/VictoriaMetrics/operator/issues/354 thanks [@flokli](https://github.com/flokli)** ### Features diff --git a/docs/operator/README.md b/docs/operator/README.md index 77be39a20..9185fdf7d 100644 --- a/docs/operator/README.md +++ b/docs/operator/README.md @@ -2,10 +2,6 @@ sort: 0 weight: 0 title: VictoriaMetrics Operator -menu: - docs: - parent: "operator" - weight: 0 --- # VictoriaMetrics Operator diff --git a/docs/operator/api.md b/docs/operator/api.md index bf0ba4776..1e62ab5f4 100644 --- a/docs/operator/api.md +++ b/docs/operator/api.md @@ -785,7 +785,7 @@ VMAgentSpec defines the desired state of VMAgent | extraEnvs | ExtraEnvs that will be added to VMAgent pod | [][v1.EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#envvar-v1-core) | false | | serviceSpec | ServiceSpec that will be added to vmagent service spec | *[ServiceSpec](#servicespec) | false | | serviceScrapeSpec | ServiceScrapeSpec that will be added to vmagent VMServiceScrape spec | *[VMServiceScrapeSpec](#vmservicescrapespec) | false | -| shardCount | ShardCount - numbers of shards of VMAgent in this case operator will use 1 deployment/sts per shard with replicas count according to spec.replicas https://victoriametrics.github.io/vmagent.html#scraping-big-number-of-targets | *int | false | +| shardCount | ShardCount - numbers of shards of VMAgent in this case operator will use 1 deployment/sts per shard with replicas count according to spec.replicas, see https://docs.victoriametrics.com/vmagent.html#scraping-big-number-of-targets | *int | false | | updateStrategy | UpdateStrategy - overrides default update strategy. works only for deployments, statefulset always use OnDelete. | *[appsv1.DeploymentStrategyType](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#deploymentstrategy-v1-apps) | false | | rollingUpdate | RollingUpdate - overrides deployment update params. | *[appsv1.RollingUpdateDeployment](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#rollingupdatedeployment-v1-apps) | false | | podDisruptionBudget | PodDisruptionBudget created by operator | *[EmbeddedPodDisruptionBudgetSpec](#embeddedpoddisruptionbudgetspec) | false | @@ -873,7 +873,7 @@ DiscoverySelector can be used at CRD components discovery ## EmbeddedHPA -EmbeddedHPA embeds HorizontalPodAutoScaler spec v2. https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/horizontal-pod-autoscaler-v2beta2/ +EmbeddedHPA embeds HorizontalPodAutoScaler spec v2. https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/horizontal-pod-autoscaler-v2/ | Field | Description | Scheme | Required | | ----- | ----------- | ------ | -------- | @@ -890,9 +890,9 @@ EmbeddedObjectMetadata contains a subset of the fields included in k8s.io/apimac | Field | Description | Scheme | Required | | ----- | ----------- | ------ | -------- | -| name | 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 | string | false | -| labels | Labels 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 | map[string]string | false | -| annotations | Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations | map[string]string | false | +| name | 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names | string | false | +| labels | Labels 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels | map[string]string | false | +| annotations | Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations | map[string]string | false | [Back to TOC](#table-of-contents) @@ -2098,9 +2098,9 @@ EmbeddedIngress describes ingress configuration options. | Field | Description | Scheme | Required | | ----- | ----------- | ------ | -------- | | class_name | ClassName defines ingress class name for VMAuth | *string | false | -| name | 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 | string | false | -| labels | Labels 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 | map[string]string | false | -| annotations | Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations | map[string]string | false | +| name | 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names | string | false | +| labels | Labels 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels | map[string]string | false | +| annotations | Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations | map[string]string | false | | tlsHosts | TlsHosts configures TLS access for ingress, tlsSecretName must be defined for it. | []string | false | | tlsSecretName | TlsSecretName defines secretname at the VMAuth namespace with cert and key https://kubernetes.io/docs/concepts/services-networking/ingress/#tls | string | false | | extraRules | ExtraRules - additional rules for ingress, must be checked for correctness by user. | [][v12.IngressRule](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#ingressrule-v1-networking-k8s-io) | false | diff --git a/docs/operator/enterprise.md b/docs/operator/enterprise.md index 4dd4377e8..fad00fddd 100644 --- a/docs/operator/enterprise.md +++ b/docs/operator/enterprise.md @@ -37,4 +37,7 @@ Operator doesn't have enterprise version for itself, but it supports - [IP Filters](./resources/vmuser.md#ip-filters) More information about enterprise features you can read -on [VictoriaMetrics Enterprise page](https://docs.victoriametrics.com/enterprise.html#victoriametrics-enterprise). +on [VictoriaMetrics Enterprise page](https://docs.victoriametrics.com/enterprise.html#victoriametrics-enterprise-features). + +In order to find examples of deploying enterprise components with operator, +please, check [this](https://docs.victoriametrics.com/enterprise.html#kubernetes-operator) documentation. diff --git a/docs/operator/monitoring.md b/docs/operator/monitoring.md index 66f3f9196..293b34adc 100644 --- a/docs/operator/monitoring.md +++ b/docs/operator/monitoring.md @@ -72,5 +72,5 @@ spec: See more info about object [VMServiceScrape](./resources/vmservicescrape.md). -You will also need a [vmsingle](https://docs.victoriametrics.com/vmoperatos/resources/vmsingle.html) where the metrics will be collected. +You will also need a [vmsingle](https://docs.victoriametrics.com/operator/resources/vmsingle.html) where the metrics will be collected. diff --git a/docs/operator/resources/README.md b/docs/operator/resources/README.md index f388fcbd4..c84d688e4 100644 --- a/docs/operator/resources/README.md +++ b/docs/operator/resources/README.md @@ -198,7 +198,7 @@ It's not efficient to sync its content immediately, and `kubelet` eventually syn That's why, applications managed by operator don't receive changes immediately. It usually takes 1-2 min, before content will be updated. -It may trigger errors when an application was deleted, but [`VMAgent`](./README.mdvmagent) still tries to scrape it. +It may trigger errors when an application was deleted, but [`VMAgent`](./vmagent.md) still tries to scrape it. ### Possible mitigations diff --git a/docs/operator/vars.md b/docs/operator/vars.md index d2768bd6a..2168f86d5 100644 --- a/docs/operator/vars.md +++ b/docs/operator/vars.md @@ -10,7 +10,7 @@ menu: # Auto Generated vars for package config - updated at Thu Oct 5 10:42:38 UTC 2023 + updated at Tue Oct 17 08:11:06 UTC 2023 | varible name | variable default value | variable required | variable description | diff --git a/docs/relabeling.md b/docs/relabeling.md index 97b103913..1900e251d 100644 --- a/docs/relabeling.md +++ b/docs/relabeling.md @@ -1,11 +1,11 @@ --- -sort: 28 -weight: 28 +sort: 37 +weight: 37 title: Relabeling cookbook menu: docs: - parent: "victoriametrics" - weight: 25 + parent: 'victoriametrics' + weight: 37 aliases: - /relabeling.html --- diff --git a/docs/sd_configs.md b/docs/sd_configs.md index d697e5eec..a45ac61cf 100644 --- a/docs/sd_configs.md +++ b/docs/sd_configs.md @@ -1,11 +1,11 @@ --- -sort: 27 -weight: 27 +sort: 36 +weight: 36 title: Prometheus service discovery menu: docs: - parent: "victoriametrics" - weight: 27 + parent: 'victoriametrics' + weight: 36 aliases: - /sd_configs.html --- diff --git a/docs/stream-aggregation.md b/docs/stream-aggregation.md index 159986fde..504a8f5b4 100644 --- a/docs/stream-aggregation.md +++ b/docs/stream-aggregation.md @@ -4,7 +4,7 @@ weight: 98 title: Streaming aggregation menu: docs: - parent: "victoriametrics" + parent: 'victoriametrics' weight: 98 aliases: - /stream-aggregation.html diff --git a/docs/url-examples.md b/docs/url-examples.md index f1bded5aa..d20177a08 100644 --- a/docs/url-examples.md +++ b/docs/url-examples.md @@ -1,11 +1,11 @@ --- -sort: 24 -weight: 24 +sort: 33 +weight: 33 title: VictoriaMetrics API examples menu: docs: - parent: "victoriametrics" - weight: 24 + parent: 'victoriametrics' + weight: 33 --- # VictoriaMetrics API examples diff --git a/docs/vmagent.md b/docs/vmagent.md index cb9404b45..2d767c474 100644 --- a/docs/vmagent.md +++ b/docs/vmagent.md @@ -57,7 +57,7 @@ additionally to [discovering Prometheus-compatible targets and scraping metrics ## Quick Start -Please download `vmutils-*` archive from [releases page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases) ( +Please download `vmutils-*` archive from [releases page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest) ( `vmagent` is also available in [docker images](https://hub.docker.com/r/victoriametrics/vmagent/tags)), unpack it and pass the following flags to the `vmagent` binary in order to start scraping Prometheus-compatible targets and sending the data to the Prometheus-compatible remote storage: @@ -1036,7 +1036,7 @@ See also [troubleshooting docs](https://docs.victoriametrics.com/Troubleshooting * [Reading metrics from Kafka](#reading-metrics-from-kafka) * [Writing metrics to Kafka](#writing-metrics-to-kafka) -The enterprise version of vmagent is available for evaluation at [releases](https://github.com/VictoriaMetrics/VictoriaMetrics/releases) page +The enterprise version of vmagent is available for evaluation at [releases](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest) page in `vmutils-...-enterprise.tar.gz` archives and in [docker images](https://hub.docker.com/r/victoriametrics/vmagent/tags) with tags containing `enterprise` suffix. See how to request a free trial license [here](https://victoriametrics.com/products/enterprise/trial/). @@ -1085,7 +1085,7 @@ data_format = "influx" #### Command-line flags for Kafka consumer These command-line flags are available only in [enterprise](https://docs.victoriametrics.com/enterprise.html) version of `vmagent`, -which can be downloaded for evaluation from [releases](https://github.com/VictoriaMetrics/VictoriaMetrics/releases) page +which can be downloaded for evaluation from [releases](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest) page (see `vmutils-...-enterprise.tar.gz` archives) and from [docker images](https://hub.docker.com/r/victoriametrics/vmagent/tags) with tags containing `enterprise` suffix. ``` @@ -1145,7 +1145,7 @@ Two types of auth are supported: ## How to build from sources -We recommend using [official binary releases](https://github.com/VictoriaMetrics/VictoriaMetrics/releases) - `vmagent` is located in the `vmutils-...` archives. +We recommend using [official binary releases](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest) - `vmagent` is located in the `vmutils-...` archives. It may be needed to build `vmagent` from source code when developing or testing new feature or bugfix. @@ -1257,7 +1257,9 @@ See the docs at https://docs.victoriametrics.com/vmagent.html . -envflag.prefix string Prefix for environment variables if -envflag.enable is set -eula - Deprecated, please use -license or -licenseFile flags instead. By specifying this flag, you confirm that you have an enterprise license and accept the ESA https://victoriametrics.com/legal/esa/ . This flag is available only in VictoriaMetrics enterprise. See https://docs.victoriametrics.com/enterprise.html + Deprecated, please use -license or -licenseFile flags instead. By specifying this flag, you confirm that you have an enterprise license and accept the ESA https://victoriametrics.com/legal/esa/ . This flag is available only in Enterprise binaries. See https://docs.victoriametrics.com/enterprise.html + -filestream.disableFadvise + Whether to disable fadvise() syscall when reading large data files. The fadvise() syscall prevents from eviction of recently accessed data from OS page cache during background merges and backups. In some rare cases it is better to disable the syscall if it uses too much CPU -flagsAuthKey string Auth key for /flags endpoint. It must be passed via authKey query arg. It overrides httpAuth.* settings -fs.disableMmap @@ -1320,40 +1322,40 @@ See the docs at https://docs.victoriametrics.com/vmagent.html . -internStringMaxLen int The maximum length for strings to intern. A lower limit may save memory at the cost of higher CPU usage. See https://en.wikipedia.org/wiki/String_interning . See also -internStringDisableCache and -internStringCacheExpireDuration (default 500) -kafka.consumer.topic array - Kafka topic names for data consumption. This flag is available only in VictoriaMetrics enterprise. See https://docs.victoriametrics.com/enterprise.html + Kafka topic names for data consumption. This flag is available only in Enterprise binaries. See https://docs.victoriametrics.com/enterprise.html Supports an array of values separated by comma or specified via multiple flags. -kafka.consumer.topic.basicAuth.password array - Optional basic auth password for -kafka.consumer.topic. Must be used in conjunction with any supported auth methods for kafka client, specified by flag -kafka.consumer.topic.options='security.protocol=SASL_SSL;sasl.mechanisms=PLAIN' . This flag is available only in VictoriaMetrics enterprise. See https://docs.victoriametrics.com/enterprise.html + Optional basic auth password for -kafka.consumer.topic. Must be used in conjunction with any supported auth methods for kafka client, specified by flag -kafka.consumer.topic.options='security.protocol=SASL_SSL;sasl.mechanisms=PLAIN' . This flag is available only in Enterprise binaries. See https://docs.victoriametrics.com/enterprise.html Supports an array of values separated by comma or specified via multiple flags. -kafka.consumer.topic.basicAuth.username array - Optional basic auth username for -kafka.consumer.topic. Must be used in conjunction with any supported auth methods for kafka client, specified by flag -kafka.consumer.topic.options='security.protocol=SASL_SSL;sasl.mechanisms=PLAIN' . This flag is available only in VictoriaMetrics enterprise. See https://docs.victoriametrics.com/enterprise.html + Optional basic auth username for -kafka.consumer.topic. Must be used in conjunction with any supported auth methods for kafka client, specified by flag -kafka.consumer.topic.options='security.protocol=SASL_SSL;sasl.mechanisms=PLAIN' . This flag is available only in Enterprise binaries. See https://docs.victoriametrics.com/enterprise.html Supports an array of values separated by comma or specified via multiple flags. -kafka.consumer.topic.brokers array - List of brokers to connect for given topic, e.g. -kafka.consumer.topic.broker=host-1:9092;host-2:9092 . This flag is available only in VictoriaMetrics enterprise. See https://docs.victoriametrics.com/enterprise.html + List of brokers to connect for given topic, e.g. -kafka.consumer.topic.broker=host-1:9092;host-2:9092 . This flag is available only in Enterprise binaries. See https://docs.victoriametrics.com/enterprise.html Supports an array of values separated by comma or specified via multiple flags. -kafka.consumer.topic.concurrency array - Configures consumer concurrency for topic specified via -kafka.consumer.topic flag.This flag is available only in VictoriaMetrics enterprise. See https://docs.victoriametrics.com/enterprise.html + Configures consumer concurrency for topic specified via -kafka.consumer.topic flag.This flag is available only in Enterprise binaries. See https://docs.victoriametrics.com/enterprise.html (default 1) Supports array of values separated by comma or specified via multiple flags. -kafka.consumer.topic.defaultFormat string - Expected data format in the topic if -kafka.consumer.topic.format is skipped. This flag is available only in VictoriaMetrics enterprise. See https://docs.victoriametrics.com/enterprise.html (default "promremotewrite") + Expected data format in the topic if -kafka.consumer.topic.format is skipped. This flag is available only in Enterprise binaries. See https://docs.victoriametrics.com/enterprise.html (default "promremotewrite") -kafka.consumer.topic.format array - data format for corresponding kafka topic. Valid formats: influx, prometheus, promremotewrite, graphite, jsonline . This flag is available only in VictoriaMetrics enterprise. See https://docs.victoriametrics.com/enterprise.html + data format for corresponding kafka topic. Valid formats: influx, prometheus, promremotewrite, graphite, jsonline . This flag is available only in Enterprise binaries. See https://docs.victoriametrics.com/enterprise.html Supports an array of values separated by comma or specified via multiple flags. -kafka.consumer.topic.groupID array - Defines group.id for topic. This flag is available only in VictoriaMetrics enterprise. See https://docs.victoriametrics.com/enterprise.html + Defines group.id for topic. This flag is available only in Enterprise binaries. See https://docs.victoriametrics.com/enterprise.html Supports an array of values separated by comma or specified via multiple flags. -kafka.consumer.topic.isGzipped array - Enables gzip setting for topic messages payload. Only prometheus, jsonline and influx formats accept gzipped messages.This flag is available only in VictoriaMetrics enterprise. See https://docs.victoriametrics.com/enterprise.html + Enables gzip setting for topic messages payload. Only prometheus, jsonline and influx formats accept gzipped messages.This flag is available only in Enterprise binaries. See https://docs.victoriametrics.com/enterprise.html Supports array of values separated by comma or specified via multiple flags. -kafka.consumer.topic.options array - Optional key=value;key1=value2 settings for topic consumer. See full configuration options at https://github.com/edenhill/librdkafka/blob/master/CONFIGURATION.md . This flag is available only in VictoriaMetrics enterprise. See https://docs.victoriametrics.com/enterprise.html + Optional key=value;key1=value2 settings for topic consumer. See full configuration options at https://github.com/edenhill/librdkafka/blob/master/CONFIGURATION.md . This flag is available only in Enterprise binaries. See https://docs.victoriametrics.com/enterprise.html Supports an array of values separated by comma or specified via multiple flags. -license string - enterprise license key. This flag is available only in VictoriaMetrics enterprise. Documentation - https://docs.victoriametrics.com/enterprise.html, for more information, visit https://victoriametrics.com/products/enterprise/ . To request a trial license, go to https://victoriametrics.com/products/enterprise/trial/ + Lisense key for VictoriaMetrics Enterprise. See https://victoriametrics.com/products/enterprise/ . Trial Enterprise license can be obtained from https://victoriametrics.com/products/enterprise/trial/ . This flag is available only in Enterprise binaries. The license key can be also passed via file specified by -licenseFile command-line flag -license.forceOffline - enables offline license verification. License keys issued must support this feature. Contact our support team for license keys with offline check support. + Whether to enable offline verification for VictoriaMetrics Enterprise license key, which has been passed either via -license or via -licenseFile command-line flag. The issued license key must support offline verification feature. Contact info@victoriametrics.com if you need offline license verification. This flag is avilable only in Enterprise binaries -licenseFile string - path to file with enterprise license key. This flag is available only in VictoriaMetrics enterprise. Documentation - https://docs.victoriametrics.com/enterprise.html, for more information, visit https://victoriametrics.com/products/enterprise/ . To request a trial license, go to https://victoriametrics.com/products/enterprise/trial/ + Path to file with license key for VictoriaMetrics Enterprise. See https://victoriametrics.com/products/enterprise/ . Trial Enterprise license can be obtained from https://victoriametrics.com/products/enterprise/trial/ . This flag is available only in Enterprise binaries. The license key can be also passed inline via -license command-line flag -loggerDisableTimestamps Whether to disable writing timestamps in logs -loggerErrorsPerSecondLimit int @@ -1371,7 +1373,7 @@ See the docs at https://docs.victoriametrics.com/vmagent.html . -loggerWarnsPerSecondLimit int Per-second limit on the number of WARN messages. If more than the given number of warns are emitted per second, then the remaining warns are suppressed. Zero values disable the rate limit -maxConcurrentInserts int - The maximum number of concurrent insert requests. The default value should work for most cases, since it minimizes memory usage. The default value can be increased when clients send data over slow networks. See also -insert.maxQueueDuration (default 8) + The maximum number of concurrent insert requests. Default value should work for most cases, since it minimizes the memory usage. The default value can be increased when clients send data over slow networks. See also -insert.maxQueueDuration (default 8) -maxInsertRequestSize size The maximum size in bytes of a single Prometheus remote_write API request Supports the following optional suffixes for size values: KB, MB, GB, TB, KiB, MiB, GiB, TiB (default 33554432) @@ -1404,15 +1406,15 @@ See the docs at https://docs.victoriametrics.com/vmagent.html . -promscrape.azureSDCheckInterval duration Interval for checking for changes in Azure. This works only if azure_sd_configs is configured in '-promscrape.config' file. See https://docs.victoriametrics.com/sd_configs.html#azure_sd_configs for details (default 1m0s) -promscrape.cluster.memberLabel string - If non-empty, then the label with this name and the -promscrape.cluster.memberNum value is added to all the scraped metrics + If non-empty, then the label with this name and the -promscrape.cluster.memberNum value is added to all the scraped metrics. See https://docs.victoriametrics.com/vmagent.html#scraping-big-number-of-targets for more info -promscrape.cluster.memberNum string - The number of vmagent instance in the cluster of scrapers. It must be a unique value in the range 0 ... promscrape.cluster.membersCount-1 across scrapers in the cluster. Can be specified as pod name of Kubernetes StatefulSet - pod-name-Num, where Num is a numeric part of pod name. See also -promscrape.cluster.memberLabel (default "0") + The number of vmagent instance in the cluster of scrapers. It must be a unique value in the range 0 ... promscrape.cluster.membersCount-1 across scrapers in the cluster. Can be specified as pod name of Kubernetes StatefulSet - pod-name-Num, where Num is a numeric part of pod name. See also -promscrape.cluster.memberLabel . See https://docs.victoriametrics.com/vmagent.html#scraping-big-number-of-targets for more info (default "0") -promscrape.cluster.membersCount int - The number of members in a cluster of scrapers. Each member must have a unique -promscrape.cluster.memberNum in the range 0 ... promscrape.cluster.membersCount-1 . Each member then scrapes roughly 1/N of all the targets. By default, cluster scraping is disabled, i.e. a single scraper scrapes all the targets + The number of members in a cluster of scrapers. Each member must have a unique -promscrape.cluster.memberNum in the range 0 ... promscrape.cluster.membersCount-1 . Each member then scrapes roughly 1/N of all the targets. By default, cluster scraping is disabled, i.e. a single scraper scrapes all the targets. See https://docs.victoriametrics.com/vmagent.html#scraping-big-number-of-targets for more info (default 1) -promscrape.cluster.name string - Optional name of the cluster. If multiple vmagent clusters scrape the same targets, then each cluster must have unique name in order to properly de-duplicate samples received from these clusters. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/2679 + Optional name of the cluster. If multiple vmagent clusters scrape the same targets, then each cluster must have unique name in order to properly de-duplicate samples received from these clusters. See https://docs.victoriametrics.com/vmagent.html#scraping-big-number-of-targets for more info -promscrape.cluster.replicationFactor int - The number of members in the cluster, which scrape the same targets. If the replication factor is greater than 1, then the deduplication must be enabled at remote storage side. See https://docs.victoriametrics.com/#deduplication (default 1) + The number of members in the cluster, which scrape the same targets. If the replication factor is greater than 1, then the deduplication must be enabled at remote storage side. See https://docs.victoriametrics.com/vmagent.html#scraping-big-number-of-targets for more info (default 1) -promscrape.config string Optional path to Prometheus config file with 'scrape_configs' section containing targets to scrape. The path can point to local file and to http url. See https://docs.victoriametrics.com/#how-to-scrape-prometheus-exporters-such-as-node-exporter for details -promscrape.config.dryRun @@ -1562,7 +1564,7 @@ See the docs at https://docs.victoriametrics.com/vmagent.html . The maximum number of unique series vmagent can send to remote storage systems during the last 24 hours. Excess series are logged and dropped. This can be useful for limiting series churn rate. See https://docs.victoriametrics.com/vmagent.html#cardinality-limiter -remoteWrite.maxDiskUsagePerURL array The maximum file-based buffer size in bytes at -remoteWrite.tmpDataPath for each -remoteWrite.url. When buffer size reaches the configured maximum, then old data is dropped when adding new data to the buffer. Buffered data is stored in ~500MB chunks. It is recommended to set the value for this flag to a multiple of the block size 500MB. Disk usage is unlimited if the value is set to 0 - Supports the following optional suffixes for size values: KB, MB, GB, TB, KiB, MiB, GiB, TiB. + Supports the following optional suffixes for size values: KB, MB, GB, TB, KiB, MiB, GiB, TiB. (default 0) Supports array of values separated by comma or specified via multiple flags. -remoteWrite.maxHourlySeries int The maximum number of unique series vmagent can send to remote storage systems during the last hour. Excess series are logged and dropped. This can be useful for limiting series cardinality. See https://docs.victoriametrics.com/vmagent.html#cardinality-limiter @@ -1592,28 +1594,28 @@ See the docs at https://docs.victoriametrics.com/vmagent.html . -remoteWrite.queues int The number of concurrent queues to each -remoteWrite.url. Set more queues if default number of queues isn't enough for sending high volume of collected data to remote storage. Default value is 2 * numberOfAvailableCPUs (default 8) -remoteWrite.rateLimit array - Optional rate limit in bytes per second for data sent to the corresponding -remoteWrite.url. By default, the rate limit is disabled. It can be useful for limiting load on remote storage when big amounts of buffered data is sent after temporary unavailability of the remote storage + Optional rate limit in bytes per second for data sent to the corresponding -remoteWrite.url. By default, the rate limit is disabled. It can be useful for limiting load on remote storage when big amounts of buffered data is sent after temporary unavailability of the remote storage (default 0) Supports array of values separated by comma or specified via multiple flags. -remoteWrite.relabelConfig string Optional path to file with relabeling configs, which are applied to all the metrics before sending them to -remoteWrite.url. See also -remoteWrite.urlRelabelConfig. The path can point either to local file or to http url. See https://docs.victoriametrics.com/vmagent.html#relabeling -remoteWrite.roundDigits array - Round metric values to this number of decimal digits after the point before writing them to remote storage. Examples: -remoteWrite.roundDigits=2 would round 1.236 to 1.24, while -remoteWrite.roundDigits=-1 would round 126.78 to 130. By default, digits rounding is disabled. Set it to 100 for disabling it for a particular remote storage. This option may be used for improving data compression for the stored metrics + Round metric values to this number of decimal digits after the point before writing them to remote storage. Examples: -remoteWrite.roundDigits=2 would round 1.236 to 1.24, while -remoteWrite.roundDigits=-1 would round 126.78 to 130. By default, digits rounding is disabled. Set it to 100 for disabling it for a particular remote storage. This option may be used for improving data compression for the stored metrics (default 100) Supports array of values separated by comma or specified via multiple flags. -remoteWrite.sendTimeout array - Timeout for sending a single block of data to the corresponding -remoteWrite.url (default 1m) + Timeout for sending a single block of data to the corresponding -remoteWrite.url (default 1m0s) Supports array of values separated by comma or specified via multiple flags. -remoteWrite.shardByURL Whether to shard outgoing series across all the remote storage systems enumerated via -remoteWrite.url . By default the data is replicated across all the -remoteWrite.url . See https://docs.victoriametrics.com/vmagent.html#sharding-among-remote-storages -remoteWrite.showURL Whether to show -remoteWrite.url in the exported metrics. It is hidden by default, since it can contain sensitive info such as auth key -remoteWrite.significantFigures array - The number of significant figures to leave in metric values before writing them to remote storage. See https://en.wikipedia.org/wiki/Significant_figures . Zero value saves all the significant figures. This option may be used for improving data compression for the stored metrics. See also -remoteWrite.roundDigits + The number of significant figures to leave in metric values before writing them to remote storage. See https://en.wikipedia.org/wiki/Significant_figures . Zero value saves all the significant figures. This option may be used for improving data compression for the stored metrics. See also -remoteWrite.roundDigits (default 0) Supports array of values separated by comma or specified via multiple flags. -remoteWrite.streamAggr.config array Optional path to file with stream aggregation config. See https://docs.victoriametrics.com/stream-aggregation.html . See also -remoteWrite.streamAggr.keepInput, -remoteWrite.streamAggr.dropInput and -remoteWrite.streamAggr.dedupInterval Supports an array of values separated by comma or specified via multiple flags. -remoteWrite.streamAggr.dedupInterval array - Input samples are de-duplicated with this interval before being aggregated. Only the last sample per each time series per each interval is aggregated if the interval is greater than zero + Input samples are de-duplicated with this interval before being aggregated. Only the last sample per each time series per each interval is aggregated if the interval is greater than zero (default 0s) Supports array of values separated by comma or specified via multiple flags. -remoteWrite.streamAggr.dropInput array Whether to drop all the input samples after the aggregation with -remoteWrite.streamAggr.config. By default, only aggregates samples are dropped, while the remaining samples are written to the corresponding -remoteWrite.url . See also -remoteWrite.streamAggr.keepInput and https://docs.victoriametrics.com/stream-aggregation.html diff --git a/docs/vmalert-tool.md b/docs/vmalert-tool.md new file mode 100644 index 000000000..1990b315b --- /dev/null +++ b/docs/vmalert-tool.md @@ -0,0 +1,255 @@ +--- +sort: 12 +weight: 12 +menu: + docs: + parent: 'victoriametrics' + weight: 12 +title: vmalert-tool +--- + +# vmalert-tool + +VMAlert command-line tool + +## Unit testing for rules + +You can use `vmalert-tool` to run unit tests for alerting and recording rules. +It will perform the following actions: +* sets up an isolated VictoriaMetrics instance; +* simulates the periodic ingestion of time series; +* queries the ingested data for recording and alerting rules evaluation like [vmalert](https://docs.victoriametrics.com/vmalert.html); +* checks whether the firing alerts or resulting recording rules match the expected results. + +See how to run vmalert-tool for unit test below: + +``` +# Run vmalert-tool with one or multiple test files via --files cmd-line flag +./vmalert-tool unittest --files test1.yaml --files test2.yaml +``` + +vmalert-tool unittest is compatible with [Prometheus config format for tests](https://prometheus.io/docs/prometheus/latest/configuration/unit_testing_rules/#test-file-format) +except `promql_expr_test` field. Use `metricsql_expr_test` field name instead. The name is different because vmalert-tool +validates and executes [MetricsQL](https://docs.victoriametrics.com/MetricsQL.html) expressions, +which aren't always backward compatible with [PromQL](https://prometheus.io/docs/prometheus/latest/querying/basics/). + +### Test file format + +The configuration format for files specified in `--files` cmd-line flag is the following: + +```yaml +# Path to the files or http url containing [rule groups](https://docs.victoriametrics.com/vmalert.html#groups) configuration. +# Enterprise version of vmalert-tool supports S3 and GCS paths to rules. +rule_files: + [ - ] + +# The evaluation interval for rules specified in `rule_files` +[ evaluation_interval: | default = 1m ] + +# Groups listed below will be evaluated by order. +# Not All the groups need not be mentioned, if not, they will be evaluated by define order in rule_files. +group_eval_order: + [ - ] + +# The list of unit test files to be checked during evaluation. +tests: + [ - ] +``` + +#### `` + +```yaml +# Interval between samples for input series +interval: +# Time series to persist into the database according to configured before running tests. +input_series: + [ - ] + +# Name of the test group, optional +[ name: ] + +# Unit tests for alerting rules +alert_rule_test: + [ - ] + +# Unit tests for Metricsql expressions. +metricsql_expr_test: + [ - ] + +# External labels accessible for templating. +external_labels: + [ : ... ] + +``` + +#### `` + +```yaml +# series in the following format '{
    ## Troubleshoot DefaultAzureCredential authentication issues | Error |Description| Mitigation | |---|---|---| |"DefaultAzureCredential failed to acquire a token"|No credential in the `DefaultAzureCredential` chain provided a token|
    • [Enable logging](#enable-and-configure-logging) to get further diagnostic information.
    • Consult the troubleshooting guide for underlying credential types for more information.
      • [EnvironmentCredential](#troubleshoot-environmentcredential-authentication-issues)
      • [ManagedIdentityCredential](#troubleshoot-managedidentitycredential-authentication-issues)
      • [AzureCLICredential](#troubleshoot-azureclicredential-authentication-issues)
      | |Error from the client with a status code of 401 or 403|Authentication succeeded but the authorizing Azure service responded with a 401 (Unauthorized), or 403 (Forbidden) status code|
      • [Enable logging](#enable-and-configure-logging) to determine which credential in the chain returned the authenticating token.
      • If an unexpected credential is returning a token, check application configuration such as environment variables.
      • Ensure the correct role is assigned to the authenticated identity. For example, a service specific role rather than the subscription Owner role.
      | +|"managed identity timed out"|`DefaultAzureCredential` sets a short timeout on its first managed identity authentication attempt to prevent very long timeouts during local development when no managed identity is available. That timeout causes this error in production when an application requests a token before the hosting environment is ready to provide one.|Use [ManagedIdentityCredential](https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/azidentity#ManagedIdentityCredential) directly, at least in production. It doesn't set a timeout on its authentication attempts.| ## Troubleshoot EnvironmentCredential authentication issues diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/azidentity.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/azidentity.go index 739ff49c1..10b742ce1 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/azidentity.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/azidentity.go @@ -10,12 +10,12 @@ import ( "bytes" "context" "errors" + "fmt" "io" "net/http" "net/url" "os" "regexp" - "strings" "github.com/Azure/azure-sdk-for-go/sdk/azcore" "github.com/Azure/azure-sdk-for-go/sdk/azcore/cloud" @@ -41,65 +41,18 @@ const ( organizationsTenantID = "organizations" developerSignOnClientID = "04b07795-8ddb-461a-bbee-02f9e1bf7b46" defaultSuffix = "/.default" - tenantIDValidationErr = "invalid tenantID. You can locate your tenantID by following the instructions listed here: https://docs.microsoft.com/partner-center/find-ids-and-domain-names" ) var ( // capability CP1 indicates the client application is capable of handling CAE claims challenges - cp1 = []string{"CP1"} - // CP1 is disabled until CAE support is added back - disableCP1 = true + cp1 = []string{"CP1"} + errInvalidTenantID = errors.New("invalid tenantID. You can locate your tenantID by following the instructions listed here: https://learn.microsoft.com/partner-center/find-ids-and-domain-names") ) -var getConfidentialClient = func(clientID, tenantID string, cred confidential.Credential, co *azcore.ClientOptions, additionalOpts ...confidential.Option) (confidentialClient, error) { - if !validTenantID(tenantID) { - return confidential.Client{}, errors.New(tenantIDValidationErr) - } - authorityHost, err := setAuthorityHost(co.Cloud) - if err != nil { - return confidential.Client{}, err - } - authority := runtime.JoinPaths(authorityHost, tenantID) - o := []confidential.Option{ - confidential.WithAzureRegion(os.Getenv(azureRegionalAuthorityName)), - confidential.WithHTTPClient(newPipelineAdapter(co)), - } - if !disableCP1 { - o = append(o, confidential.WithClientCapabilities(cp1)) - } - o = append(o, additionalOpts...) - if strings.ToLower(tenantID) == "adfs" { - o = append(o, confidential.WithInstanceDiscovery(false)) - } - return confidential.New(authority, clientID, cred, o...) -} - -var getPublicClient = func(clientID, tenantID string, co *azcore.ClientOptions, additionalOpts ...public.Option) (public.Client, error) { - if !validTenantID(tenantID) { - return public.Client{}, errors.New(tenantIDValidationErr) - } - authorityHost, err := setAuthorityHost(co.Cloud) - if err != nil { - return public.Client{}, err - } - o := []public.Option{ - public.WithAuthority(runtime.JoinPaths(authorityHost, tenantID)), - public.WithHTTPClient(newPipelineAdapter(co)), - } - if !disableCP1 { - o = append(o, public.WithClientCapabilities(cp1)) - } - o = append(o, additionalOpts...) - if strings.ToLower(tenantID) == "adfs" { - o = append(o, public.WithInstanceDiscovery(false)) - } - return public.New(clientID, o...) -} - // setAuthorityHost initializes the authority host for credentials. Precedence is: -// 1. cloud.Configuration.ActiveDirectoryAuthorityHost value set by user -// 2. value of AZURE_AUTHORITY_HOST -// 3. default: Azure Public Cloud +// 1. cloud.Configuration.ActiveDirectoryAuthorityHost value set by user +// 2. value of AZURE_AUTHORITY_HOST +// 3. default: Azure Public Cloud func setAuthorityHost(cc cloud.Configuration) (string, error) { host := cc.ActiveDirectoryAuthorityHost if host == "" { @@ -121,6 +74,41 @@ func setAuthorityHost(cc cloud.Configuration) (string, error) { return host, nil } +// resolveAdditionalTenants returns a copy of tenants, simplified when tenants contains a wildcard +func resolveAdditionalTenants(tenants []string) []string { + if len(tenants) == 0 { + return nil + } + for _, t := range tenants { + // a wildcard makes all other values redundant + if t == "*" { + return []string{"*"} + } + } + cp := make([]string, len(tenants)) + copy(cp, tenants) + return cp +} + +// resolveTenant returns the correct tenant for a token request +func resolveTenant(defaultTenant, specified, credName string, additionalTenants []string) (string, error) { + if specified == "" || specified == defaultTenant { + return defaultTenant, nil + } + if defaultTenant == "adfs" { + return "", errors.New("ADFS doesn't support tenants") + } + if !validTenantID(specified) { + return "", errInvalidTenantID + } + for _, t := range additionalTenants { + if t == "*" || t == specified { + return specified, nil + } + } + return "", fmt.Errorf(`%s isn't configured to acquire tokens for tenant %q. To enable acquiring tokens for this tenant add it to the AdditionallyAllowedTenants on the credential options, or add "*" to allow acquiring tokens for any tenant`, credName, specified) +} + // validTenantID return true is it receives a valid tenantID, returns false otherwise func validTenantID(tenantID string) bool { match, err := regexp.MatchString("^[0-9a-zA-Z-.]+$", tenantID) @@ -173,7 +161,7 @@ func (p pipelineAdapter) Do(r *http.Request) (*http.Response, error) { } // enables fakes for test scenarios -type confidentialClient interface { +type msalConfidentialClient interface { AcquireTokenSilent(ctx context.Context, scopes []string, options ...confidential.AcquireSilentOption) (confidential.AuthResult, error) AcquireTokenByAuthCode(ctx context.Context, code string, redirectURI string, scopes []string, options ...confidential.AcquireByAuthCodeOption) (confidential.AuthResult, error) AcquireTokenByCredential(ctx context.Context, scopes []string, options ...confidential.AcquireByCredentialOption) (confidential.AuthResult, error) @@ -181,7 +169,7 @@ type confidentialClient interface { } // enables fakes for test scenarios -type publicClient interface { +type msalPublicClient interface { AcquireTokenSilent(ctx context.Context, scopes []string, options ...public.AcquireSilentOption) (public.AuthResult, error) AcquireTokenByUsernamePassword(ctx context.Context, scopes []string, username string, password string, options ...public.AcquireByUsernamePasswordOption) (public.AuthResult, error) AcquireTokenByDeviceCode(ctx context.Context, scopes []string, options ...public.AcquireByDeviceCodeOption) (public.DeviceCode, error) diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/azure_cli_credential.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/azure_cli_credential.go index 33ff13c09..55a0d6543 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/azure_cli_credential.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/azure_cli_credential.go @@ -17,10 +17,12 @@ import ( "regexp" "runtime" "strings" + "sync" "time" "github.com/Azure/azure-sdk-for-go/sdk/azcore" "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy" + "github.com/Azure/azure-sdk-for-go/sdk/internal/log" ) const ( @@ -47,14 +49,14 @@ type AzureCLICredentialOptions struct { // init returns an instance of AzureCLICredentialOptions initialized with default values. func (o *AzureCLICredentialOptions) init() { if o.tokenProvider == nil { - o.tokenProvider = defaultTokenProvider() + o.tokenProvider = defaultTokenProvider } } // AzureCLICredential authenticates as the identity logged in to the Azure CLI. type AzureCLICredential struct { - s *syncer - tokenProvider azureCLITokenProvider + mu *sync.Mutex + opts AzureCLICredentialOptions } // NewAzureCLICredential constructs an AzureCLICredential. Pass nil to accept default options. @@ -64,9 +66,8 @@ func NewAzureCLICredential(options *AzureCLICredentialOptions) (*AzureCLICredent cp = *options } cp.init() - c := AzureCLICredential{tokenProvider: cp.tokenProvider} - c.s = newSyncer(credNameAzureCLI, cp.TenantID, cp.AdditionallyAllowedTenants, c.requestToken, c.requestToken) - return &c, nil + cp.AdditionallyAllowedTenants = resolveAdditionalTenants(cp.AdditionallyAllowedTenants) + return &AzureCLICredential{mu: &sync.Mutex{}, opts: cp}, nil } // GetToken requests a token from the Azure CLI. This credential doesn't cache tokens, so every call invokes the CLI. @@ -75,13 +76,15 @@ func (c *AzureCLICredential) GetToken(ctx context.Context, opts policy.TokenRequ if len(opts.Scopes) != 1 { return azcore.AccessToken{}, errors.New(credNameAzureCLI + ": GetToken() requires exactly one scope") } - // CLI expects an AAD v1 resource, not a v2 scope + tenant, err := resolveTenant(c.opts.TenantID, opts.TenantID, credNameAzureCLI, c.opts.AdditionallyAllowedTenants) + if err != nil { + return azcore.AccessToken{}, err + } + // pass the CLI an AAD v1 resource because we don't know which CLI version is installed and older ones don't support v2 scopes opts.Scopes = []string{strings.TrimSuffix(opts.Scopes[0], defaultSuffix)} - return c.s.GetToken(ctx, opts) -} - -func (c *AzureCLICredential) requestToken(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) { - b, err := c.tokenProvider(ctx, opts.Scopes[0], opts.TenantID) + c.mu.Lock() + defer c.mu.Unlock() + b, err := c.opts.tokenProvider(ctx, opts.Scopes[0], tenant) if err != nil { return azcore.AccessToken{}, err } @@ -89,61 +92,61 @@ func (c *AzureCLICredential) requestToken(ctx context.Context, opts policy.Token if err != nil { return azcore.AccessToken{}, err } + msg := fmt.Sprintf("%s.GetToken() acquired a token for scope %q", credNameAzureCLI, strings.Join(opts.Scopes, ", ")) + log.Write(EventAuthentication, msg) return at, nil } -func defaultTokenProvider() func(ctx context.Context, resource string, tenantID string) ([]byte, error) { - return func(ctx context.Context, resource string, tenantID string) ([]byte, error) { - match, err := regexp.MatchString("^[0-9a-zA-Z-.:/]+$", resource) - if err != nil { - return nil, err - } - if !match { - return nil, fmt.Errorf(`%s: unexpected scope "%s". Only alphanumeric characters and ".", ";", "-", and "/" are allowed`, credNameAzureCLI, resource) - } - - // set a default timeout for this authentication iff the application hasn't done so already - var cancel context.CancelFunc - if _, hasDeadline := ctx.Deadline(); !hasDeadline { - ctx, cancel = context.WithTimeout(ctx, timeoutCLIRequest) - defer cancel() - } - - commandLine := "az account get-access-token -o json --resource " + resource - if tenantID != "" { - commandLine += " --tenant " + tenantID - } - var cliCmd *exec.Cmd - if runtime.GOOS == "windows" { - dir := os.Getenv("SYSTEMROOT") - if dir == "" { - return nil, newCredentialUnavailableError(credNameAzureCLI, "environment variable 'SYSTEMROOT' has no value") - } - cliCmd = exec.CommandContext(ctx, "cmd.exe", "/c", commandLine) - cliCmd.Dir = dir - } else { - cliCmd = exec.CommandContext(ctx, "/bin/sh", "-c", commandLine) - cliCmd.Dir = "/bin" - } - cliCmd.Env = os.Environ() - var stderr bytes.Buffer - cliCmd.Stderr = &stderr - - output, err := cliCmd.Output() - if err != nil { - msg := stderr.String() - var exErr *exec.ExitError - if errors.As(err, &exErr) && exErr.ExitCode() == 127 || strings.HasPrefix(msg, "'az' is not recognized") { - msg = "Azure CLI not found on path" - } - if msg == "" { - msg = err.Error() - } - return nil, newCredentialUnavailableError(credNameAzureCLI, msg) - } - - return output, nil +var defaultTokenProvider azureCLITokenProvider = func(ctx context.Context, resource string, tenantID string) ([]byte, error) { + match, err := regexp.MatchString("^[0-9a-zA-Z-.:/]+$", resource) + if err != nil { + return nil, err } + if !match { + return nil, fmt.Errorf(`%s: unexpected scope "%s". Only alphanumeric characters and ".", ";", "-", and "/" are allowed`, credNameAzureCLI, resource) + } + + // set a default timeout for this authentication iff the application hasn't done so already + var cancel context.CancelFunc + if _, hasDeadline := ctx.Deadline(); !hasDeadline { + ctx, cancel = context.WithTimeout(ctx, timeoutCLIRequest) + defer cancel() + } + + commandLine := "az account get-access-token -o json --resource " + resource + if tenantID != "" { + commandLine += " --tenant " + tenantID + } + var cliCmd *exec.Cmd + if runtime.GOOS == "windows" { + dir := os.Getenv("SYSTEMROOT") + if dir == "" { + return nil, newCredentialUnavailableError(credNameAzureCLI, "environment variable 'SYSTEMROOT' has no value") + } + cliCmd = exec.CommandContext(ctx, "cmd.exe", "/c", commandLine) + cliCmd.Dir = dir + } else { + cliCmd = exec.CommandContext(ctx, "/bin/sh", "-c", commandLine) + cliCmd.Dir = "/bin" + } + cliCmd.Env = os.Environ() + var stderr bytes.Buffer + cliCmd.Stderr = &stderr + + output, err := cliCmd.Output() + if err != nil { + msg := stderr.String() + var exErr *exec.ExitError + if errors.As(err, &exErr) && exErr.ExitCode() == 127 || strings.HasPrefix(msg, "'az' is not recognized") { + msg = "Azure CLI not found on path" + } + if msg == "" { + msg = err.Error() + } + return nil, newCredentialUnavailableError(credNameAzureCLI, msg) + } + + return output, nil } func (c *AzureCLICredential) createAccessToken(tk []byte) (azcore.AccessToken, error) { diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/ci.yml b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/ci.yml index 3b443e8ee..9002ea0b0 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/ci.yml +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/ci.yml @@ -26,22 +26,9 @@ stages: parameters: RunLiveTests: true ServiceDirectory: 'azidentity' - PreSteps: - - pwsh: | - [System.Convert]::FromBase64String($env:PFX_CONTENTS) | Set-Content -Path $(Agent.TempDirectory)/test.pfx -AsByteStream - Set-Content -Path $(Agent.TempDirectory)/test.pem -Value $env:PEM_CONTENTS - [System.Convert]::FromBase64String($env:SNI_CONTENTS) | Set-Content -Path $(Agent.TempDirectory)/testsni.pfx -AsByteStream - env: - PFX_CONTENTS: $(net-identity-spcert-pfx) - PEM_CONTENTS: $(net-identity-spcert-pem) - SNI_CONTENTS: $(net-identity-spcert-sni) - EnvVars: - AZURE_IDENTITY_TEST_TENANTID: $(net-identity-tenantid) - AZURE_IDENTITY_TEST_USERNAME: $(net-identity-username) - AZURE_IDENTITY_TEST_PASSWORD: $(net-identity-password) - IDENTITY_SP_TENANT_ID: $(net-identity-sp-tenantid) - IDENTITY_SP_CLIENT_ID: $(net-identity-sp-clientid) - IDENTITY_SP_CLIENT_SECRET: $(net-identity-sp-clientsecret) - IDENTITY_SP_CERT_PEM: $(Agent.TempDirectory)/test.pem - IDENTITY_SP_CERT_PFX: $(Agent.TempDirectory)/test.pfx - IDENTITY_SP_CERT_SNI: $(Agent.TempDirectory)/testsni.pfx + CloudConfig: + Public: + SubscriptionConfigurations: + - $(sub-config-azure-cloud-test-resources) + # Contains alternate tenant, AAD app and cert info for testing + - $(sub-config-identity-test-resources) diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/client_assertion_credential.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/client_assertion_credential.go index d9d22996c..303d5fc09 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/client_assertion_credential.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/client_assertion_credential.go @@ -24,8 +24,7 @@ const credNameAssertion = "ClientAssertionCredential" // // [Azure AD documentation]: https://docs.microsoft.com/azure/active-directory/develop/active-directory-certificate-credentials#assertion-format type ClientAssertionCredential struct { - client confidentialClient - s *syncer + client *confidentialClient } // ClientAssertionCredentialOptions contains optional parameters for ClientAssertionCredential. @@ -56,28 +55,21 @@ func NewClientAssertionCredential(tenantID, clientID string, getAssertion func(c return getAssertion(ctx) }, ) - c, err := getConfidentialClient(clientID, tenantID, cred, &options.ClientOptions, confidential.WithInstanceDiscovery(!options.DisableInstanceDiscovery)) + msalOpts := confidentialClientOptions{ + AdditionallyAllowedTenants: options.AdditionallyAllowedTenants, + ClientOptions: options.ClientOptions, + DisableInstanceDiscovery: options.DisableInstanceDiscovery, + } + c, err := newConfidentialClient(tenantID, clientID, credNameAssertion, cred, msalOpts) if err != nil { return nil, err } - cac := ClientAssertionCredential{client: c} - cac.s = newSyncer(credNameAssertion, tenantID, options.AdditionallyAllowedTenants, cac.requestToken, cac.silentAuth) - return &cac, nil + return &ClientAssertionCredential{client: c}, nil } // GetToken requests an access token from Azure Active Directory. This method is called automatically by Azure SDK clients. func (c *ClientAssertionCredential) GetToken(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) { - return c.s.GetToken(ctx, opts) -} - -func (c *ClientAssertionCredential) silentAuth(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) { - ar, err := c.client.AcquireTokenSilent(ctx, opts.Scopes, confidential.WithTenantID(opts.TenantID)) - return azcore.AccessToken{Token: ar.AccessToken, ExpiresOn: ar.ExpiresOn.UTC()}, err -} - -func (c *ClientAssertionCredential) requestToken(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) { - ar, err := c.client.AcquireTokenByCredential(ctx, opts.Scopes, confidential.WithTenantID(opts.TenantID)) - return azcore.AccessToken{Token: ar.AccessToken, ExpiresOn: ar.ExpiresOn.UTC()}, err + return c.client.GetToken(ctx, opts) } var _ azcore.TokenCredential = (*ClientAssertionCredential)(nil) diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/client_certificate_credential.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/client_certificate_credential.go index 804eba899..d3300e305 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/client_certificate_credential.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/client_certificate_credential.go @@ -42,8 +42,7 @@ type ClientCertificateCredentialOptions struct { // ClientCertificateCredential authenticates a service principal with a certificate. type ClientCertificateCredential struct { - client confidentialClient - s *syncer + client *confidentialClient } // NewClientCertificateCredential constructs a ClientCertificateCredential. Pass nil for options to accept defaults. @@ -58,33 +57,22 @@ func NewClientCertificateCredential(tenantID string, clientID string, certs []*x if err != nil { return nil, err } - var o []confidential.Option - if options.SendCertificateChain { - o = append(o, confidential.WithX5C()) + msalOpts := confidentialClientOptions{ + AdditionallyAllowedTenants: options.AdditionallyAllowedTenants, + ClientOptions: options.ClientOptions, + DisableInstanceDiscovery: options.DisableInstanceDiscovery, + SendX5C: options.SendCertificateChain, } - o = append(o, confidential.WithInstanceDiscovery(!options.DisableInstanceDiscovery)) - c, err := getConfidentialClient(clientID, tenantID, cred, &options.ClientOptions, o...) + c, err := newConfidentialClient(tenantID, clientID, credNameCert, cred, msalOpts) if err != nil { return nil, err } - cc := ClientCertificateCredential{client: c} - cc.s = newSyncer(credNameCert, tenantID, options.AdditionallyAllowedTenants, cc.requestToken, cc.silentAuth) - return &cc, nil + return &ClientCertificateCredential{client: c}, nil } // GetToken requests an access token from Azure Active Directory. This method is called automatically by Azure SDK clients. func (c *ClientCertificateCredential) GetToken(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) { - return c.s.GetToken(ctx, opts) -} - -func (c *ClientCertificateCredential) silentAuth(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) { - ar, err := c.client.AcquireTokenSilent(ctx, opts.Scopes, confidential.WithTenantID(opts.TenantID)) - return azcore.AccessToken{Token: ar.AccessToken, ExpiresOn: ar.ExpiresOn.UTC()}, err -} - -func (c *ClientCertificateCredential) requestToken(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) { - ar, err := c.client.AcquireTokenByCredential(ctx, opts.Scopes, confidential.WithTenantID(opts.TenantID)) - return azcore.AccessToken{Token: ar.AccessToken, ExpiresOn: ar.ExpiresOn.UTC()}, err + return c.client.GetToken(ctx, opts) } // ParseCertificates loads certificates and a private key, in PEM or PKCS12 format, for use with NewClientCertificateCredential. diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/client_secret_credential.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/client_secret_credential.go index dda21f6b8..d2ff7582b 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/client_secret_credential.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/client_secret_credential.go @@ -33,8 +33,7 @@ type ClientSecretCredentialOptions struct { // ClientSecretCredential authenticates an application with a client secret. type ClientSecretCredential struct { - client confidentialClient - s *syncer + client *confidentialClient } // NewClientSecretCredential constructs a ClientSecretCredential. Pass nil for options to accept defaults. @@ -46,30 +45,21 @@ func NewClientSecretCredential(tenantID string, clientID string, clientSecret st if err != nil { return nil, err } - c, err := getConfidentialClient( - clientID, tenantID, cred, &options.ClientOptions, confidential.WithInstanceDiscovery(!options.DisableInstanceDiscovery), - ) + msalOpts := confidentialClientOptions{ + AdditionallyAllowedTenants: options.AdditionallyAllowedTenants, + ClientOptions: options.ClientOptions, + DisableInstanceDiscovery: options.DisableInstanceDiscovery, + } + c, err := newConfidentialClient(tenantID, clientID, credNameSecret, cred, msalOpts) if err != nil { return nil, err } - csc := ClientSecretCredential{client: c} - csc.s = newSyncer(credNameSecret, tenantID, options.AdditionallyAllowedTenants, csc.requestToken, csc.silentAuth) - return &csc, nil + return &ClientSecretCredential{c}, nil } // GetToken requests an access token from Azure Active Directory. This method is called automatically by Azure SDK clients. func (c *ClientSecretCredential) GetToken(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) { - return c.s.GetToken(ctx, opts) -} - -func (c *ClientSecretCredential) silentAuth(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) { - ar, err := c.client.AcquireTokenSilent(ctx, opts.Scopes, confidential.WithTenantID(opts.TenantID)) - return azcore.AccessToken{Token: ar.AccessToken, ExpiresOn: ar.ExpiresOn.UTC()}, err -} - -func (c *ClientSecretCredential) requestToken(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) { - ar, err := c.client.AcquireTokenByCredential(ctx, opts.Scopes, confidential.WithTenantID(opts.TenantID)) - return azcore.AccessToken{Token: ar.AccessToken, ExpiresOn: ar.ExpiresOn.UTC()}, err + return c.client.GetToken(ctx, opts) } var _ azcore.TokenCredential = (*ClientSecretCredential)(nil) diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/confidential_client.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/confidential_client.go new file mode 100644 index 000000000..4853a9a00 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/confidential_client.go @@ -0,0 +1,156 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package azidentity + +import ( + "context" + "errors" + "fmt" + "os" + "strings" + "sync" + + "github.com/Azure/azure-sdk-for-go/sdk/azcore" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/internal/log" + "github.com/AzureAD/microsoft-authentication-library-for-go/apps/confidential" +) + +type confidentialClientOptions struct { + azcore.ClientOptions + + AdditionallyAllowedTenants []string + // Assertion for on-behalf-of authentication + Assertion string + DisableInstanceDiscovery, SendX5C bool +} + +// confidentialClient wraps the MSAL confidential client +type confidentialClient struct { + cae, noCAE msalConfidentialClient + caeMu, noCAEMu, clientMu *sync.Mutex + clientID, tenantID string + cred confidential.Credential + host string + name string + opts confidentialClientOptions + region string +} + +func newConfidentialClient(tenantID, clientID, name string, cred confidential.Credential, opts confidentialClientOptions) (*confidentialClient, error) { + if !validTenantID(tenantID) { + return nil, errInvalidTenantID + } + host, err := setAuthorityHost(opts.Cloud) + if err != nil { + return nil, err + } + opts.AdditionallyAllowedTenants = resolveAdditionalTenants(opts.AdditionallyAllowedTenants) + return &confidentialClient{ + caeMu: &sync.Mutex{}, + clientID: clientID, + clientMu: &sync.Mutex{}, + cred: cred, + host: host, + name: name, + noCAEMu: &sync.Mutex{}, + opts: opts, + region: os.Getenv(azureRegionalAuthorityName), + tenantID: tenantID, + }, nil +} + +// GetToken requests an access token from MSAL, checking the cache first. +func (c *confidentialClient) GetToken(ctx context.Context, tro policy.TokenRequestOptions) (azcore.AccessToken, error) { + if len(tro.Scopes) < 1 { + return azcore.AccessToken{}, fmt.Errorf("%s.GetToken() requires at least one scope", c.name) + } + // we don't resolve the tenant for managed identities because they acquire tokens only from their home tenants + if c.name != credNameManagedIdentity { + tenant, err := c.resolveTenant(tro.TenantID) + if err != nil { + return azcore.AccessToken{}, err + } + tro.TenantID = tenant + } + client, mu, err := c.client(ctx, tro) + if err != nil { + return azcore.AccessToken{}, err + } + mu.Lock() + defer mu.Unlock() + var ar confidential.AuthResult + if c.opts.Assertion != "" { + ar, err = client.AcquireTokenOnBehalfOf(ctx, c.opts.Assertion, tro.Scopes, confidential.WithClaims(tro.Claims), confidential.WithTenantID(tro.TenantID)) + } else { + ar, err = client.AcquireTokenSilent(ctx, tro.Scopes, confidential.WithClaims(tro.Claims), confidential.WithTenantID(tro.TenantID)) + if err != nil { + ar, err = client.AcquireTokenByCredential(ctx, tro.Scopes, confidential.WithClaims(tro.Claims), confidential.WithTenantID(tro.TenantID)) + } + } + if err != nil { + // We could get a credentialUnavailableError from managed identity authentication because in that case the error comes from our code. + // We return it directly because it affects the behavior of credential chains. Otherwise, we return AuthenticationFailedError. + var unavailableErr *credentialUnavailableError + if !errors.As(err, &unavailableErr) { + res := getResponseFromError(err) + err = newAuthenticationFailedError(c.name, err.Error(), res, err) + } + } else { + msg := fmt.Sprintf("%s.GetToken() acquired a token for scope %q", c.name, strings.Join(ar.GrantedScopes, ", ")) + log.Write(EventAuthentication, msg) + } + return azcore.AccessToken{Token: ar.AccessToken, ExpiresOn: ar.ExpiresOn.UTC()}, err +} + +func (c *confidentialClient) client(ctx context.Context, tro policy.TokenRequestOptions) (msalConfidentialClient, *sync.Mutex, error) { + c.clientMu.Lock() + defer c.clientMu.Unlock() + if tro.EnableCAE { + if c.cae == nil { + client, err := c.newMSALClient(true) + if err != nil { + return nil, nil, err + } + c.cae = client + } + return c.cae, c.caeMu, nil + } + if c.noCAE == nil { + client, err := c.newMSALClient(false) + if err != nil { + return nil, nil, err + } + c.noCAE = client + } + return c.noCAE, c.noCAEMu, nil +} + +func (c *confidentialClient) newMSALClient(enableCAE bool) (msalConfidentialClient, error) { + authority := runtime.JoinPaths(c.host, c.tenantID) + o := []confidential.Option{ + confidential.WithAzureRegion(c.region), + confidential.WithHTTPClient(newPipelineAdapter(&c.opts.ClientOptions)), + } + if enableCAE { + o = append(o, confidential.WithClientCapabilities(cp1)) + } + if c.opts.SendX5C { + o = append(o, confidential.WithX5C()) + } + if c.opts.DisableInstanceDiscovery || strings.ToLower(c.tenantID) == "adfs" { + o = append(o, confidential.WithInstanceDiscovery(false)) + } + return confidential.New(authority, c.clientID, c.cred, o...) +} + +// resolveTenant returns the correct tenant for a token request given the client's +// configuration, or an error when that configuration doesn't allow the specified tenant +func (c *confidentialClient) resolveTenant(specified string) (string, error) { + return resolveTenant(c.tenantID, specified, c.name, c.opts.AdditionallyAllowedTenants) +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/default_azure_credential.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/default_azure_credential.go index 1e3efdc97..7647c60b1 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/default_azure_credential.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/default_azure_credential.go @@ -21,6 +21,8 @@ import ( // DefaultAzureCredentialOptions contains optional parameters for DefaultAzureCredential. // These options may not apply to all credentials in the chain. type DefaultAzureCredentialOptions struct { + // ClientOptions has additional options for credentials that use an Azure SDK HTTP pipeline. These options don't apply + // to credential types that authenticate via external tools such as the Azure CLI. azcore.ClientOptions // AdditionallyAllowedTenants specifies additional tenants for which the credential may acquire tokens. Add @@ -32,8 +34,7 @@ type DefaultAzureCredentialOptions struct { // from https://login.microsoft.com before authenticating. Setting this to true will skip this request, making // the application responsible for ensuring the configured authority is valid and trustworthy. DisableInstanceDiscovery bool - // TenantID identifies the tenant the Azure CLI should authenticate in. - // Defaults to the CLI's default tenant, which is typically the home tenant of the user logged in to the CLI. + // TenantID sets the default tenant for authentication via the Azure CLI and workload identity. TenantID string } @@ -83,11 +84,11 @@ func NewDefaultAzureCredential(options *DefaultAzureCredentialOptions) (*Default creds = append(creds, &defaultCredentialErrorReporter{credType: "EnvironmentCredential", err: err}) } - // workload identity requires values for AZURE_AUTHORITY_HOST, AZURE_CLIENT_ID, AZURE_FEDERATED_TOKEN_FILE, AZURE_TENANT_ID wic, err := NewWorkloadIdentityCredential(&WorkloadIdentityCredentialOptions{ AdditionallyAllowedTenants: additionalTenants, ClientOptions: options.ClientOptions, DisableInstanceDiscovery: options.DisableInstanceDiscovery, + TenantID: options.TenantID, }) if err == nil { creds = append(creds, wic) @@ -95,6 +96,7 @@ func NewDefaultAzureCredential(options *DefaultAzureCredentialOptions) (*Default errorMessages = append(errorMessages, credNameWorkloadIdentity+": "+err.Error()) creds = append(creds, &defaultCredentialErrorReporter{credType: credNameWorkloadIdentity, err: err}) } + o := &ManagedIdentityCredentialOptions{ClientOptions: options.ClientOptions} if ID, ok := os.LookupEnv(azureClientID); ok { o.ID = ClientID(ID) @@ -115,9 +117,8 @@ func NewDefaultAzureCredential(options *DefaultAzureCredentialOptions) (*Default creds = append(creds, &defaultCredentialErrorReporter{credType: credNameAzureCLI, err: err}) } - err = defaultAzureCredentialConstructorErrorHandler(len(creds), errorMessages) - if err != nil { - return nil, err + if len(errorMessages) > 0 { + log.Writef(EventAuthentication, "NewDefaultAzureCredential failed to initialize some credentials:\n\t%s", strings.Join(errorMessages, "\n\t")) } chain, err := NewChainedTokenCredential(creds, nil) @@ -135,20 +136,6 @@ func (c *DefaultAzureCredential) GetToken(ctx context.Context, opts policy.Token var _ azcore.TokenCredential = (*DefaultAzureCredential)(nil) -func defaultAzureCredentialConstructorErrorHandler(numberOfSuccessfulCredentials int, errorMessages []string) (err error) { - errorMessage := strings.Join(errorMessages, "\n\t") - - if numberOfSuccessfulCredentials == 0 { - return errors.New(errorMessage) - } - - if len(errorMessages) != 0 { - log.Writef(EventAuthentication, "NewDefaultAzureCredential failed to initialize some credentials:\n\t%s", errorMessage) - } - - return nil -} - // defaultCredentialErrorReporter is a substitute for credentials that couldn't be constructed. // Its GetToken method always returns a credentialUnavailableError having the same message as // the error that prevented constructing the credential. This ensures the message is present @@ -185,7 +172,7 @@ func (w *timeoutWrapper) GetToken(ctx context.Context, opts policy.TokenRequestO defer cancel() tk, err = w.mic.GetToken(c, opts) if isAuthFailedDueToContext(err) { - err = newCredentialUnavailableError(credNameManagedIdentity, "managed identity timed out") + err = newCredentialUnavailableError(credNameManagedIdentity, "managed identity timed out. See https://aka.ms/azsdk/go/identity/troubleshoot#dac for more information") } else { // some managed identity implementation is available, so don't apply the timeout to future calls w.timeout = 0 diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/device_code_credential.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/device_code_credential.go index 108e83c43..d245c269a 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/device_code_credential.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/device_code_credential.go @@ -12,7 +12,6 @@ import ( "github.com/Azure/azure-sdk-for-go/sdk/azcore" "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy" - "github.com/AzureAD/microsoft-authentication-library-for-go/apps/public" ) const credNameDeviceCode = "DeviceCodeCredential" @@ -74,10 +73,7 @@ type DeviceCodeMessage struct { // If a web browser is available, InteractiveBrowserCredential is more convenient because it // automatically opens a browser to the login page. type DeviceCodeCredential struct { - account public.Account - client publicClient - s *syncer - prompt func(context.Context, DeviceCodeMessage) error + client *publicClient } // NewDeviceCodeCredential creates a DeviceCodeCredential. Pass nil to accept default options. @@ -87,50 +83,24 @@ func NewDeviceCodeCredential(options *DeviceCodeCredentialOptions) (*DeviceCodeC cp = *options } cp.init() - c, err := getPublicClient( - cp.ClientID, cp.TenantID, &cp.ClientOptions, public.WithInstanceDiscovery(!cp.DisableInstanceDiscovery), - ) + msalOpts := publicClientOptions{ + AdditionallyAllowedTenants: cp.AdditionallyAllowedTenants, + ClientOptions: cp.ClientOptions, + DeviceCodePrompt: cp.UserPrompt, + DisableInstanceDiscovery: cp.DisableInstanceDiscovery, + } + c, err := newPublicClient(cp.TenantID, cp.ClientID, credNameDeviceCode, msalOpts) if err != nil { return nil, err } - cred := DeviceCodeCredential{client: c, prompt: cp.UserPrompt} - cred.s = newSyncer(credNameDeviceCode, cp.TenantID, cp.AdditionallyAllowedTenants, cred.requestToken, cred.silentAuth) - return &cred, nil + c.name = credNameDeviceCode + return &DeviceCodeCredential{client: c}, nil } // GetToken requests an access token from Azure Active Directory. It will begin the device code flow and poll until the user completes authentication. // This method is called automatically by Azure SDK clients. func (c *DeviceCodeCredential) GetToken(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) { - return c.s.GetToken(ctx, opts) -} - -func (c *DeviceCodeCredential) requestToken(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) { - dc, err := c.client.AcquireTokenByDeviceCode(ctx, opts.Scopes, public.WithTenantID(opts.TenantID)) - if err != nil { - return azcore.AccessToken{}, err - } - err = c.prompt(ctx, DeviceCodeMessage{ - Message: dc.Result.Message, - UserCode: dc.Result.UserCode, - VerificationURL: dc.Result.VerificationURL, - }) - if err != nil { - return azcore.AccessToken{}, err - } - ar, err := dc.AuthenticationResult(ctx) - if err != nil { - return azcore.AccessToken{}, err - } - c.account = ar.Account - return azcore.AccessToken{Token: ar.AccessToken, ExpiresOn: ar.ExpiresOn.UTC()}, err -} - -func (c *DeviceCodeCredential) silentAuth(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) { - ar, err := c.client.AcquireTokenSilent(ctx, opts.Scopes, - public.WithSilentAccount(c.account), - public.WithTenantID(opts.TenantID), - ) - return azcore.AccessToken{Token: ar.AccessToken, ExpiresOn: ar.ExpiresOn.UTC()}, err + return c.client.GetToken(ctx, opts) } var _ azcore.TokenCredential = (*DeviceCodeCredential)(nil) diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/errors.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/errors.go index 86d8976a4..e1a21e003 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/errors.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/errors.go @@ -11,9 +11,9 @@ import ( "encoding/json" "errors" "fmt" - "io" "net/http" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" "github.com/Azure/azure-sdk-for-go/sdk/internal/errorinfo" msal "github.com/AzureAD/microsoft-authentication-library-for-go/apps/errors" ) @@ -57,17 +57,16 @@ func (e *AuthenticationFailedError) Error() string { fmt.Fprintln(msg, "--------------------------------------------------------------------------------") fmt.Fprintf(msg, "RESPONSE %s\n", e.RawResponse.Status) fmt.Fprintln(msg, "--------------------------------------------------------------------------------") - body, err := io.ReadAll(e.RawResponse.Body) - e.RawResponse.Body.Close() - if err != nil { + body, err := runtime.Payload(e.RawResponse) + switch { + case err != nil: fmt.Fprintf(msg, "Error reading response body: %v", err) - } else if len(body) > 0 { - e.RawResponse.Body = io.NopCloser(bytes.NewReader(body)) + case len(body) > 0: if err := json.Indent(msg, body, "", " "); err != nil { // failed to pretty-print so just dump it verbatim fmt.Fprint(msg, string(body)) } - } else { + default: fmt.Fprint(msg, "Response contained no body") } fmt.Fprintln(msg, "\n--------------------------------------------------------------------------------") diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/interactive_browser_credential.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/interactive_browser_credential.go index 4868d22c3..08f3efbf3 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/interactive_browser_credential.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/interactive_browser_credential.go @@ -11,7 +11,6 @@ import ( "github.com/Azure/azure-sdk-for-go/sdk/azcore" "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy" - "github.com/AzureAD/microsoft-authentication-library-for-go/apps/public" ) const credNameBrowser = "InteractiveBrowserCredential" @@ -56,10 +55,7 @@ func (o *InteractiveBrowserCredentialOptions) init() { // InteractiveBrowserCredential opens a browser to interactively authenticate a user. type InteractiveBrowserCredential struct { - account public.Account - client publicClient - options InteractiveBrowserCredentialOptions - s *syncer + client *publicClient } // NewInteractiveBrowserCredential constructs a new InteractiveBrowserCredential. Pass nil to accept default options. @@ -69,38 +65,22 @@ func NewInteractiveBrowserCredential(options *InteractiveBrowserCredentialOption cp = *options } cp.init() - c, err := getPublicClient(cp.ClientID, cp.TenantID, &cp.ClientOptions, public.WithInstanceDiscovery(!cp.DisableInstanceDiscovery)) + msalOpts := publicClientOptions{ + ClientOptions: cp.ClientOptions, + DisableInstanceDiscovery: cp.DisableInstanceDiscovery, + LoginHint: cp.LoginHint, + RedirectURL: cp.RedirectURL, + } + c, err := newPublicClient(cp.TenantID, cp.ClientID, credNameBrowser, msalOpts) if err != nil { return nil, err } - ibc := InteractiveBrowserCredential{client: c, options: cp} - ibc.s = newSyncer(credNameBrowser, cp.TenantID, cp.AdditionallyAllowedTenants, ibc.requestToken, ibc.silentAuth) - return &ibc, nil + return &InteractiveBrowserCredential{client: c}, nil } // GetToken requests an access token from Azure Active Directory. This method is called automatically by Azure SDK clients. func (c *InteractiveBrowserCredential) GetToken(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) { - return c.s.GetToken(ctx, opts) -} - -func (c *InteractiveBrowserCredential) requestToken(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) { - ar, err := c.client.AcquireTokenInteractive(ctx, opts.Scopes, - public.WithLoginHint(c.options.LoginHint), - public.WithRedirectURI(c.options.RedirectURL), - public.WithTenantID(opts.TenantID), - ) - if err == nil { - c.account = ar.Account - } - return azcore.AccessToken{Token: ar.AccessToken, ExpiresOn: ar.ExpiresOn.UTC()}, err -} - -func (c *InteractiveBrowserCredential) silentAuth(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) { - ar, err := c.client.AcquireTokenSilent(ctx, opts.Scopes, - public.WithSilentAccount(c.account), - public.WithTenantID(opts.TenantID), - ) - return azcore.AccessToken{Token: ar.AccessToken, ExpiresOn: ar.ExpiresOn.UTC()}, err + return c.client.GetToken(ctx, opts) } var _ azcore.TokenCredential = (*InteractiveBrowserCredential)(nil) diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/managed_identity_client.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/managed_identity_client.go index d7b4a32a5..fdc3c1f67 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/managed_identity_client.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/managed_identity_client.go @@ -84,13 +84,15 @@ func setIMDSRetryOptionDefaults(o *policy.RetryOptions) { } if o.StatusCodes == nil { o.StatusCodes = []int{ - // IMDS docs recommend retrying 404, 429 and all 5xx - // https://docs.microsoft.com/azure/active-directory/managed-identities-azure-resources/how-to-use-vm-token#error-handling + // IMDS docs recommend retrying 404, 410, 429 and 5xx + // https://learn.microsoft.com/azure/active-directory/managed-identities-azure-resources/how-to-use-vm-token#error-handling http.StatusNotFound, // 404 + http.StatusGone, // 410 http.StatusTooManyRequests, // 429 http.StatusInternalServerError, // 500 http.StatusNotImplemented, // 501 http.StatusBadGateway, // 502 + http.StatusServiceUnavailable, // 503 http.StatusGatewayTimeout, // 504 http.StatusHTTPVersionNotSupported, // 505 http.StatusVariantAlsoNegotiates, // 506 @@ -175,11 +177,25 @@ func (c *managedIdentityClient) authenticate(ctx context.Context, id ManagedIDKi return c.createAccessToken(resp) } - if c.msiType == msiTypeIMDS && resp.StatusCode == 400 { - if id != nil { - return azcore.AccessToken{}, newAuthenticationFailedError(credNameManagedIdentity, "the requested identity isn't assigned to this resource", resp, nil) + if c.msiType == msiTypeIMDS { + switch resp.StatusCode { + case http.StatusBadRequest: + if id != nil { + return azcore.AccessToken{}, newAuthenticationFailedError(credNameManagedIdentity, "the requested identity isn't assigned to this resource", resp, nil) + } + msg := "failed to authenticate a system assigned identity" + if body, err := runtime.Payload(resp); err == nil && len(body) > 0 { + msg += fmt.Sprintf(". The endpoint responded with %s", body) + } + return azcore.AccessToken{}, newCredentialUnavailableError(credNameManagedIdentity, msg) + case http.StatusForbidden: + // Docker Desktop runs a proxy that responds 403 to IMDS token requests. If we get that response, + // we return credentialUnavailableError so credential chains continue to their next credential + body, err := runtime.Payload(resp) + if err == nil && strings.Contains(string(body), "A socket operation was attempted to an unreachable network") { + return azcore.AccessToken{}, newCredentialUnavailableError(credNameManagedIdentity, fmt.Sprintf("unexpected response %q", string(body))) + } } - return azcore.AccessToken{}, newCredentialUnavailableError(credNameManagedIdentity, "no default identity is assigned to this resource") } return azcore.AccessToken{}, newAuthenticationFailedError(credNameManagedIdentity, "authentication failed", resp, nil) diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/managed_identity_credential.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/managed_identity_credential.go index c6710ae52..35c5e6725 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/managed_identity_credential.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/managed_identity_credential.go @@ -8,7 +8,6 @@ package azidentity import ( "context" - "errors" "fmt" "strings" @@ -71,9 +70,8 @@ type ManagedIdentityCredentialOptions struct { // user-assigned identity. See Azure Active Directory documentation for more information about managed identities: // https://docs.microsoft.com/azure/active-directory/managed-identities-azure-resources/overview type ManagedIdentityCredential struct { - client confidentialClient + client *confidentialClient mic *managedIdentityClient - s *syncer } // NewManagedIdentityCredential creates a ManagedIdentityCredential. Pass nil to accept default options. @@ -93,35 +91,23 @@ func NewManagedIdentityCredential(options *ManagedIdentityCredentialOptions) (*M if options.ID != nil { clientID = options.ID.String() } - // similarly, it's okay to give MSAL an incorrect authority URL because that URL won't be used - c, err := confidential.New("https://login.microsoftonline.com/common", clientID, cred) + // similarly, it's okay to give MSAL an incorrect tenant because MSAL won't use the value + c, err := newConfidentialClient("common", clientID, credNameManagedIdentity, cred, confidentialClientOptions{}) if err != nil { return nil, err } - m := ManagedIdentityCredential{client: c, mic: mic} - m.s = newSyncer(credNameManagedIdentity, "", nil, m.requestToken, m.silentAuth) - return &m, nil + return &ManagedIdentityCredential{client: c, mic: mic}, nil } // GetToken requests an access token from the hosting environment. This method is called automatically by Azure SDK clients. func (c *ManagedIdentityCredential) GetToken(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) { if len(opts.Scopes) != 1 { - err := errors.New(credNameManagedIdentity + ": GetToken() requires exactly one scope") + err := fmt.Errorf("%s.GetToken() requires exactly one scope", credNameManagedIdentity) return azcore.AccessToken{}, err } // managed identity endpoints require an AADv1 resource (i.e. token audience), not a v2 scope, so we remove "/.default" here opts.Scopes = []string{strings.TrimSuffix(opts.Scopes[0], defaultSuffix)} - return c.s.GetToken(ctx, opts) -} - -func (c *ManagedIdentityCredential) requestToken(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) { - ar, err := c.client.AcquireTokenByCredential(ctx, opts.Scopes) - return azcore.AccessToken{Token: ar.AccessToken, ExpiresOn: ar.ExpiresOn.UTC()}, err -} - -func (c *ManagedIdentityCredential) silentAuth(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) { - ar, err := c.client.AcquireTokenSilent(ctx, opts.Scopes) - return azcore.AccessToken{Token: ar.AccessToken, ExpiresOn: ar.ExpiresOn.UTC()}, err + return c.client.GetToken(ctx, opts) } var _ azcore.TokenCredential = (*ManagedIdentityCredential)(nil) diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/on_behalf_of_credential.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/on_behalf_of_credential.go index 3e173f47d..2b360b681 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/on_behalf_of_credential.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/on_behalf_of_credential.go @@ -25,9 +25,7 @@ const credNameOBO = "OnBehalfOfCredential" // // [Azure Active Directory documentation]: https://docs.microsoft.com/azure/active-directory/develop/v2-oauth2-on-behalf-of-flow type OnBehalfOfCredential struct { - assertion string - client confidentialClient - s *syncer + client *confidentialClient } // OnBehalfOfCredentialOptions contains optional parameters for OnBehalfOfCredential @@ -72,28 +70,23 @@ func newOnBehalfOfCredential(tenantID, clientID, userAssertion string, cred conf if options == nil { options = &OnBehalfOfCredentialOptions{} } - opts := []confidential.Option{} - if options.SendCertificateChain { - opts = append(opts, confidential.WithX5C()) + opts := confidentialClientOptions{ + AdditionallyAllowedTenants: options.AdditionallyAllowedTenants, + Assertion: userAssertion, + ClientOptions: options.ClientOptions, + DisableInstanceDiscovery: options.DisableInstanceDiscovery, + SendX5C: options.SendCertificateChain, } - opts = append(opts, confidential.WithInstanceDiscovery(!options.DisableInstanceDiscovery)) - c, err := getConfidentialClient(clientID, tenantID, cred, &options.ClientOptions, opts...) + c, err := newConfidentialClient(tenantID, clientID, credNameOBO, cred, opts) if err != nil { return nil, err } - obo := OnBehalfOfCredential{assertion: userAssertion, client: c} - obo.s = newSyncer(credNameOBO, tenantID, options.AdditionallyAllowedTenants, obo.requestToken, obo.requestToken) - return &obo, nil + return &OnBehalfOfCredential{c}, nil } // GetToken requests an access token from Azure Active Directory. This method is called automatically by Azure SDK clients. func (o *OnBehalfOfCredential) GetToken(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) { - return o.s.GetToken(ctx, opts) -} - -func (o *OnBehalfOfCredential) requestToken(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) { - ar, err := o.client.AcquireTokenOnBehalfOf(ctx, o.assertion, opts.Scopes, confidential.WithTenantID(opts.TenantID)) - return azcore.AccessToken{Token: ar.AccessToken, ExpiresOn: ar.ExpiresOn.UTC()}, err + return o.client.GetToken(ctx, opts) } var _ azcore.TokenCredential = (*OnBehalfOfCredential)(nil) diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/public_client.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/public_client.go new file mode 100644 index 000000000..6512d3e25 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/public_client.go @@ -0,0 +1,178 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package azidentity + +import ( + "context" + "fmt" + "strings" + "sync" + + "github.com/Azure/azure-sdk-for-go/sdk/azcore" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/internal/log" + "github.com/AzureAD/microsoft-authentication-library-for-go/apps/public" +) + +type publicClientOptions struct { + azcore.ClientOptions + + AdditionallyAllowedTenants []string + DeviceCodePrompt func(context.Context, DeviceCodeMessage) error + DisableInstanceDiscovery bool + LoginHint, RedirectURL string + Username, Password string +} + +// publicClient wraps the MSAL public client +type publicClient struct { + account public.Account + cae, noCAE msalPublicClient + caeMu, noCAEMu, clientMu *sync.Mutex + clientID, tenantID string + host string + name string + opts publicClientOptions +} + +func newPublicClient(tenantID, clientID, name string, o publicClientOptions) (*publicClient, error) { + if !validTenantID(tenantID) { + return nil, errInvalidTenantID + } + host, err := setAuthorityHost(o.Cloud) + if err != nil { + return nil, err + } + o.AdditionallyAllowedTenants = resolveAdditionalTenants(o.AdditionallyAllowedTenants) + return &publicClient{ + caeMu: &sync.Mutex{}, + clientID: clientID, + clientMu: &sync.Mutex{}, + host: host, + name: name, + noCAEMu: &sync.Mutex{}, + opts: o, + tenantID: tenantID, + }, nil +} + +// GetToken requests an access token from MSAL, checking the cache first. +func (p *publicClient) GetToken(ctx context.Context, tro policy.TokenRequestOptions) (azcore.AccessToken, error) { + if len(tro.Scopes) < 1 { + return azcore.AccessToken{}, fmt.Errorf("%s.GetToken() requires at least one scope", p.name) + } + tenant, err := p.resolveTenant(tro.TenantID) + if err != nil { + return azcore.AccessToken{}, err + } + client, mu, err := p.client(tro) + if err != nil { + return azcore.AccessToken{}, err + } + mu.Lock() + defer mu.Unlock() + ar, err := client.AcquireTokenSilent(ctx, tro.Scopes, public.WithSilentAccount(p.account), public.WithClaims(tro.Claims), public.WithTenantID(tenant)) + if err == nil { + return p.token(ar, err) + } + at, err := p.reqToken(ctx, client, tro) + if err == nil { + msg := fmt.Sprintf("%s.GetToken() acquired a token for scope %q", p.name, strings.Join(ar.GrantedScopes, ", ")) + log.Write(EventAuthentication, msg) + } + return at, err +} + +// reqToken requests a token from the MSAL public client. It's separate from GetToken() to enable Authenticate() to bypass the cache. +func (p *publicClient) reqToken(ctx context.Context, c msalPublicClient, tro policy.TokenRequestOptions) (azcore.AccessToken, error) { + tenant, err := p.resolveTenant(tro.TenantID) + if err != nil { + return azcore.AccessToken{}, err + } + var ar public.AuthResult + switch p.name { + case credNameBrowser: + ar, err = c.AcquireTokenInteractive(ctx, tro.Scopes, + public.WithClaims(tro.Claims), + public.WithLoginHint(p.opts.LoginHint), + public.WithRedirectURI(p.opts.RedirectURL), + public.WithTenantID(tenant), + ) + case credNameDeviceCode: + dc, e := c.AcquireTokenByDeviceCode(ctx, tro.Scopes, public.WithClaims(tro.Claims), public.WithTenantID(tenant)) + if e != nil { + return azcore.AccessToken{}, e + } + err = p.opts.DeviceCodePrompt(ctx, DeviceCodeMessage{ + Message: dc.Result.Message, + UserCode: dc.Result.UserCode, + VerificationURL: dc.Result.VerificationURL, + }) + if err == nil { + ar, err = dc.AuthenticationResult(ctx) + } + case credNameUserPassword: + ar, err = c.AcquireTokenByUsernamePassword(ctx, tro.Scopes, p.opts.Username, p.opts.Password, public.WithClaims(tro.Claims), public.WithTenantID(tenant)) + default: + return azcore.AccessToken{}, fmt.Errorf("unknown credential %q", p.name) + } + return p.token(ar, err) +} + +func (p *publicClient) client(tro policy.TokenRequestOptions) (msalPublicClient, *sync.Mutex, error) { + p.clientMu.Lock() + defer p.clientMu.Unlock() + if tro.EnableCAE { + if p.cae == nil { + client, err := p.newMSALClient(true) + if err != nil { + return nil, nil, err + } + p.cae = client + } + return p.cae, p.caeMu, nil + } + if p.noCAE == nil { + client, err := p.newMSALClient(false) + if err != nil { + return nil, nil, err + } + p.noCAE = client + } + return p.noCAE, p.noCAEMu, nil +} + +func (p *publicClient) newMSALClient(enableCAE bool) (msalPublicClient, error) { + o := []public.Option{ + public.WithAuthority(runtime.JoinPaths(p.host, p.tenantID)), + public.WithHTTPClient(newPipelineAdapter(&p.opts.ClientOptions)), + } + if enableCAE { + o = append(o, public.WithClientCapabilities(cp1)) + } + if p.opts.DisableInstanceDiscovery || strings.ToLower(p.tenantID) == "adfs" { + o = append(o, public.WithInstanceDiscovery(false)) + } + return public.New(p.clientID, o...) +} + +func (p *publicClient) token(ar public.AuthResult, err error) (azcore.AccessToken, error) { + if err == nil { + p.account = ar.Account + } else { + res := getResponseFromError(err) + err = newAuthenticationFailedError(p.name, err.Error(), res, err) + } + return azcore.AccessToken{Token: ar.AccessToken, ExpiresOn: ar.ExpiresOn.UTC()}, err +} + +// resolveTenant returns the correct tenant for a token request given the client's +// configuration, or an error when that configuration doesn't allow the specified tenant +func (p *publicClient) resolveTenant(specified string) (string, error) { + return resolveTenant(p.tenantID, specified, p.name, p.opts.AdditionallyAllowedTenants) +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/syncer.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/syncer.go deleted file mode 100644 index ae3855599..000000000 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/syncer.go +++ /dev/null @@ -1,130 +0,0 @@ -//go:build go1.18 -// +build go1.18 - -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package azidentity - -import ( - "context" - "errors" - "fmt" - "strings" - "sync" - - "github.com/Azure/azure-sdk-for-go/sdk/azcore" - "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy" - "github.com/Azure/azure-sdk-for-go/sdk/internal/log" -) - -type authFn func(context.Context, policy.TokenRequestOptions) (azcore.AccessToken, error) - -// syncer synchronizes authentication calls so that goroutines can share a credential instance -type syncer struct { - addlTenants []string - authing bool - cond *sync.Cond - reqToken, silent authFn - name, tenant string -} - -func newSyncer(name, tenant string, additionalTenants []string, reqToken, silentAuth authFn) *syncer { - return &syncer{ - addlTenants: resolveAdditionalTenants(additionalTenants), - cond: &sync.Cond{L: &sync.Mutex{}}, - name: name, - reqToken: reqToken, - silent: silentAuth, - tenant: tenant, - } -} - -// GetToken ensures that only one goroutine authenticates at a time -func (s *syncer) GetToken(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) { - var at azcore.AccessToken - var err error - if len(opts.Scopes) == 0 { - return at, errors.New(s.name + ".GetToken() requires at least one scope") - } - // we don't resolve the tenant for managed identities because they can acquire tokens only from their home tenants - if s.name != credNameManagedIdentity { - tenant, err := s.resolveTenant(opts.TenantID) - if err != nil { - return at, err - } - opts.TenantID = tenant - } - auth := false - s.cond.L.Lock() - defer s.cond.L.Unlock() - for { - at, err = s.silent(ctx, opts) - if err == nil { - // got a token - break - } - if !s.authing { - // this goroutine will request a token - s.authing, auth = true, true - break - } - // another goroutine is acquiring a token; wait for it to finish, then try silent auth again - s.cond.Wait() - } - if auth { - s.authing = false - at, err = s.reqToken(ctx, opts) - s.cond.Broadcast() - } - if err != nil { - // Return credentialUnavailableError directly because that type affects the behavior of credential chains. - // Otherwise, return AuthenticationFailedError. - var unavailableErr *credentialUnavailableError - if !errors.As(err, &unavailableErr) { - res := getResponseFromError(err) - err = newAuthenticationFailedError(s.name, err.Error(), res, err) - } - } else if log.Should(EventAuthentication) { - scope := strings.Join(opts.Scopes, ", ") - msg := fmt.Sprintf(`%s.GetToken() acquired a token for scope "%s"\n`, s.name, scope) - log.Write(EventAuthentication, msg) - } - return at, err -} - -// resolveTenant returns the correct tenant for a token request given the credential's -// configuration, or an error when the specified tenant isn't allowed by that configuration -func (s *syncer) resolveTenant(requested string) (string, error) { - if requested == "" || requested == s.tenant { - return s.tenant, nil - } - if s.tenant == "adfs" { - return "", errors.New("ADFS doesn't support tenants") - } - if !validTenantID(requested) { - return "", errors.New(tenantIDValidationErr) - } - for _, t := range s.addlTenants { - if t == "*" || t == requested { - return requested, nil - } - } - return "", fmt.Errorf(`%s isn't configured to acquire tokens for tenant %q. To enable acquiring tokens for this tenant add it to the AdditionallyAllowedTenants on the credential options, or add "*" to allow acquiring tokens for any tenant`, s.name, requested) -} - -// resolveAdditionalTenants returns a copy of tenants, simplified when tenants contains a wildcard -func resolveAdditionalTenants(tenants []string) []string { - if len(tenants) == 0 { - return nil - } - for _, t := range tenants { - // a wildcard makes all other values redundant - if t == "*" { - return []string{"*"} - } - } - cp := make([]string, len(tenants)) - copy(cp, tenants) - return cp -} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/test-resources-pre.ps1 b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/test-resources-pre.ps1 new file mode 100644 index 000000000..fe0183add --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/test-resources-pre.ps1 @@ -0,0 +1,36 @@ +[CmdletBinding(SupportsShouldProcess = $true, ConfirmImpact = 'Medium')] +param ( + # Captures any arguments from eng/New-TestResources.ps1 not declared here (no parameter errors). + [Parameter(ValueFromRemainingArguments = $true)] + $RemainingArguments +) + +if (!$CI) { + # TODO: Remove this once auto-cloud config downloads are supported locally + Write-Host "Skipping cert setup in local testing mode" + return +} + +if ($EnvironmentVariables -eq $null -or $EnvironmentVariables.Count -eq 0) { + throw "EnvironmentVariables must be set in the calling script New-TestResources.ps1" +} + +$tmp = $env:TEMP ? $env:TEMP : [System.IO.Path]::GetTempPath() +$pfxPath = Join-Path $tmp "test.pfx" +$pemPath = Join-Path $tmp "test.pem" +$sniPath = Join-Path $tmp "testsni.pfx" + +Write-Host "Creating identity test files: $pfxPath $pemPath $sniPath" + +[System.Convert]::FromBase64String($EnvironmentVariables['PFX_CONTENTS']) | Set-Content -Path $pfxPath -AsByteStream +Set-Content -Path $pemPath -Value $EnvironmentVariables['PEM_CONTENTS'] +[System.Convert]::FromBase64String($EnvironmentVariables['SNI_CONTENTS']) | Set-Content -Path $sniPath -AsByteStream + +# Set for pipeline +Write-Host "##vso[task.setvariable variable=IDENTITY_SP_CERT_PFX;]$pfxPath" +Write-Host "##vso[task.setvariable variable=IDENTITY_SP_CERT_PEM;]$pemPath" +Write-Host "##vso[task.setvariable variable=IDENTITY_SP_CERT_SNI;]$sniPath" +# Set for local +$env:IDENTITY_SP_CERT_PFX = $pfxPath +$env:IDENTITY_SP_CERT_PEM = $pemPath +$env:IDENTITY_SP_CERT_SNI = $sniPath diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/test-resources.bicep b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/test-resources.bicep new file mode 100644 index 000000000..b3490d3b5 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/test-resources.bicep @@ -0,0 +1 @@ +param baseName string diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/username_password_credential.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/username_password_credential.go index 8e652e33f..f787ec0ce 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/username_password_credential.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/username_password_credential.go @@ -11,7 +11,6 @@ import ( "github.com/Azure/azure-sdk-for-go/sdk/azcore" "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy" - "github.com/AzureAD/microsoft-authentication-library-for-go/apps/public" ) const credNameUserPassword = "UsernamePasswordCredential" @@ -36,10 +35,7 @@ type UsernamePasswordCredentialOptions struct { // with any form of multi-factor authentication, and the application must already have user or admin consent. // This credential can only authenticate work and school accounts; it can't authenticate Microsoft accounts. type UsernamePasswordCredential struct { - account public.Account - client publicClient - password, username string - s *syncer + client *publicClient } // NewUsernamePasswordCredential creates a UsernamePasswordCredential. clientID is the ID of the application the user @@ -48,34 +44,23 @@ func NewUsernamePasswordCredential(tenantID string, clientID string, username st if options == nil { options = &UsernamePasswordCredentialOptions{} } - c, err := getPublicClient(clientID, tenantID, &options.ClientOptions, public.WithInstanceDiscovery(!options.DisableInstanceDiscovery)) + opts := publicClientOptions{ + AdditionallyAllowedTenants: options.AdditionallyAllowedTenants, + ClientOptions: options.ClientOptions, + DisableInstanceDiscovery: options.DisableInstanceDiscovery, + Password: password, + Username: username, + } + c, err := newPublicClient(tenantID, clientID, credNameUserPassword, opts) if err != nil { return nil, err } - upc := UsernamePasswordCredential{client: c, password: password, username: username} - upc.s = newSyncer(credNameUserPassword, tenantID, options.AdditionallyAllowedTenants, upc.requestToken, upc.silentAuth) - return &upc, nil + return &UsernamePasswordCredential{client: c}, err } // GetToken requests an access token from Azure Active Directory. This method is called automatically by Azure SDK clients. func (c *UsernamePasswordCredential) GetToken(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) { - return c.s.GetToken(ctx, opts) -} - -func (c *UsernamePasswordCredential) requestToken(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) { - ar, err := c.client.AcquireTokenByUsernamePassword(ctx, opts.Scopes, c.username, c.password, public.WithTenantID(opts.TenantID)) - if err == nil { - c.account = ar.Account - } - return azcore.AccessToken{Token: ar.AccessToken, ExpiresOn: ar.ExpiresOn.UTC()}, err -} - -func (c *UsernamePasswordCredential) silentAuth(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) { - ar, err := c.client.AcquireTokenSilent(ctx, opts.Scopes, - public.WithSilentAccount(c.account), - public.WithTenantID(opts.TenantID), - ) - return azcore.AccessToken{Token: ar.AccessToken, ExpiresOn: ar.ExpiresOn.UTC()}, err + return c.client.GetToken(ctx, opts) } var _ azcore.TokenCredential = (*UsernamePasswordCredential)(nil) diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/version.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/version.go index 38a1f420b..65e74e31e 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/version.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/version.go @@ -11,5 +11,5 @@ const ( component = "azidentity" // Version is the semantic version (see http://semver.org) of this module. - version = "v1.3.1" + version = "v1.4.0" ) diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/workload_identity.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/workload_identity.go index 7bfb34367..7e016324d 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/workload_identity.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/workload_identity.go @@ -47,7 +47,7 @@ type WorkloadIdentityCredentialOptions struct { DisableInstanceDiscovery bool // TenantID of the service principal. Defaults to the value of the environment variable AZURE_TENANT_ID. TenantID string - // TokenFilePath is the path a file containing the workload identity token. Defaults to the value of the + // TokenFilePath is the path of a file containing a Kubernetes service account token. Defaults to the value of the // environment variable AZURE_FEDERATED_TOKEN_FILE. TokenFilePath string } @@ -88,7 +88,7 @@ func NewWorkloadIdentityCredential(options *WorkloadIdentityCredentialOptions) ( return nil, err } // we want "WorkloadIdentityCredential" in log messages, not "ClientAssertionCredential" - cred.s.name = credNameWorkloadIdentity + cred.client.name = credNameWorkloadIdentity w.cred = cred return &w, nil } diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/CHANGELOG.md b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/CHANGELOG.md index 169e46972..6e5e80087 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/CHANGELOG.md +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/CHANGELOG.md @@ -1,5 +1,29 @@ # Release History +## 1.2.0 (2023-10-11) + +### Bugs Fixed +* Fixed null pointer exception when `SetImmutabilityPolicyOptions` is passed as `nil`. + +## 1.2.0-beta.1 (2023-09-18) + +### Features Added +* Added support for service version 2020-12-06, 2021-02-12, 2021-04-10, 2021-06-08, 2021-08-06 , 2021-10-04, 2021-12-02, 2022-11-02, 2023-01-03, 2023-05-03, and 2023-08-03 +* Added support for [Cold Tier](https://learn.microsoft.com/azure/storage/blobs/access-tiers-overview?tabs=azure-portal). +* Added `CopySourceTag` option for `UploadBlobFromURLOptions` +* Added [FilterBlobs by Tags](https://learn.microsoft.com/rest/api/storageservices/find-blobs-by-tags-container) API for container client. +* Added `System` option to `ListContainersInclude` to allow listing of system containers (i.e, $web). +* Updated the SAS Version to `2021-12-02` and added `Encryption Scope` to Account SAS, Service SAS, and User Delegation SAS +* Added `ArchiveStatusRehydratePendingToCold` value to `ArchiveStatus` enum. +* Content length limit for `AppendBlob.AppendBlock()` and `AppendBlob.AppendBlockFromURL()` raised from 4 MB to 100 MB. + +### Bugs Fixed +* Fixed issue where some requests fail with mismatch in string to sign. +* Fixed service SAS creation where expiry time or permissions can be omitted when stored access policy is used. Fixes [#21229](https://github.com/Azure/azure-sdk-for-go/issues/21229). + +### Other Changes +* Updating version of azcore to 1.6.0. + ## 1.1.0 (2023-07-13) ### Features Added @@ -15,7 +39,6 @@ * Fixed time formatting for the conditional request headers. Fixes [#20475](https://github.com/Azure/azure-sdk-for-go/issues/20475). * Fixed an issue where passing a blob tags map of length 0 would result in the x-ms-tags header to be sent to the service with an empty string as value. - * Fixed block size and number of blocks calculation in `UploadBuffer` and `UploadFile`. Fixes [#20735](https://github.com/Azure/azure-sdk-for-go/issues/20735). ### Other Changes diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/README.md b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/README.md index 2759340f5..905fb2675 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/README.md +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/README.md @@ -1,6 +1,6 @@ # Azure Blob Storage module for Go -> Service Version: 2020-10-02 +> Service Version: 2023-08-03 Azure Blob Storage is Microsoft's object storage solution for the cloud. Blob Storage is optimized for storing massive amounts of unstructured data - data that does not adhere to a particular data model or diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/appendblob/client.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/appendblob/client.go index fc96b67de..69913e334 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/appendblob/client.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/appendblob/client.go @@ -9,6 +9,7 @@ package appendblob import ( "context" "errors" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy" "io" "os" "time" @@ -35,12 +36,14 @@ type Client base.CompositeClient[generated.BlobClient, generated.AppendBlobClien func NewClient(blobURL string, cred azcore.TokenCredential, options *ClientOptions) (*Client, error) { authPolicy := shared.NewStorageChallengePolicy(cred) conOptions := shared.GetClientOptions(options) - conOptions.PerRetryPolicies = append(conOptions.PerRetryPolicies, authPolicy) - pl := runtime.NewPipeline(exported.ModuleName, - exported.ModuleVersion, runtime.PipelineOptions{}, - &conOptions.ClientOptions) + plOpts := runtime.PipelineOptions{PerRetry: []policy.Policy{authPolicy}} - return (*Client)(base.NewAppendBlobClient(blobURL, pl, nil)), nil + azClient, err := azcore.NewClient(shared.AppendBlobClient, exported.ModuleVersion, plOpts, &conOptions.ClientOptions) + if err != nil { + return nil, err + } + + return (*Client)(base.NewAppendBlobClient(blobURL, azClient, nil)), nil } // NewClientWithNoCredential creates an instance of Client with the specified values. @@ -49,12 +52,13 @@ func NewClient(blobURL string, cred azcore.TokenCredential, options *ClientOptio // - options - client options; pass nil to accept the default values func NewClientWithNoCredential(blobURL string, options *ClientOptions) (*Client, error) { conOptions := shared.GetClientOptions(options) - pl := runtime.NewPipeline(exported.ModuleName, - exported.ModuleVersion, - runtime.PipelineOptions{}, - &conOptions.ClientOptions) - return (*Client)(base.NewAppendBlobClient(blobURL, pl, nil)), nil + azClient, err := azcore.NewClient(shared.AppendBlobClient, exported.ModuleVersion, runtime.PipelineOptions{}, &conOptions.ClientOptions) + if err != nil { + return nil, err + } + + return (*Client)(base.NewAppendBlobClient(blobURL, azClient, nil)), nil } // NewClientWithSharedKeyCredential creates an instance of Client with the specified values. @@ -64,13 +68,14 @@ func NewClientWithNoCredential(blobURL string, options *ClientOptions) (*Client, func NewClientWithSharedKeyCredential(blobURL string, cred *blob.SharedKeyCredential, options *ClientOptions) (*Client, error) { authPolicy := exported.NewSharedKeyCredPolicy(cred) conOptions := shared.GetClientOptions(options) - conOptions.PerRetryPolicies = append(conOptions.PerRetryPolicies, authPolicy) - pl := runtime.NewPipeline(exported.ModuleName, - exported.ModuleVersion, - runtime.PipelineOptions{}, - &conOptions.ClientOptions) + plOpts := runtime.PipelineOptions{PerRetry: []policy.Policy{authPolicy}} - return (*Client)(base.NewAppendBlobClient(blobURL, pl, cred)), nil + azClient, err := azcore.NewClient(shared.AppendBlobClient, exported.ModuleVersion, plOpts, &conOptions.ClientOptions) + if err != nil { + return nil, err + } + + return (*Client)(base.NewAppendBlobClient(blobURL, azClient, cred)), nil } // NewClientFromConnectionString creates an instance of Client with the specified values. @@ -130,7 +135,7 @@ func (ab *Client) WithSnapshot(snapshot string) (*Client, error) { } p.Snapshot = snapshot - return (*Client)(base.NewAppendBlobClient(p.String(), ab.generated().Pipeline(), ab.sharedKey())), nil + return (*Client)(base.NewAppendBlobClient(p.String(), ab.generated().InternalClient(), ab.sharedKey())), nil } // WithVersionID creates a new AppendBlobURL object identical to the source but with the specified version id. @@ -142,7 +147,7 @@ func (ab *Client) WithVersionID(versionID string) (*Client, error) { } p.VersionID = versionID - return (*Client)(base.NewAppendBlobClient(p.String(), ab.generated().Pipeline(), ab.sharedKey())), nil + return (*Client)(base.NewAppendBlobClient(p.String(), ab.generated().InternalClient(), ab.sharedKey())), nil } // Create creates a 0-size append blob. Call AppendBlock to append data to an append blob. diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/assets.json b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/assets.json index 4db1d7209..ee07ad45b 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/assets.json +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/assets.json @@ -2,5 +2,5 @@ "AssetsRepo": "Azure/azure-sdk-assets", "AssetsRepoPrefixPath": "go", "TagPrefix": "go/storage/azblob", - "Tag": "go/storage/azblob_a772b9c866" + "Tag": "go/storage/azblob_818d8addd0" } diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blob/client.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blob/client.go index 98c166aaf..55de9b349 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blob/client.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blob/client.go @@ -8,15 +8,16 @@ package blob import ( "context" - "github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/bloberror" "io" "os" "sync" "time" "github.com/Azure/azure-sdk-for-go/sdk/azcore" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy" "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" "github.com/Azure/azure-sdk-for-go/sdk/azcore/streaming" + "github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/bloberror" "github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/base" "github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/exported" "github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated" @@ -37,10 +38,13 @@ type Client base.Client[generated.BlobClient] func NewClient(blobURL string, cred azcore.TokenCredential, options *ClientOptions) (*Client, error) { authPolicy := shared.NewStorageChallengePolicy(cred) conOptions := shared.GetClientOptions(options) - conOptions.PerRetryPolicies = append(conOptions.PerRetryPolicies, authPolicy) - pl := runtime.NewPipeline(exported.ModuleName, exported.ModuleVersion, runtime.PipelineOptions{}, &conOptions.ClientOptions) + plOpts := runtime.PipelineOptions{PerRetry: []policy.Policy{authPolicy}} - return (*Client)(base.NewBlobClient(blobURL, pl, &cred)), nil + azClient, err := azcore.NewClient(shared.BlobClient, exported.ModuleVersion, plOpts, &conOptions.ClientOptions) + if err != nil { + return nil, err + } + return (*Client)(base.NewBlobClient(blobURL, azClient, &cred)), nil } // NewClientWithNoCredential creates an instance of Client with the specified values. @@ -49,9 +53,12 @@ func NewClient(blobURL string, cred azcore.TokenCredential, options *ClientOptio // - options - client options; pass nil to accept the default values func NewClientWithNoCredential(blobURL string, options *ClientOptions) (*Client, error) { conOptions := shared.GetClientOptions(options) - pl := runtime.NewPipeline(exported.ModuleName, exported.ModuleVersion, runtime.PipelineOptions{}, &conOptions.ClientOptions) - return (*Client)(base.NewBlobClient(blobURL, pl, nil)), nil + azClient, err := azcore.NewClient(shared.BlobClient, exported.ModuleVersion, runtime.PipelineOptions{}, &conOptions.ClientOptions) + if err != nil { + return nil, err + } + return (*Client)(base.NewBlobClient(blobURL, azClient, nil)), nil } // NewClientWithSharedKeyCredential creates an instance of Client with the specified values. @@ -61,10 +68,13 @@ func NewClientWithNoCredential(blobURL string, options *ClientOptions) (*Client, func NewClientWithSharedKeyCredential(blobURL string, cred *SharedKeyCredential, options *ClientOptions) (*Client, error) { authPolicy := exported.NewSharedKeyCredPolicy(cred) conOptions := shared.GetClientOptions(options) - conOptions.PerRetryPolicies = append(conOptions.PerRetryPolicies, authPolicy) - pl := runtime.NewPipeline(exported.ModuleName, exported.ModuleVersion, runtime.PipelineOptions{}, &conOptions.ClientOptions) + plOpts := runtime.PipelineOptions{PerRetry: []policy.Policy{authPolicy}} - return (*Client)(base.NewBlobClient(blobURL, pl, cred)), nil + azClient, err := azcore.NewClient(shared.BlobClient, exported.ModuleVersion, plOpts, &conOptions.ClientOptions) + if err != nil { + return nil, err + } + return (*Client)(base.NewBlobClient(blobURL, azClient, cred)), nil } // NewClientFromConnectionString creates an instance of Client with the specified values. @@ -116,7 +126,7 @@ func (b *Client) WithSnapshot(snapshot string) (*Client, error) { } p.Snapshot = snapshot - return (*Client)(base.NewBlobClient(p.String(), b.generated().Pipeline(), b.credential())), nil + return (*Client)(base.NewBlobClient(p.String(), b.generated().InternalClient(), b.credential())), nil } // WithVersionID creates a new AppendBlobURL object identical to the source but with the specified version id. @@ -128,7 +138,7 @@ func (b *Client) WithVersionID(versionID string) (*Client, error) { } p.VersionID = versionID - return (*Client)(base.NewBlobClient(p.String(), b.generated().Pipeline(), b.credential())), nil + return (*Client)(base.NewBlobClient(p.String(), b.generated().InternalClient(), b.credential())), nil } // Delete marks the specified blob or snapshot for deletion. The blob is later deleted during garbage collection. @@ -261,8 +271,8 @@ func (b *Client) SetLegalHold(ctx context.Context, legalHold bool, options *SetL // CopyFromURL synchronously copies the data at the source URL to a block blob, with sizes up to 256 MB. // For more information, see https://docs.microsoft.com/en-us/rest/api/storageservices/copy-blob-from-url. func (b *Client) CopyFromURL(ctx context.Context, copySource string, options *CopyFromURLOptions) (CopyFromURLResponse, error) { - copyOptions, smac, mac, lac := options.format() - resp, err := b.generated().CopyFromURL(ctx, copySource, copyOptions, smac, mac, lac) + copyOptions, smac, mac, lac, cpkScopeInfo := options.format() + resp, err := b.generated().CopyFromURL(ctx, copySource, copyOptions, smac, mac, lac, cpkScopeInfo) return resp, err } @@ -314,8 +324,8 @@ func (b *Client) GetSASURL(permissions sas.BlobPermissions, expiry time.Time, o // Concurrent Download Functions ----------------------------------------------------------------------------------------- -// download downloads an Azure blob to a WriterAt in parallel. -func (b *Client) download(ctx context.Context, writer io.WriterAt, o downloadOptions) (int64, error) { +// downloadBuffer downloads an Azure blob to a WriterAt in parallel. +func (b *Client) downloadBuffer(ctx context.Context, writer io.WriterAt, o downloadOptions) (int64, error) { if o.BlockSize == 0 { o.BlockSize = DefaultDownloadBlockSize } @@ -343,6 +353,7 @@ func (b *Client) download(ctx context.Context, writer io.WriterAt, o downloadOpt OperationName: "downloadBlobToWriterAt", TransferSize: count, ChunkSize: o.BlockSize, + NumChunks: uint16(((count - 1) / o.BlockSize) + 1), Concurrency: o.Concurrency, Operation: func(ctx context.Context, chunkStart int64, count int64) error { downloadBlobOptions := o.getDownloadBlobOptions(HTTPRange{ @@ -381,6 +392,168 @@ func (b *Client) download(ctx context.Context, writer io.WriterAt, o downloadOpt return count, nil } +// downloadFile downloads an Azure blob to a Writer. The blocks are downloaded parallely, +// but written to file serially +func (b *Client) downloadFile(ctx context.Context, writer io.Writer, o downloadOptions) (int64, error) { + ctx, cancel := context.WithCancel(ctx) + defer cancel() + if o.BlockSize == 0 { + o.BlockSize = DefaultDownloadBlockSize + } + + if o.Concurrency == 0 { + o.Concurrency = DefaultConcurrency + } + + count := o.Range.Count + if count == CountToEnd { //Calculate size if not specified + gr, err := b.GetProperties(ctx, o.getBlobPropertiesOptions()) + if err != nil { + return 0, err + } + count = *gr.ContentLength - o.Range.Offset + } + + if count <= 0 { + // The file is empty, there is nothing to download. + return 0, nil + } + + progress := int64(0) + progressLock := &sync.Mutex{} + + // helper routine to get body + getBodyForRange := func(ctx context.Context, chunkStart, size int64) (io.ReadCloser, error) { + downloadBlobOptions := o.getDownloadBlobOptions(HTTPRange{ + Offset: chunkStart + o.Range.Offset, + Count: size, + }, nil) + dr, err := b.DownloadStream(ctx, downloadBlobOptions) + if err != nil { + return nil, err + } + + var body io.ReadCloser = dr.NewRetryReader(ctx, &o.RetryReaderOptionsPerBlock) + if o.Progress != nil { + rangeProgress := int64(0) + body = streaming.NewResponseProgress( + body, + func(bytesTransferred int64) { + diff := bytesTransferred - rangeProgress + rangeProgress = bytesTransferred + progressLock.Lock() + progress += diff + o.Progress(progress) + progressLock.Unlock() + }) + } + + return body, nil + } + + // if file fits in a single buffer, we'll download here. + if count <= o.BlockSize { + body, err := getBodyForRange(ctx, int64(0), count) + if err != nil { + return 0, err + } + defer body.Close() + + return io.Copy(writer, body) + } + + buffers := shared.NewMMBPool(int(o.Concurrency), o.BlockSize) + defer buffers.Free() + aquireBuffer := func() ([]byte, error) { + select { + case b := <-buffers.Acquire(): + // got a buffer + return b, nil + default: + // no buffer available; allocate a new buffer if possible + if _, err := buffers.Grow(); err != nil { + return nil, err + } + + // either grab the newly allocated buffer or wait for one to become available + return <-buffers.Acquire(), nil + } + } + + numChunks := uint16((count-1)/o.BlockSize) + 1 + blocks := make([]chan []byte, numChunks) + for b := range blocks { + blocks[b] = make(chan []byte) + } + + /* + * We have created as many channels as the number of chunks we have. + * Each downloaded block will be sent to the channel matching its + * sequece number, i.e. 0th block is sent to 0th channel, 1st block + * to 1st channel and likewise. The blocks are then read and written + * to the file serially by below goroutine. Do note that the blocks + * blocks are still downloaded parallelly from n/w, only serailized + * and written to file here. + */ + writerError := make(chan error) + go func(ch chan error) { + for _, block := range blocks { + select { + case <-ctx.Done(): + return + case block := <-block: + _, err := writer.Write(block) + buffers.Release(block) + if err != nil { + ch <- err + return + } + } + } + ch <- nil + }(writerError) + + // Prepare and do parallel download. + err := shared.DoBatchTransfer(ctx, &shared.BatchTransferOptions{ + OperationName: "downloadBlobToWriterAt", + TransferSize: count, + ChunkSize: o.BlockSize, + NumChunks: numChunks, + Concurrency: o.Concurrency, + Operation: func(ctx context.Context, chunkStart int64, count int64) error { + buff, err := aquireBuffer() + if err != nil { + return err + } + + body, err := getBodyForRange(ctx, chunkStart, count) + if err != nil { + buffers.Release(buff) + return nil + } + + _, err = io.ReadFull(body, buff[:count]) + body.Close() + if err != nil { + return err + } + + blockIndex := (chunkStart / o.BlockSize) + blocks[blockIndex] <- buff + return nil + }, + }) + + if err != nil { + return 0, err + } + // error from writer thread. + if err = <-writerError; err != nil { + return 0, err + } + return count, nil +} + // DownloadStream reads a range of bytes from a blob. The response also includes the blob's properties and metadata. // For more information, see https://docs.microsoft.com/rest/api/storageservices/get-blob. func (b *Client) DownloadStream(ctx context.Context, o *DownloadStreamOptions) (DownloadStreamResponse, error) { @@ -409,7 +582,7 @@ func (b *Client) DownloadBuffer(ctx context.Context, buffer []byte, o *DownloadB if o == nil { o = &DownloadBufferOptions{} } - return b.download(ctx, shared.NewBytesWriter(buffer), (downloadOptions)(*o)) + return b.downloadBuffer(ctx, shared.NewBytesWriter(buffer), (downloadOptions)(*o)) } // DownloadFile downloads an Azure blob to a local file. @@ -448,7 +621,7 @@ func (b *Client) DownloadFile(ctx context.Context, file *os.File, o *DownloadFil } if size > 0 { - return b.download(ctx, file, *do) + return b.downloadFile(ctx, file, *do) } else { // if the blob's size is 0, there is no need in downloading it return 0, nil } diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blob/constants.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blob/constants.go index c15635448..daef800ed 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blob/constants.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blob/constants.go @@ -9,6 +9,7 @@ package blob import ( "github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/exported" "github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated" + "github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/shared" ) const ( @@ -18,6 +19,9 @@ const ( // DefaultDownloadBlockSize is default block size DefaultDownloadBlockSize = int64(4 * 1024 * 1024) // 4MB + + // DefaultConcurrency is the default number of blocks downloaded or uploaded in parallel + DefaultConcurrency = shared.DefaultConcurrency ) // BlobType defines values for BlobType @@ -53,6 +57,7 @@ type AccessTier = generated.AccessTier const ( AccessTierArchive AccessTier = generated.AccessTierArchive AccessTierCool AccessTier = generated.AccessTierCool + AccessTierCold AccessTier = generated.AccessTierCold AccessTierHot AccessTier = generated.AccessTierHot AccessTierP10 AccessTier = generated.AccessTierP10 AccessTierP15 AccessTier = generated.AccessTierP15 @@ -148,6 +153,7 @@ type ArchiveStatus = generated.ArchiveStatus const ( ArchiveStatusRehydratePendingToCool ArchiveStatus = generated.ArchiveStatusRehydratePendingToCool ArchiveStatusRehydratePendingToHot ArchiveStatus = generated.ArchiveStatusRehydratePendingToHot + ArchiveStatusRehydratePendingToCold ArchiveStatus = generated.ArchiveStatusRehydratePendingToCold ) // PossibleArchiveStatusValues returns the possible values for the ArchiveStatus const type. diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blob/models.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blob/models.go index fea2f1ec5..5a79c12d4 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blob/models.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blob/models.go @@ -458,7 +458,7 @@ type SetImmutabilityPolicyOptions struct { func (o *SetImmutabilityPolicyOptions) format() (*generated.BlobClientSetImmutabilityPolicyOptions, *ModifiedAccessConditions) { if o == nil { - return nil, nil + return &generated.BlobClientSetImmutabilityPolicyOptions{}, nil } ac := &exported.BlobAccessConditions{ ModifiedAccessConditions: o.ModifiedAccessConditions, @@ -544,11 +544,13 @@ type CopyFromURLOptions struct { SourceModifiedAccessConditions *SourceModifiedAccessConditions BlobAccessConditions *AccessConditions + + CPKScopeInfo *CPKScopeInfo } -func (o *CopyFromURLOptions) format() (*generated.BlobClientCopyFromURLOptions, *generated.SourceModifiedAccessConditions, *generated.ModifiedAccessConditions, *generated.LeaseAccessConditions) { +func (o *CopyFromURLOptions) format() (*generated.BlobClientCopyFromURLOptions, *generated.SourceModifiedAccessConditions, *generated.ModifiedAccessConditions, *generated.LeaseAccessConditions, *generated.CPKScopeInfo) { if o == nil { - return nil, nil, nil, nil + return nil, nil, nil, nil, nil } options := &generated.BlobClientCopyFromURLOptions{ @@ -563,7 +565,7 @@ func (o *CopyFromURLOptions) format() (*generated.BlobClientCopyFromURLOptions, } leaseAccessConditions, modifiedAccessConditions := exported.FormatBlobAccessConditions(o.BlobAccessConditions) - return options, o.SourceModifiedAccessConditions, modifiedAccessConditions, leaseAccessConditions + return options, o.SourceModifiedAccessConditions, modifiedAccessConditions, leaseAccessConditions, o.CPKScopeInfo } // --------------------------------------------------------------------------------------------------------------------- diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/bloberror/error_codes.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/bloberror/error_codes.go index ad653c1c4..8a1573c0c 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/bloberror/error_codes.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/bloberror/error_codes.go @@ -153,4 +153,5 @@ const ( var ( // MissingSharedKeyCredential - Error is returned when SAS URL is being created without SharedKeyCredential. MissingSharedKeyCredential = errors.New("SAS can only be signed with a SharedKeyCredential") + UnsupportedChecksum = errors.New("for multi-part uploads, user generated checksums cannot be validated") ) diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blockblob/chunkwriting.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blockblob/chunkwriting.go index 340d4bc76..212255d4c 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blockblob/chunkwriting.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blockblob/chunkwriting.go @@ -18,6 +18,7 @@ import ( "github.com/Azure/azure-sdk-for-go/sdk/azcore/streaming" "github.com/Azure/azure-sdk-for-go/sdk/internal/uuid" + "github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/shared" ) // blockWriter provides methods to upload blocks that represent a file to a server and commit them. @@ -28,27 +29,8 @@ type blockWriter interface { CommitBlockList(context.Context, []string, *CommitBlockListOptions) (CommitBlockListResponse, error) } -// bufferManager provides an abstraction for the management of buffers. -// this is mostly for testing purposes, but does allow for different implementations without changing the algorithm. -type bufferManager[T ~[]byte] interface { - // Acquire returns the channel that contains the pool of buffers. - Acquire() <-chan T - - // Release releases the buffer back to the pool for reuse/cleanup. - Release(T) - - // Grow grows the number of buffers, up to the predefined max. - // It returns the total number of buffers or an error. - // No error is returned if the number of buffers has reached max. - // This is called only from the reading goroutine. - Grow() (int, error) - - // Free cleans up all buffers. - Free() -} - // copyFromReader copies a source io.Reader to blob storage using concurrent uploads. -func copyFromReader[T ~[]byte](ctx context.Context, src io.Reader, dst blockWriter, options UploadStreamOptions, getBufferManager func(maxBuffers int, bufferSize int64) bufferManager[T]) (CommitBlockListResponse, error) { +func copyFromReader[T ~[]byte](ctx context.Context, src io.Reader, dst blockWriter, options UploadStreamOptions, getBufferManager func(maxBuffers int, bufferSize int64) shared.BufferManager[T]) (CommitBlockListResponse, error) { options.setDefaults() wg := sync.WaitGroup{} // Used to know when all outgoing blocks have finished processing @@ -265,49 +247,3 @@ func (ubi uuidBlockID) WithBlockNumber(blockNumber uint32) uuidBlockID { func (ubi uuidBlockID) ToBase64() string { return blockID(ubi).ToBase64() } - -// mmbPool implements the bufferManager interface. -// it uses anonymous memory mapped files for buffers. -// don't use this type directly, use newMMBPool() instead. -type mmbPool struct { - buffers chan mmb - count int - max int - size int64 -} - -func newMMBPool(maxBuffers int, bufferSize int64) bufferManager[mmb] { - return &mmbPool{ - buffers: make(chan mmb, maxBuffers), - max: maxBuffers, - size: bufferSize, - } -} - -func (pool *mmbPool) Acquire() <-chan mmb { - return pool.buffers -} - -func (pool *mmbPool) Grow() (int, error) { - if pool.count < pool.max { - buffer, err := newMMB(pool.size) - if err != nil { - return 0, err - } - pool.buffers <- buffer - pool.count++ - } - return pool.count, nil -} - -func (pool *mmbPool) Release(buffer mmb) { - pool.buffers <- buffer -} - -func (pool *mmbPool) Free() { - for i := 0; i < pool.count; i++ { - buffer := <-pool.buffers - buffer.delete() - } - pool.count = 0 -} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blockblob/client.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blockblob/client.go index d7e5aa0dc..8b542f85a 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blockblob/client.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blockblob/client.go @@ -11,9 +11,12 @@ import ( "context" "encoding/base64" "errors" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy" + "github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/bloberror" "io" "math" "os" + "reflect" "sync" "time" @@ -43,10 +46,13 @@ type Client base.CompositeClient[generated.BlobClient, generated.BlockBlobClient func NewClient(blobURL string, cred azcore.TokenCredential, options *ClientOptions) (*Client, error) { authPolicy := shared.NewStorageChallengePolicy(cred) conOptions := shared.GetClientOptions(options) - conOptions.PerRetryPolicies = append(conOptions.PerRetryPolicies, authPolicy) - pl := runtime.NewPipeline(exported.ModuleName, exported.ModuleVersion, runtime.PipelineOptions{}, &conOptions.ClientOptions) + plOpts := runtime.PipelineOptions{PerRetry: []policy.Policy{authPolicy}} - return (*Client)(base.NewBlockBlobClient(blobURL, pl, nil)), nil + azClient, err := azcore.NewClient(shared.BlockBlobClient, exported.ModuleVersion, plOpts, &conOptions.ClientOptions) + if err != nil { + return nil, err + } + return (*Client)(base.NewBlockBlobClient(blobURL, azClient, nil)), nil } // NewClientWithNoCredential creates an instance of Client with the specified values. @@ -55,9 +61,13 @@ func NewClient(blobURL string, cred azcore.TokenCredential, options *ClientOptio // - options - client options; pass nil to accept the default values func NewClientWithNoCredential(blobURL string, options *ClientOptions) (*Client, error) { conOptions := shared.GetClientOptions(options) - pl := runtime.NewPipeline(exported.ModuleName, exported.ModuleVersion, runtime.PipelineOptions{}, &conOptions.ClientOptions) - return (*Client)(base.NewBlockBlobClient(blobURL, pl, nil)), nil + azClient, err := azcore.NewClient(shared.BlockBlobClient, exported.ModuleVersion, runtime.PipelineOptions{}, &conOptions.ClientOptions) + if err != nil { + return nil, err + } + + return (*Client)(base.NewBlockBlobClient(blobURL, azClient, nil)), nil } // NewClientWithSharedKeyCredential creates an instance of Client with the specified values. @@ -67,10 +77,14 @@ func NewClientWithNoCredential(blobURL string, options *ClientOptions) (*Client, func NewClientWithSharedKeyCredential(blobURL string, cred *blob.SharedKeyCredential, options *ClientOptions) (*Client, error) { authPolicy := exported.NewSharedKeyCredPolicy(cred) conOptions := shared.GetClientOptions(options) - conOptions.PerRetryPolicies = append(conOptions.PerRetryPolicies, authPolicy) - pl := runtime.NewPipeline(exported.ModuleName, exported.ModuleVersion, runtime.PipelineOptions{}, &conOptions.ClientOptions) + plOpts := runtime.PipelineOptions{PerRetry: []policy.Policy{authPolicy}} - return (*Client)(base.NewBlockBlobClient(blobURL, pl, cred)), nil + azClient, err := azcore.NewClient(shared.BlockBlobClient, exported.ModuleVersion, plOpts, &conOptions.ClientOptions) + if err != nil { + return nil, err + } + + return (*Client)(base.NewBlockBlobClient(blobURL, azClient, cred)), nil } // NewClientFromConnectionString creates an instance of Client with the specified values. @@ -130,7 +144,7 @@ func (bb *Client) WithSnapshot(snapshot string) (*Client, error) { } p.Snapshot = snapshot - return (*Client)(base.NewBlockBlobClient(p.String(), bb.generated().Pipeline(), bb.sharedKey())), nil + return (*Client)(base.NewBlockBlobClient(p.String(), bb.generated().Internal(), bb.sharedKey())), nil } // WithVersionID creates a new AppendBlobURL object identical to the source but with the specified version id. @@ -142,7 +156,7 @@ func (bb *Client) WithVersionID(versionID string) (*Client, error) { } p.VersionID = versionID - return (*Client)(base.NewBlockBlobClient(p.String(), bb.generated().Pipeline(), bb.sharedKey())), nil + return (*Client)(base.NewBlockBlobClient(p.String(), bb.generated().Internal(), bb.sharedKey())), nil } // Upload creates a new block blob or overwrites an existing block blob. @@ -160,6 +174,13 @@ func (bb *Client) Upload(ctx context.Context, body io.ReadSeekCloser, options *U opts, httpHeaders, leaseInfo, cpkV, cpkN, accessConditions := options.format() + if options != nil && options.TransactionalValidation != nil { + body, err = options.TransactionalValidation.Apply(body, opts) + if err != nil { + return UploadResponse{}, err + } + } + resp, err := bb.generated().Upload(ctx, count, body, opts, httpHeaders, leaseInfo, cpkV, cpkN, accessConditions) return resp, err } @@ -248,6 +269,11 @@ func (bb *Client) CommitBlockList(ctx context.Context, base64BlockIDs []string, ImmutabilityPolicyExpiry: options.ImmutabilityPolicyExpiryTime, } + // If user attempts to pass in their own checksum, errors out. + if options.TransactionalContentMD5 != nil || options.TransactionalContentCRC64 != nil { + return CommitBlockListResponse{}, bloberror.UnsupportedChecksum + } + headers = options.HTTPHeaders leaseAccess, modifiedAccess = exported.FormatBlobAccessConditions(options.AccessConditions) cpkInfo = options.CPKInfo @@ -440,6 +466,7 @@ func (bb *Client) uploadFromReader(ctx context.Context, reader io.ReaderAt, actu OperationName: "uploadFromReader", TransferSize: actualSize, ChunkSize: o.BlockSize, + NumChunks: uint16(((actualSize - 1) / o.BlockSize) + 1), Concurrency: o.Concurrency, Operation: func(ctx context.Context, offset int64, chunkSize int64) error { // This function is called once per block. @@ -494,6 +521,12 @@ func (bb *Client) UploadBuffer(ctx context.Context, buffer []byte, o *UploadBuff if o != nil { uploadOptions = *o } + + // If user attempts to pass in their own checksum, errors out. + if uploadOptions.TransactionalValidation != nil && reflect.TypeOf(uploadOptions.TransactionalValidation).Kind() != reflect.Func { + return UploadBufferResponse{}, bloberror.UnsupportedChecksum + } + return bb.uploadFromReader(ctx, bytes.NewReader(buffer), int64(len(buffer)), &uploadOptions) } @@ -507,6 +540,12 @@ func (bb *Client) UploadFile(ctx context.Context, file *os.File, o *UploadFileOp if o != nil { uploadOptions = *o } + + // If user attempts to pass in their own checksum, errors out. + if uploadOptions.TransactionalValidation != nil && reflect.TypeOf(uploadOptions.TransactionalValidation).Kind() != reflect.Func { + return UploadFileResponse{}, bloberror.UnsupportedChecksum + } + return bb.uploadFromReader(ctx, file, stat.Size(), &uploadOptions) } @@ -517,7 +556,12 @@ func (bb *Client) UploadStream(ctx context.Context, body io.Reader, o *UploadStr o = &UploadStreamOptions{} } - result, err := copyFromReader(ctx, body, bb, *o, newMMBPool) + // If user attempts to pass in their own checksum, errors out. + if o.TransactionalValidation != nil && reflect.TypeOf(o.TransactionalValidation).Kind() != reflect.Func { + return UploadStreamResponse{}, bloberror.UnsupportedChecksum + } + + result, err := copyFromReader(ctx, body, bb, *o, shared.NewMMBPool) if err != nil { return CommitBlockListResponse{}, err } diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blockblob/constants.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blockblob/constants.go index cb1162640..ce3a5d8de 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blockblob/constants.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blockblob/constants.go @@ -37,3 +37,16 @@ const ( func PossibleBlockListTypeValues() []BlockListType { return generated.PossibleBlockListTypeValues() } + +// BlobCopySourceTags - can be 'COPY' or 'REPLACE' +type BlobCopySourceTags = generated.BlobCopySourceTags + +const ( + BlobCopySourceTagsCopy = generated.BlobCopySourceTagsCOPY + BlobCopySourceTagsReplace = generated.BlobCopySourceTagsREPLACE +) + +// PossibleBlobCopySourceTagsValues returns the possible values for the BlobCopySourceTags const type. +func PossibleBlobCopySourceTagsValues() []BlobCopySourceTags { + return generated.PossibleBlobCopySourceTagsValues() +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blockblob/models.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blockblob/models.go index ba1b9ee9f..453d569e5 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blockblob/models.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blockblob/models.go @@ -36,8 +36,9 @@ type UploadOptions struct { // Optional. Indicates the tier to be set on the blob. Tier *blob.AccessTier - // Specify the transactional md5 for the body, to be validated by the service. - TransactionalContentMD5 []byte + // TransactionalValidation specifies the transfer validation type to use. + // The default is nil (no transfer validation). + TransactionalValidation blob.TransferValidationType HTTPHeaders *blob.HTTPHeaders CPKInfo *blob.CPKInfo @@ -46,6 +47,9 @@ type UploadOptions struct { LegalHold *bool ImmutabilityPolicyMode *blob.ImmutabilityPolicySetting ImmutabilityPolicyExpiryTime *time.Time + + // Deprecated: TransactionalContentMD5 can be set by using TransactionalValidation instead + TransactionalContentMD5 []byte } func (o *UploadOptions) format() (*generated.BlockBlobClientUploadOptions, *generated.BlobHTTPHeaders, *generated.LeaseAccessConditions, @@ -81,6 +85,9 @@ type UploadBlobFromURLOptions struct { // Optional, default is true. Indicates if properties from the source blob should be copied. CopySourceBlobProperties *bool + // Optional, default 'replace'. Indicates if source tags should be copied or replaced with the tags specified by x-ms-tags. + CopySourceTags *BlobCopySourceTags + // Optional. Specifies a user-defined name-value pair associated with the blob. Metadata map[string]*string @@ -109,6 +116,7 @@ func (o *UploadBlobFromURLOptions) format() (*generated.BlockBlobClientPutBlobFr BlobTagsString: shared.SerializeBlobTagsToStrPtr(o.Tags), CopySourceAuthorization: o.CopySourceAuthorization, CopySourceBlobProperties: o.CopySourceBlobProperties, + CopySourceTags: o.CopySourceTags, Metadata: o.Metadata, SourceContentMD5: o.SourceContentMD5, Tier: o.Tier, @@ -190,8 +198,6 @@ type CommitBlockListOptions struct { RequestID *string Tier *blob.AccessTier Timeout *int32 - TransactionalContentCRC64 []byte - TransactionalContentMD5 []byte HTTPHeaders *blob.HTTPHeaders CPKInfo *blob.CPKInfo CPKScopeInfo *blob.CPKScopeInfo @@ -199,6 +205,12 @@ type CommitBlockListOptions struct { LegalHold *bool ImmutabilityPolicyMode *blob.ImmutabilityPolicySetting ImmutabilityPolicyExpiryTime *time.Time + + // Deprecated: TransactionalContentCRC64 cannot be generated + TransactionalContentCRC64 []byte + + // Deprecated: TransactionalContentMD5 cannot be generated + TransactionalContentMD5 []byte } // --------------------------------------------------------------------------------------------------------------------- @@ -253,9 +265,10 @@ type uploadFromReaderOptions struct { TransactionalValidation blob.TransferValidationType - // Optional header, Specifies the transactional crc64 for the body, to be validated by the service. + // Deprecated: TransactionalContentCRC64 cannot be generated at block level TransactionalContentCRC64 uint64 - // Specify the transactional md5 for the body, to be validated by the service. + + // Deprecated: TransactionalContentMD5 cannot be generated at block level TransactionalContentMD5 []byte } diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/container/client.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/container/client.go index 2ac5a820a..3058b5d49 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/container/client.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/container/client.go @@ -44,10 +44,13 @@ type Client base.Client[generated.ContainerClient] func NewClient(containerURL string, cred azcore.TokenCredential, options *ClientOptions) (*Client, error) { authPolicy := shared.NewStorageChallengePolicy(cred) conOptions := shared.GetClientOptions(options) - conOptions.PerRetryPolicies = append(conOptions.PerRetryPolicies, authPolicy) - pl := runtime.NewPipeline(exported.ModuleName, exported.ModuleVersion, runtime.PipelineOptions{}, &conOptions.ClientOptions) + plOpts := runtime.PipelineOptions{PerRetry: []policy.Policy{authPolicy}} - return (*Client)(base.NewContainerClient(containerURL, pl, &cred)), nil + azClient, err := azcore.NewClient(shared.ContainerClient, exported.ModuleVersion, plOpts, &conOptions.ClientOptions) + if err != nil { + return nil, err + } + return (*Client)(base.NewContainerClient(containerURL, azClient, &cred)), nil } // NewClientWithNoCredential creates an instance of Client with the specified values. @@ -56,9 +59,12 @@ func NewClient(containerURL string, cred azcore.TokenCredential, options *Client // - options - client options; pass nil to accept the default values func NewClientWithNoCredential(containerURL string, options *ClientOptions) (*Client, error) { conOptions := shared.GetClientOptions(options) - pl := runtime.NewPipeline(exported.ModuleName, exported.ModuleVersion, runtime.PipelineOptions{}, &conOptions.ClientOptions) - return (*Client)(base.NewContainerClient(containerURL, pl, nil)), nil + azClient, err := azcore.NewClient(shared.ContainerClient, exported.ModuleVersion, runtime.PipelineOptions{}, &conOptions.ClientOptions) + if err != nil { + return nil, err + } + return (*Client)(base.NewContainerClient(containerURL, azClient, nil)), nil } // NewClientWithSharedKeyCredential creates an instance of Client with the specified values. @@ -68,10 +74,13 @@ func NewClientWithNoCredential(containerURL string, options *ClientOptions) (*Cl func NewClientWithSharedKeyCredential(containerURL string, cred *SharedKeyCredential, options *ClientOptions) (*Client, error) { authPolicy := exported.NewSharedKeyCredPolicy(cred) conOptions := shared.GetClientOptions(options) - conOptions.PerRetryPolicies = append(conOptions.PerRetryPolicies, authPolicy) - pl := runtime.NewPipeline(exported.ModuleName, exported.ModuleVersion, runtime.PipelineOptions{}, &conOptions.ClientOptions) + plOpts := runtime.PipelineOptions{PerRetry: []policy.Policy{authPolicy}} - return (*Client)(base.NewContainerClient(containerURL, pl, cred)), nil + azClient, err := azcore.NewClient(shared.ContainerClient, exported.ModuleVersion, plOpts, &conOptions.ClientOptions) + if err != nil { + return nil, err + } + return (*Client)(base.NewContainerClient(containerURL, azClient, cred)), nil } // NewClientFromConnectionString creates an instance of Client with the specified values. @@ -124,7 +133,7 @@ func (c *Client) URL() string { func (c *Client) NewBlobClient(blobName string) *blob.Client { blobName = url.PathEscape(blobName) blobURL := runtime.JoinPaths(c.URL(), blobName) - return (*blob.Client)(base.NewBlobClient(blobURL, c.generated().Pipeline(), c.credential())) + return (*blob.Client)(base.NewBlobClient(blobURL, c.generated().InternalClient().WithClientName(shared.BlobClient), c.credential())) } // NewAppendBlobClient creates a new appendblob.Client object by concatenating blobName to the end of @@ -133,7 +142,7 @@ func (c *Client) NewBlobClient(blobName string) *blob.Client { func (c *Client) NewAppendBlobClient(blobName string) *appendblob.Client { blobName = url.PathEscape(blobName) blobURL := runtime.JoinPaths(c.URL(), blobName) - return (*appendblob.Client)(base.NewAppendBlobClient(blobURL, c.generated().Pipeline(), c.sharedKey())) + return (*appendblob.Client)(base.NewAppendBlobClient(blobURL, c.generated().InternalClient().WithClientName(shared.AppendBlobClient), c.sharedKey())) } // NewBlockBlobClient creates a new blockblob.Client object by concatenating blobName to the end of @@ -142,7 +151,7 @@ func (c *Client) NewAppendBlobClient(blobName string) *appendblob.Client { func (c *Client) NewBlockBlobClient(blobName string) *blockblob.Client { blobName = url.PathEscape(blobName) blobURL := runtime.JoinPaths(c.URL(), blobName) - return (*blockblob.Client)(base.NewBlockBlobClient(blobURL, c.generated().Pipeline(), c.sharedKey())) + return (*blockblob.Client)(base.NewBlockBlobClient(blobURL, c.generated().InternalClient().WithClientName(shared.BlockBlobClient), c.sharedKey())) } // NewPageBlobClient creates a new pageblob.Client object by concatenating blobName to the end of @@ -151,7 +160,7 @@ func (c *Client) NewBlockBlobClient(blobName string) *blockblob.Client { func (c *Client) NewPageBlobClient(blobName string) *pageblob.Client { blobName = url.PathEscape(blobName) blobURL := runtime.JoinPaths(c.URL(), blobName) - return (*pageblob.Client)(base.NewPageBlobClient(blobURL, c.generated().Pipeline(), c.sharedKey())) + return (*pageblob.Client)(base.NewPageBlobClient(blobURL, c.generated().InternalClient().WithClientName(shared.PageBlobClient), c.sharedKey())) } // Create creates a new container within a storage account. If a container with the same name already exists, the operation fails. @@ -272,7 +281,7 @@ func (c *Client) NewListBlobsFlatPager(o *ListBlobsFlatOptions) *runtime.Pager[L if err != nil { return ListBlobsFlatResponse{}, err } - resp, err := c.generated().Pipeline().Do(req) + resp, err := c.generated().InternalClient().Pipeline().Do(req) if err != nil { return ListBlobsFlatResponse{}, err } @@ -308,7 +317,7 @@ func (c *Client) NewListBlobsHierarchyPager(delimiter string, o *ListBlobsHierar if err != nil { return ListBlobsHierarchyResponse{}, err } - resp, err := c.generated().Pipeline().Do(req) + resp, err := c.generated().InternalClient().Pipeline().Do(req) if err != nil { return ListBlobsHierarchyResponse{}, err } @@ -412,3 +421,12 @@ func (c *Client) SubmitBatch(ctx context.Context, bb *BatchBuilder, options *Sub Version: resp.Version, }, nil } + +// FilterBlobs operation finds all blobs in the container whose tags match a given search expression. +// https://docs.microsoft.com/en-us/rest/api/storageservices/find-blobs-by-tags-container +// eg. "dog='germanshepherd' and penguin='emperorpenguin'" +func (c *Client) FilterBlobs(ctx context.Context, where string, o *FilterBlobsOptions) (FilterBlobsResponse, error) { + containerClientFilterBlobsOptions := o.format() + resp, err := c.generated().FilterBlobs(ctx, where, containerClientFilterBlobsOptions) + return resp, err +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/container/models.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/container/models.go index f1724861e..61d936ab7 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/container/models.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/container/models.go @@ -397,3 +397,31 @@ type SubmitBatchOptions struct { func (o *SubmitBatchOptions) format() *generated.ContainerClientSubmitBatchOptions { return nil } + +// --------------------------------------------------------------------------------------------------------------------- + +// FilterBlobsOptions provides set of options for Client.FilterBlobs. +type FilterBlobsOptions struct { + // A string value that identifies the portion of the list of containers to be returned with the next listing operation. The + // operation returns the NextMarker value within the response body if the listing + // operation did not return all containers remaining to be listed with the current page. The NextMarker value can be used + // as the value for the marker parameter in a subsequent call to request the next + // page of list items. The marker value is opaque to the client. + Marker *string + // Specifies the maximum number of containers to return. If the request does not specify maxresults, or specifies a value + // greater than 5000, the server will return up to 5000 items. Note that if the + // listing operation crosses a partition boundary, then the service will return a continuation token for retrieving the remainder + // of the results. For this reason, it is possible that the service will + // return fewer results than specified by maxresults, or than the default of 5000. + MaxResults *int32 +} + +func (o *FilterBlobsOptions) format() *generated.ContainerClientFilterBlobsOptions { + if o == nil { + return nil + } + return &generated.ContainerClientFilterBlobsOptions{ + Marker: o.Marker, + Maxresults: o.MaxResults, + } +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/container/responses.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/container/responses.go index 4d1e406ea..9aaefe277 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/container/responses.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/container/responses.go @@ -64,3 +64,6 @@ type SubmitBatchResponse struct { // BatchResponseItem contains the response for the individual sub-requests. type BatchResponseItem = exported.BatchResponseItem + +// FilterBlobsResponse contains the response from method Client.FilterBlobs. +type FilterBlobsResponse = generated.ContainerClientFilterBlobsResponse diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/base/clients.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/base/clients.go index 6c3cc5c93..0bdbaefaf 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/base/clients.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/base/clients.go @@ -8,7 +8,6 @@ package base import ( "github.com/Azure/azure-sdk-for-go/sdk/azcore" - "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" "github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/exported" "github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated" ) @@ -44,23 +43,23 @@ func NewClient[T any](inner *T) *Client[T] { return &Client[T]{inner: inner} } -func NewServiceClient(containerURL string, pipeline runtime.Pipeline, credential any) *Client[generated.ServiceClient] { +func NewServiceClient(containerURL string, azClient *azcore.Client, credential any) *Client[generated.ServiceClient] { return &Client[generated.ServiceClient]{ - inner: generated.NewServiceClient(containerURL, pipeline), + inner: generated.NewServiceClient(containerURL, azClient), credential: credential, } } -func NewContainerClient(containerURL string, pipeline runtime.Pipeline, credential any) *Client[generated.ContainerClient] { +func NewContainerClient(containerURL string, azClient *azcore.Client, credential any) *Client[generated.ContainerClient] { return &Client[generated.ContainerClient]{ - inner: generated.NewContainerClient(containerURL, pipeline), + inner: generated.NewContainerClient(containerURL, azClient), credential: credential, } } -func NewBlobClient(blobURL string, pipeline runtime.Pipeline, credential any) *Client[generated.BlobClient] { +func NewBlobClient(blobURL string, azClient *azcore.Client, credential any) *Client[generated.BlobClient] { return &Client[generated.BlobClient]{ - inner: generated.NewBlobClient(blobURL, pipeline), + inner: generated.NewBlobClient(blobURL, azClient), credential: credential, } } @@ -75,26 +74,26 @@ func InnerClients[T, U any](client *CompositeClient[T, U]) (*Client[T], *U) { return &Client[T]{inner: client.innerT}, client.innerU } -func NewAppendBlobClient(blobURL string, pipeline runtime.Pipeline, sharedKey *exported.SharedKeyCredential) *CompositeClient[generated.BlobClient, generated.AppendBlobClient] { +func NewAppendBlobClient(blobURL string, azClient *azcore.Client, sharedKey *exported.SharedKeyCredential) *CompositeClient[generated.BlobClient, generated.AppendBlobClient] { return &CompositeClient[generated.BlobClient, generated.AppendBlobClient]{ - innerT: generated.NewBlobClient(blobURL, pipeline), - innerU: generated.NewAppendBlobClient(blobURL, pipeline), + innerT: generated.NewBlobClient(blobURL, azClient), + innerU: generated.NewAppendBlobClient(blobURL, azClient), sharedKey: sharedKey, } } -func NewBlockBlobClient(blobURL string, pipeline runtime.Pipeline, sharedKey *exported.SharedKeyCredential) *CompositeClient[generated.BlobClient, generated.BlockBlobClient] { +func NewBlockBlobClient(blobURL string, azClient *azcore.Client, sharedKey *exported.SharedKeyCredential) *CompositeClient[generated.BlobClient, generated.BlockBlobClient] { return &CompositeClient[generated.BlobClient, generated.BlockBlobClient]{ - innerT: generated.NewBlobClient(blobURL, pipeline), - innerU: generated.NewBlockBlobClient(blobURL, pipeline), + innerT: generated.NewBlobClient(blobURL, azClient), + innerU: generated.NewBlockBlobClient(blobURL, azClient), sharedKey: sharedKey, } } -func NewPageBlobClient(blobURL string, pipeline runtime.Pipeline, sharedKey *exported.SharedKeyCredential) *CompositeClient[generated.BlobClient, generated.PageBlobClient] { +func NewPageBlobClient(blobURL string, azClient *azcore.Client, sharedKey *exported.SharedKeyCredential) *CompositeClient[generated.BlobClient, generated.PageBlobClient] { return &CompositeClient[generated.BlobClient, generated.PageBlobClient]{ - innerT: generated.NewBlobClient(blobURL, pipeline), - innerU: generated.NewPageBlobClient(blobURL, pipeline), + innerT: generated.NewBlobClient(blobURL, azClient), + innerU: generated.NewPageBlobClient(blobURL, azClient), sharedKey: sharedKey, } } diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/exported/shared_key_credential.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/exported/shared_key_credential.go index d15631054..bd0bd5e26 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/exported/shared_key_credential.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/exported/shared_key_credential.go @@ -172,7 +172,7 @@ func (c *SharedKeyCredential) buildCanonicalizedResource(u *url.URL) (string, er // Join the sorted key values separated by ',' // Then prepend "keyName:"; then add this string to the buffer - cr.WriteString("\n" + paramName + ":" + strings.Join(paramValues, ",")) + cr.WriteString("\n" + strings.ToLower(paramName) + ":" + strings.Join(paramValues, ",")) } } return cr.String(), nil diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/exported/version.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/exported/version.go index f27f52983..935debca3 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/exported/version.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/exported/version.go @@ -8,5 +8,5 @@ package exported const ( ModuleName = "azblob" - ModuleVersion = "v1.1.0" + ModuleVersion = "v1.2.0" ) diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/appendblob_client.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/appendblob_client.go index 3b6184fea..288df7edd 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/appendblob_client.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/appendblob_client.go @@ -8,12 +8,25 @@ package generated -import "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" +import ( + "github.com/Azure/azure-sdk-for-go/sdk/azcore" +) func (client *AppendBlobClient) Endpoint() string { return client.endpoint } -func (client *AppendBlobClient) Pipeline() runtime.Pipeline { - return client.pl +func (client *AppendBlobClient) InternalClient() *azcore.Client { + return client.internal +} + +// NewAppendBlobClient creates a new instance of AppendBlobClient with the specified values. +// - endpoint - The URL of the service account, container, or blob that is the target of the desired operation. +// - azClient - azcore.Client is a basic HTTP client. It consists of a pipeline and tracing provider. +func NewAppendBlobClient(endpoint string, azClient *azcore.Client) *AppendBlobClient { + client := &AppendBlobClient{ + internal: azClient, + endpoint: endpoint, + } + return client } diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/autorest.md b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/autorest.md index 3044a608a..367f020f4 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/autorest.md +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/autorest.md @@ -7,7 +7,7 @@ go: true clear-output-folder: false version: "^3.0.0" license-header: MICROSOFT_MIT_NO_VERSION -input-file: "https://raw.githubusercontent.com/Azure/azure-rest-api-specs/e515b6251fdc21015282d2e84b85beec7c091763/specification/storage/data-plane/Microsoft.BlobStorage/preview/2020-10-02/blob.json" +input-file: "https://raw.githubusercontent.com/Azure/azure-rest-api-specs/a32d0b2423d19835246bb2ef92941503bfd5e734/specification/storage/data-plane/Microsoft.BlobStorage/preview/2021-12-02/blob.json" credential-scope: "https://storage.azure.com/.default" output-folder: ../generated file-prefix: "zz_" @@ -19,7 +19,43 @@ modelerfour: seal-single-value-enum-by-default: true lenient-model-deduplication: true export-clients: true -use: "@autorest/go@4.0.0-preview.45" +use: "@autorest/go@4.0.0-preview.49" +``` + +### Updating service version to 2023-08-03 +```yaml +directive: +- from: + - zz_appendblob_client.go + - zz_blob_client.go + - zz_blockblob_client.go + - zz_container_client.go + - zz_pageblob_client.go + - zz_service_client.go + where: $ + transform: >- + return $. + replaceAll(`[]string{"2021-12-02"}`, `[]string{ServiceVersion}`). + replaceAll(`2021-12-02`, `2023-08-03`); +``` + +### Undo breaking change with BlobName +``` yaml +directive: +- from: zz_models.go + where: $ + transform: >- + return $. + replace(/Name\s+\*BlobName/g, `Name *string`); +``` + +### Removing UnmarshalXML for BlobItems to create customer UnmarshalXML function +```yaml +directive: +- from: swagger-document + where: $.definitions + transform: > + $.BlobItemInternal["x-ms-go-omit-serde-methods"] = true; ``` ### Remove pager methods and export various generated methods in container client diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/blob_client.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/blob_client.go index 478962de1..343073b2e 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/blob_client.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/blob_client.go @@ -8,8 +8,8 @@ package generated import ( "context" + "github.com/Azure/azure-sdk-for-go/sdk/azcore" "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy" - "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" "time" ) @@ -20,8 +20,8 @@ func (client *BlobClient) Endpoint() string { return client.endpoint } -func (client *BlobClient) Pipeline() runtime.Pipeline { - return client.pl +func (client *BlobClient) InternalClient() *azcore.Client { + return client.internal } func (client *BlobClient) DeleteCreateRequest(ctx context.Context, options *BlobClientDeleteOptions, leaseAccessConditions *LeaseAccessConditions, modifiedAccessConditions *ModifiedAccessConditions) (*policy.Request, error) { @@ -31,3 +31,14 @@ func (client *BlobClient) DeleteCreateRequest(ctx context.Context, options *Blob func (client *BlobClient) SetTierCreateRequest(ctx context.Context, tier AccessTier, options *BlobClientSetTierOptions, leaseAccessConditions *LeaseAccessConditions, modifiedAccessConditions *ModifiedAccessConditions) (*policy.Request, error) { return client.setTierCreateRequest(ctx, tier, options, leaseAccessConditions, modifiedAccessConditions) } + +// NewBlobClient creates a new instance of BlobClient with the specified values. +// - endpoint - The URL of the service account, container, or blob that is the target of the desired operation. +// - azClient - azcore.Client is a basic HTTP client. It consists of a pipeline and tracing provider. +func NewBlobClient(endpoint string, azClient *azcore.Client) *BlobClient { + client := &BlobClient{ + internal: azClient, + endpoint: endpoint, + } + return client +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/block_blob_client.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/block_blob_client.go index a43e327ec..873d9a419 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/block_blob_client.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/block_blob_client.go @@ -8,12 +8,25 @@ package generated -import "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" +import ( + "github.com/Azure/azure-sdk-for-go/sdk/azcore" +) func (client *BlockBlobClient) Endpoint() string { return client.endpoint } -func (client *BlockBlobClient) Pipeline() runtime.Pipeline { - return client.pl +func (client *BlockBlobClient) Internal() *azcore.Client { + return client.internal +} + +// NewBlockBlobClient creates a new instance of BlockBlobClient with the specified values. +// - endpoint - The URL of the service account, container, or blob that is the target of the desired operation. +// - azClient - azcore.Client is a basic HTTP client. It consists of a pipeline and tracing provider. +func NewBlockBlobClient(endpoint string, azClient *azcore.Client) *BlockBlobClient { + client := &BlockBlobClient{ + internal: azClient, + endpoint: endpoint, + } + return client } diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/constants.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/constants.go new file mode 100644 index 000000000..8c13c4411 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/constants.go @@ -0,0 +1,9 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. + +package generated + +const ServiceVersion = "2023-08-03" diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/container_client.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/container_client.go index bbbf828a0..d43b2c782 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/container_client.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/container_client.go @@ -6,12 +6,25 @@ package generated -import "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" +import ( + "github.com/Azure/azure-sdk-for-go/sdk/azcore" +) func (client *ContainerClient) Endpoint() string { return client.endpoint } -func (client *ContainerClient) Pipeline() runtime.Pipeline { - return client.pl +func (client *ContainerClient) InternalClient() *azcore.Client { + return client.internal +} + +// NewContainerClient creates a new instance of ContainerClient with the specified values. +// - endpoint - The URL of the service account, container, or blob that is the target of the desired operation. +// - pl - the pipeline used for sending requests and handling responses. +func NewContainerClient(endpoint string, azClient *azcore.Client) *ContainerClient { + client := &ContainerClient{ + internal: azClient, + endpoint: endpoint, + } + return client } diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/models.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/models.go index 759d92630..aaef9f53b 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/models.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/models.go @@ -6,6 +6,12 @@ package generated +import ( + "encoding/xml" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "net/url" +) + type TransactionalContentSetter interface { SetCRC64([]byte) SetMD5([]byte) @@ -35,6 +41,14 @@ func (p *PageBlobClientUploadPagesOptions) SetMD5(v []byte) { p.TransactionalContentMD5 = v } +func (b *BlockBlobClientUploadOptions) SetCRC64(v []byte) { + b.TransactionalContentCRC64 = v +} + +func (b *BlockBlobClientUploadOptions) SetMD5(v []byte) { + b.TransactionalContentMD5 = v +} + type SourceContentSetter interface { SetSourceContentCRC64(v []byte) SetSourceContentMD5(v []byte) @@ -63,3 +77,65 @@ func (p *PageBlobClientUploadPagesFromURLOptions) SetSourceContentCRC64(v []byte func (p *PageBlobClientUploadPagesFromURLOptions) SetSourceContentMD5(v []byte) { p.SourceContentMD5 = v } + +// Custom UnmarshalXML functions for types that need special handling. + +// UnmarshalXML implements the xml.Unmarshaller interface for type BlobPrefix. +func (b *BlobPrefix) UnmarshalXML(dec *xml.Decoder, start xml.StartElement) error { + type alias BlobPrefix + aux := &struct { + *alias + BlobName *BlobName `xml:"Name"` + }{ + alias: (*alias)(b), + } + if err := dec.DecodeElement(aux, &start); err != nil { + return err + } + if aux.BlobName != nil { + if aux.BlobName.Encoded != nil && *aux.BlobName.Encoded { + name, err := url.QueryUnescape(*aux.BlobName.Content) + + // name, err := base64.StdEncoding.DecodeString(*aux.BlobName.Content) + if err != nil { + return err + } + b.Name = to.Ptr(string(name)) + } else { + b.Name = aux.BlobName.Content + } + } + return nil +} + +// UnmarshalXML implements the xml.Unmarshaller interface for type BlobItem. +func (b *BlobItem) UnmarshalXML(dec *xml.Decoder, start xml.StartElement) error { + type alias BlobItem + aux := &struct { + *alias + BlobName *BlobName `xml:"Name"` + Metadata additionalProperties `xml:"Metadata"` + OrMetadata additionalProperties `xml:"OrMetadata"` + }{ + alias: (*alias)(b), + } + if err := dec.DecodeElement(aux, &start); err != nil { + return err + } + b.Metadata = (map[string]*string)(aux.Metadata) + b.OrMetadata = (map[string]*string)(aux.OrMetadata) + if aux.BlobName != nil { + if aux.BlobName.Encoded != nil && *aux.BlobName.Encoded { + name, err := url.QueryUnescape(*aux.BlobName.Content) + + // name, err := base64.StdEncoding.DecodeString(*aux.BlobName.Content) + if err != nil { + return err + } + b.Name = to.Ptr(string(name)) + } else { + b.Name = aux.BlobName.Content + } + } + return nil +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/pageblob_client.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/pageblob_client.go index 8a212cc3d..a7c76208a 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/pageblob_client.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/pageblob_client.go @@ -6,12 +6,25 @@ package generated -import "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" +import ( + "github.com/Azure/azure-sdk-for-go/sdk/azcore" +) func (client *PageBlobClient) Endpoint() string { return client.endpoint } -func (client *PageBlobClient) Pipeline() runtime.Pipeline { - return client.pl +func (client *PageBlobClient) InternalClient() *azcore.Client { + return client.internal +} + +// NewPageBlobClient creates a new instance of PageBlobClient with the specified values. +// - endpoint - The URL of the service account, container, or blob that is the target of the desired operation. +// - azClient - azcore.Client is a basic HTTP client. It consists of a pipeline and tracing provider. +func NewPageBlobClient(endpoint string, azClient *azcore.Client) *PageBlobClient { + client := &PageBlobClient{ + internal: azClient, + endpoint: endpoint, + } + return client } diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/service_client.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/service_client.go index 1f449b955..32c15a2b0 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/service_client.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/service_client.go @@ -6,12 +6,25 @@ package generated -import "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" +import ( + "github.com/Azure/azure-sdk-for-go/sdk/azcore" +) func (client *ServiceClient) Endpoint() string { return client.endpoint } -func (client *ServiceClient) Pipeline() runtime.Pipeline { - return client.pl +func (client *ServiceClient) InternalClient() *azcore.Client { + return client.internal +} + +// NewServiceClient creates a new instance of ServiceClient with the specified values. +// - endpoint - The URL of the service account, container, or blob that is the target of the desired operation. +// - azClient - azcore.Client is a basic HTTP client. It consists of a pipeline and tracing provider. +func NewServiceClient(endpoint string, azClient *azcore.Client) *ServiceClient { + client := &ServiceClient{ + internal: azClient, + endpoint: endpoint, + } + return client } diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_appendblob_client.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_appendblob_client.go index d0ddb9064..32be22221 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_appendblob_client.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_appendblob_client.go @@ -22,21 +22,10 @@ import ( ) // AppendBlobClient contains the methods for the AppendBlob group. -// Don't use this type directly, use NewAppendBlobClient() instead. +// Don't use this type directly, use a constructor function instead. type AppendBlobClient struct { + internal *azcore.Client endpoint string - pl runtime.Pipeline -} - -// NewAppendBlobClient creates a new instance of AppendBlobClient with the specified values. -// - endpoint - The URL of the service account, container, or blob that is the target of the desired operation. -// - pl - the pipeline used for sending requests and handling responses. -func NewAppendBlobClient(endpoint string, pl runtime.Pipeline) *AppendBlobClient { - client := &AppendBlobClient{ - endpoint: endpoint, - pl: pl, - } - return client } // AppendBlock - The Append Block operation commits a new block of data to the end of an existing append blob. The Append @@ -44,7 +33,7 @@ func NewAppendBlobClient(endpoint string, pl runtime.Pipeline) *AppendBlobClient // AppendBlob. Append Block is supported only on version 2015-02-21 version or later. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - contentLength - The length of the request. // - body - Initial data // - options - AppendBlobClientAppendBlockOptions contains the optional parameters for the AppendBlobClient.AppendBlock method. @@ -59,7 +48,7 @@ func (client *AppendBlobClient) AppendBlock(ctx context.Context, contentLength i if err != nil { return AppendBlobClientAppendBlockResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return AppendBlobClientAppendBlockResponse{}, err } @@ -124,12 +113,15 @@ func (client *AppendBlobClient) appendBlockCreateRequest(ctx context.Context, co if modifiedAccessConditions != nil && modifiedAccessConditions.IfTags != nil { req.Raw().Header["x-ms-if-tags"] = []string{*modifiedAccessConditions.IfTags} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } req.Raw().Header["Accept"] = []string{"application/xml"} - return req, req.SetBody(body, "application/octet-stream") + if err := req.SetBody(body, "application/octet-stream"); err != nil { + return nil, err + } + return req, nil } // appendBlockHandleResponse handles the AppendBlock response. @@ -207,7 +199,7 @@ func (client *AppendBlobClient) appendBlockHandleResponse(resp *http.Response) ( // created with x-ms-blob-type set to AppendBlob. Append Block is supported only on version 2015-02-21 version or later. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - sourceURL - Specify a URL to the copy source. // - contentLength - The length of the request. // - options - AppendBlobClientAppendBlockFromURLOptions contains the optional parameters for the AppendBlobClient.AppendBlockFromURL @@ -225,7 +217,7 @@ func (client *AppendBlobClient) AppendBlockFromURL(ctx context.Context, sourceUR if err != nil { return AppendBlobClientAppendBlockFromURLResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return AppendBlobClientAppendBlockFromURLResponse{}, err } @@ -309,7 +301,7 @@ func (client *AppendBlobClient) appendBlockFromURLCreateRequest(ctx context.Cont if sourceModifiedAccessConditions != nil && sourceModifiedAccessConditions.SourceIfNoneMatch != nil { req.Raw().Header["x-ms-source-if-none-match"] = []string{string(*sourceModifiedAccessConditions.SourceIfNoneMatch)} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -390,7 +382,7 @@ func (client *AppendBlobClient) appendBlockFromURLHandleResponse(resp *http.Resp // Create - The Create Append Blob operation creates a new append blob. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - contentLength - The length of the request. // - options - AppendBlobClientCreateOptions contains the optional parameters for the AppendBlobClient.Create method. // - BlobHTTPHeaders - BlobHTTPHeaders contains a group of parameters for the BlobClient.SetHTTPHeaders method. @@ -403,7 +395,7 @@ func (client *AppendBlobClient) Create(ctx context.Context, contentLength int64, if err != nil { return AppendBlobClientCreateResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return AppendBlobClientCreateResponse{}, err } @@ -481,7 +473,7 @@ func (client *AppendBlobClient) createCreateRequest(ctx context.Context, content if modifiedAccessConditions != nil && modifiedAccessConditions.IfTags != nil { req.Raw().Header["x-ms-if-tags"] = []string{*modifiedAccessConditions.IfTags} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -560,7 +552,7 @@ func (client *AppendBlobClient) createHandleResponse(resp *http.Response) (Appen // or later. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - options - AppendBlobClientSealOptions contains the optional parameters for the AppendBlobClient.Seal method. // - LeaseAccessConditions - LeaseAccessConditions contains a group of parameters for the ContainerClient.GetProperties method. // - ModifiedAccessConditions - ModifiedAccessConditions contains a group of parameters for the ContainerClient.Delete method. @@ -571,7 +563,7 @@ func (client *AppendBlobClient) Seal(ctx context.Context, options *AppendBlobCli if err != nil { return AppendBlobClientSealResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return AppendBlobClientSealResponse{}, err } @@ -593,7 +585,7 @@ func (client *AppendBlobClient) sealCreateRequest(ctx context.Context, options * reqQP.Set("timeout", strconv.FormatInt(int64(*options.Timeout), 10)) } req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_blob_client.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_blob_client.go index 67402b5a5..257a3656d 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_blob_client.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_blob_client.go @@ -23,28 +23,17 @@ import ( ) // BlobClient contains the methods for the Blob group. -// Don't use this type directly, use NewBlobClient() instead. +// Don't use this type directly, use a constructor function instead. type BlobClient struct { + internal *azcore.Client endpoint string - pl runtime.Pipeline -} - -// NewBlobClient creates a new instance of BlobClient with the specified values. -// - endpoint - The URL of the service account, container, or blob that is the target of the desired operation. -// - pl - the pipeline used for sending requests and handling responses. -func NewBlobClient(endpoint string, pl runtime.Pipeline) *BlobClient { - client := &BlobClient{ - endpoint: endpoint, - pl: pl, - } - return client } // AbortCopyFromURL - The Abort Copy From URL operation aborts a pending Copy From URL operation, and leaves a destination // blob with zero length and full metadata. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - copyID - The copy identifier provided in the x-ms-copy-id header of the original Copy Blob operation. // - options - BlobClientAbortCopyFromURLOptions contains the optional parameters for the BlobClient.AbortCopyFromURL method. // - LeaseAccessConditions - LeaseAccessConditions contains a group of parameters for the ContainerClient.GetProperties method. @@ -53,7 +42,7 @@ func (client *BlobClient) AbortCopyFromURL(ctx context.Context, copyID string, o if err != nil { return BlobClientAbortCopyFromURLResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return BlobClientAbortCopyFromURLResponse{}, err } @@ -80,7 +69,7 @@ func (client *BlobClient) abortCopyFromURLCreateRequest(ctx context.Context, cop if leaseAccessConditions != nil && leaseAccessConditions.LeaseID != nil { req.Raw().Header["x-ms-lease-id"] = []string{*leaseAccessConditions.LeaseID} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -113,7 +102,7 @@ func (client *BlobClient) abortCopyFromURLHandleResponse(resp *http.Response) (B // AcquireLease - [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete operations // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - duration - Specifies the duration of the lease, in seconds, or negative one (-1) for a lease that never expires. A non-infinite // lease can be between 15 and 60 seconds. A lease duration cannot be changed using // renew or change. @@ -124,7 +113,7 @@ func (client *BlobClient) AcquireLease(ctx context.Context, duration int32, opti if err != nil { return BlobClientAcquireLeaseResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return BlobClientAcquireLeaseResponse{}, err } @@ -166,7 +155,7 @@ func (client *BlobClient) acquireLeaseCreateRequest(ctx context.Context, duratio if modifiedAccessConditions != nil && modifiedAccessConditions.IfTags != nil { req.Raw().Header["x-ms-if-tags"] = []string{*modifiedAccessConditions.IfTags} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -212,7 +201,7 @@ func (client *BlobClient) acquireLeaseHandleResponse(resp *http.Response) (BlobC // BreakLease - [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete operations // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - options - BlobClientBreakLeaseOptions contains the optional parameters for the BlobClient.BreakLease method. // - ModifiedAccessConditions - ModifiedAccessConditions contains a group of parameters for the ContainerClient.Delete method. func (client *BlobClient) BreakLease(ctx context.Context, options *BlobClientBreakLeaseOptions, modifiedAccessConditions *ModifiedAccessConditions) (BlobClientBreakLeaseResponse, error) { @@ -220,7 +209,7 @@ func (client *BlobClient) BreakLease(ctx context.Context, options *BlobClientBre if err != nil { return BlobClientBreakLeaseResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return BlobClientBreakLeaseResponse{}, err } @@ -261,7 +250,7 @@ func (client *BlobClient) breakLeaseCreateRequest(ctx context.Context, options * if modifiedAccessConditions != nil && modifiedAccessConditions.IfTags != nil { req.Raw().Header["x-ms-if-tags"] = []string{*modifiedAccessConditions.IfTags} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -312,7 +301,7 @@ func (client *BlobClient) breakLeaseHandleResponse(resp *http.Response) (BlobCli // ChangeLease - [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete operations // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - leaseID - Specifies the current lease ID on the resource. // - proposedLeaseID - Proposed lease ID, in a GUID string format. The Blob service returns 400 (Invalid request) if the proposed // lease ID is not in the correct format. See Guid Constructor (String) for a list of valid GUID @@ -324,7 +313,7 @@ func (client *BlobClient) ChangeLease(ctx context.Context, leaseID string, propo if err != nil { return BlobClientChangeLeaseResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return BlobClientChangeLeaseResponse{}, err } @@ -364,7 +353,7 @@ func (client *BlobClient) changeLeaseCreateRequest(ctx context.Context, leaseID if modifiedAccessConditions != nil && modifiedAccessConditions.IfTags != nil { req.Raw().Header["x-ms-if-tags"] = []string{*modifiedAccessConditions.IfTags} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -411,7 +400,7 @@ func (client *BlobClient) changeLeaseHandleResponse(resp *http.Response) (BlobCl // until the copy is complete. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - copySource - Specifies the name of the source page blob snapshot. This value is a URL of up to 2 KB in length that specifies // a page blob snapshot. The value should be URL-encoded as it would appear in a request // URI. The source blob must either be public or must be authenticated via a shared access signature. @@ -420,12 +409,13 @@ func (client *BlobClient) changeLeaseHandleResponse(resp *http.Response) (BlobCl // method. // - ModifiedAccessConditions - ModifiedAccessConditions contains a group of parameters for the ContainerClient.Delete method. // - LeaseAccessConditions - LeaseAccessConditions contains a group of parameters for the ContainerClient.GetProperties method. -func (client *BlobClient) CopyFromURL(ctx context.Context, copySource string, options *BlobClientCopyFromURLOptions, sourceModifiedAccessConditions *SourceModifiedAccessConditions, modifiedAccessConditions *ModifiedAccessConditions, leaseAccessConditions *LeaseAccessConditions) (BlobClientCopyFromURLResponse, error) { - req, err := client.copyFromURLCreateRequest(ctx, copySource, options, sourceModifiedAccessConditions, modifiedAccessConditions, leaseAccessConditions) +// - CPKScopeInfo - CPKScopeInfo contains a group of parameters for the BlobClient.SetMetadata method. +func (client *BlobClient) CopyFromURL(ctx context.Context, copySource string, options *BlobClientCopyFromURLOptions, sourceModifiedAccessConditions *SourceModifiedAccessConditions, modifiedAccessConditions *ModifiedAccessConditions, leaseAccessConditions *LeaseAccessConditions, cpkScopeInfo *CPKScopeInfo) (BlobClientCopyFromURLResponse, error) { + req, err := client.copyFromURLCreateRequest(ctx, copySource, options, sourceModifiedAccessConditions, modifiedAccessConditions, leaseAccessConditions, cpkScopeInfo) if err != nil { return BlobClientCopyFromURLResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return BlobClientCopyFromURLResponse{}, err } @@ -436,7 +426,7 @@ func (client *BlobClient) CopyFromURL(ctx context.Context, copySource string, op } // copyFromURLCreateRequest creates the CopyFromURL request. -func (client *BlobClient) copyFromURLCreateRequest(ctx context.Context, copySource string, options *BlobClientCopyFromURLOptions, sourceModifiedAccessConditions *SourceModifiedAccessConditions, modifiedAccessConditions *ModifiedAccessConditions, leaseAccessConditions *LeaseAccessConditions) (*policy.Request, error) { +func (client *BlobClient) copyFromURLCreateRequest(ctx context.Context, copySource string, options *BlobClientCopyFromURLOptions, sourceModifiedAccessConditions *SourceModifiedAccessConditions, modifiedAccessConditions *ModifiedAccessConditions, leaseAccessConditions *LeaseAccessConditions, cpkScopeInfo *CPKScopeInfo) (*policy.Request, error) { req, err := runtime.NewRequest(ctx, http.MethodPut, client.endpoint) if err != nil { return nil, err @@ -488,7 +478,7 @@ func (client *BlobClient) copyFromURLCreateRequest(ctx context.Context, copySour if leaseAccessConditions != nil && leaseAccessConditions.LeaseID != nil { req.Raw().Header["x-ms-lease-id"] = []string{*leaseAccessConditions.LeaseID} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -510,6 +500,12 @@ func (client *BlobClient) copyFromURLCreateRequest(ctx context.Context, copySour if options != nil && options.CopySourceAuthorization != nil { req.Raw().Header["x-ms-copy-source-authorization"] = []string{*options.CopySourceAuthorization} } + if cpkScopeInfo != nil && cpkScopeInfo.EncryptionScope != nil { + req.Raw().Header["x-ms-encryption-scope"] = []string{*cpkScopeInfo.EncryptionScope} + } + if options != nil && options.CopySourceTags != nil { + req.Raw().Header["x-ms-copy-source-tag-option"] = []string{string(*options.CopySourceTags)} + } req.Raw().Header["Accept"] = []string{"application/xml"} return req, nil } @@ -566,13 +562,16 @@ func (client *BlobClient) copyFromURLHandleResponse(resp *http.Response) (BlobCl } result.ContentCRC64 = contentCRC64 } + if val := resp.Header.Get("x-ms-encryption-scope"); val != "" { + result.EncryptionScope = &val + } return result, nil } // CreateSnapshot - The Create Snapshot operation creates a read-only snapshot of a blob // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - options - BlobClientCreateSnapshotOptions contains the optional parameters for the BlobClient.CreateSnapshot method. // - CPKInfo - CPKInfo contains a group of parameters for the BlobClient.Download method. // - CPKScopeInfo - CPKScopeInfo contains a group of parameters for the BlobClient.SetMetadata method. @@ -583,7 +582,7 @@ func (client *BlobClient) CreateSnapshot(ctx context.Context, options *BlobClien if err != nil { return BlobClientCreateSnapshotResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return BlobClientCreateSnapshotResponse{}, err } @@ -642,7 +641,7 @@ func (client *BlobClient) createSnapshotCreateRequest(ctx context.Context, optio if leaseAccessConditions != nil && leaseAccessConditions.LeaseID != nil { req.Raw().Header["x-ms-lease-id"] = []string{*leaseAccessConditions.LeaseID} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -708,7 +707,7 @@ func (client *BlobClient) createSnapshotHandleResponse(resp *http.Response) (Blo // return an HTTP status code of 404 (ResourceNotFound). // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - options - BlobClientDeleteOptions contains the optional parameters for the BlobClient.Delete method. // - LeaseAccessConditions - LeaseAccessConditions contains a group of parameters for the ContainerClient.GetProperties method. // - ModifiedAccessConditions - ModifiedAccessConditions contains a group of parameters for the ContainerClient.Delete method. @@ -717,7 +716,7 @@ func (client *BlobClient) Delete(ctx context.Context, options *BlobClientDeleteO if err != nil { return BlobClientDeleteResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return BlobClientDeleteResponse{}, err } @@ -768,7 +767,7 @@ func (client *BlobClient) deleteCreateRequest(ctx context.Context, options *Blob if modifiedAccessConditions != nil && modifiedAccessConditions.IfTags != nil { req.Raw().Header["x-ms-if-tags"] = []string{*modifiedAccessConditions.IfTags} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -801,7 +800,7 @@ func (client *BlobClient) deleteHandleResponse(resp *http.Response) (BlobClientD // DeleteImmutabilityPolicy - The Delete Immutability Policy operation deletes the immutability policy on the blob // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - options - BlobClientDeleteImmutabilityPolicyOptions contains the optional parameters for the BlobClient.DeleteImmutabilityPolicy // method. func (client *BlobClient) DeleteImmutabilityPolicy(ctx context.Context, options *BlobClientDeleteImmutabilityPolicyOptions) (BlobClientDeleteImmutabilityPolicyResponse, error) { @@ -809,7 +808,7 @@ func (client *BlobClient) DeleteImmutabilityPolicy(ctx context.Context, options if err != nil { return BlobClientDeleteImmutabilityPolicyResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return BlobClientDeleteImmutabilityPolicyResponse{}, err } @@ -831,7 +830,7 @@ func (client *BlobClient) deleteImmutabilityPolicyCreateRequest(ctx context.Cont reqQP.Set("timeout", strconv.FormatInt(int64(*options.Timeout), 10)) } req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -865,7 +864,7 @@ func (client *BlobClient) deleteImmutabilityPolicyHandleResponse(resp *http.Resp // can also call Download to read a snapshot. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - options - BlobClientDownloadOptions contains the optional parameters for the BlobClient.Download method. // - LeaseAccessConditions - LeaseAccessConditions contains a group of parameters for the ContainerClient.GetProperties method. // - CPKInfo - CPKInfo contains a group of parameters for the BlobClient.Download method. @@ -875,7 +874,7 @@ func (client *BlobClient) Download(ctx context.Context, options *BlobClientDownl if err != nil { return BlobClientDownloadResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return BlobClientDownloadResponse{}, err } @@ -939,7 +938,7 @@ func (client *BlobClient) downloadCreateRequest(ctx context.Context, options *Bl if modifiedAccessConditions != nil && modifiedAccessConditions.IfTags != nil { req.Raw().Header["x-ms-if-tags"] = []string{*modifiedAccessConditions.IfTags} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -957,6 +956,13 @@ func (client *BlobClient) downloadHandleResponse(resp *http.Response) (BlobClien } result.LastModified = &lastModified } + if val := resp.Header.Get("x-ms-creation-time"); val != "" { + creationTime, err := time.Parse(time.RFC1123, val) + if err != nil { + return BlobClientDownloadResponse{}, err + } + result.CreationTime = &creationTime + } for hh := range resp.Header { if len(hh) > len("x-ms-meta-") && strings.EqualFold(hh[:len("x-ms-meta-")], "x-ms-meta-") { if result.Metadata == nil { @@ -1163,14 +1169,14 @@ func (client *BlobClient) downloadHandleResponse(resp *http.Response) (BlobClien // GetAccountInfo - Returns the sku name and account kind // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - options - BlobClientGetAccountInfoOptions contains the optional parameters for the BlobClient.GetAccountInfo method. func (client *BlobClient) GetAccountInfo(ctx context.Context, options *BlobClientGetAccountInfoOptions) (BlobClientGetAccountInfoResponse, error) { req, err := client.getAccountInfoCreateRequest(ctx, options) if err != nil { return BlobClientGetAccountInfoResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return BlobClientGetAccountInfoResponse{}, err } @@ -1190,7 +1196,7 @@ func (client *BlobClient) getAccountInfoCreateRequest(ctx context.Context, optio reqQP.Set("restype", "account") reqQP.Set("comp", "properties") req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} req.Raw().Header["Accept"] = []string{"application/xml"} return req, nil } @@ -1227,7 +1233,7 @@ func (client *BlobClient) getAccountInfoHandleResponse(resp *http.Response) (Blo // for the blob. It does not return the content of the blob. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - options - BlobClientGetPropertiesOptions contains the optional parameters for the BlobClient.GetProperties method. // - LeaseAccessConditions - LeaseAccessConditions contains a group of parameters for the ContainerClient.GetProperties method. // - CPKInfo - CPKInfo contains a group of parameters for the BlobClient.Download method. @@ -1237,7 +1243,7 @@ func (client *BlobClient) GetProperties(ctx context.Context, options *BlobClient if err != nil { return BlobClientGetPropertiesResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return BlobClientGetPropertiesResponse{}, err } @@ -1291,7 +1297,7 @@ func (client *BlobClient) getPropertiesCreateRequest(ctx context.Context, option if modifiedAccessConditions != nil && modifiedAccessConditions.IfTags != nil { req.Raw().Header["x-ms-if-tags"] = []string{*modifiedAccessConditions.IfTags} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -1542,7 +1548,7 @@ func (client *BlobClient) getPropertiesHandleResponse(resp *http.Response) (Blob // GetTags - The Get Tags operation enables users to get the tags associated with a blob. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - options - BlobClientGetTagsOptions contains the optional parameters for the BlobClient.GetTags method. // - ModifiedAccessConditions - ModifiedAccessConditions contains a group of parameters for the ContainerClient.Delete method. // - LeaseAccessConditions - LeaseAccessConditions contains a group of parameters for the ContainerClient.GetProperties method. @@ -1551,7 +1557,7 @@ func (client *BlobClient) GetTags(ctx context.Context, options *BlobClientGetTag if err != nil { return BlobClientGetTagsResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return BlobClientGetTagsResponse{}, err } @@ -1579,7 +1585,7 @@ func (client *BlobClient) getTagsCreateRequest(ctx context.Context, options *Blo reqQP.Set("versionid", *options.VersionID) } req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -1621,7 +1627,7 @@ func (client *BlobClient) getTagsHandleResponse(resp *http.Response) (BlobClient // Query - The Query operation enables users to select/project on blob data by providing simple query expressions. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - options - BlobClientQueryOptions contains the optional parameters for the BlobClient.Query method. // - LeaseAccessConditions - LeaseAccessConditions contains a group of parameters for the ContainerClient.GetProperties method. // - CPKInfo - CPKInfo contains a group of parameters for the BlobClient.Download method. @@ -1631,7 +1637,7 @@ func (client *BlobClient) Query(ctx context.Context, options *BlobClientQueryOpt if err != nil { return BlobClientQueryResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return BlobClientQueryResponse{}, err } @@ -1684,13 +1690,16 @@ func (client *BlobClient) queryCreateRequest(ctx context.Context, options *BlobC if modifiedAccessConditions != nil && modifiedAccessConditions.IfTags != nil { req.Raw().Header["x-ms-if-tags"] = []string{*modifiedAccessConditions.IfTags} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } req.Raw().Header["Accept"] = []string{"application/xml"} if options != nil && options.QueryRequest != nil { - return req, runtime.MarshalAsXML(req, *options.QueryRequest) + if err := runtime.MarshalAsXML(req, *options.QueryRequest); err != nil { + return nil, err + } + return req, nil } return req, nil } @@ -1849,7 +1858,7 @@ func (client *BlobClient) queryHandleResponse(resp *http.Response) (BlobClientQu // ReleaseLease - [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete operations // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - leaseID - Specifies the current lease ID on the resource. // - options - BlobClientReleaseLeaseOptions contains the optional parameters for the BlobClient.ReleaseLease method. // - ModifiedAccessConditions - ModifiedAccessConditions contains a group of parameters for the ContainerClient.Delete method. @@ -1858,7 +1867,7 @@ func (client *BlobClient) ReleaseLease(ctx context.Context, leaseID string, opti if err != nil { return BlobClientReleaseLeaseResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return BlobClientReleaseLeaseResponse{}, err } @@ -1897,7 +1906,7 @@ func (client *BlobClient) releaseLeaseCreateRequest(ctx context.Context, leaseID if modifiedAccessConditions != nil && modifiedAccessConditions.IfTags != nil { req.Raw().Header["x-ms-if-tags"] = []string{*modifiedAccessConditions.IfTags} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -1940,7 +1949,7 @@ func (client *BlobClient) releaseLeaseHandleResponse(resp *http.Response) (BlobC // RenewLease - [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete operations // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - leaseID - Specifies the current lease ID on the resource. // - options - BlobClientRenewLeaseOptions contains the optional parameters for the BlobClient.RenewLease method. // - ModifiedAccessConditions - ModifiedAccessConditions contains a group of parameters for the ContainerClient.Delete method. @@ -1949,7 +1958,7 @@ func (client *BlobClient) RenewLease(ctx context.Context, leaseID string, option if err != nil { return BlobClientRenewLeaseResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return BlobClientRenewLeaseResponse{}, err } @@ -1988,7 +1997,7 @@ func (client *BlobClient) renewLeaseCreateRequest(ctx context.Context, leaseID s if modifiedAccessConditions != nil && modifiedAccessConditions.IfTags != nil { req.Raw().Header["x-ms-if-tags"] = []string{*modifiedAccessConditions.IfTags} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -2034,7 +2043,7 @@ func (client *BlobClient) renewLeaseHandleResponse(resp *http.Response) (BlobCli // SetExpiry - Sets the time a blob will expire and be deleted. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - expiryOptions - Required. Indicates mode of the expiry time // - options - BlobClientSetExpiryOptions contains the optional parameters for the BlobClient.SetExpiry method. func (client *BlobClient) SetExpiry(ctx context.Context, expiryOptions ExpiryOptions, options *BlobClientSetExpiryOptions) (BlobClientSetExpiryResponse, error) { @@ -2042,7 +2051,7 @@ func (client *BlobClient) SetExpiry(ctx context.Context, expiryOptions ExpiryOpt if err != nil { return BlobClientSetExpiryResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return BlobClientSetExpiryResponse{}, err } @@ -2064,7 +2073,7 @@ func (client *BlobClient) setExpiryCreateRequest(ctx context.Context, expiryOpti reqQP.Set("timeout", strconv.FormatInt(int64(*options.Timeout), 10)) } req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -2111,7 +2120,7 @@ func (client *BlobClient) setExpiryHandleResponse(resp *http.Response) (BlobClie // SetHTTPHeaders - The Set HTTP Headers operation sets system properties on the blob // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - options - BlobClientSetHTTPHeadersOptions contains the optional parameters for the BlobClient.SetHTTPHeaders method. // - BlobHTTPHeaders - BlobHTTPHeaders contains a group of parameters for the BlobClient.SetHTTPHeaders method. // - LeaseAccessConditions - LeaseAccessConditions contains a group of parameters for the ContainerClient.GetProperties method. @@ -2121,7 +2130,7 @@ func (client *BlobClient) SetHTTPHeaders(ctx context.Context, options *BlobClien if err != nil { return BlobClientSetHTTPHeadersResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return BlobClientSetHTTPHeadersResponse{}, err } @@ -2179,7 +2188,7 @@ func (client *BlobClient) setHTTPHeadersCreateRequest(ctx context.Context, optio if blobHTTPHeaders != nil && blobHTTPHeaders.BlobContentDisposition != nil { req.Raw().Header["x-ms-blob-content-disposition"] = []string{*blobHTTPHeaders.BlobContentDisposition} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -2229,7 +2238,7 @@ func (client *BlobClient) setHTTPHeadersHandleResponse(resp *http.Response) (Blo // SetImmutabilityPolicy - The Set Immutability Policy operation sets the immutability policy on the blob // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - options - BlobClientSetImmutabilityPolicyOptions contains the optional parameters for the BlobClient.SetImmutabilityPolicy // method. // - ModifiedAccessConditions - ModifiedAccessConditions contains a group of parameters for the ContainerClient.Delete method. @@ -2238,7 +2247,7 @@ func (client *BlobClient) SetImmutabilityPolicy(ctx context.Context, options *Bl if err != nil { return BlobClientSetImmutabilityPolicyResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return BlobClientSetImmutabilityPolicyResponse{}, err } @@ -2260,7 +2269,7 @@ func (client *BlobClient) setImmutabilityPolicyCreateRequest(ctx context.Context reqQP.Set("timeout", strconv.FormatInt(int64(*options.Timeout), 10)) } req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -2312,7 +2321,7 @@ func (client *BlobClient) setImmutabilityPolicyHandleResponse(resp *http.Respons // SetLegalHold - The Set Legal Hold operation sets a legal hold on the blob. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - legalHold - Specified if a legal hold should be set on the blob. // - options - BlobClientSetLegalHoldOptions contains the optional parameters for the BlobClient.SetLegalHold method. func (client *BlobClient) SetLegalHold(ctx context.Context, legalHold bool, options *BlobClientSetLegalHoldOptions) (BlobClientSetLegalHoldResponse, error) { @@ -2320,7 +2329,7 @@ func (client *BlobClient) SetLegalHold(ctx context.Context, legalHold bool, opti if err != nil { return BlobClientSetLegalHoldResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return BlobClientSetLegalHoldResponse{}, err } @@ -2342,7 +2351,7 @@ func (client *BlobClient) setLegalHoldCreateRequest(ctx context.Context, legalHo reqQP.Set("timeout", strconv.FormatInt(int64(*options.Timeout), 10)) } req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -2384,7 +2393,7 @@ func (client *BlobClient) setLegalHoldHandleResponse(resp *http.Response) (BlobC // pairs // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - options - BlobClientSetMetadataOptions contains the optional parameters for the BlobClient.SetMetadata method. // - LeaseAccessConditions - LeaseAccessConditions contains a group of parameters for the ContainerClient.GetProperties method. // - CPKInfo - CPKInfo contains a group of parameters for the BlobClient.Download method. @@ -2395,7 +2404,7 @@ func (client *BlobClient) SetMetadata(ctx context.Context, options *BlobClientSe if err != nil { return BlobClientSetMetadataResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return BlobClientSetMetadataResponse{}, err } @@ -2454,7 +2463,7 @@ func (client *BlobClient) setMetadataCreateRequest(ctx context.Context, options if modifiedAccessConditions != nil && modifiedAccessConditions.IfTags != nil { req.Raw().Header["x-ms-if-tags"] = []string{*modifiedAccessConditions.IfTags} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -2513,7 +2522,7 @@ func (client *BlobClient) setMetadataHandleResponse(resp *http.Response) (BlobCl // SetTags - The Set Tags operation enables users to set tags on a blob. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - tags - Blob tags // - options - BlobClientSetTagsOptions contains the optional parameters for the BlobClient.SetTags method. // - ModifiedAccessConditions - ModifiedAccessConditions contains a group of parameters for the ContainerClient.Delete method. @@ -2523,7 +2532,7 @@ func (client *BlobClient) SetTags(ctx context.Context, tags BlobTags, options *B if err != nil { return BlobClientSetTagsResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return BlobClientSetTagsResponse{}, err } @@ -2548,7 +2557,7 @@ func (client *BlobClient) setTagsCreateRequest(ctx context.Context, tags BlobTag reqQP.Set("versionid", *options.VersionID) } req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.TransactionalContentMD5 != nil { req.Raw().Header["Content-MD5"] = []string{base64.StdEncoding.EncodeToString(options.TransactionalContentMD5)} } @@ -2565,7 +2574,10 @@ func (client *BlobClient) setTagsCreateRequest(ctx context.Context, tags BlobTag req.Raw().Header["x-ms-lease-id"] = []string{*leaseAccessConditions.LeaseID} } req.Raw().Header["Accept"] = []string{"application/xml"} - return req, runtime.MarshalAsXML(req, tags) + if err := runtime.MarshalAsXML(req, tags); err != nil { + return nil, err + } + return req, nil } // setTagsHandleResponse handles the SetTags response. @@ -2596,7 +2608,7 @@ func (client *BlobClient) setTagsHandleResponse(resp *http.Response) (BlobClient // storage type. This operation does not update the blob's ETag. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - tier - Indicates the tier to be set on the blob. // - options - BlobClientSetTierOptions contains the optional parameters for the BlobClient.SetTier method. // - LeaseAccessConditions - LeaseAccessConditions contains a group of parameters for the ContainerClient.GetProperties method. @@ -2606,7 +2618,7 @@ func (client *BlobClient) SetTier(ctx context.Context, tier AccessTier, options if err != nil { return BlobClientSetTierResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return BlobClientSetTierResponse{}, err } @@ -2638,7 +2650,7 @@ func (client *BlobClient) setTierCreateRequest(ctx context.Context, tier AccessT if options != nil && options.RehydratePriority != nil { req.Raw().Header["x-ms-rehydrate-priority"] = []string{string(*options.RehydratePriority)} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -2670,7 +2682,7 @@ func (client *BlobClient) setTierHandleResponse(resp *http.Response) (BlobClient // StartCopyFromURL - The Start Copy From URL operation copies a blob or an internet resource to a new blob. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - copySource - Specifies the name of the source page blob snapshot. This value is a URL of up to 2 KB in length that specifies // a page blob snapshot. The value should be URL-encoded as it would appear in a request // URI. The source blob must either be public or must be authenticated via a shared access signature. @@ -2684,7 +2696,7 @@ func (client *BlobClient) StartCopyFromURL(ctx context.Context, copySource strin if err != nil { return BlobClientStartCopyFromURLResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return BlobClientStartCopyFromURLResponse{}, err } @@ -2752,7 +2764,7 @@ func (client *BlobClient) startCopyFromURLCreateRequest(ctx context.Context, cop if leaseAccessConditions != nil && leaseAccessConditions.LeaseID != nil { req.Raw().Header["x-ms-lease-id"] = []string{*leaseAccessConditions.LeaseID} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -2819,14 +2831,14 @@ func (client *BlobClient) startCopyFromURLHandleResponse(resp *http.Response) (B // Undelete - Undelete a blob that was previously soft deleted // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - options - BlobClientUndeleteOptions contains the optional parameters for the BlobClient.Undelete method. func (client *BlobClient) Undelete(ctx context.Context, options *BlobClientUndeleteOptions) (BlobClientUndeleteResponse, error) { req, err := client.undeleteCreateRequest(ctx, options) if err != nil { return BlobClientUndeleteResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return BlobClientUndeleteResponse{}, err } @@ -2848,7 +2860,7 @@ func (client *BlobClient) undeleteCreateRequest(ctx context.Context, options *Bl reqQP.Set("timeout", strconv.FormatInt(int64(*options.Timeout), 10)) } req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_blockblob_client.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_blockblob_client.go index 7e81d1540..6b2def53f 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_blockblob_client.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_blockblob_client.go @@ -22,21 +22,10 @@ import ( ) // BlockBlobClient contains the methods for the BlockBlob group. -// Don't use this type directly, use NewBlockBlobClient() instead. +// Don't use this type directly, use a constructor function instead. type BlockBlobClient struct { + internal *azcore.Client endpoint string - pl runtime.Pipeline -} - -// NewBlockBlobClient creates a new instance of BlockBlobClient with the specified values. -// - endpoint - The URL of the service account, container, or blob that is the target of the desired operation. -// - pl - the pipeline used for sending requests and handling responses. -func NewBlockBlobClient(endpoint string, pl runtime.Pipeline) *BlockBlobClient { - client := &BlockBlobClient{ - endpoint: endpoint, - pl: pl, - } - return client } // CommitBlockList - The Commit Block List operation writes a blob by specifying the list of block IDs that make up the blob. @@ -48,7 +37,7 @@ func NewBlockBlobClient(endpoint string, pl runtime.Pipeline) *BlockBlobClient { // belong to. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - blocks - Blob Blocks. // - options - BlockBlobClientCommitBlockListOptions contains the optional parameters for the BlockBlobClient.CommitBlockList // method. @@ -62,7 +51,7 @@ func (client *BlockBlobClient) CommitBlockList(ctx context.Context, blocks Block if err != nil { return BlockBlobClientCommitBlockListResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return BlockBlobClientCommitBlockListResponse{}, err } @@ -148,7 +137,7 @@ func (client *BlockBlobClient) commitBlockListCreateRequest(ctx context.Context, if modifiedAccessConditions != nil && modifiedAccessConditions.IfTags != nil { req.Raw().Header["x-ms-if-tags"] = []string{*modifiedAccessConditions.IfTags} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -165,7 +154,10 @@ func (client *BlockBlobClient) commitBlockListCreateRequest(ctx context.Context, req.Raw().Header["x-ms-legal-hold"] = []string{strconv.FormatBool(*options.LegalHold)} } req.Raw().Header["Accept"] = []string{"application/xml"} - return req, runtime.MarshalAsXML(req, blocks) + if err := runtime.MarshalAsXML(req, blocks); err != nil { + return nil, err + } + return req, nil } // commitBlockListHandleResponse handles the CommitBlockList response. @@ -233,7 +225,7 @@ func (client *BlockBlobClient) commitBlockListHandleResponse(resp *http.Response // GetBlockList - The Get Block List operation retrieves the list of blocks that have been uploaded as part of a block blob // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - listType - Specifies whether to return the list of committed blocks, the list of uncommitted blocks, or both lists together. // - options - BlockBlobClientGetBlockListOptions contains the optional parameters for the BlockBlobClient.GetBlockList method. // - LeaseAccessConditions - LeaseAccessConditions contains a group of parameters for the ContainerClient.GetProperties method. @@ -243,7 +235,7 @@ func (client *BlockBlobClient) GetBlockList(ctx context.Context, listType BlockL if err != nil { return BlockBlobClientGetBlockListResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return BlockBlobClientGetBlockListResponse{}, err } @@ -275,7 +267,7 @@ func (client *BlockBlobClient) getBlockListCreateRequest(ctx context.Context, li if modifiedAccessConditions != nil && modifiedAccessConditions.IfTags != nil { req.Raw().Header["x-ms-if-tags"] = []string{*modifiedAccessConditions.IfTags} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -335,7 +327,7 @@ func (client *BlockBlobClient) getBlockListHandleResponse(resp *http.Response) ( // Block from URL API in conjunction with Put Block List. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - contentLength - The length of the request. // - copySource - Specifies the name of the source page blob snapshot. This value is a URL of up to 2 KB in length that specifies // a page blob snapshot. The value should be URL-encoded as it would appear in a request @@ -354,7 +346,7 @@ func (client *BlockBlobClient) PutBlobFromURL(ctx context.Context, contentLength if err != nil { return BlockBlobClientPutBlobFromURLResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return BlockBlobClientPutBlobFromURLResponse{}, err } @@ -453,7 +445,7 @@ func (client *BlockBlobClient) putBlobFromURLCreateRequest(ctx context.Context, if sourceModifiedAccessConditions != nil && sourceModifiedAccessConditions.SourceIfTags != nil { req.Raw().Header["x-ms-source-if-tags"] = []string{*sourceModifiedAccessConditions.SourceIfTags} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -470,6 +462,9 @@ func (client *BlockBlobClient) putBlobFromURLCreateRequest(ctx context.Context, if options != nil && options.CopySourceAuthorization != nil { req.Raw().Header["x-ms-copy-source-authorization"] = []string{*options.CopySourceAuthorization} } + if options != nil && options.CopySourceTags != nil { + req.Raw().Header["x-ms-copy-source-tag-option"] = []string{string(*options.CopySourceTags)} + } req.Raw().Header["Accept"] = []string{"application/xml"} return req, nil } @@ -532,7 +527,7 @@ func (client *BlockBlobClient) putBlobFromURLHandleResponse(resp *http.Response) // StageBlock - The Stage Block operation creates a new block to be committed as part of a blob // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - blockID - A valid Base64 string value that identifies the block. Prior to encoding, the string must be less than or equal // to 64 bytes in size. For a given blob, the length of the value specified for the blockid // parameter must be the same size for each block. @@ -547,7 +542,7 @@ func (client *BlockBlobClient) StageBlock(ctx context.Context, blockID string, c if err != nil { return BlockBlobClientStageBlockResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return BlockBlobClientStageBlockResponse{}, err } @@ -592,12 +587,15 @@ func (client *BlockBlobClient) stageBlockCreateRequest(ctx context.Context, bloc if cpkScopeInfo != nil && cpkScopeInfo.EncryptionScope != nil { req.Raw().Header["x-ms-encryption-scope"] = []string{*cpkScopeInfo.EncryptionScope} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } req.Raw().Header["Accept"] = []string{"application/xml"} - return req, req.SetBody(body, "application/octet-stream") + if err := req.SetBody(body, "application/octet-stream"); err != nil { + return nil, err + } + return req, nil } // stageBlockHandleResponse handles the StageBlock response. @@ -653,7 +651,7 @@ func (client *BlockBlobClient) stageBlockHandleResponse(resp *http.Response) (Bl // are read from a URL. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - blockID - A valid Base64 string value that identifies the block. Prior to encoding, the string must be less than or equal // to 64 bytes in size. For a given blob, the length of the value specified for the blockid // parameter must be the same size for each block. @@ -671,7 +669,7 @@ func (client *BlockBlobClient) StageBlockFromURL(ctx context.Context, blockID st if err != nil { return BlockBlobClientStageBlockFromURLResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return BlockBlobClientStageBlockFromURLResponse{}, err } @@ -732,7 +730,7 @@ func (client *BlockBlobClient) stageBlockFromURLCreateRequest(ctx context.Contex if sourceModifiedAccessConditions != nil && sourceModifiedAccessConditions.SourceIfNoneMatch != nil { req.Raw().Header["x-ms-source-if-none-match"] = []string{string(*sourceModifiedAccessConditions.SourceIfNoneMatch)} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -798,7 +796,7 @@ func (client *BlockBlobClient) stageBlockFromURLHandleResponse(resp *http.Respon // the content of a block blob, use the Put Block List operation. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - contentLength - The length of the request. // - body - Initial data // - options - BlockBlobClientUploadOptions contains the optional parameters for the BlockBlobClient.Upload method. @@ -812,7 +810,7 @@ func (client *BlockBlobClient) Upload(ctx context.Context, contentLength int64, if err != nil { return BlockBlobClientUploadResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return BlockBlobClientUploadResponse{}, err } @@ -896,7 +894,7 @@ func (client *BlockBlobClient) uploadCreateRequest(ctx context.Context, contentL if modifiedAccessConditions != nil && modifiedAccessConditions.IfTags != nil { req.Raw().Header["x-ms-if-tags"] = []string{*modifiedAccessConditions.IfTags} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -912,8 +910,14 @@ func (client *BlockBlobClient) uploadCreateRequest(ctx context.Context, contentL if options != nil && options.LegalHold != nil { req.Raw().Header["x-ms-legal-hold"] = []string{strconv.FormatBool(*options.LegalHold)} } + if options != nil && options.TransactionalContentCRC64 != nil { + req.Raw().Header["x-ms-content-crc64"] = []string{base64.StdEncoding.EncodeToString(options.TransactionalContentCRC64)} + } req.Raw().Header["Accept"] = []string{"application/xml"} - return req, req.SetBody(body, "application/octet-stream") + if err := req.SetBody(body, "application/octet-stream"); err != nil { + return nil, err + } + return req, nil } // uploadHandleResponse handles the Upload response. diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_constants.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_constants.go index 74e6cf1e8..b9d306cac 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_constants.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_constants.go @@ -13,6 +13,7 @@ type AccessTier string const ( AccessTierArchive AccessTier = "Archive" + AccessTierCold AccessTier = "Cold" AccessTierCool AccessTier = "Cool" AccessTierHot AccessTier = "Hot" AccessTierP10 AccessTier = "P10" @@ -33,6 +34,7 @@ const ( func PossibleAccessTierValues() []AccessTier { return []AccessTier{ AccessTierArchive, + AccessTierCold, AccessTierCool, AccessTierHot, AccessTierP10, @@ -53,27 +55,28 @@ func PossibleAccessTierValues() []AccessTier { type AccountKind string const ( - AccountKindStorage AccountKind = "Storage" AccountKindBlobStorage AccountKind = "BlobStorage" - AccountKindStorageV2 AccountKind = "StorageV2" - AccountKindFileStorage AccountKind = "FileStorage" AccountKindBlockBlobStorage AccountKind = "BlockBlobStorage" + AccountKindFileStorage AccountKind = "FileStorage" + AccountKindStorage AccountKind = "Storage" + AccountKindStorageV2 AccountKind = "StorageV2" ) // PossibleAccountKindValues returns the possible values for the AccountKind const type. func PossibleAccountKindValues() []AccountKind { return []AccountKind{ - AccountKindStorage, AccountKindBlobStorage, - AccountKindStorageV2, - AccountKindFileStorage, AccountKindBlockBlobStorage, + AccountKindFileStorage, + AccountKindStorage, + AccountKindStorageV2, } } type ArchiveStatus string const ( + ArchiveStatusRehydratePendingToCold ArchiveStatus = "rehydrate-pending-to-cold" ArchiveStatusRehydratePendingToCool ArchiveStatus = "rehydrate-pending-to-cool" ArchiveStatusRehydratePendingToHot ArchiveStatus = "rehydrate-pending-to-hot" ) @@ -81,25 +84,41 @@ const ( // PossibleArchiveStatusValues returns the possible values for the ArchiveStatus const type. func PossibleArchiveStatusValues() []ArchiveStatus { return []ArchiveStatus{ + ArchiveStatusRehydratePendingToCold, ArchiveStatusRehydratePendingToCool, ArchiveStatusRehydratePendingToHot, } } +type BlobCopySourceTags string + +const ( + BlobCopySourceTagsCOPY BlobCopySourceTags = "COPY" + BlobCopySourceTagsREPLACE BlobCopySourceTags = "REPLACE" +) + +// PossibleBlobCopySourceTagsValues returns the possible values for the BlobCopySourceTags const type. +func PossibleBlobCopySourceTagsValues() []BlobCopySourceTags { + return []BlobCopySourceTags{ + BlobCopySourceTagsCOPY, + BlobCopySourceTagsREPLACE, + } +} + // BlobGeoReplicationStatus - The status of the secondary location type BlobGeoReplicationStatus string const ( - BlobGeoReplicationStatusLive BlobGeoReplicationStatus = "live" BlobGeoReplicationStatusBootstrap BlobGeoReplicationStatus = "bootstrap" + BlobGeoReplicationStatusLive BlobGeoReplicationStatus = "live" BlobGeoReplicationStatusUnavailable BlobGeoReplicationStatus = "unavailable" ) // PossibleBlobGeoReplicationStatusValues returns the possible values for the BlobGeoReplicationStatus const type. func PossibleBlobGeoReplicationStatusValues() []BlobGeoReplicationStatus { return []BlobGeoReplicationStatus{ - BlobGeoReplicationStatusLive, BlobGeoReplicationStatusBootstrap, + BlobGeoReplicationStatusLive, BlobGeoReplicationStatusUnavailable, } } @@ -107,53 +126,53 @@ func PossibleBlobGeoReplicationStatusValues() []BlobGeoReplicationStatus { type BlobType string const ( + BlobTypeAppendBlob BlobType = "AppendBlob" BlobTypeBlockBlob BlobType = "BlockBlob" BlobTypePageBlob BlobType = "PageBlob" - BlobTypeAppendBlob BlobType = "AppendBlob" ) // PossibleBlobTypeValues returns the possible values for the BlobType const type. func PossibleBlobTypeValues() []BlobType { return []BlobType{ + BlobTypeAppendBlob, BlobTypeBlockBlob, BlobTypePageBlob, - BlobTypeAppendBlob, } } type BlockListType string const ( + BlockListTypeAll BlockListType = "all" BlockListTypeCommitted BlockListType = "committed" BlockListTypeUncommitted BlockListType = "uncommitted" - BlockListTypeAll BlockListType = "all" ) // PossibleBlockListTypeValues returns the possible values for the BlockListType const type. func PossibleBlockListTypeValues() []BlockListType { return []BlockListType{ + BlockListTypeAll, BlockListTypeCommitted, BlockListTypeUncommitted, - BlockListTypeAll, } } type CopyStatusType string const ( - CopyStatusTypePending CopyStatusType = "pending" - CopyStatusTypeSuccess CopyStatusType = "success" CopyStatusTypeAborted CopyStatusType = "aborted" CopyStatusTypeFailed CopyStatusType = "failed" + CopyStatusTypePending CopyStatusType = "pending" + CopyStatusTypeSuccess CopyStatusType = "success" ) // PossibleCopyStatusTypeValues returns the possible values for the CopyStatusType const type. func PossibleCopyStatusTypeValues() []CopyStatusType { return []CopyStatusType{ - CopyStatusTypePending, - CopyStatusTypeSuccess, CopyStatusTypeAborted, CopyStatusTypeFailed, + CopyStatusTypePending, + CopyStatusTypeSuccess, } } @@ -190,15 +209,15 @@ func PossibleDeleteTypeValues() []DeleteType { type EncryptionAlgorithmType string const ( - EncryptionAlgorithmTypeNone EncryptionAlgorithmType = "None" EncryptionAlgorithmTypeAES256 EncryptionAlgorithmType = "AES256" + EncryptionAlgorithmTypeNone EncryptionAlgorithmType = "None" ) // PossibleEncryptionAlgorithmTypeValues returns the possible values for the EncryptionAlgorithmType const type. func PossibleEncryptionAlgorithmTypeValues() []EncryptionAlgorithmType { return []EncryptionAlgorithmType{ - EncryptionAlgorithmTypeNone, EncryptionAlgorithmTypeAES256, + EncryptionAlgorithmTypeNone, } } @@ -221,50 +240,65 @@ func PossibleExpiryOptionsValues() []ExpiryOptions { } } +type FilterBlobsIncludeItem string + +const ( + FilterBlobsIncludeItemNone FilterBlobsIncludeItem = "none" + FilterBlobsIncludeItemVersions FilterBlobsIncludeItem = "versions" +) + +// PossibleFilterBlobsIncludeItemValues returns the possible values for the FilterBlobsIncludeItem const type. +func PossibleFilterBlobsIncludeItemValues() []FilterBlobsIncludeItem { + return []FilterBlobsIncludeItem{ + FilterBlobsIncludeItemNone, + FilterBlobsIncludeItemVersions, + } +} + type ImmutabilityPolicyMode string const ( + ImmutabilityPolicyModeLocked ImmutabilityPolicyMode = "Locked" ImmutabilityPolicyModeMutable ImmutabilityPolicyMode = "Mutable" ImmutabilityPolicyModeUnlocked ImmutabilityPolicyMode = "Unlocked" - ImmutabilityPolicyModeLocked ImmutabilityPolicyMode = "Locked" ) // PossibleImmutabilityPolicyModeValues returns the possible values for the ImmutabilityPolicyMode const type. func PossibleImmutabilityPolicyModeValues() []ImmutabilityPolicyMode { return []ImmutabilityPolicyMode{ + ImmutabilityPolicyModeLocked, ImmutabilityPolicyModeMutable, ImmutabilityPolicyModeUnlocked, - ImmutabilityPolicyModeLocked, } } type ImmutabilityPolicySetting string const ( - ImmutabilityPolicySettingUnlocked ImmutabilityPolicySetting = "Unlocked" ImmutabilityPolicySettingLocked ImmutabilityPolicySetting = "Locked" + ImmutabilityPolicySettingUnlocked ImmutabilityPolicySetting = "Unlocked" ) // PossibleImmutabilityPolicySettingValues returns the possible values for the ImmutabilityPolicySetting const type. func PossibleImmutabilityPolicySettingValues() []ImmutabilityPolicySetting { return []ImmutabilityPolicySetting{ - ImmutabilityPolicySettingUnlocked, ImmutabilityPolicySettingLocked, + ImmutabilityPolicySettingUnlocked, } } type LeaseDurationType string const ( - LeaseDurationTypeInfinite LeaseDurationType = "infinite" LeaseDurationTypeFixed LeaseDurationType = "fixed" + LeaseDurationTypeInfinite LeaseDurationType = "infinite" ) // PossibleLeaseDurationTypeValues returns the possible values for the LeaseDurationType const type. func PossibleLeaseDurationTypeValues() []LeaseDurationType { return []LeaseDurationType{ - LeaseDurationTypeInfinite, LeaseDurationTypeFixed, + LeaseDurationTypeInfinite, } } @@ -272,20 +306,20 @@ type LeaseStateType string const ( LeaseStateTypeAvailable LeaseStateType = "available" - LeaseStateTypeLeased LeaseStateType = "leased" - LeaseStateTypeExpired LeaseStateType = "expired" LeaseStateTypeBreaking LeaseStateType = "breaking" LeaseStateTypeBroken LeaseStateType = "broken" + LeaseStateTypeExpired LeaseStateType = "expired" + LeaseStateTypeLeased LeaseStateType = "leased" ) // PossibleLeaseStateTypeValues returns the possible values for the LeaseStateType const type. func PossibleLeaseStateTypeValues() []LeaseStateType { return []LeaseStateType{ LeaseStateTypeAvailable, - LeaseStateTypeLeased, - LeaseStateTypeExpired, LeaseStateTypeBreaking, LeaseStateTypeBroken, + LeaseStateTypeExpired, + LeaseStateTypeLeased, } } @@ -309,14 +343,14 @@ type ListBlobsIncludeItem string const ( ListBlobsIncludeItemCopy ListBlobsIncludeItem = "copy" ListBlobsIncludeItemDeleted ListBlobsIncludeItem = "deleted" - ListBlobsIncludeItemMetadata ListBlobsIncludeItem = "metadata" - ListBlobsIncludeItemSnapshots ListBlobsIncludeItem = "snapshots" - ListBlobsIncludeItemUncommittedblobs ListBlobsIncludeItem = "uncommittedblobs" - ListBlobsIncludeItemVersions ListBlobsIncludeItem = "versions" - ListBlobsIncludeItemTags ListBlobsIncludeItem = "tags" + ListBlobsIncludeItemDeletedwithversions ListBlobsIncludeItem = "deletedwithversions" ListBlobsIncludeItemImmutabilitypolicy ListBlobsIncludeItem = "immutabilitypolicy" ListBlobsIncludeItemLegalhold ListBlobsIncludeItem = "legalhold" - ListBlobsIncludeItemDeletedwithversions ListBlobsIncludeItem = "deletedwithversions" + ListBlobsIncludeItemMetadata ListBlobsIncludeItem = "metadata" + ListBlobsIncludeItemSnapshots ListBlobsIncludeItem = "snapshots" + ListBlobsIncludeItemTags ListBlobsIncludeItem = "tags" + ListBlobsIncludeItemUncommittedblobs ListBlobsIncludeItem = "uncommittedblobs" + ListBlobsIncludeItemVersions ListBlobsIncludeItem = "versions" ) // PossibleListBlobsIncludeItemValues returns the possible values for the ListBlobsIncludeItem const type. @@ -324,30 +358,30 @@ func PossibleListBlobsIncludeItemValues() []ListBlobsIncludeItem { return []ListBlobsIncludeItem{ ListBlobsIncludeItemCopy, ListBlobsIncludeItemDeleted, - ListBlobsIncludeItemMetadata, - ListBlobsIncludeItemSnapshots, - ListBlobsIncludeItemUncommittedblobs, - ListBlobsIncludeItemVersions, - ListBlobsIncludeItemTags, + ListBlobsIncludeItemDeletedwithversions, ListBlobsIncludeItemImmutabilitypolicy, ListBlobsIncludeItemLegalhold, - ListBlobsIncludeItemDeletedwithversions, + ListBlobsIncludeItemMetadata, + ListBlobsIncludeItemSnapshots, + ListBlobsIncludeItemTags, + ListBlobsIncludeItemUncommittedblobs, + ListBlobsIncludeItemVersions, } } type ListContainersIncludeType string const ( - ListContainersIncludeTypeMetadata ListContainersIncludeType = "metadata" ListContainersIncludeTypeDeleted ListContainersIncludeType = "deleted" + ListContainersIncludeTypeMetadata ListContainersIncludeType = "metadata" ListContainersIncludeTypeSystem ListContainersIncludeType = "system" ) // PossibleListContainersIncludeTypeValues returns the possible values for the ListContainersIncludeType const type. func PossibleListContainersIncludeTypeValues() []ListContainersIncludeType { return []ListContainersIncludeType{ - ListContainersIncludeTypeMetadata, ListContainersIncludeTypeDeleted, + ListContainersIncludeTypeMetadata, ListContainersIncludeTypeSystem, } } @@ -404,18 +438,18 @@ func PossiblePublicAccessTypeValues() []PublicAccessType { type QueryFormatType string const ( + QueryFormatTypeArrow QueryFormatType = "arrow" QueryFormatTypeDelimited QueryFormatType = "delimited" QueryFormatTypeJSON QueryFormatType = "json" - QueryFormatTypeArrow QueryFormatType = "arrow" QueryFormatTypeParquet QueryFormatType = "parquet" ) // PossibleQueryFormatTypeValues returns the possible values for the QueryFormatType const type. func PossibleQueryFormatTypeValues() []QueryFormatType { return []QueryFormatType{ + QueryFormatTypeArrow, QueryFormatTypeDelimited, QueryFormatTypeJSON, - QueryFormatTypeArrow, QueryFormatTypeParquet, } } @@ -440,38 +474,38 @@ func PossibleRehydratePriorityValues() []RehydratePriority { type SKUName string const ( - SKUNameStandardLRS SKUName = "Standard_LRS" + SKUNamePremiumLRS SKUName = "Premium_LRS" SKUNameStandardGRS SKUName = "Standard_GRS" + SKUNameStandardLRS SKUName = "Standard_LRS" SKUNameStandardRAGRS SKUName = "Standard_RAGRS" SKUNameStandardZRS SKUName = "Standard_ZRS" - SKUNamePremiumLRS SKUName = "Premium_LRS" ) // PossibleSKUNameValues returns the possible values for the SKUName const type. func PossibleSKUNameValues() []SKUName { return []SKUName{ - SKUNameStandardLRS, + SKUNamePremiumLRS, SKUNameStandardGRS, + SKUNameStandardLRS, SKUNameStandardRAGRS, SKUNameStandardZRS, - SKUNamePremiumLRS, } } type SequenceNumberActionType string const ( + SequenceNumberActionTypeIncrement SequenceNumberActionType = "increment" SequenceNumberActionTypeMax SequenceNumberActionType = "max" SequenceNumberActionTypeUpdate SequenceNumberActionType = "update" - SequenceNumberActionTypeIncrement SequenceNumberActionType = "increment" ) // PossibleSequenceNumberActionTypeValues returns the possible values for the SequenceNumberActionType const type. func PossibleSequenceNumberActionTypeValues() []SequenceNumberActionType { return []SequenceNumberActionType{ + SequenceNumberActionTypeIncrement, SequenceNumberActionTypeMax, SequenceNumberActionTypeUpdate, - SequenceNumberActionTypeIncrement, } } diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_container_client.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_container_client.go index 5fcac5135..8d325a3a5 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_container_client.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_container_client.go @@ -25,28 +25,17 @@ import ( ) // ContainerClient contains the methods for the Container group. -// Don't use this type directly, use NewContainerClient() instead. +// Don't use this type directly, use a constructor function instead. type ContainerClient struct { + internal *azcore.Client endpoint string - pl runtime.Pipeline -} - -// NewContainerClient creates a new instance of ContainerClient with the specified values. -// - endpoint - The URL of the service account, container, or blob that is the target of the desired operation. -// - pl - the pipeline used for sending requests and handling responses. -func NewContainerClient(endpoint string, pl runtime.Pipeline) *ContainerClient { - client := &ContainerClient{ - endpoint: endpoint, - pl: pl, - } - return client } // AcquireLease - [Update] establishes and manages a lock on a container for delete operations. The lock duration can be 15 // to 60 seconds, or can be infinite // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - duration - Specifies the duration of the lease, in seconds, or negative one (-1) for a lease that never expires. A non-infinite // lease can be between 15 and 60 seconds. A lease duration cannot be changed using // renew or change. @@ -57,7 +46,7 @@ func (client *ContainerClient) AcquireLease(ctx context.Context, duration int32, if err != nil { return ContainerClientAcquireLeaseResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return ContainerClientAcquireLeaseResponse{}, err } @@ -91,7 +80,7 @@ func (client *ContainerClient) acquireLeaseCreateRequest(ctx context.Context, du if modifiedAccessConditions != nil && modifiedAccessConditions.IfUnmodifiedSince != nil { req.Raw().Header["If-Unmodified-Since"] = []string{(*modifiedAccessConditions.IfUnmodifiedSince).In(gmt).Format(time.RFC1123)} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -138,7 +127,7 @@ func (client *ContainerClient) acquireLeaseHandleResponse(resp *http.Response) ( // to 60 seconds, or can be infinite // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - options - ContainerClientBreakLeaseOptions contains the optional parameters for the ContainerClient.BreakLease method. // - ModifiedAccessConditions - ModifiedAccessConditions contains a group of parameters for the ContainerClient.Delete method. func (client *ContainerClient) BreakLease(ctx context.Context, options *ContainerClientBreakLeaseOptions, modifiedAccessConditions *ModifiedAccessConditions) (ContainerClientBreakLeaseResponse, error) { @@ -146,7 +135,7 @@ func (client *ContainerClient) BreakLease(ctx context.Context, options *Containe if err != nil { return ContainerClientBreakLeaseResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return ContainerClientBreakLeaseResponse{}, err } @@ -179,7 +168,7 @@ func (client *ContainerClient) breakLeaseCreateRequest(ctx context.Context, opti if modifiedAccessConditions != nil && modifiedAccessConditions.IfUnmodifiedSince != nil { req.Raw().Header["If-Unmodified-Since"] = []string{(*modifiedAccessConditions.IfUnmodifiedSince).In(gmt).Format(time.RFC1123)} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -231,7 +220,7 @@ func (client *ContainerClient) breakLeaseHandleResponse(resp *http.Response) (Co // to 60 seconds, or can be infinite // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - leaseID - Specifies the current lease ID on the resource. // - proposedLeaseID - Proposed lease ID, in a GUID string format. The Blob service returns 400 (Invalid request) if the proposed // lease ID is not in the correct format. See Guid Constructor (String) for a list of valid GUID @@ -243,7 +232,7 @@ func (client *ContainerClient) ChangeLease(ctx context.Context, leaseID string, if err != nil { return ContainerClientChangeLeaseResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return ContainerClientChangeLeaseResponse{}, err } @@ -275,7 +264,7 @@ func (client *ContainerClient) changeLeaseCreateRequest(ctx context.Context, lea if modifiedAccessConditions != nil && modifiedAccessConditions.IfUnmodifiedSince != nil { req.Raw().Header["If-Unmodified-Since"] = []string{(*modifiedAccessConditions.IfUnmodifiedSince).In(gmt).Format(time.RFC1123)} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -322,7 +311,7 @@ func (client *ContainerClient) changeLeaseHandleResponse(resp *http.Response) (C // fails // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - options - ContainerClientCreateOptions contains the optional parameters for the ContainerClient.Create method. // - ContainerCPKScopeInfo - ContainerCPKScopeInfo contains a group of parameters for the ContainerClient.Create method. func (client *ContainerClient) Create(ctx context.Context, options *ContainerClientCreateOptions, containerCPKScopeInfo *ContainerCPKScopeInfo) (ContainerClientCreateResponse, error) { @@ -330,7 +319,7 @@ func (client *ContainerClient) Create(ctx context.Context, options *ContainerCli if err != nil { return ContainerClientCreateResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return ContainerClientCreateResponse{}, err } @@ -362,7 +351,7 @@ func (client *ContainerClient) createCreateRequest(ctx context.Context, options if options != nil && options.Access != nil { req.Raw().Header["x-ms-blob-public-access"] = []string{string(*options.Access)} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -412,7 +401,7 @@ func (client *ContainerClient) createHandleResponse(resp *http.Response) (Contai // deleted during garbage collection // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - options - ContainerClientDeleteOptions contains the optional parameters for the ContainerClient.Delete method. // - LeaseAccessConditions - LeaseAccessConditions contains a group of parameters for the ContainerClient.GetProperties method. // - ModifiedAccessConditions - ModifiedAccessConditions contains a group of parameters for the ContainerClient.Delete method. @@ -421,7 +410,7 @@ func (client *ContainerClient) Delete(ctx context.Context, options *ContainerCli if err != nil { return ContainerClientDeleteResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return ContainerClientDeleteResponse{}, err } @@ -452,7 +441,7 @@ func (client *ContainerClient) deleteCreateRequest(ctx context.Context, options if modifiedAccessConditions != nil && modifiedAccessConditions.IfUnmodifiedSince != nil { req.Raw().Header["If-Unmodified-Since"] = []string{(*modifiedAccessConditions.IfUnmodifiedSince).In(gmt).Format(time.RFC1123)} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -482,11 +471,89 @@ func (client *ContainerClient) deleteHandleResponse(resp *http.Response) (Contai return result, nil } +// FilterBlobs - The Filter Blobs operation enables callers to list blobs in a container whose tags match a given search expression. +// Filter blobs searches within the given container. +// If the operation fails it returns an *azcore.ResponseError type. +// +// Generated from API version 2023-08-03 +// - where - Filters the results to return only to return only blobs whose tags match the specified expression. +// - options - ContainerClientFilterBlobsOptions contains the optional parameters for the ContainerClient.FilterBlobs method. +func (client *ContainerClient) FilterBlobs(ctx context.Context, where string, options *ContainerClientFilterBlobsOptions) (ContainerClientFilterBlobsResponse, error) { + req, err := client.filterBlobsCreateRequest(ctx, where, options) + if err != nil { + return ContainerClientFilterBlobsResponse{}, err + } + resp, err := client.internal.Pipeline().Do(req) + if err != nil { + return ContainerClientFilterBlobsResponse{}, err + } + if !runtime.HasStatusCode(resp, http.StatusOK) { + return ContainerClientFilterBlobsResponse{}, runtime.NewResponseError(resp) + } + return client.filterBlobsHandleResponse(resp) +} + +// filterBlobsCreateRequest creates the FilterBlobs request. +func (client *ContainerClient) filterBlobsCreateRequest(ctx context.Context, where string, options *ContainerClientFilterBlobsOptions) (*policy.Request, error) { + req, err := runtime.NewRequest(ctx, http.MethodGet, client.endpoint) + if err != nil { + return nil, err + } + reqQP := req.Raw().URL.Query() + reqQP.Set("restype", "container") + reqQP.Set("comp", "blobs") + if options != nil && options.Timeout != nil { + reqQP.Set("timeout", strconv.FormatInt(int64(*options.Timeout), 10)) + } + reqQP.Set("where", where) + if options != nil && options.Marker != nil { + reqQP.Set("marker", *options.Marker) + } + if options != nil && options.Maxresults != nil { + reqQP.Set("maxresults", strconv.FormatInt(int64(*options.Maxresults), 10)) + } + if options != nil && options.Include != nil { + reqQP.Set("include", strings.Join(strings.Fields(strings.Trim(fmt.Sprint(options.Include), "[]")), ",")) + } + req.Raw().URL.RawQuery = reqQP.Encode() + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} + if options != nil && options.RequestID != nil { + req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} + } + req.Raw().Header["Accept"] = []string{"application/xml"} + return req, nil +} + +// filterBlobsHandleResponse handles the FilterBlobs response. +func (client *ContainerClient) filterBlobsHandleResponse(resp *http.Response) (ContainerClientFilterBlobsResponse, error) { + result := ContainerClientFilterBlobsResponse{} + if val := resp.Header.Get("x-ms-client-request-id"); val != "" { + result.ClientRequestID = &val + } + if val := resp.Header.Get("x-ms-request-id"); val != "" { + result.RequestID = &val + } + if val := resp.Header.Get("x-ms-version"); val != "" { + result.Version = &val + } + if val := resp.Header.Get("Date"); val != "" { + date, err := time.Parse(time.RFC1123, val) + if err != nil { + return ContainerClientFilterBlobsResponse{}, err + } + result.Date = &date + } + if err := runtime.UnmarshalAsXML(resp, &result.FilterBlobSegment); err != nil { + return ContainerClientFilterBlobsResponse{}, err + } + return result, nil +} + // GetAccessPolicy - gets the permissions for the specified container. The permissions indicate whether container data may // be accessed publicly. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - options - ContainerClientGetAccessPolicyOptions contains the optional parameters for the ContainerClient.GetAccessPolicy // method. // - LeaseAccessConditions - LeaseAccessConditions contains a group of parameters for the ContainerClient.GetProperties method. @@ -495,7 +562,7 @@ func (client *ContainerClient) GetAccessPolicy(ctx context.Context, options *Con if err != nil { return ContainerClientGetAccessPolicyResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return ContainerClientGetAccessPolicyResponse{}, err } @@ -521,7 +588,7 @@ func (client *ContainerClient) getAccessPolicyCreateRequest(ctx context.Context, if leaseAccessConditions != nil && leaseAccessConditions.LeaseID != nil { req.Raw().Header["x-ms-lease-id"] = []string{*leaseAccessConditions.LeaseID} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -570,7 +637,7 @@ func (client *ContainerClient) getAccessPolicyHandleResponse(resp *http.Response // GetAccountInfo - Returns the sku name and account kind // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - options - ContainerClientGetAccountInfoOptions contains the optional parameters for the ContainerClient.GetAccountInfo // method. func (client *ContainerClient) GetAccountInfo(ctx context.Context, options *ContainerClientGetAccountInfoOptions) (ContainerClientGetAccountInfoResponse, error) { @@ -578,7 +645,7 @@ func (client *ContainerClient) GetAccountInfo(ctx context.Context, options *Cont if err != nil { return ContainerClientGetAccountInfoResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return ContainerClientGetAccountInfoResponse{}, err } @@ -598,7 +665,7 @@ func (client *ContainerClient) getAccountInfoCreateRequest(ctx context.Context, reqQP.Set("restype", "account") reqQP.Set("comp", "properties") req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} req.Raw().Header["Accept"] = []string{"application/xml"} return req, nil } @@ -635,7 +702,7 @@ func (client *ContainerClient) getAccountInfoHandleResponse(resp *http.Response) // does not include the container's list of blobs // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - options - ContainerClientGetPropertiesOptions contains the optional parameters for the ContainerClient.GetProperties method. // - LeaseAccessConditions - LeaseAccessConditions contains a group of parameters for the ContainerClient.GetProperties method. func (client *ContainerClient) GetProperties(ctx context.Context, options *ContainerClientGetPropertiesOptions, leaseAccessConditions *LeaseAccessConditions) (ContainerClientGetPropertiesResponse, error) { @@ -643,7 +710,7 @@ func (client *ContainerClient) GetProperties(ctx context.Context, options *Conta if err != nil { return ContainerClientGetPropertiesResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return ContainerClientGetPropertiesResponse{}, err } @@ -668,7 +735,7 @@ func (client *ContainerClient) getPropertiesCreateRequest(ctx context.Context, o if leaseAccessConditions != nil && leaseAccessConditions.LeaseID != nil { req.Raw().Header["x-ms-lease-id"] = []string{*leaseAccessConditions.LeaseID} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -761,7 +828,7 @@ func (client *ContainerClient) getPropertiesHandleResponse(resp *http.Response) // NewListBlobFlatSegmentPager - [Update] The List Blobs operation returns a list of the blobs under the specified container // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - options - ContainerClientListBlobFlatSegmentOptions contains the optional parameters for the ContainerClient.NewListBlobFlatSegmentPager // method. // @@ -790,7 +857,7 @@ func (client *ContainerClient) ListBlobFlatSegmentCreateRequest(ctx context.Cont reqQP.Set("timeout", strconv.FormatInt(int64(*options.Timeout), 10)) } req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -828,7 +895,7 @@ func (client *ContainerClient) ListBlobFlatSegmentHandleResponse(resp *http.Resp // NewListBlobHierarchySegmentPager - [Update] The List Blobs operation returns a list of the blobs under the specified container // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - delimiter - When the request includes this parameter, the operation returns a BlobPrefix element in the response body that // acts as a placeholder for all blobs whose names begin with the same substring up to the // appearance of the delimiter character. The delimiter may be a single character or a string. @@ -850,7 +917,7 @@ func (client *ContainerClient) NewListBlobHierarchySegmentPager(delimiter string if err != nil { return ContainerClientListBlobHierarchySegmentResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return ContainerClientListBlobHierarchySegmentResponse{}, err } @@ -888,7 +955,7 @@ func (client *ContainerClient) ListBlobHierarchySegmentCreateRequest(ctx context reqQP.Set("timeout", strconv.FormatInt(int64(*options.Timeout), 10)) } req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -928,7 +995,7 @@ func (client *ContainerClient) ListBlobHierarchySegmentHandleResponse(resp *http // to 60 seconds, or can be infinite // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - leaseID - Specifies the current lease ID on the resource. // - options - ContainerClientReleaseLeaseOptions contains the optional parameters for the ContainerClient.ReleaseLease method. // - ModifiedAccessConditions - ModifiedAccessConditions contains a group of parameters for the ContainerClient.Delete method. @@ -937,7 +1004,7 @@ func (client *ContainerClient) ReleaseLease(ctx context.Context, leaseID string, if err != nil { return ContainerClientReleaseLeaseResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return ContainerClientReleaseLeaseResponse{}, err } @@ -968,7 +1035,7 @@ func (client *ContainerClient) releaseLeaseCreateRequest(ctx context.Context, le if modifiedAccessConditions != nil && modifiedAccessConditions.IfUnmodifiedSince != nil { req.Raw().Header["If-Unmodified-Since"] = []string{(*modifiedAccessConditions.IfUnmodifiedSince).In(gmt).Format(time.RFC1123)} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -1011,7 +1078,7 @@ func (client *ContainerClient) releaseLeaseHandleResponse(resp *http.Response) ( // Rename - Renames an existing container. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - sourceContainerName - Required. Specifies the name of the container to rename. // - options - ContainerClientRenameOptions contains the optional parameters for the ContainerClient.Rename method. func (client *ContainerClient) Rename(ctx context.Context, sourceContainerName string, options *ContainerClientRenameOptions) (ContainerClientRenameResponse, error) { @@ -1019,7 +1086,7 @@ func (client *ContainerClient) Rename(ctx context.Context, sourceContainerName s if err != nil { return ContainerClientRenameResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return ContainerClientRenameResponse{}, err } @@ -1042,7 +1109,7 @@ func (client *ContainerClient) renameCreateRequest(ctx context.Context, sourceCo reqQP.Set("timeout", strconv.FormatInt(int64(*options.Timeout), 10)) } req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -1080,7 +1147,7 @@ func (client *ContainerClient) renameHandleResponse(resp *http.Response) (Contai // to 60 seconds, or can be infinite // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - leaseID - Specifies the current lease ID on the resource. // - options - ContainerClientRenewLeaseOptions contains the optional parameters for the ContainerClient.RenewLease method. // - ModifiedAccessConditions - ModifiedAccessConditions contains a group of parameters for the ContainerClient.Delete method. @@ -1089,7 +1156,7 @@ func (client *ContainerClient) RenewLease(ctx context.Context, leaseID string, o if err != nil { return ContainerClientRenewLeaseResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return ContainerClientRenewLeaseResponse{}, err } @@ -1120,7 +1187,7 @@ func (client *ContainerClient) renewLeaseCreateRequest(ctx context.Context, leas if modifiedAccessConditions != nil && modifiedAccessConditions.IfUnmodifiedSince != nil { req.Raw().Header["If-Unmodified-Since"] = []string{(*modifiedAccessConditions.IfUnmodifiedSince).In(gmt).Format(time.RFC1123)} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -1166,14 +1233,14 @@ func (client *ContainerClient) renewLeaseHandleResponse(resp *http.Response) (Co // Restore - Restores a previously-deleted container. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - options - ContainerClientRestoreOptions contains the optional parameters for the ContainerClient.Restore method. func (client *ContainerClient) Restore(ctx context.Context, options *ContainerClientRestoreOptions) (ContainerClientRestoreResponse, error) { req, err := client.restoreCreateRequest(ctx, options) if err != nil { return ContainerClientRestoreResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return ContainerClientRestoreResponse{}, err } @@ -1196,7 +1263,7 @@ func (client *ContainerClient) restoreCreateRequest(ctx context.Context, options reqQP.Set("timeout", strconv.FormatInt(int64(*options.Timeout), 10)) } req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -1236,7 +1303,7 @@ func (client *ContainerClient) restoreHandleResponse(resp *http.Response) (Conta // may be accessed publicly. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - containerACL - the acls for the container // - options - ContainerClientSetAccessPolicyOptions contains the optional parameters for the ContainerClient.SetAccessPolicy // method. @@ -1247,7 +1314,7 @@ func (client *ContainerClient) SetAccessPolicy(ctx context.Context, containerACL if err != nil { return ContainerClientSetAccessPolicyResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return ContainerClientSetAccessPolicyResponse{}, err } @@ -1282,7 +1349,7 @@ func (client *ContainerClient) setAccessPolicyCreateRequest(ctx context.Context, if modifiedAccessConditions != nil && modifiedAccessConditions.IfUnmodifiedSince != nil { req.Raw().Header["If-Unmodified-Since"] = []string{(*modifiedAccessConditions.IfUnmodifiedSince).In(gmt).Format(time.RFC1123)} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -1291,7 +1358,10 @@ func (client *ContainerClient) setAccessPolicyCreateRequest(ctx context.Context, XMLName xml.Name `xml:"SignedIdentifiers"` ContainerACL *[]*SignedIdentifier `xml:"SignedIdentifier"` } - return req, runtime.MarshalAsXML(req, wrapper{ContainerACL: &containerACL}) + if err := runtime.MarshalAsXML(req, wrapper{ContainerACL: &containerACL}); err != nil { + return nil, err + } + return req, nil } // setAccessPolicyHandleResponse handles the SetAccessPolicy response. @@ -1329,7 +1399,7 @@ func (client *ContainerClient) setAccessPolicyHandleResponse(resp *http.Response // SetMetadata - operation sets one or more user-defined name-value pairs for the specified container. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - options - ContainerClientSetMetadataOptions contains the optional parameters for the ContainerClient.SetMetadata method. // - LeaseAccessConditions - LeaseAccessConditions contains a group of parameters for the ContainerClient.GetProperties method. // - ModifiedAccessConditions - ModifiedAccessConditions contains a group of parameters for the ContainerClient.Delete method. @@ -1338,7 +1408,7 @@ func (client *ContainerClient) SetMetadata(ctx context.Context, options *Contain if err != nil { return ContainerClientSetMetadataResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return ContainerClientSetMetadataResponse{}, err } @@ -1374,7 +1444,7 @@ func (client *ContainerClient) setMetadataCreateRequest(ctx context.Context, opt if modifiedAccessConditions != nil && modifiedAccessConditions.IfModifiedSince != nil { req.Raw().Header["If-Modified-Since"] = []string{(*modifiedAccessConditions.IfModifiedSince).In(gmt).Format(time.RFC1123)} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -1417,7 +1487,7 @@ func (client *ContainerClient) setMetadataHandleResponse(resp *http.Response) (C // SubmitBatch - The Batch operation allows multiple API calls to be embedded into a single HTTP request. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - contentLength - The length of the request. // - multipartContentType - Required. The value of this header must be multipart/mixed with a batch boundary. Example header // value: multipart/mixed; boundary=batch_ @@ -1428,7 +1498,7 @@ func (client *ContainerClient) SubmitBatch(ctx context.Context, contentLength in if err != nil { return ContainerClientSubmitBatchResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return ContainerClientSubmitBatchResponse{}, err } @@ -1454,12 +1524,15 @@ func (client *ContainerClient) submitBatchCreateRequest(ctx context.Context, con runtime.SkipBodyDownload(req) req.Raw().Header["Content-Length"] = []string{strconv.FormatInt(contentLength, 10)} req.Raw().Header["Content-Type"] = []string{multipartContentType} - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } req.Raw().Header["Accept"] = []string{"application/xml"} - return req, req.SetBody(body, multipartContentType) + if err := req.SetBody(body, multipartContentType); err != nil { + return nil, err + } + return req, nil } // submitBatchHandleResponse handles the SubmitBatch response. diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_models.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_models.go index 022807f53..1fed5f630 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_models.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_models.go @@ -181,6 +181,8 @@ type BlobClientCopyFromURLOptions struct { BlobTagsString *string // Only Bearer type is supported. Credentials should be a valid OAuth access token to copy source. CopySourceAuthorization *string + // Optional, default 'replace'. Indicates if source tags should be copied or replaced with the tags specified by x-ms-tags. + CopySourceTags *BlobCopySourceTags // Specifies the date time when the blobs immutability policy is set to expire. ImmutabilityPolicyExpiry *time.Time // Specifies the immutability policy mode to set on the blob. @@ -554,6 +556,14 @@ type BlobItem struct { VersionID *string `xml:"VersionId"` } +type BlobName struct { + // The name of the blob. + Content *string `xml:",chardata"` + + // Indicates if the blob name is encoded. + Encoded *bool `xml:"Encoded,attr"` +} + type BlobPrefix struct { // REQUIRED Name *string `xml:"Name"` @@ -689,6 +699,8 @@ type BlockBlobClientPutBlobFromURLOptions struct { CopySourceAuthorization *string // Optional, default is true. Indicates if properties from the source blob should be copied. CopySourceBlobProperties *bool + // Optional, default 'replace'. Indicates if source tags should be copied or replaced with the tags specified by x-ms-tags. + CopySourceTags *BlobCopySourceTags // Optional. Specifies a user-defined name-value pair associated with the blob. If no name-value pairs are specified, the // operation will copy the metadata from the source blob or file to the destination // blob. If one or more name-value pairs are specified, the destination blob is created with the specified metadata, and metadata @@ -767,6 +779,8 @@ type BlockBlobClientUploadOptions struct { // The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. // [https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/setting-timeouts-for-blob-service-operations] Timeout *int32 + // Specify the transactional crc64 for the body, to be validated by the service. + TransactionalContentCRC64 []byte // Specify the transactional md5 for the body, to be validated by the service. TransactionalContentMD5 []byte } @@ -860,6 +874,30 @@ type ContainerClientDeleteOptions struct { Timeout *int32 } +// ContainerClientFilterBlobsOptions contains the optional parameters for the ContainerClient.FilterBlobs method. +type ContainerClientFilterBlobsOptions struct { + // Include this parameter to specify one or more datasets to include in the response. + Include []FilterBlobsIncludeItem + // A string value that identifies the portion of the list of containers to be returned with the next listing operation. The + // operation returns the NextMarker value within the response body if the listing + // operation did not return all containers remaining to be listed with the current page. The NextMarker value can be used + // as the value for the marker parameter in a subsequent call to request the next + // page of list items. The marker value is opaque to the client. + Marker *string + // Specifies the maximum number of containers to return. If the request does not specify maxresults, or specifies a value + // greater than 5000, the server will return up to 5000 items. Note that if the + // listing operation crosses a partition boundary, then the service will return a continuation token for retrieving the remainder + // of the results. For this reason, it is possible that the service will + // return fewer results than specified by maxresults, or than the default of 5000. + Maxresults *int32 + // Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the analytics logs when storage + // analytics logging is enabled. + RequestID *string + // The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + // [https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/setting-timeouts-for-blob-service-operations] + Timeout *int32 +} + // ContainerClientGetAccessPolicyOptions contains the optional parameters for the ContainerClient.GetAccessPolicy method. type ContainerClientGetAccessPolicyOptions struct { // Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the analytics logs when storage @@ -1140,10 +1178,12 @@ type FilterBlobItem struct { ContainerName *string `xml:"ContainerName"` // REQUIRED - Name *string `xml:"Name"` + Name *string `xml:"Name"` + IsCurrentVersion *bool `xml:"IsCurrentVersion"` // Blob tags - Tags *BlobTags `xml:"Tags"` + Tags *BlobTags `xml:"Tags"` + VersionID *string `xml:"VersionId"` } // FilterBlobSegment - The result of a Filter Blobs API call @@ -1533,6 +1573,8 @@ type SequenceNumberAccessConditions struct { // ServiceClientFilterBlobsOptions contains the optional parameters for the ServiceClient.FilterBlobs method. type ServiceClientFilterBlobsOptions struct { + // Include this parameter to specify one or more datasets to include in the response. + Include []FilterBlobsIncludeItem // A string value that identifies the portion of the list of containers to be returned with the next listing operation. The // operation returns the NextMarker value within the response body if the listing // operation did not return all containers remaining to be listed with the current page. The NextMarker value can be used @@ -1674,7 +1716,7 @@ type StaticWebsite struct { } type StorageError struct { - Message *string `json:"Message,omitempty"` + Message *string } // StorageServiceProperties - Storage Service Properties. diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_models_serde.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_models_serde.go index e5b6cda2b..dc5dba103 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_models_serde.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_models_serde.go @@ -101,24 +101,6 @@ func (b BlobHierarchyListSegment) MarshalXML(enc *xml.Encoder, start xml.StartEl return enc.EncodeElement(aux, start) } -// UnmarshalXML implements the xml.Unmarshaller interface for type BlobItem. -func (b *BlobItem) UnmarshalXML(dec *xml.Decoder, start xml.StartElement) error { - type alias BlobItem - aux := &struct { - *alias - Metadata additionalProperties `xml:"Metadata"` - OrMetadata additionalProperties `xml:"OrMetadata"` - }{ - alias: (*alias)(b), - } - if err := dec.DecodeElement(aux, &start); err != nil { - return err - } - b.Metadata = (map[string]*string)(aux.Metadata) - b.OrMetadata = (map[string]*string)(aux.OrMetadata) - return nil -} - // MarshalXML implements the xml.Marshaller interface for type BlobProperties. func (b BlobProperties) MarshalXML(enc *xml.Encoder, start xml.StartElement) error { type alias BlobProperties @@ -470,6 +452,16 @@ func populate(m map[string]any, k string, v any) { } } +func populateAny(m map[string]any, k string, v any) { + if v == nil { + return + } else if azcore.IsNullValue(v) { + m[k] = nil + } else { + m[k] = v + } +} + func unpopulate(data json.RawMessage, fn string, v any) error { if data == nil { return nil diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_pageblob_client.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_pageblob_client.go index b209e99f0..b41644c99 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_pageblob_client.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_pageblob_client.go @@ -22,27 +22,16 @@ import ( ) // PageBlobClient contains the methods for the PageBlob group. -// Don't use this type directly, use NewPageBlobClient() instead. +// Don't use this type directly, use a constructor function instead. type PageBlobClient struct { + internal *azcore.Client endpoint string - pl runtime.Pipeline -} - -// NewPageBlobClient creates a new instance of PageBlobClient with the specified values. -// - endpoint - The URL of the service account, container, or blob that is the target of the desired operation. -// - pl - the pipeline used for sending requests and handling responses. -func NewPageBlobClient(endpoint string, pl runtime.Pipeline) *PageBlobClient { - client := &PageBlobClient{ - endpoint: endpoint, - pl: pl, - } - return client } // ClearPages - The Clear Pages operation clears a set of pages from a page blob // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - contentLength - The length of the request. // - options - PageBlobClientClearPagesOptions contains the optional parameters for the PageBlobClient.ClearPages method. // - LeaseAccessConditions - LeaseAccessConditions contains a group of parameters for the ContainerClient.GetProperties method. @@ -56,7 +45,7 @@ func (client *PageBlobClient) ClearPages(ctx context.Context, contentLength int6 if err != nil { return PageBlobClientClearPagesResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return PageBlobClientClearPagesResponse{}, err } @@ -122,7 +111,7 @@ func (client *PageBlobClient) clearPagesCreateRequest(ctx context.Context, conte if modifiedAccessConditions != nil && modifiedAccessConditions.IfTags != nil { req.Raw().Header["x-ms-if-tags"] = []string{*modifiedAccessConditions.IfTags} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -190,7 +179,7 @@ func (client *PageBlobClient) clearPagesHandleResponse(resp *http.Response) (Pag // 2016-05-31. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - copySource - Specifies the name of the source page blob snapshot. This value is a URL of up to 2 KB in length that specifies // a page blob snapshot. The value should be URL-encoded as it would appear in a request // URI. The source blob must either be public or must be authenticated via a shared access signature. @@ -202,7 +191,7 @@ func (client *PageBlobClient) CopyIncremental(ctx context.Context, copySource st if err != nil { return PageBlobClientCopyIncrementalResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return PageBlobClientCopyIncrementalResponse{}, err } @@ -240,7 +229,7 @@ func (client *PageBlobClient) copyIncrementalCreateRequest(ctx context.Context, req.Raw().Header["x-ms-if-tags"] = []string{*modifiedAccessConditions.IfTags} } req.Raw().Header["x-ms-copy-source"] = []string{copySource} - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -289,7 +278,7 @@ func (client *PageBlobClient) copyIncrementalHandleResponse(resp *http.Response) // Create - The Create operation creates a new page blob. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - contentLength - The length of the request. // - blobContentLength - This header specifies the maximum size for the page blob, up to 1 TB. The page blob size must be aligned // to a 512-byte boundary. @@ -304,7 +293,7 @@ func (client *PageBlobClient) Create(ctx context.Context, contentLength int64, b if err != nil { return PageBlobClientCreateResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return PageBlobClientCreateResponse{}, err } @@ -389,7 +378,7 @@ func (client *PageBlobClient) createCreateRequest(ctx context.Context, contentLe if options != nil && options.BlobSequenceNumber != nil { req.Raw().Header["x-ms-blob-sequence-number"] = []string{strconv.FormatInt(*options.BlobSequenceNumber, 10)} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -467,7 +456,7 @@ func (client *PageBlobClient) createHandleResponse(resp *http.Response) (PageBlo // NewGetPageRangesPager - The Get Page Ranges operation returns the list of valid page ranges for a page blob or snapshot // of a page blob // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - options - PageBlobClientGetPageRangesOptions contains the optional parameters for the PageBlobClient.NewGetPageRangesPager // method. // - LeaseAccessConditions - LeaseAccessConditions contains a group of parameters for the ContainerClient.GetProperties method. @@ -488,7 +477,7 @@ func (client *PageBlobClient) NewGetPageRangesPager(options *PageBlobClientGetPa if err != nil { return PageBlobClientGetPageRangesResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return PageBlobClientGetPageRangesResponse{}, err } @@ -542,7 +531,7 @@ func (client *PageBlobClient) GetPageRangesCreateRequest(ctx context.Context, op if modifiedAccessConditions != nil && modifiedAccessConditions.IfTags != nil { req.Raw().Header["x-ms-if-tags"] = []string{*modifiedAccessConditions.IfTags} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -595,7 +584,7 @@ func (client *PageBlobClient) GetPageRangesHandleResponse(resp *http.Response) ( // NewGetPageRangesDiffPager - The Get Page Ranges Diff operation returns the list of valid page ranges for a page blob that // were changed between target blob and previous snapshot. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - options - PageBlobClientGetPageRangesDiffOptions contains the optional parameters for the PageBlobClient.NewGetPageRangesDiffPager // method. // - LeaseAccessConditions - LeaseAccessConditions contains a group of parameters for the ContainerClient.GetProperties method. @@ -616,7 +605,7 @@ func (client *PageBlobClient) NewGetPageRangesDiffPager(options *PageBlobClientG if err != nil { return PageBlobClientGetPageRangesDiffResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return PageBlobClientGetPageRangesDiffResponse{}, err } @@ -676,7 +665,7 @@ func (client *PageBlobClient) GetPageRangesDiffCreateRequest(ctx context.Context if modifiedAccessConditions != nil && modifiedAccessConditions.IfTags != nil { req.Raw().Header["x-ms-if-tags"] = []string{*modifiedAccessConditions.IfTags} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -729,7 +718,7 @@ func (client *PageBlobClient) GetPageRangesDiffHandleResponse(resp *http.Respons // Resize - Resize the Blob // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - blobContentLength - This header specifies the maximum size for the page blob, up to 1 TB. The page blob size must be aligned // to a 512-byte boundary. // - options - PageBlobClientResizeOptions contains the optional parameters for the PageBlobClient.Resize method. @@ -742,7 +731,7 @@ func (client *PageBlobClient) Resize(ctx context.Context, blobContentLength int6 if err != nil { return PageBlobClientResizeResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return PageBlobClientResizeResponse{}, err } @@ -795,7 +784,7 @@ func (client *PageBlobClient) resizeCreateRequest(ctx context.Context, blobConte req.Raw().Header["x-ms-if-tags"] = []string{*modifiedAccessConditions.IfTags} } req.Raw().Header["x-ms-blob-content-length"] = []string{strconv.FormatInt(blobContentLength, 10)} - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -845,7 +834,7 @@ func (client *PageBlobClient) resizeHandleResponse(resp *http.Response) (PageBlo // UpdateSequenceNumber - Update the sequence number of the blob // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - sequenceNumberAction - Required if the x-ms-blob-sequence-number header is set for the request. This property applies to // page blobs only. This property indicates how the service should modify the blob's sequence number // - options - PageBlobClientUpdateSequenceNumberOptions contains the optional parameters for the PageBlobClient.UpdateSequenceNumber @@ -857,7 +846,7 @@ func (client *PageBlobClient) UpdateSequenceNumber(ctx context.Context, sequence if err != nil { return PageBlobClientUpdateSequenceNumberResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return PageBlobClientUpdateSequenceNumberResponse{}, err } @@ -901,7 +890,7 @@ func (client *PageBlobClient) updateSequenceNumberCreateRequest(ctx context.Cont if options != nil && options.BlobSequenceNumber != nil { req.Raw().Header["x-ms-blob-sequence-number"] = []string{strconv.FormatInt(*options.BlobSequenceNumber, 10)} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -951,7 +940,7 @@ func (client *PageBlobClient) updateSequenceNumberHandleResponse(resp *http.Resp // UploadPages - The Upload Pages operation writes a range of pages to a page blob // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - contentLength - The length of the request. // - body - Initial data // - options - PageBlobClientUploadPagesOptions contains the optional parameters for the PageBlobClient.UploadPages method. @@ -966,7 +955,7 @@ func (client *PageBlobClient) UploadPages(ctx context.Context, contentLength int if err != nil { return PageBlobClientUploadPagesResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return PageBlobClientUploadPagesResponse{}, err } @@ -1038,12 +1027,15 @@ func (client *PageBlobClient) uploadPagesCreateRequest(ctx context.Context, cont if modifiedAccessConditions != nil && modifiedAccessConditions.IfTags != nil { req.Raw().Header["x-ms-if-tags"] = []string{*modifiedAccessConditions.IfTags} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } req.Raw().Header["Accept"] = []string{"application/xml"} - return req, req.SetBody(body, "application/octet-stream") + if err := req.SetBody(body, "application/octet-stream"); err != nil { + return nil, err + } + return req, nil } // uploadPagesHandleResponse handles the UploadPages response. @@ -1116,7 +1108,7 @@ func (client *PageBlobClient) uploadPagesHandleResponse(resp *http.Response) (Pa // a URL // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - sourceURL - Specify a URL to the copy source. // - sourceRange - Bytes of source data in the specified range. The length of this range should match the ContentLength header // and x-ms-range/Range destination range header. @@ -1138,7 +1130,7 @@ func (client *PageBlobClient) UploadPagesFromURL(ctx context.Context, sourceURL if err != nil { return PageBlobClientUploadPagesFromURLResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return PageBlobClientUploadPagesFromURLResponse{}, err } @@ -1222,7 +1214,7 @@ func (client *PageBlobClient) uploadPagesFromURLCreateRequest(ctx context.Contex if sourceModifiedAccessConditions != nil && sourceModifiedAccessConditions.SourceIfNoneMatch != nil { req.Raw().Header["x-ms-source-if-none-match"] = []string{string(*sourceModifiedAccessConditions.SourceIfNoneMatch)} } - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_response_types.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_response_types.go index 386c943e4..b52664c93 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_response_types.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_response_types.go @@ -266,6 +266,9 @@ type BlobClientCopyFromURLResponse struct { // ETag contains the information returned from the ETag header response. ETag *azcore.ETag + // EncryptionScope contains the information returned from the x-ms-encryption-scope header response. + EncryptionScope *string + // LastModified contains the information returned from the Last-Modified header response. LastModified *time.Time @@ -407,6 +410,9 @@ type BlobClientDownloadResponse struct { // CopyStatusDescription contains the information returned from the x-ms-copy-status-description header response. CopyStatusDescription *string + // CreationTime contains the information returned from the x-ms-creation-time header response. + CreationTime *time.Time + // Date contains the information returned from the Date header response. Date *time.Time @@ -1310,6 +1316,22 @@ type ContainerClientDeleteResponse struct { Version *string } +// ContainerClientFilterBlobsResponse contains the response from method ContainerClient.FilterBlobs. +type ContainerClientFilterBlobsResponse struct { + FilterBlobSegment + // ClientRequestID contains the information returned from the x-ms-client-request-id header response. + ClientRequestID *string `xml:"ClientRequestID"` + + // Date contains the information returned from the Date header response. + Date *time.Time `xml:"Date"` + + // RequestID contains the information returned from the x-ms-request-id header response. + RequestID *string `xml:"RequestID"` + + // Version contains the information returned from the x-ms-version header response. + Version *string `xml:"Version"` +} + // ContainerClientGetAccessPolicyResponse contains the response from method ContainerClient.GetAccessPolicy. type ContainerClientGetAccessPolicyResponse struct { // BlobPublicAccess contains the information returned from the x-ms-blob-public-access header response. diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_service_client.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_service_client.go index b700211c5..faeefdc53 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_service_client.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/generated/zz_service_client.go @@ -12,6 +12,7 @@ package generated import ( "context" "fmt" + "github.com/Azure/azure-sdk-for-go/sdk/azcore" "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy" "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" "io" @@ -22,21 +23,10 @@ import ( ) // ServiceClient contains the methods for the Service group. -// Don't use this type directly, use NewServiceClient() instead. +// Don't use this type directly, use a constructor function instead. type ServiceClient struct { + internal *azcore.Client endpoint string - pl runtime.Pipeline -} - -// NewServiceClient creates a new instance of ServiceClient with the specified values. -// - endpoint - The URL of the service account, container, or blob that is the target of the desired operation. -// - pl - the pipeline used for sending requests and handling responses. -func NewServiceClient(endpoint string, pl runtime.Pipeline) *ServiceClient { - client := &ServiceClient{ - endpoint: endpoint, - pl: pl, - } - return client } // FilterBlobs - The Filter Blobs operation enables callers to list blobs across all containers whose tags match a given search @@ -44,7 +34,7 @@ func NewServiceClient(endpoint string, pl runtime.Pipeline) *ServiceClient { // be scoped within the expression to a single container. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - where - Filters the results to return only to return only blobs whose tags match the specified expression. // - options - ServiceClientFilterBlobsOptions contains the optional parameters for the ServiceClient.FilterBlobs method. func (client *ServiceClient) FilterBlobs(ctx context.Context, where string, options *ServiceClientFilterBlobsOptions) (ServiceClientFilterBlobsResponse, error) { @@ -52,7 +42,7 @@ func (client *ServiceClient) FilterBlobs(ctx context.Context, where string, opti if err != nil { return ServiceClientFilterBlobsResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return ServiceClientFilterBlobsResponse{}, err } @@ -80,8 +70,11 @@ func (client *ServiceClient) filterBlobsCreateRequest(ctx context.Context, where if options != nil && options.Maxresults != nil { reqQP.Set("maxresults", strconv.FormatInt(int64(*options.Maxresults), 10)) } + if options != nil && options.Include != nil { + reqQP.Set("include", strings.Join(strings.Fields(strings.Trim(fmt.Sprint(options.Include), "[]")), ",")) + } req.Raw().URL.RawQuery = strings.Replace(reqQP.Encode(), "+", "%20", -1) - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -117,14 +110,14 @@ func (client *ServiceClient) filterBlobsHandleResponse(resp *http.Response) (Ser // GetAccountInfo - Returns the sku name and account kind // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - options - ServiceClientGetAccountInfoOptions contains the optional parameters for the ServiceClient.GetAccountInfo method. func (client *ServiceClient) GetAccountInfo(ctx context.Context, options *ServiceClientGetAccountInfoOptions) (ServiceClientGetAccountInfoResponse, error) { req, err := client.getAccountInfoCreateRequest(ctx, options) if err != nil { return ServiceClientGetAccountInfoResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return ServiceClientGetAccountInfoResponse{}, err } @@ -144,7 +137,7 @@ func (client *ServiceClient) getAccountInfoCreateRequest(ctx context.Context, op reqQP.Set("restype", "account") reqQP.Set("comp", "properties") req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} req.Raw().Header["Accept"] = []string{"application/xml"} return req, nil } @@ -188,14 +181,14 @@ func (client *ServiceClient) getAccountInfoHandleResponse(resp *http.Response) ( // CORS (Cross-Origin Resource Sharing) rules. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - options - ServiceClientGetPropertiesOptions contains the optional parameters for the ServiceClient.GetProperties method. func (client *ServiceClient) GetProperties(ctx context.Context, options *ServiceClientGetPropertiesOptions) (ServiceClientGetPropertiesResponse, error) { req, err := client.getPropertiesCreateRequest(ctx, options) if err != nil { return ServiceClientGetPropertiesResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return ServiceClientGetPropertiesResponse{}, err } @@ -218,7 +211,7 @@ func (client *ServiceClient) getPropertiesCreateRequest(ctx context.Context, opt reqQP.Set("timeout", strconv.FormatInt(int64(*options.Timeout), 10)) } req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -248,14 +241,14 @@ func (client *ServiceClient) getPropertiesHandleResponse(resp *http.Response) (S // location endpoint when read-access geo-redundant replication is enabled for the storage account. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - options - ServiceClientGetStatisticsOptions contains the optional parameters for the ServiceClient.GetStatistics method. func (client *ServiceClient) GetStatistics(ctx context.Context, options *ServiceClientGetStatisticsOptions) (ServiceClientGetStatisticsResponse, error) { req, err := client.getStatisticsCreateRequest(ctx, options) if err != nil { return ServiceClientGetStatisticsResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return ServiceClientGetStatisticsResponse{}, err } @@ -278,7 +271,7 @@ func (client *ServiceClient) getStatisticsCreateRequest(ctx context.Context, opt reqQP.Set("timeout", strconv.FormatInt(int64(*options.Timeout), 10)) } req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -315,7 +308,7 @@ func (client *ServiceClient) getStatisticsHandleResponse(resp *http.Response) (S // bearer token authentication. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - keyInfo - Key information // - options - ServiceClientGetUserDelegationKeyOptions contains the optional parameters for the ServiceClient.GetUserDelegationKey // method. @@ -324,7 +317,7 @@ func (client *ServiceClient) GetUserDelegationKey(ctx context.Context, keyInfo K if err != nil { return ServiceClientGetUserDelegationKeyResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return ServiceClientGetUserDelegationKeyResponse{}, err } @@ -347,12 +340,15 @@ func (client *ServiceClient) getUserDelegationKeyCreateRequest(ctx context.Conte reqQP.Set("timeout", strconv.FormatInt(int64(*options.Timeout), 10)) } req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } req.Raw().Header["Accept"] = []string{"application/xml"} - return req, runtime.MarshalAsXML(req, keyInfo) + if err := runtime.MarshalAsXML(req, keyInfo); err != nil { + return nil, err + } + return req, nil } // getUserDelegationKeyHandleResponse handles the GetUserDelegationKey response. @@ -383,7 +379,7 @@ func (client *ServiceClient) getUserDelegationKeyHandleResponse(resp *http.Respo // NewListContainersSegmentPager - The List Containers Segment operation returns a list of the containers under the specified // account // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - options - ServiceClientListContainersSegmentOptions contains the optional parameters for the ServiceClient.NewListContainersSegmentPager // method. // @@ -411,7 +407,7 @@ func (client *ServiceClient) ListContainersSegmentCreateRequest(ctx context.Cont reqQP.Set("timeout", strconv.FormatInt(int64(*options.Timeout), 10)) } req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } @@ -441,7 +437,7 @@ func (client *ServiceClient) ListContainersSegmentHandleResponse(resp *http.Resp // and CORS (Cross-Origin Resource Sharing) rules // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - storageServiceProperties - The StorageService properties. // - options - ServiceClientSetPropertiesOptions contains the optional parameters for the ServiceClient.SetProperties method. func (client *ServiceClient) SetProperties(ctx context.Context, storageServiceProperties StorageServiceProperties, options *ServiceClientSetPropertiesOptions) (ServiceClientSetPropertiesResponse, error) { @@ -449,7 +445,7 @@ func (client *ServiceClient) SetProperties(ctx context.Context, storageServicePr if err != nil { return ServiceClientSetPropertiesResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return ServiceClientSetPropertiesResponse{}, err } @@ -472,12 +468,15 @@ func (client *ServiceClient) setPropertiesCreateRequest(ctx context.Context, sto reqQP.Set("timeout", strconv.FormatInt(int64(*options.Timeout), 10)) } req.Raw().URL.RawQuery = reqQP.Encode() - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } req.Raw().Header["Accept"] = []string{"application/xml"} - return req, runtime.MarshalAsXML(req, storageServiceProperties) + if err := runtime.MarshalAsXML(req, storageServiceProperties); err != nil { + return nil, err + } + return req, nil } // setPropertiesHandleResponse handles the SetProperties response. @@ -498,7 +497,7 @@ func (client *ServiceClient) setPropertiesHandleResponse(resp *http.Response) (S // SubmitBatch - The Batch operation allows multiple API calls to be embedded into a single HTTP request. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 2020-10-02 +// Generated from API version 2023-08-03 // - contentLength - The length of the request. // - multipartContentType - Required. The value of this header must be multipart/mixed with a batch boundary. Example header // value: multipart/mixed; boundary=batch_ @@ -509,7 +508,7 @@ func (client *ServiceClient) SubmitBatch(ctx context.Context, contentLength int6 if err != nil { return ServiceClientSubmitBatchResponse{}, err } - resp, err := client.pl.Do(req) + resp, err := client.internal.Pipeline().Do(req) if err != nil { return ServiceClientSubmitBatchResponse{}, err } @@ -534,12 +533,15 @@ func (client *ServiceClient) submitBatchCreateRequest(ctx context.Context, conte runtime.SkipBodyDownload(req) req.Raw().Header["Content-Length"] = []string{strconv.FormatInt(contentLength, 10)} req.Raw().Header["Content-Type"] = []string{multipartContentType} - req.Raw().Header["x-ms-version"] = []string{"2020-10-02"} + req.Raw().Header["x-ms-version"] = []string{ServiceVersion} if options != nil && options.RequestID != nil { req.Raw().Header["x-ms-client-request-id"] = []string{*options.RequestID} } req.Raw().Header["Accept"] = []string{"application/xml"} - return req, req.SetBody(body, multipartContentType) + if err := req.SetBody(body, multipartContentType); err != nil { + return nil, err + } + return req, nil } // submitBatchHandleResponse handles the SubmitBatch response. diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/shared/batch_transfer.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/shared/batch_transfer.go index ec5541bfb..c1b3a3d27 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/shared/batch_transfer.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/shared/batch_transfer.go @@ -11,10 +11,15 @@ import ( "errors" ) +const ( + DefaultConcurrency = 5 +) + // BatchTransferOptions identifies options used by doBatchTransfer. type BatchTransferOptions struct { TransferSize int64 ChunkSize int64 + NumChunks uint16 Concurrency uint16 Operation func(ctx context.Context, offset int64, chunkSize int64) error OperationName string @@ -28,13 +33,12 @@ func DoBatchTransfer(ctx context.Context, o *BatchTransferOptions) error { } if o.Concurrency == 0 { - o.Concurrency = 5 // default concurrency + o.Concurrency = DefaultConcurrency // default concurrency } // Prepare and do parallel operations. - numChunks := uint16(((o.TransferSize - 1) / o.ChunkSize) + 1) operationChannel := make(chan func() error, o.Concurrency) // Create the channel that release 'concurrency' goroutines concurrently - operationResponseChannel := make(chan error, numChunks) // Holds each response + operationResponseChannel := make(chan error, o.NumChunks) // Holds each response ctx, cancel := context.WithCancel(ctx) defer cancel() @@ -50,10 +54,10 @@ func DoBatchTransfer(ctx context.Context, o *BatchTransferOptions) error { } // Add each chunk's operation to the channel. - for chunkNum := uint16(0); chunkNum < numChunks; chunkNum++ { + for chunkNum := uint16(0); chunkNum < o.NumChunks; chunkNum++ { curChunkSize := o.ChunkSize - if chunkNum == numChunks-1 { // Last chunk + if chunkNum == o.NumChunks-1 { // Last chunk curChunkSize = o.TransferSize - (int64(chunkNum) * o.ChunkSize) // Remove size of all transferred chunks from total } offset := int64(chunkNum) * o.ChunkSize @@ -65,7 +69,7 @@ func DoBatchTransfer(ctx context.Context, o *BatchTransferOptions) error { // Wait for the operations to complete. var firstErr error = nil - for chunkNum := uint16(0); chunkNum < numChunks; chunkNum++ { + for chunkNum := uint16(0); chunkNum < o.NumChunks; chunkNum++ { responseError := <-operationResponseChannel // record the first error (the original error which should cause the other chunks to fail with canceled context) if responseError != nil && firstErr == nil { diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/shared/buffer_manager.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/shared/buffer_manager.go new file mode 100644 index 000000000..e3aa4a488 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/shared/buffer_manager.go @@ -0,0 +1,70 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. + +package shared + +type BufferManager[T ~[]byte] interface { + // Acquire returns the channel that contains the pool of buffers. + Acquire() <-chan T + + // Release releases the buffer back to the pool for reuse/cleanup. + Release(T) + + // Grow grows the number of buffers, up to the predefined max. + // It returns the total number of buffers or an error. + // No error is returned if the number of buffers has reached max. + // This is called only from the reading goroutine. + Grow() (int, error) + + // Free cleans up all buffers. + Free() +} + +// mmbPool implements the bufferManager interface. +// it uses anonymous memory mapped files for buffers. +// don't use this type directly, use newMMBPool() instead. +type mmbPool struct { + buffers chan Mmb + count int + max int + size int64 +} + +func NewMMBPool(maxBuffers int, bufferSize int64) BufferManager[Mmb] { + return &mmbPool{ + buffers: make(chan Mmb, maxBuffers), + max: maxBuffers, + size: bufferSize, + } +} + +func (pool *mmbPool) Acquire() <-chan Mmb { + return pool.buffers +} + +func (pool *mmbPool) Grow() (int, error) { + if pool.count < pool.max { + buffer, err := NewMMB(pool.size) + if err != nil { + return 0, err + } + pool.buffers <- buffer + pool.count++ + } + return pool.count, nil +} + +func (pool *mmbPool) Release(buffer Mmb) { + pool.buffers <- buffer +} + +func (pool *mmbPool) Free() { + for i := 0; i < pool.count; i++ { + buffer := <-pool.buffers + buffer.Delete() + } + pool.count = 0 +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blockblob/mmf_unix.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/shared/mmf_unix.go similarity index 89% rename from vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blockblob/mmf_unix.go rename to vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/shared/mmf_unix.go index 5f7f4d828..cdcadf311 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blockblob/mmf_unix.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/shared/mmf_unix.go @@ -5,7 +5,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -package blockblob +package shared import ( "fmt" @@ -14,20 +14,20 @@ import ( ) // mmb is a memory mapped buffer -type mmb []byte +type Mmb []byte // newMMB creates a new memory mapped buffer with the specified size -func newMMB(size int64) (mmb, error) { +func NewMMB(size int64) (Mmb, error) { prot, flags := syscall.PROT_READ|syscall.PROT_WRITE, syscall.MAP_ANON|syscall.MAP_PRIVATE addr, err := syscall.Mmap(-1, 0, int(size), prot, flags) if err != nil { return nil, os.NewSyscallError("Mmap", err) } - return mmb(addr), nil + return Mmb(addr), nil } // delete cleans up the memory mapped buffer -func (m *mmb) delete() { +func (m *Mmb) Delete() { err := syscall.Munmap(*m) *m = nil if err != nil { diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blockblob/mmf_windows.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/shared/mmf_windows.go similarity index 82% rename from vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blockblob/mmf_windows.go rename to vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/shared/mmf_windows.go index 3f966d65b..ef9fdc2a1 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blockblob/mmf_windows.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/shared/mmf_windows.go @@ -4,7 +4,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -package blockblob +package shared import ( "fmt" @@ -14,11 +14,11 @@ import ( "unsafe" ) -// mmb is a memory mapped buffer -type mmb []byte +// Mmb is a memory mapped buffer +type Mmb []byte -// newMMB creates a new memory mapped buffer with the specified size -func newMMB(size int64) (mmb, error) { +// NewMMB creates a new memory mapped buffer with the specified size +func NewMMB(size int64) (Mmb, error) { const InvalidHandleValue = ^uintptr(0) // -1 prot, access := uint32(syscall.PAGE_READWRITE), uint32(syscall.FILE_MAP_WRITE) @@ -35,7 +35,7 @@ func newMMB(size int64) (mmb, error) { return nil, os.NewSyscallError("MapViewOfFile", err) } - m := mmb{} + m := Mmb{} h := (*reflect.SliceHeader)(unsafe.Pointer(&m)) h.Data = addr h.Len = int(size) @@ -43,10 +43,10 @@ func newMMB(size int64) (mmb, error) { return m, nil } -// delete cleans up the memory mapped buffer -func (m *mmb) delete() { +// Delete cleans up the memory mapped buffer +func (m *Mmb) Delete() { addr := uintptr(unsafe.Pointer(&(([]byte)(*m)[0]))) - *m = mmb{} + *m = Mmb{} err := syscall.UnmapViewOfFile(addr) if err != nil { // if we get here, there is likely memory corruption. diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/shared/shared.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/shared/shared.go index 02936ad03..1de60999e 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/shared/shared.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/internal/shared/shared.go @@ -44,6 +44,15 @@ const ( const crc64Polynomial uint64 = 0x9A6C9329AC4BC9B5 +const ( + AppendBlobClient = "azblob/appendblob.Client" + BlobClient = "azblob/blob.Client" + BlockBlobClient = "azblob/blockblob.Client" + ContainerClient = "azblob/container.Client" + PageBlobClient = "azblob/pageblob.Client" + ServiceClient = "azblob/service.Client" +) + var CRC64Table = crc64.MakeTable(crc64Polynomial) // CopyOptions returns a zero-value T if opts is nil. diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/pageblob/client.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/pageblob/client.go index 69328dbeb..7e534cee1 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/pageblob/client.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/pageblob/client.go @@ -37,10 +37,13 @@ type Client base.CompositeClient[generated.BlobClient, generated.PageBlobClient] func NewClient(blobURL string, cred azcore.TokenCredential, options *ClientOptions) (*Client, error) { authPolicy := shared.NewStorageChallengePolicy(cred) conOptions := shared.GetClientOptions(options) - conOptions.PerRetryPolicies = append(conOptions.PerRetryPolicies, authPolicy) - pl := runtime.NewPipeline(exported.ModuleName, exported.ModuleVersion, runtime.PipelineOptions{}, &conOptions.ClientOptions) + plOpts := runtime.PipelineOptions{PerRetry: []policy.Policy{authPolicy}} - return (*Client)(base.NewPageBlobClient(blobURL, pl, nil)), nil + azClient, err := azcore.NewClient(shared.PageBlobClient, exported.ModuleVersion, plOpts, &conOptions.ClientOptions) + if err != nil { + return nil, err + } + return (*Client)(base.NewPageBlobClient(blobURL, azClient, nil)), nil } // NewClientWithNoCredential creates an instance of Client with the specified values. @@ -49,9 +52,12 @@ func NewClient(blobURL string, cred azcore.TokenCredential, options *ClientOptio // - options - client options; pass nil to accept the default values func NewClientWithNoCredential(blobURL string, options *ClientOptions) (*Client, error) { conOptions := shared.GetClientOptions(options) - pl := runtime.NewPipeline(exported.ModuleName, exported.ModuleVersion, runtime.PipelineOptions{}, &conOptions.ClientOptions) - return (*Client)(base.NewPageBlobClient(blobURL, pl, nil)), nil + azClient, err := azcore.NewClient(shared.PageBlobClient, exported.ModuleVersion, runtime.PipelineOptions{}, &conOptions.ClientOptions) + if err != nil { + return nil, err + } + return (*Client)(base.NewPageBlobClient(blobURL, azClient, nil)), nil } // NewClientWithSharedKeyCredential creates an instance of Client with the specified values. @@ -61,10 +67,13 @@ func NewClientWithNoCredential(blobURL string, options *ClientOptions) (*Client, func NewClientWithSharedKeyCredential(blobURL string, cred *blob.SharedKeyCredential, options *ClientOptions) (*Client, error) { authPolicy := exported.NewSharedKeyCredPolicy(cred) conOptions := shared.GetClientOptions(options) - conOptions.PerRetryPolicies = append(conOptions.PerRetryPolicies, authPolicy) - pl := runtime.NewPipeline(exported.ModuleName, exported.ModuleVersion, runtime.PipelineOptions{}, &conOptions.ClientOptions) + plOpts := runtime.PipelineOptions{PerRetry: []policy.Policy{authPolicy}} - return (*Client)(base.NewPageBlobClient(blobURL, pl, cred)), nil + azClient, err := azcore.NewClient(shared.PageBlobClient, exported.ModuleVersion, plOpts, &conOptions.ClientOptions) + if err != nil { + return nil, err + } + return (*Client)(base.NewPageBlobClient(blobURL, azClient, cred)), nil } // NewClientFromConnectionString creates an instance of Client with the specified values. @@ -119,7 +128,7 @@ func (pb *Client) WithSnapshot(snapshot string) (*Client, error) { } p.Snapshot = snapshot - return (*Client)(base.NewPageBlobClient(p.String(), pb.generated().Pipeline(), pb.sharedKey())), nil + return (*Client)(base.NewPageBlobClient(p.String(), pb.generated().InternalClient(), pb.sharedKey())), nil } // WithVersionID creates a new PageBlobURL object identical to the source but with the specified snapshot timestamp. @@ -131,7 +140,7 @@ func (pb *Client) WithVersionID(versionID string) (*Client, error) { } p.VersionID = versionID - return (*Client)(base.NewPageBlobClient(p.String(), pb.generated().Pipeline(), pb.sharedKey())), nil + return (*Client)(base.NewPageBlobClient(p.String(), pb.generated().InternalClient(), pb.sharedKey())), nil } // Create creates a page blob of the specified length. Call PutPage to upload data to a page blob. @@ -228,7 +237,7 @@ func (pb *Client) NewGetPageRangesPager(o *GetPageRangesOptions) *runtime.Pager[ if err != nil { return GetPageRangesResponse{}, err } - resp, err := pb.generated().Pipeline().Do(req) + resp, err := pb.generated().InternalClient().Pipeline().Do(req) if err != nil { return GetPageRangesResponse{}, err } @@ -261,7 +270,7 @@ func (pb *Client) NewGetPageRangesDiffPager(o *GetPageRangesDiffOptions) *runtim if err != nil { return GetPageRangesDiffResponse{}, err } - resp, err := pb.generated().Pipeline().Do(req) + resp, err := pb.generated().InternalClient().Pipeline().Do(req) if err != nil { return GetPageRangesDiffResponse{}, err } diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/sas/account.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/sas/account.go index 454a08cb9..4069bb132 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/sas/account.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/sas/account.go @@ -25,13 +25,14 @@ type UserDelegationCredential = exported.UserDelegationCredential // AccountSignatureValues is used to generate a Shared Access Signature (SAS) for an Azure Storage account. // For more information, see https://docs.microsoft.com/rest/api/storageservices/constructing-an-account-sas type AccountSignatureValues struct { - Version string `param:"sv"` // If not specified, this format to SASVersion - Protocol Protocol `param:"spr"` // See the SASProtocol* constants - StartTime time.Time `param:"st"` // Not specified if IsZero - ExpiryTime time.Time `param:"se"` // Not specified if IsZero - Permissions string `param:"sp"` // Create by initializing AccountPermissions and then call String() - IPRange IPRange `param:"sip"` - ResourceTypes string `param:"srt"` // Create by initializing AccountResourceTypes and then call String() + Version string `param:"sv"` // If not specified, this format to SASVersion + Protocol Protocol `param:"spr"` // See the SASProtocol* constants + StartTime time.Time `param:"st"` // Not specified if IsZero + ExpiryTime time.Time `param:"se"` // Not specified if IsZero + Permissions string `param:"sp"` // Create by initializing AccountPermissions and then call String() + IPRange IPRange `param:"sip"` + ResourceTypes string `param:"srt"` // Create by initializing AccountResourceTypes and then call String() + EncryptionScope string `param:"ses"` } // SignWithSharedKey uses an account's shared key credential to sign this signature values to produce @@ -68,6 +69,7 @@ func (v AccountSignatureValues) SignWithSharedKey(sharedKeyCredential *SharedKey v.IPRange.String(), string(v.Protocol), v.Version, + v.EncryptionScope, ""}, // That is right, the account SAS requires a terminating extra newline "\n") @@ -77,12 +79,13 @@ func (v AccountSignatureValues) SignWithSharedKey(sharedKeyCredential *SharedKey } p := QueryParameters{ // Common SAS parameters - version: v.Version, - protocol: v.Protocol, - startTime: v.StartTime, - expiryTime: v.ExpiryTime, - permissions: v.Permissions, - ipRange: v.IPRange, + version: v.Version, + protocol: v.Protocol, + startTime: v.StartTime, + expiryTime: v.ExpiryTime, + permissions: v.Permissions, + ipRange: v.IPRange, + encryptionScope: v.EncryptionScope, // Account-specific SAS parameters services: "b", // will always be "b" diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/sas/query_params.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/sas/query_params.go index 4d97372da..4c23208e2 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/sas/query_params.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/sas/query_params.go @@ -23,7 +23,7 @@ const ( var ( // Version is the default version encoded in the SAS token. - Version = "2020-02-10" + Version = "2021-12-02" ) // TimeFormats ISO 8601 format. @@ -143,6 +143,7 @@ type QueryParameters struct { authorizedObjectID string `param:"saoid"` unauthorizedObjectID string `param:"suoid"` correlationID string `param:"scid"` + encryptionScope string `param:"ses"` // private member used for startTime and expiryTime formatting. stTimeFormat string seTimeFormat string @@ -163,6 +164,11 @@ func (p *QueryParameters) SignedCorrelationID() string { return p.correlationID } +// EncryptionScope returns encryptionScope +func (p *QueryParameters) EncryptionScope() string { + return p.encryptionScope +} + // SignedOID returns signedOID. func (p *QueryParameters) SignedOID() string { return p.signedOID @@ -355,6 +361,9 @@ func (p *QueryParameters) Encode() string { if p.correlationID != "" { v.Add("scid", p.correlationID) } + if p.encryptionScope != "" { + v.Add("ses", p.encryptionScope) + } return v.Encode() } @@ -429,6 +438,8 @@ func NewQueryParameters(values url.Values, deleteSASParametersFromValues bool) Q p.unauthorizedObjectID = val case "scid": p.correlationID = val + case "ses": + p.encryptionScope = val default: isSASKey = false // We didn't recognize the query parameter } diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/sas/service.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/sas/service.go index b900e2b06..45f730847 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/sas/service.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/sas/service.go @@ -40,6 +40,7 @@ type BlobSignatureValues struct { AuthorizedObjectID string // saoid UnauthorizedObjectID string // suoid CorrelationID string // scid + EncryptionScope string `param:"ses"` } func getDirectoryDepth(path string) string { @@ -51,17 +52,11 @@ func getDirectoryDepth(path string) string { // SignWithSharedKey uses an account's SharedKeyCredential to sign this signature values to produce the proper SAS query parameters. func (v BlobSignatureValues) SignWithSharedKey(sharedKeyCredential *SharedKeyCredential) (QueryParameters, error) { - if v.ExpiryTime.IsZero() || v.Permissions == "" { + if v.Identifier == "" && (v.ExpiryTime.IsZero() || v.Permissions == "") { return QueryParameters{}, errors.New("service SAS is missing at least one of these: ExpiryTime or Permissions") } - //Make sure the permission characters are in the correct order - perms, err := parseBlobPermissions(v.Permissions) - if err != nil { - return QueryParameters{}, err - } - v.Permissions = perms.String() - + // Parse the resource resource := "c" if !v.SnapshotTime.IsZero() { resource = "bs" @@ -76,6 +71,21 @@ func (v BlobSignatureValues) SignWithSharedKey(sharedKeyCredential *SharedKeyCre resource = "b" } + // make sure the permission characters are in the correct order + if resource == "c" { + perms, err := parseContainerPermissions(v.Permissions) + if err != nil { + return QueryParameters{}, err + } + v.Permissions = perms.String() + } else { + perms, err := parseBlobPermissions(v.Permissions) + if err != nil { + return QueryParameters{}, err + } + v.Permissions = perms.String() + } + if v.Version == "" { v.Version = Version } @@ -94,7 +104,8 @@ func (v BlobSignatureValues) SignWithSharedKey(sharedKeyCredential *SharedKeyCre string(v.Protocol), v.Version, resource, - snapshotTime, // signed timestamp + snapshotTime, // signed timestamp + v.EncryptionScope, v.CacheControl, // rscc v.ContentDisposition, // rscd v.ContentEncoding, // rsce @@ -109,12 +120,13 @@ func (v BlobSignatureValues) SignWithSharedKey(sharedKeyCredential *SharedKeyCre p := QueryParameters{ // Common SAS parameters - version: v.Version, - protocol: v.Protocol, - startTime: v.StartTime, - expiryTime: v.ExpiryTime, - permissions: v.Permissions, - ipRange: v.IPRange, + version: v.Version, + protocol: v.Protocol, + startTime: v.StartTime, + expiryTime: v.ExpiryTime, + permissions: v.Permissions, + ipRange: v.IPRange, + encryptionScope: v.EncryptionScope, // Container/Blob-specific SAS parameters resource: resource, @@ -202,7 +214,8 @@ func (v BlobSignatureValues) SignWithUserDelegation(userDelegationCredential *Us string(v.Protocol), v.Version, resource, - snapshotTime, // signed timestamp + snapshotTime, // signed timestamp + v.EncryptionScope, v.CacheControl, // rscc v.ContentDisposition, // rscd v.ContentEncoding, // rsce @@ -217,12 +230,13 @@ func (v BlobSignatureValues) SignWithUserDelegation(userDelegationCredential *Us p := QueryParameters{ // Common SAS parameters - version: v.Version, - protocol: v.Protocol, - startTime: v.StartTime, - expiryTime: v.ExpiryTime, - permissions: v.Permissions, - ipRange: v.IPRange, + version: v.Version, + protocol: v.Protocol, + startTime: v.StartTime, + expiryTime: v.ExpiryTime, + permissions: v.Permissions, + ipRange: v.IPRange, + encryptionScope: v.EncryptionScope, // Container/Blob-specific SAS parameters resource: resource, diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/service/client.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/service/client.go index fb7b8696a..461775347 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/service/client.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/service/client.go @@ -42,10 +42,13 @@ type Client base.Client[generated.ServiceClient] func NewClient(serviceURL string, cred azcore.TokenCredential, options *ClientOptions) (*Client, error) { authPolicy := shared.NewStorageChallengePolicy(cred) conOptions := shared.GetClientOptions(options) - conOptions.PerRetryPolicies = append(conOptions.PerRetryPolicies, authPolicy) - pl := runtime.NewPipeline(exported.ModuleName, exported.ModuleVersion, runtime.PipelineOptions{}, &conOptions.ClientOptions) + plOpts := runtime.PipelineOptions{PerRetry: []policy.Policy{authPolicy}} - return (*Client)(base.NewServiceClient(serviceURL, pl, &cred)), nil + azClient, err := azcore.NewClient(shared.ServiceClient, exported.ModuleVersion, plOpts, &conOptions.ClientOptions) + if err != nil { + return nil, err + } + return (*Client)(base.NewServiceClient(serviceURL, azClient, &cred)), nil } // NewClientWithNoCredential creates an instance of Client with the specified values. @@ -54,9 +57,12 @@ func NewClient(serviceURL string, cred azcore.TokenCredential, options *ClientOp // - options - client options; pass nil to accept the default values func NewClientWithNoCredential(serviceURL string, options *ClientOptions) (*Client, error) { conOptions := shared.GetClientOptions(options) - pl := runtime.NewPipeline(exported.ModuleName, exported.ModuleVersion, runtime.PipelineOptions{}, &conOptions.ClientOptions) - return (*Client)(base.NewServiceClient(serviceURL, pl, nil)), nil + azClient, err := azcore.NewClient(shared.ServiceClient, exported.ModuleVersion, runtime.PipelineOptions{}, &conOptions.ClientOptions) + if err != nil { + return nil, err + } + return (*Client)(base.NewServiceClient(serviceURL, azClient, nil)), nil } // NewClientWithSharedKeyCredential creates an instance of Client with the specified values. @@ -66,10 +72,14 @@ func NewClientWithNoCredential(serviceURL string, options *ClientOptions) (*Clie func NewClientWithSharedKeyCredential(serviceURL string, cred *SharedKeyCredential, options *ClientOptions) (*Client, error) { authPolicy := exported.NewSharedKeyCredPolicy(cred) conOptions := shared.GetClientOptions(options) - conOptions.PerRetryPolicies = append(conOptions.PerRetryPolicies, authPolicy) - pl := runtime.NewPipeline(exported.ModuleName, exported.ModuleVersion, runtime.PipelineOptions{}, &conOptions.ClientOptions) + plOpts := runtime.PipelineOptions{PerRetry: []policy.Policy{authPolicy}} - return (*Client)(base.NewServiceClient(serviceURL, pl, cred)), nil + azClient, err := azcore.NewClient(shared.ServiceClient, exported.ModuleVersion, plOpts, &conOptions.ClientOptions) + if err != nil { + return nil, err + } + + return (*Client)(base.NewServiceClient(serviceURL, azClient, cred)), nil } // NewClientFromConnectionString creates an instance of Client with the specified values. @@ -135,7 +145,7 @@ func (s *Client) URL() string { // this Client's URL. The new container.Client uses the same request policy pipeline as the Client. func (s *Client) NewContainerClient(containerName string) *container.Client { containerURL := runtime.JoinPaths(s.generated().Endpoint(), containerName) - return (*container.Client)(base.NewContainerClient(containerURL, s.generated().Pipeline(), s.credential())) + return (*container.Client)(base.NewContainerClient(containerURL, s.generated().InternalClient().WithClientName(shared.ContainerClient), s.credential())) } // CreateContainer is a lifecycle method to creates a new container under the specified account. @@ -184,6 +194,9 @@ func (s *Client) NewListContainersPager(o *ListContainersOptions) *runtime.Pager if o.Include.Metadata { listOptions.Include = append(listOptions.Include, generated.ListContainersIncludeTypeMetadata) } + if o.Include.System { + listOptions.Include = append(listOptions.Include, generated.ListContainersIncludeTypeSystem) + } listOptions.Marker = o.Marker listOptions.Maxresults = o.MaxResults listOptions.Prefix = o.Prefix @@ -204,7 +217,7 @@ func (s *Client) NewListContainersPager(o *ListContainersOptions) *runtime.Pager if err != nil { return ListContainersResponse{}, err } - resp, err := s.generated().Pipeline().Do(req) + resp, err := s.generated().InternalClient().Pipeline().Do(req) if err != nil { return ListContainersResponse{}, err } diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/service/models.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/service/models.go index 22f49474d..b70724d79 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/service/models.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/service/models.go @@ -156,6 +156,9 @@ type ListContainersInclude struct { // Tells the service whether to return soft-deleted containers. Deleted bool + + // Tells the service whether to return system containers. + System bool } // --------------------------------------------------------------------------------------------------------------------- diff --git a/vendor/github.com/VictoriaMetrics/metricsql/optimizer.go b/vendor/github.com/VictoriaMetrics/metricsql/optimizer.go index 046a8f1b8..bd070be68 100644 --- a/vendor/github.com/VictoriaMetrics/metricsql/optimizer.go +++ b/vendor/github.com/VictoriaMetrics/metricsql/optimizer.go @@ -423,9 +423,11 @@ func getTransformArgIdxForOptimization(funcName string, args []Expr) int { func isLabelManipulationFunc(funcName string) bool { switch strings.ToLower(funcName) { case "alias", "drop_common_labels", "label_copy", "label_del", "label_graphite_group", "label_join", "label_keep", "label_lowercase", - "label_map", "label_match", "label_mismatch", "label_move", "label_replace", "label_set", "label_transform", - "label_uppercase", "label_value": + "label_map", "label_move", "label_replace", "label_set", "label_transform", "label_uppercase": return true + case "label_match", "label_mismatch", "label_value", "labels_equal": + // These functions aren't really label manipulation functions, since they do not change labels for the input series. + return false default: return false } diff --git a/vendor/github.com/VictoriaMetrics/metricsql/prettifier.go b/vendor/github.com/VictoriaMetrics/metricsql/prettifier.go index 486a22492..4aad090b8 100644 --- a/vendor/github.com/VictoriaMetrics/metricsql/prettifier.go +++ b/vendor/github.com/VictoriaMetrics/metricsql/prettifier.go @@ -132,18 +132,20 @@ func appendPrettifiedExpr(dst []byte, e Expr, indent int, needParens bool) []byt } dst = appendIndent(dst, indent) dst = appendEscapedIdent(dst, metricName) - dst = append(dst, "{\n"...) - lfss := t.LabelFilterss - for i, lfs := range lfss { - dst = appendPrettifiedLabelFilters(dst, indent+1, lfs[offset:]) - dst = append(dst, '\n') - if i+1 < len(lfss) { - dst = appendIndent(dst, indent+2) - dst = append(dst, "or\n"...) + if !t.isOnlyMetricName() { + dst = append(dst, "{\n"...) + lfss := t.LabelFilterss + for i, lfs := range lfss { + dst = appendPrettifiedLabelFilters(dst, indent+1, lfs[offset:]) + dst = append(dst, '\n') + if i+1 < len(lfss) { + dst = appendIndent(dst, indent+2) + dst = append(dst, "or\n"...) + } } + dst = appendIndent(dst, indent) + dst = append(dst, '}') } - dst = appendIndent(dst, indent) - dst = append(dst, '}') default: // marshal other expressions as is dst = t.AppendString(dst) diff --git a/vendor/github.com/VictoriaMetrics/metricsql/transform.go b/vendor/github.com/VictoriaMetrics/metricsql/transform.go index 22769604b..a7d9f6698 100644 --- a/vendor/github.com/VictoriaMetrics/metricsql/transform.go +++ b/vendor/github.com/VictoriaMetrics/metricsql/transform.go @@ -29,6 +29,7 @@ var transformFuncs = map[string]bool{ "days_in_month": true, "deg": true, "drop_common_labels": true, + "drop_empty_series": true, "end": true, "exp": true, "floor": true, @@ -57,6 +58,7 @@ var transformFuncs = map[string]bool{ "label_transform": true, "label_uppercase": true, "label_value": true, + "labels_equal": true, "limit_offset": true, "ln": true, "log2": true, diff --git a/vendor/github.com/aws/aws-sdk-go-v2/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/CHANGELOG.md index 47da5cbbf..1f4384c96 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/CHANGELOG.md @@ -1,3 +1,880 @@ +# Release (2023-10-12) + +## General Highlights +* **Dependency Update**: Updated to the latest SDK module versions + +## Module Highlights +* `github.com/aws/aws-sdk-go-v2`: v1.21.2 + * **Bug Fix**: Improve recognition of retryable DNS errors. +* `github.com/aws/aws-sdk-go-v2/config`: [v1.18.45](config/CHANGELOG.md#v11845-2023-10-12) + * **Bug Fix**: Fail to load config if an explicitly provided profile doesn't exist. +* `github.com/aws/aws-sdk-go-v2/service/auditmanager`: [v1.27.0](service/auditmanager/CHANGELOG.md#v1270-2023-10-12) + * **Feature**: This release introduces a new limit to the awsAccounts parameter. When you create or update an assessment, there is now a limit of 200 AWS accounts that can be specified in the assessment scope. +* `github.com/aws/aws-sdk-go-v2/service/autoscaling`: [v1.31.0](service/autoscaling/CHANGELOG.md#v1310-2023-10-12) + * **Feature**: Update the NotificationMetadata field to only allow visible ascii characters. Add paginators to DescribeInstanceRefreshes, DescribeLoadBalancers, and DescribeLoadBalancerTargetGroups +* `github.com/aws/aws-sdk-go-v2/service/configservice`: [v1.37.0](service/configservice/CHANGELOG.md#v1370-2023-10-12) + * **Feature**: Add enums for resource types supported by Config +* `github.com/aws/aws-sdk-go-v2/service/controltower`: [v1.4.0](service/controltower/CHANGELOG.md#v140-2023-10-12) + * **Feature**: Added new EnabledControl resource details to ListEnabledControls API and added new GetEnabledControl API. +* `github.com/aws/aws-sdk-go-v2/service/customerprofiles`: [v1.29.0](service/customerprofiles/CHANGELOG.md#v1290-2023-10-12) + * **Feature**: Adds sensitive trait to various shapes in Customer Profiles Calculated Attribute API model. +* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.125.0](service/ec2/CHANGELOG.md#v11250-2023-10-12) + * **Feature**: This release adds Ubuntu Pro as a supported platform for On-Demand Capacity Reservations and adds support for setting an Amazon Machine Image (AMI) to disabled state. Disabling the AMI makes it private if it was previously shared, and prevents new EC2 instance launches from it. +* `github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2`: [v1.21.6](service/elasticloadbalancingv2/CHANGELOG.md#v1216-2023-10-12) + * **Documentation**: This release enables routing policies with Availability Zone affinity for Network Load Balancers. +* `github.com/aws/aws-sdk-go-v2/service/glue`: [v1.63.0](service/glue/CHANGELOG.md#v1630-2023-10-12) + * **Feature**: Extending version control support to GitLab and Bitbucket from AWSGlue +* `github.com/aws/aws-sdk-go-v2/service/inspector2`: [v1.17.0](service/inspector2/CHANGELOG.md#v1170-2023-10-12) + * **Feature**: Add MacOs ec2 platform support +* `github.com/aws/aws-sdk-go-v2/service/ivsrealtime`: [v1.5.0](service/ivsrealtime/CHANGELOG.md#v150-2023-10-12) + * **Feature**: Update GetParticipant to return additional metadata. +* `github.com/aws/aws-sdk-go-v2/service/lambda`: [v1.40.0](service/lambda/CHANGELOG.md#v1400-2023-10-12) + * **Feature**: Adds support for Lambda functions to access Dual-Stack subnets over IPv6, via an opt-in flag in CreateFunction and UpdateFunctionConfiguration APIs +* `github.com/aws/aws-sdk-go-v2/service/location`: [v1.28.0](service/location/CHANGELOG.md#v1280-2023-10-12) + * **Feature**: This release adds endpoint updates for all AWS Location resource operations. +* `github.com/aws/aws-sdk-go-v2/service/machinelearning`: [v1.18.0](service/machinelearning/CHANGELOG.md#v1180-2023-10-12) + * **Feature**: This release marks Password field as sensitive +* `github.com/aws/aws-sdk-go-v2/service/pricing`: [v1.21.9](service/pricing/CHANGELOG.md#v1219-2023-10-12) + * **Documentation**: Documentation updates for Price List +* `github.com/aws/aws-sdk-go-v2/service/rds`: [v1.56.0](service/rds/CHANGELOG.md#v1560-2023-10-12) + * **Feature**: This release adds support for adding a dedicated log volume to open-source RDS instances. +* `github.com/aws/aws-sdk-go-v2/service/rekognition`: [v1.31.0](service/rekognition/CHANGELOG.md#v1310-2023-10-12) + * **Feature**: Amazon Rekognition introduces support for Custom Moderation. This allows the enhancement of accuracy for detect moderation labels operations by creating custom adapters tuned on customer data. +* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.111.0](service/sagemaker/CHANGELOG.md#v11110-2023-10-12) + * **Feature**: Amazon SageMaker Canvas adds KendraSettings and DirectDeploySettings support for CanvasAppSettings +* `github.com/aws/aws-sdk-go-v2/service/textract`: [v1.25.0](service/textract/CHANGELOG.md#v1250-2023-10-12) + * **Feature**: This release adds 9 new APIs for adapter and adapter version management, 3 new APIs for tagging, and updates AnalyzeDocument and StartDocumentAnalysis API parameters for using adapters. +* `github.com/aws/aws-sdk-go-v2/service/transcribe`: [v1.29.0](service/transcribe/CHANGELOG.md#v1290-2023-10-12) + * **Feature**: This release is to enable m4a format to customers +* `github.com/aws/aws-sdk-go-v2/service/workspaces`: [v1.31.2](service/workspaces/CHANGELOG.md#v1312-2023-10-12) + * **Documentation**: Updated the CreateWorkspaces action documentation to clarify that the PCoIP protocol is only available for Windows bundles. + +# Release (2023-10-06) + +## General Highlights +* **Dependency Update**: Updated to the latest SDK module versions + +## Module Highlights +* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.124.0](service/ec2/CHANGELOG.md#v11240-2023-10-06) + * **Feature**: Documentation updates for Elastic Compute Cloud (EC2). +* `github.com/aws/aws-sdk-go-v2/service/fsx`: [v1.33.0](service/fsx/CHANGELOG.md#v1330-2023-10-06) + * **Feature**: After performing steps to repair the Active Directory configuration of a file system, use this action to initiate the process of attempting to recover to the file system. +* `github.com/aws/aws-sdk-go-v2/service/marketplacecatalog`: [v1.18.0](service/marketplacecatalog/CHANGELOG.md#v1180-2023-10-06) + * **Feature**: This release adds support for Document type as an alternative for stringified JSON for StartChangeSet, DescribeChangeSet and DescribeEntity APIs +* `github.com/aws/aws-sdk-go-v2/service/quicksight`: [v1.45.0](service/quicksight/CHANGELOG.md#v1450-2023-10-06) + * **Feature**: NullOption in FilterListConfiguration; Dataset schema/table max length increased; Support total placement for pivot table visual; Lenient mode relaxes the validation to create resources with definition; Data sources can be added to folders; Redshift data sources support IAM Role-based authentication +* `github.com/aws/aws-sdk-go-v2/service/transfer`: [v1.34.0](service/transfer/CHANGELOG.md#v1340-2023-10-06) + * **Feature**: This release updates the max character limit of PreAuthenticationLoginBanner and PostAuthenticationLoginBanner to 4096 characters + +# Release (2023-10-05) + +## Module Highlights +* `github.com/aws/aws-sdk-go-v2/service/omics`: [v1.10.0](service/omics/CHANGELOG.md#v1100-2023-10-05) + * **Feature**: Add Etag Support for Omics Storage in ListReadSets and GetReadSetMetadata API +* `github.com/aws/aws-sdk-go-v2/service/rds`: [v1.55.1](service/rds/CHANGELOG.md#v1551-2023-10-05) + * **Documentation**: Updates Amazon RDS documentation for corrections and minor improvements. +* `github.com/aws/aws-sdk-go-v2/service/route53`: [v1.30.0](service/route53/CHANGELOG.md#v1300-2023-10-05) + * **Feature**: Add hostedzonetype filter to ListHostedZones API. +* `github.com/aws/aws-sdk-go-v2/service/securityhub`: [v1.37.0](service/securityhub/CHANGELOG.md#v1370-2023-10-05) + * **Feature**: Added new resource detail objects to ASFF, including resources for AwsEventsEventbus, AwsEventsEndpoint, AwsDmsEndpoint, AwsDmsReplicationTask, AwsDmsReplicationInstance, AwsRoute53HostedZone, and AwsMskCluster +* `github.com/aws/aws-sdk-go-v2/service/storagegateway`: [v1.21.0](service/storagegateway/CHANGELOG.md#v1210-2023-10-05) + * **Feature**: Add SoftwareVersion to response of DescribeGatewayInformation. +* `github.com/aws/aws-sdk-go-v2/service/workspaces`: [v1.31.0](service/workspaces/CHANGELOG.md#v1310-2023-10-05) + * **Feature**: This release introduces Manage applications. This feature allows users to manage their WorkSpaces applications by associating or disassociating their WorkSpaces with applications. The DescribeWorkspaces API will now additionally return OperatingSystemName in its responses. + +# Release (2023-10-04) + +## Module Highlights +* `github.com/aws/aws-sdk-go-v2/service/appconfig`: [v1.21.0](service/appconfig/CHANGELOG.md#v1210-2023-10-04) + * **Feature**: AWS AppConfig introduces KMS customer-managed key (CMK) encryption support for data saved to AppConfig's hosted configuration store. +* `github.com/aws/aws-sdk-go-v2/service/datazone`: [v1.0.0](service/datazone/CHANGELOG.md#v100-2023-10-04) + * **Release**: New AWS service client module + * **Feature**: Initial release of Amazon DataZone +* `github.com/aws/aws-sdk-go-v2/service/mediatailor`: [v1.28.0](service/mediatailor/CHANGELOG.md#v1280-2023-10-04) + * **Feature**: Updates DescribeVodSource to include a list of ad break opportunities in the response +* `github.com/aws/aws-sdk-go-v2/service/mgn`: [v1.21.0](service/mgn/CHANGELOG.md#v1210-2023-10-04) + * **Feature**: This release includes the following new APIs: ListConnectors, CreateConnector, UpdateConnector, DeleteConnector and UpdateSourceServer to support the source action framework feature. +* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.110.0](service/sagemaker/CHANGELOG.md#v11100-2023-10-04) + * **Feature**: Adding support for AdditionalS3DataSource, a data source used for training or inference that is in addition to the input dataset or model data. + +# Release (2023-10-03) + +## Module Highlights +* `github.com/aws/aws-sdk-go-v2/service/connect`: [v1.69.0](service/connect/CHANGELOG.md#v1690-2023-10-03) + * **Feature**: GetMetricDataV2 API: Update to include new metrics CONTACTS_RESOLVED_IN_X , AVG_HOLD_TIME_ALL_CONTACTS , AVG_RESOLUTION_TIME , ABANDONMENT_RATE , AGENT_NON_RESPONSE_WITHOUT_CUSTOMER_ABANDONS with added features: Interval Period, TimeZone, Negate MetricFilters, Extended date time range. +* `github.com/aws/aws-sdk-go-v2/service/location`: [v1.27.0](service/location/CHANGELOG.md#v1270-2023-10-03) + * **Feature**: Amazon Location Service adds support for bounding polygon queries. Additionally, the GeofenceCount field has been added to the DescribeGeofenceCollection API response. +* `github.com/aws/aws-sdk-go-v2/service/mediaconvert`: [v1.43.0](service/mediaconvert/CHANGELOG.md#v1430-2023-10-03) + * **Feature**: This release adds the ability to replace video frames without modifying the audio essence. +* `github.com/aws/aws-sdk-go-v2/service/oam`: [v1.4.0](service/oam/CHANGELOG.md#v140-2023-10-03) + * **Feature**: This release adds support for sharing AWS::ApplicationInsights::Application resources. +* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.109.0](service/sagemaker/CHANGELOG.md#v11090-2023-10-03) + * **Feature**: This release allows users to run Selective Execution in SageMaker Pipelines without SourcePipelineExecutionArn if selected steps do not have any dependent steps. +* `github.com/aws/aws-sdk-go-v2/service/wellarchitected`: [v1.23.0](service/wellarchitected/CHANGELOG.md#v1230-2023-10-03) + * **Feature**: AWS Well-Architected now supports Review Templates that allows you to create templates with pre-filled answers for Well-Architected and Custom Lens best practices. + +# Release (2023-10-02) + +## General Highlights +* **Dependency Update**: Updated to the latest SDK module versions + +## Module Highlights +* `github.com/aws/aws-sdk-go-v2/service/bedrock`: [v1.1.0](service/bedrock/CHANGELOG.md#v110-2023-10-02) + * **Feature**: Provisioned throughput feature with Amazon and third-party base models, and update validators for model identifier and taggable resource ARNs. +* `github.com/aws/aws-sdk-go-v2/service/bedrockruntime`: [v1.1.0](service/bedrockruntime/CHANGELOG.md#v110-2023-10-02) + * **Feature**: Add model timeout exception for InvokeModelWithResponseStream API and update validator for invoke model identifier. +* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.123.0](service/ec2/CHANGELOG.md#v11230-2023-10-02) + * **Feature**: Introducing Amazon EC2 R7iz instances with 3.9 GHz sustained all-core turbo frequency and deliver up to 20% better performance than previous generation z1d instances. +* `github.com/aws/aws-sdk-go-v2/service/managedblockchain`: [v1.16.6](service/managedblockchain/CHANGELOG.md#v1166-2023-10-02) + * **Documentation**: Remove Rinkeby as option from Ethereum APIs +* `github.com/aws/aws-sdk-go-v2/service/rds`: [v1.55.0](service/rds/CHANGELOG.md#v1550-2023-10-02) + * **Feature**: Adds DefaultCertificateForNewLaunches field in the DescribeCertificates API response. +* `github.com/aws/aws-sdk-go-v2/service/sso`: [v1.15.0](service/sso/CHANGELOG.md#v1150-2023-10-02) + * **Feature**: Fix FIPS Endpoints in aws-us-gov. +* `github.com/aws/aws-sdk-go-v2/service/sts`: [v1.23.0](service/sts/CHANGELOG.md#v1230-2023-10-02) + * **Feature**: STS API updates for assumeRole +* `github.com/aws/aws-sdk-go-v2/service/transfer`: [v1.33.9](service/transfer/CHANGELOG.md#v1339-2023-10-02) + * **Documentation**: Documentation updates for AWS Transfer Family + +# Release (2023-09-28) + +## Module Highlights +* `github.com/aws/aws-sdk-go-v2/service/bedrock`: [v1.0.0](service/bedrock/CHANGELOG.md#v100-2023-09-28) + * **Release**: New AWS service client module + * **Feature**: Model Invocation logging added to enable or disable logs in customer account. Model listing and description support added. Provisioned Throughput feature added. Custom model support added for creating custom models. Also includes list, and delete functions for custom model. +* `github.com/aws/aws-sdk-go-v2/service/bedrockruntime`: [v1.0.0](service/bedrockruntime/CHANGELOG.md#v100-2023-09-28) + * **Release**: New AWS service client module + * **Feature**: Run Inference: Added support to run the inference on models. Includes set of APIs for running inference in streaming and non-streaming mode. +* `github.com/aws/aws-sdk-go-v2/service/budgets`: [v1.17.0](service/budgets/CHANGELOG.md#v1170-2023-09-28) + * **Feature**: Update DescribeBudgets and DescribeBudgetNotificationsForAccount MaxResults limit to 1000. +* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.122.0](service/ec2/CHANGELOG.md#v11220-2023-09-28) + * **Feature**: Adds support for Customer Managed Key encryption for Amazon Verified Access resources +* `github.com/aws/aws-sdk-go-v2/service/iotfleetwise`: [v1.6.0](service/iotfleetwise/CHANGELOG.md#v160-2023-09-28) + * **Feature**: AWS IoT FleetWise now supports encryption through a customer managed AWS KMS key. The PutEncryptionConfiguration and GetEncryptionConfiguration APIs were added. +* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.108.0](service/sagemaker/CHANGELOG.md#v11080-2023-09-28) + * **Feature**: Online store feature groups supports Standard and InMemory tier storage types for low latency storage for real-time data retrieval. The InMemory tier supports collection types List, Set, and Vector. +* `github.com/aws/aws-sdk-go-v2/service/sagemakerfeaturestoreruntime`: [v1.18.0](service/sagemakerfeaturestoreruntime/CHANGELOG.md#v1180-2023-09-28) + * **Feature**: Feature Store supports read/write of records with collection type features. +* `github.com/aws/aws-sdk-go-v2/service/wafv2`: [v1.39.1](service/wafv2/CHANGELOG.md#v1391-2023-09-28) + * **Documentation**: Correct and improve the documentation for the FieldToMatch option JA3 fingerprint. + +# Release (2023-09-27) + +## Module Highlights +* `github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider`: [v1.27.0](service/cognitoidentityprovider/CHANGELOG.md#v1270-2023-09-27) + * **Feature**: The UserPoolType Status field is no longer used. +* `github.com/aws/aws-sdk-go-v2/service/firehose`: [v1.19.0](service/firehose/CHANGELOG.md#v1190-2023-09-27) + * **Feature**: Features : Adding support for new data ingestion source to Kinesis Firehose - AWS Managed Services Kafka. +* `github.com/aws/aws-sdk-go-v2/service/iot`: [v1.40.0](service/iot/CHANGELOG.md#v1400-2023-09-27) + * **Feature**: Added support for IoT Rules Engine Kafka Action Headers +* `github.com/aws/aws-sdk-go-v2/service/textract`: [v1.24.0](service/textract/CHANGELOG.md#v1240-2023-09-27) + * **Feature**: This release adds new feature - Layout to Analyze Document API which can automatically extract layout elements such as titles, paragraphs, headers, section headers, lists, page numbers, footers, table areas, key-value areas and figure areas and order the elements as a human would read. + +# Release (2023-09-26) + +## General Highlights +* **Dependency Update**: Updated to the latest SDK module versions + +## Module Highlights +* `github.com/aws/aws-sdk-go-v2/service/appintegrations`: [v1.18.0](service/appintegrations/CHANGELOG.md#v1180-2023-09-26) + * **Feature**: The Amazon AppIntegrations service adds a set of APIs (in preview) to manage third party applications to be used in Amazon Connect agent workspace. +* `github.com/aws/aws-sdk-go-v2/service/apprunner`: [v1.21.0](service/apprunner/CHANGELOG.md#v1210-2023-09-26) + * **Feature**: This release allows an App Runner customer to specify a custom source directory to run the build & start command. This change allows App Runner to support monorepo based repositories +* `github.com/aws/aws-sdk-go-v2/service/codedeploy`: [v1.18.1](service/codedeploy/CHANGELOG.md#v1181-2023-09-26) + * **Documentation**: CodeDeploy now supports In-place and Blue/Green EC2 deployments with multiple Classic Load Balancers and multiple Target Groups. +* `github.com/aws/aws-sdk-go-v2/service/connect`: [v1.68.0](service/connect/CHANGELOG.md#v1680-2023-09-26) + * **Feature**: This release updates a set of Amazon Connect APIs that provides the ability to integrate third party applications in the Amazon Connect agent workspace. +* `github.com/aws/aws-sdk-go-v2/service/dynamodb`: [v1.22.0](service/dynamodb/CHANGELOG.md#v1220-2023-09-26) + * **Feature**: Amazon DynamoDB now supports Incremental Export as an enhancement to the existing Export Table +* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.121.0](service/ec2/CHANGELOG.md#v11210-2023-09-26) + * **Feature**: The release includes AWS verified access to support FIPs compliance in North America regions +* `github.com/aws/aws-sdk-go-v2/service/lakeformation`: [v1.24.0](service/lakeformation/CHANGELOG.md#v1240-2023-09-26) + * **Feature**: This release adds three new API support "CreateLakeFormationOptIn", "DeleteLakeFormationOptIn" and "ListLakeFormationOptIns", and also updates the corresponding documentation. +* `github.com/aws/aws-sdk-go-v2/service/pinpoint`: [v1.22.6](service/pinpoint/CHANGELOG.md#v1226-2023-09-26) + * **Documentation**: Update documentation for RemoveAttributes to more accurately reflect its behavior when attributes are deleted. +* `github.com/aws/aws-sdk-go-v2/service/s3`: [v1.40.0](service/s3/CHANGELOG.md#v1400-2023-09-26) + * **Feature**: This release adds a new field COMPLETED to the ReplicationStatus Enum. You can now use this field to validate the replication status of S3 objects using the AWS SDK. + +# Release (2023-09-25) + +## Module Highlights +* `github.com/aws/aws-sdk-go-v2/service/amplifyuibuilder`: [v1.13.0](service/amplifyuibuilder/CHANGELOG.md#v1130-2023-09-25) + * **Feature**: Support for generating code that is compatible with future versions of amplify project dependencies. +* `github.com/aws/aws-sdk-go-v2/service/chimesdkmediapipelines`: [v1.9.0](service/chimesdkmediapipelines/CHANGELOG.md#v190-2023-09-25) + * **Feature**: Adds support for sending WebRTC audio to Amazon Kineses Video Streams. +* `github.com/aws/aws-sdk-go-v2/service/emrserverless`: [v1.11.0](service/emrserverless/CHANGELOG.md#v1110-2023-09-25) + * **Feature**: This release adds support for application-wide default job configurations. +* `github.com/aws/aws-sdk-go-v2/service/finspacedata`: [v1.17.0](service/finspacedata/CHANGELOG.md#v1170-2023-09-25) + * **Feature**: Adding sensitive trait to attributes. Change max SessionDuration from 720 to 60. Correct "ApiAccess" attribute to "apiAccess" to maintain consistency between APIs. +* `github.com/aws/aws-sdk-go-v2/service/quicksight`: [v1.44.0](service/quicksight/CHANGELOG.md#v1440-2023-09-25) + * **Feature**: Added ability to tag users upon creation. +* `github.com/aws/aws-sdk-go-v2/service/ssm`: [v1.38.0](service/ssm/CHANGELOG.md#v1380-2023-09-25) + * **Feature**: This release updates the enum values for ResourceType in SSM DescribeInstanceInformation input and ConnectionStatus in GetConnectionStatus output. +* `github.com/aws/aws-sdk-go-v2/service/wafv2`: [v1.39.0](service/wafv2/CHANGELOG.md#v1390-2023-09-25) + * **Feature**: You can now perform an exact match against the web request's JA3 fingerprint. + +# Release (2023-09-22) + +## General Highlights +* **Dependency Update**: Updated to the latest SDK module versions + +## Module Highlights +* `github.com/aws/aws-sdk-go-v2/config`: [v1.18.42](config/CHANGELOG.md#v11842-2023-09-22) + * **Bug Fix**: Fixed a bug where merging `max_attempts` or `duration_seconds` fields across shared config files with invalid values would silently default them to 0. + * **Bug Fix**: Move type assertion of config values out of the parsing stage, which resolves an issue where the contents of a profile would silently be dropped with certain numeric formats. +* `github.com/aws/aws-sdk-go-v2/internal/ini`: [v1.3.43](internal/ini/CHANGELOG.md#v1343-2023-09-22) + * **Bug Fix**: Fixed a bug where merging `max_attempts` or `duration_seconds` fields across shared config files with invalid values would silently default them to 0. + * **Bug Fix**: Move type assertion of config values out of the parsing stage, which resolves an issue where the contents of a profile would silently be dropped with certain numeric formats. +* `github.com/aws/aws-sdk-go-v2/service/braket`: [v1.20.0](service/braket/CHANGELOG.md#v1200-2023-09-22) + * **Feature**: This release adds support to view the device queue depth (the number of queued quantum tasks and hybrid jobs on a device) and queue position for a quantum task and hybrid job. +* `github.com/aws/aws-sdk-go-v2/service/cloudwatchevents`: [v1.18.0](service/cloudwatchevents/CHANGELOG.md#v1180-2023-09-22) + * **Feature**: Adds sensitive trait to various shapes in Jetstream Connections API model. +* `github.com/aws/aws-sdk-go-v2/service/databasemigrationservice`: [v1.31.0](service/databasemigrationservice/CHANGELOG.md#v1310-2023-09-22) + * **Feature**: new vendors for DMS CSF: MongoDB, MariaDB, DocumentDb and Redshift +* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.120.0](service/ec2/CHANGELOG.md#v11200-2023-09-22) + * **Feature**: EC2 M2 Pro Mac instances are powered by Apple M2 Pro Mac Mini computers featuring 12 core CPU, 19 core GPU, 32 GiB of memory, and 16 core Apple Neural Engine and uniquely enabled by the AWS Nitro System through high-speed Thunderbolt connections. +* `github.com/aws/aws-sdk-go-v2/service/efs`: [v1.21.7](service/efs/CHANGELOG.md#v1217-2023-09-22) + * **Documentation**: Documentation updates for Elastic File System +* `github.com/aws/aws-sdk-go-v2/service/guardduty`: [v1.28.0](service/guardduty/CHANGELOG.md#v1280-2023-09-22) + * **Feature**: Add `EKS_CLUSTER_NAME` to filter and sort key. +* `github.com/aws/aws-sdk-go-v2/service/mediaconvert`: [v1.42.0](service/mediaconvert/CHANGELOG.md#v1420-2023-09-22) + * **Feature**: This release supports the creation of of audio-only tracks in CMAF output groups. + +# Release (2023-09-20) + +## General Highlights +* **Dependency Update**: Updated to the latest SDK module versions + +## Module Highlights +* `github.com/aws/aws-sdk-go-v2/service/appconfig`: [v1.20.0](service/appconfig/CHANGELOG.md#v1200-2023-09-20) + * **Feature**: Enabling boto3 paginators for list APIs and adding documentation around ServiceQuotaExceededException errors +* `github.com/aws/aws-sdk-go-v2/service/apprunner`: [v1.20.0](service/apprunner/CHANGELOG.md#v1200-2023-09-20) + * **Feature**: This release adds improvements for managing App Runner auto scaling configuration resources. New APIs: UpdateDefaultAutoScalingConfiguration and ListServicesForAutoScalingConfiguration. Updated API: DeleteAutoScalingConfiguration. +* `github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs`: [v1.24.0](service/cloudwatchlogs/CHANGELOG.md#v1240-2023-09-20) + * **Feature**: Add ClientToken to QueryDefinition CFN Handler in CWL +* `github.com/aws/aws-sdk-go-v2/service/codeartifact`: [v1.20.0](service/codeartifact/CHANGELOG.md#v1200-2023-09-20) + * **Feature**: Add support for the Swift package format. +* `github.com/aws/aws-sdk-go-v2/service/kinesisvideo`: [v1.18.4](service/kinesisvideo/CHANGELOG.md#v1184-2023-09-20) + * **Documentation**: Updated DescribeMediaStorageConfiguration, StartEdgeConfigurationUpdate, ImageGenerationConfiguration$SamplingInterval, and UpdateMediaStorageConfiguration to match AWS Docs. +* `github.com/aws/aws-sdk-go-v2/service/s3`: [v1.39.0](service/s3/CHANGELOG.md#v1390-2023-09-20) + * **Feature**: Fix an issue where the SDK can fail to unmarshall response due to NumberFormatException +* `github.com/aws/aws-sdk-go-v2/service/servicediscovery`: [v1.24.0](service/servicediscovery/CHANGELOG.md#v1240-2023-09-20) + * **Feature**: Adds a new DiscoverInstancesRevision API and also adds InstanceRevision field to the DiscoverInstances API response. +* `github.com/aws/aws-sdk-go-v2/service/ssooidc`: [v1.17.0](service/ssooidc/CHANGELOG.md#v1170-2023-09-20) + * **Feature**: Update FIPS endpoints in aws-us-gov. + +# Release (2023-09-19) + +## Module Highlights +* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.119.0](service/ec2/CHANGELOG.md#v11190-2023-09-19) + * **Feature**: This release adds support for C7i, and R7a instance types. +* `github.com/aws/aws-sdk-go-v2/service/outposts`: [v1.30.0](service/outposts/CHANGELOG.md#v1300-2023-09-19) + * **Feature**: This release adds the InstanceFamilies field to the ListAssets response. +* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.107.0](service/sagemaker/CHANGELOG.md#v11070-2023-09-19) + * **Feature**: This release adds support for one-time model monitoring schedules that are executed immediately without delay, explicit data analysis windows for model monitoring schedules and exclude features attributes to remove features from model monitor analysis. + +# Release (2023-09-18) + +## General Highlights +* **Feature**: Adds several endpoint ruleset changes across all models: smaller rulesets, removed non-unique regional endpoints, fixes FIPS and DualStack endpoints, and make region not required in SDK::Endpoint. Additional breakfix to cognito-sync field. +* **Dependency Update**: Updated to the latest SDK module versions + +## Module Highlights +* `github.com/aws/aws-sdk-go-v2/service/accessanalyzer`: [v1.21.0](service/accessanalyzer/CHANGELOG.md#v1210-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/acm`: [v1.19.0](service/acm/CHANGELOG.md#v1190-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/amplify`: [v1.15.0](service/amplify/CHANGELOG.md#v1150-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/apigatewaymanagementapi`: [v1.13.0](service/apigatewaymanagementapi/CHANGELOG.md#v1130-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/appconfig`: [v1.19.0](service/appconfig/CHANGELOG.md#v1190-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/appconfigdata`: [v1.8.0](service/appconfigdata/CHANGELOG.md#v180-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/appfabric`: [v1.2.0](service/appfabric/CHANGELOG.md#v120-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/appintegrations`: [v1.17.0](service/appintegrations/CHANGELOG.md#v1170-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/applicationcostprofiler`: [v1.12.0](service/applicationcostprofiler/CHANGELOG.md#v1120-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/appmesh`: [v1.19.0](service/appmesh/CHANGELOG.md#v1190-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/arczonalshift`: [v1.3.0](service/arczonalshift/CHANGELOG.md#v130-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/autoscalingplans`: [v1.15.0](service/autoscalingplans/CHANGELOG.md#v1150-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/backupgateway`: [v1.11.0](service/backupgateway/CHANGELOG.md#v1110-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/backupstorage`: [v1.3.0](service/backupstorage/CHANGELOG.md#v130-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/braket`: [v1.19.0](service/braket/CHANGELOG.md#v1190-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/chimesdkvoice`: [v1.9.0](service/chimesdkvoice/CHANGELOG.md#v190-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/clouddirectory`: [v1.15.0](service/clouddirectory/CHANGELOG.md#v1150-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/cloudhsmv2`: [v1.16.0](service/cloudhsmv2/CHANGELOG.md#v1160-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/cloudsearch`: [v1.16.0](service/cloudsearch/CHANGELOG.md#v1160-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/cloudsearchdomain`: [v1.14.0](service/cloudsearchdomain/CHANGELOG.md#v1140-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/cloudtraildata`: [v1.2.0](service/cloudtraildata/CHANGELOG.md#v120-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/codebuild`: [v1.22.0](service/codebuild/CHANGELOG.md#v1220-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/codedeploy`: [v1.18.0](service/codedeploy/CHANGELOG.md#v1180-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/codeguruprofiler`: [v1.15.0](service/codeguruprofiler/CHANGELOG.md#v1150-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/codegurureviewer`: [v1.19.0](service/codegurureviewer/CHANGELOG.md#v1190-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/codegurusecurity`: [v1.2.0](service/codegurusecurity/CHANGELOG.md#v120-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/codestar`: [v1.15.0](service/codestar/CHANGELOG.md#v1150-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/codestarnotifications`: [v1.16.0](service/codestarnotifications/CHANGELOG.md#v1160-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/cognitoidentity`: [v1.17.0](service/cognitoidentity/CHANGELOG.md#v1170-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/cognitosync`: [v1.14.0](service/cognitosync/CHANGELOG.md#v1140-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/connectcases`: [v1.7.0](service/connectcases/CHANGELOG.md#v170-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/connectcontactlens`: [v1.15.0](service/connectcontactlens/CHANGELOG.md#v1150-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/controltower`: [v1.3.0](service/controltower/CHANGELOG.md#v130-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/databrew`: [v1.23.0](service/databrew/CHANGELOG.md#v1230-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/dataexchange`: [v1.21.0](service/dataexchange/CHANGELOG.md#v1210-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/datapipeline`: [v1.16.0](service/datapipeline/CHANGELOG.md#v1160-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/dax`: [v1.14.0](service/dax/CHANGELOG.md#v1140-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/devicefarm`: [v1.17.0](service/devicefarm/CHANGELOG.md#v1170-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/docdbelastic`: [v1.3.0](service/docdbelastic/CHANGELOG.md#v130-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/ec2instanceconnect`: [v1.17.0](service/ec2instanceconnect/CHANGELOG.md#v1170-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/ecrpublic`: [v1.18.0](service/ecrpublic/CHANGELOG.md#v1180-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk`: [v1.17.0](service/elasticbeanstalk/CHANGELOG.md#v1170-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing`: [v1.17.0](service/elasticloadbalancing/CHANGELOG.md#v1170-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/elastictranscoder`: [v1.16.0](service/elastictranscoder/CHANGELOG.md#v1160-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/evidently`: [v1.13.0](service/evidently/CHANGELOG.md#v1130-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/finspacedata`: [v1.16.0](service/finspacedata/CHANGELOG.md#v1160-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/fis`: [v1.16.0](service/fis/CHANGELOG.md#v1160-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/forecast`: [v1.27.0](service/forecast/CHANGELOG.md#v1270-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/forecastquery`: [v1.15.0](service/forecastquery/CHANGELOG.md#v1150-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/gamesparks`: [v1.4.0](service/gamesparks/CHANGELOG.md#v140-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/glacier`: [v1.16.0](service/glacier/CHANGELOG.md#v1160-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/greengrass`: [v1.17.0](service/greengrass/CHANGELOG.md#v1170-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/greengrassv2`: [v1.24.0](service/greengrassv2/CHANGELOG.md#v1240-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/honeycode`: [v1.15.0](service/honeycode/CHANGELOG.md#v1150-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/inspector`: [v1.15.0](service/inspector/CHANGELOG.md#v1150-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/iot1clickdevicesservice`: [v1.13.0](service/iot1clickdevicesservice/CHANGELOG.md#v1130-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/iot1clickprojects`: [v1.14.0](service/iot1clickprojects/CHANGELOG.md#v1140-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/iotanalytics`: [v1.16.0](service/iotanalytics/CHANGELOG.md#v1160-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/iotevents`: [v1.17.0](service/iotevents/CHANGELOG.md#v1170-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/ioteventsdata`: [v1.15.0](service/ioteventsdata/CHANGELOG.md#v1150-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/iotfleethub`: [v1.15.0](service/iotfleethub/CHANGELOG.md#v1150-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/iotjobsdataplane`: [v1.14.0](service/iotjobsdataplane/CHANGELOG.md#v1140-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/iotroborunner`: [v1.3.0](service/iotroborunner/CHANGELOG.md#v130-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/iotsecuretunneling`: [v1.17.0](service/iotsecuretunneling/CHANGELOG.md#v1170-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/iotthingsgraph`: [v1.16.0](service/iotthingsgraph/CHANGELOG.md#v1160-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/ivschat`: [v1.6.0](service/ivschat/CHANGELOG.md#v160-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/kendraranking`: [v1.2.0](service/kendraranking/CHANGELOG.md#v120-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/kinesis`: [v1.19.0](service/kinesis/CHANGELOG.md#v1190-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/kinesisanalytics`: [v1.16.0](service/kinesisanalytics/CHANGELOG.md#v1160-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/kinesisvideoarchivedmedia`: [v1.17.0](service/kinesisvideoarchivedmedia/CHANGELOG.md#v1170-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/kinesisvideomedia`: [v1.13.0](service/kinesisvideomedia/CHANGELOG.md#v1130-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/kinesisvideosignaling`: [v1.13.0](service/kinesisvideosignaling/CHANGELOG.md#v1130-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/kinesisvideowebrtcstorage`: [v1.4.0](service/kinesisvideowebrtcstorage/CHANGELOG.md#v140-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/lexmodelbuildingservice`: [v1.19.0](service/lexmodelbuildingservice/CHANGELOG.md#v1190-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/lexruntimeservice`: [v1.15.0](service/lexruntimeservice/CHANGELOG.md#v1150-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/lexruntimev2`: [v1.19.0](service/lexruntimev2/CHANGELOG.md#v1190-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/licensemanager`: [v1.20.0](service/licensemanager/CHANGELOG.md#v1200-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/licensemanagerlinuxsubscriptions`: [v1.3.0](service/licensemanagerlinuxsubscriptions/CHANGELOG.md#v130-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/licensemanagerusersubscriptions`: [v1.4.0](service/licensemanagerusersubscriptions/CHANGELOG.md#v140-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/lookoutmetrics`: [v1.21.0](service/lookoutmetrics/CHANGELOG.md#v1210-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/lookoutvision`: [v1.17.0](service/lookoutvision/CHANGELOG.md#v1170-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/machinelearning`: [v1.17.0](service/machinelearning/CHANGELOG.md#v1170-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/macie`: [v1.17.0](service/macie/CHANGELOG.md#v1170-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/macie2`: [v1.29.7](service/macie2/CHANGELOG.md#v1297-2023-09-18) + * **Documentation**: This release changes the default managedDataIdentifierSelector setting for new classification jobs to RECOMMENDED. By default, new classification jobs now use the recommended set of managed data identifiers. +* `github.com/aws/aws-sdk-go-v2/service/marketplacecommerceanalytics`: [v1.14.0](service/marketplacecommerceanalytics/CHANGELOG.md#v1140-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/marketplaceentitlementservice`: [v1.14.0](service/marketplaceentitlementservice/CHANGELOG.md#v1140-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/marketplacemetering`: [v1.16.0](service/marketplacemetering/CHANGELOG.md#v1160-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/mediapackagev2`: [v1.2.0](service/mediapackagev2/CHANGELOG.md#v120-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/mediapackagevod`: [v1.24.0](service/mediapackagevod/CHANGELOG.md#v1240-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/mediastore`: [v1.15.0](service/mediastore/CHANGELOG.md#v1150-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/mediastoredata`: [v1.15.0](service/mediastoredata/CHANGELOG.md#v1150-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/medicalimaging`: [v1.2.0](service/medicalimaging/CHANGELOG.md#v120-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/migrationhub`: [v1.15.0](service/migrationhub/CHANGELOG.md#v1150-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/migrationhubconfig`: [v1.15.0](service/migrationhubconfig/CHANGELOG.md#v1150-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/migrationhuborchestrator`: [v1.3.0](service/migrationhuborchestrator/CHANGELOG.md#v130-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/migrationhubstrategy`: [v1.11.0](service/migrationhubstrategy/CHANGELOG.md#v1110-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/mobile`: [v1.14.0](service/mobile/CHANGELOG.md#v1140-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/mturk`: [v1.16.0](service/mturk/CHANGELOG.md#v1160-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/neptune`: [v1.22.0](service/neptune/CHANGELOG.md#v1220-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/networkmanager`: [v1.19.0](service/networkmanager/CHANGELOG.md#v1190-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/nimble`: [v1.18.0](service/nimble/CHANGELOG.md#v1180-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/oam`: [v1.3.0](service/oam/CHANGELOG.md#v130-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/opensearchserverless`: [v1.5.0](service/opensearchserverless/CHANGELOG.md#v150-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/opsworks`: [v1.16.0](service/opsworks/CHANGELOG.md#v1160-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/opsworkscm`: [v1.17.0](service/opsworkscm/CHANGELOG.md#v1170-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/osis`: [v1.2.0](service/osis/CHANGELOG.md#v120-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/panorama`: [v1.13.0](service/panorama/CHANGELOG.md#v1130-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/paymentcryptography`: [v1.2.0](service/paymentcryptography/CHANGELOG.md#v120-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/personalizeevents`: [v1.15.0](service/personalizeevents/CHANGELOG.md#v1150-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/personalizeruntime`: [v1.15.0](service/personalizeruntime/CHANGELOG.md#v1150-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/pinpointemail`: [v1.14.0](service/pinpointemail/CHANGELOG.md#v1140-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoice`: [v1.13.0](service/pinpointsmsvoice/CHANGELOG.md#v1130-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2`: [v1.3.0](service/pinpointsmsvoicev2/CHANGELOG.md#v130-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/pipes`: [v1.4.0](service/pipes/CHANGELOG.md#v140-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/qldbsession`: [v1.16.0](service/qldbsession/CHANGELOG.md#v1160-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/rbin`: [v1.10.0](service/rbin/CHANGELOG.md#v1100-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/rdsdata`: [v1.15.0](service/rdsdata/CHANGELOG.md#v1150-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/redshiftserverless`: [v1.6.0](service/redshiftserverless/CHANGELOG.md#v160-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/resourceexplorer2`: [v1.4.0](service/resourceexplorer2/CHANGELOG.md#v140-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/resourcegroups`: [v1.16.0](service/resourcegroups/CHANGELOG.md#v1160-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi`: [v1.16.0](service/resourcegroupstaggingapi/CHANGELOG.md#v1160-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/robomaker`: [v1.20.0](service/robomaker/CHANGELOG.md#v1200-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/route53recoverycluster`: [v1.13.0](service/route53recoverycluster/CHANGELOG.md#v1130-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/route53recoverycontrolconfig`: [v1.13.0](service/route53recoverycontrolconfig/CHANGELOG.md#v1130-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/route53recoveryreadiness`: [v1.11.0](service/route53recoveryreadiness/CHANGELOG.md#v1110-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/route53resolver`: [v1.20.0](service/route53resolver/CHANGELOG.md#v1200-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/rum`: [v1.12.0](service/rum/CHANGELOG.md#v1120-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/s3outposts`: [v1.18.0](service/s3outposts/CHANGELOG.md#v1180-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/sagemakera2iruntime`: [v1.17.0](service/sagemakera2iruntime/CHANGELOG.md#v1170-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/sagemakeredge`: [v1.15.0](service/sagemakeredge/CHANGELOG.md#v1150-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/sagemakergeospatial`: [v1.5.0](service/sagemakergeospatial/CHANGELOG.md#v150-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/sagemakermetrics`: [v1.2.0](service/sagemakermetrics/CHANGELOG.md#v120-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/scheduler`: [v1.3.0](service/scheduler/CHANGELOG.md#v130-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/schemas`: [v1.17.0](service/schemas/CHANGELOG.md#v1170-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/serverlessapplicationrepository`: [v1.14.0](service/serverlessapplicationrepository/CHANGELOG.md#v1140-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/servicecatalogappregistry`: [v1.19.0](service/servicecatalogappregistry/CHANGELOG.md#v1190-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/servicediscovery`: [v1.23.0](service/servicediscovery/CHANGELOG.md#v1230-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/shield`: [v1.20.0](service/shield/CHANGELOG.md#v1200-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/sms`: [v1.15.0](service/sms/CHANGELOG.md#v1150-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/snowdevicemanagement`: [v1.11.0](service/snowdevicemanagement/CHANGELOG.md#v1110-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/sns`: [v1.22.0](service/sns/CHANGELOG.md#v1220-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/ssmcontacts`: [v1.17.0](service/ssmcontacts/CHANGELOG.md#v1170-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/ssmincidents`: [v1.23.0](service/ssmincidents/CHANGELOG.md#v1230-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/ssmsap`: [v1.5.0](service/ssmsap/CHANGELOG.md#v150-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/sso`: [v1.14.0](service/sso/CHANGELOG.md#v1140-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/ssooidc`: [v1.16.0](service/ssooidc/CHANGELOG.md#v1160-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/storagegateway`: [v1.20.0](service/storagegateway/CHANGELOG.md#v1200-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/sts`: [v1.22.0](service/sts/CHANGELOG.md#v1220-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/supportapp`: [v1.4.0](service/supportapp/CHANGELOG.md#v140-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/synthetics`: [v1.19.0](service/synthetics/CHANGELOG.md#v1190-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/textract`: [v1.23.0](service/textract/CHANGELOG.md#v1230-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/timestreamquery`: [v1.17.0](service/timestreamquery/CHANGELOG.md#v1170-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/timestreamwrite`: [v1.19.0](service/timestreamwrite/CHANGELOG.md#v1190-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/tnb`: [v1.3.0](service/tnb/CHANGELOG.md#v130-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/transcribestreaming`: [v1.11.0](service/transcribestreaming/CHANGELOG.md#v1110-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/voiceid`: [v1.15.0](service/voiceid/CHANGELOG.md#v1150-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/waf`: [v1.14.0](service/waf/CHANGELOG.md#v1140-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/wafregional`: [v1.15.0](service/wafregional/CHANGELOG.md#v1150-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/workdocs`: [v1.16.0](service/workdocs/CHANGELOG.md#v1160-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/worklink`: [v1.15.0](service/worklink/CHANGELOG.md#v1150-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* `github.com/aws/aws-sdk-go-v2/service/workmail`: [v1.20.0](service/workmail/CHANGELOG.md#v1200-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. + * **Feature**: This release includes four new APIs UpdateUser, UpdateGroup, ListGroupsForEntity and DescribeEntity, along with RemoteUsers and some enhancements to existing APIs. +* `github.com/aws/aws-sdk-go-v2/service/workmailmessageflow`: [v1.14.0](service/workmailmessageflow/CHANGELOG.md#v1140-2023-09-18) + * **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. + +# Release (2023-09-15) + +## Module Highlights +* `github.com/aws/aws-sdk-go-v2/service/appstream`: [v1.24.0](service/appstream/CHANGELOG.md#v1240-2023-09-15) + * **Feature**: This release introduces app block builder, allowing customers to provision a resource to package applications into an app block +* `github.com/aws/aws-sdk-go-v2/service/connect`: [v1.67.0](service/connect/CHANGELOG.md#v1670-2023-09-15) + * **Feature**: New rule type (OnMetricDataUpdate) has been added +* `github.com/aws/aws-sdk-go-v2/service/datasync`: [v1.29.1](service/datasync/CHANGELOG.md#v1291-2023-09-15) + * **Documentation**: Documentation-only updates for AWS DataSync. +* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.106.0](service/sagemaker/CHANGELOG.md#v11060-2023-09-15) + * **Feature**: This release introduces Skip Model Validation for Model Packages + +# Release (2023-09-14) + +## Module Highlights +* `github.com/aws/aws-sdk-go-v2/service/appstream`: [v1.23.0](service/appstream/CHANGELOG.md#v1230-2023-09-14) + * **Feature**: This release introduces multi-session fleets, allowing customers to provision more than one user session on a single fleet instance. +* `github.com/aws/aws-sdk-go-v2/service/cloudformation`: [v1.34.6](service/cloudformation/CHANGELOG.md#v1346-2023-09-14) + * **Documentation**: Documentation updates for AWS CloudFormation +* `github.com/aws/aws-sdk-go-v2/service/entityresolution`: [v1.2.0](service/entityresolution/CHANGELOG.md#v120-2023-09-14) + * **Feature**: Changed "ResolutionTechniques" and "MappedInputFields" in workflow and schema mapping operations to be required fields. +* `github.com/aws/aws-sdk-go-v2/service/lookoutequipment`: [v1.19.0](service/lookoutequipment/CHANGELOG.md#v1190-2023-09-14) + * **Feature**: This release adds APIs for the new scheduled retraining feature. + +# Release (2023-09-13) + +## Module Highlights +* `github.com/aws/aws-sdk-go-v2/service/cloud9`: [v1.18.8](service/cloud9/CHANGELOG.md#v1188-2023-09-13) + * **Documentation**: Update to include information on Ubuntu 18 deprecation. +* `github.com/aws/aws-sdk-go-v2/service/drs`: [v1.16.0](service/drs/CHANGELOG.md#v1160-2023-09-13) + * **Feature**: Updated existing APIs and added new ones to support using AWS Elastic Disaster Recovery post-launch actions. Added support for new regions. +* `github.com/aws/aws-sdk-go-v2/service/firehose`: [v1.18.0](service/firehose/CHANGELOG.md#v1180-2023-09-13) + * **Feature**: DocumentIdOptions has been added for the Amazon OpenSearch destination. +* `github.com/aws/aws-sdk-go-v2/service/guardduty`: [v1.27.0](service/guardduty/CHANGELOG.md#v1270-2023-09-13) + * **Feature**: Add `managementType` field to ListCoverage API response. +* `github.com/aws/aws-sdk-go-v2/service/internetmonitor`: [v1.6.0](service/internetmonitor/CHANGELOG.md#v160-2023-09-13) + * **Feature**: This release updates the Amazon CloudWatch Internet Monitor API domain name. +* `github.com/aws/aws-sdk-go-v2/service/ivsrealtime`: [v1.4.4](service/ivsrealtime/CHANGELOG.md#v144-2023-09-13) + * **Documentation**: Doc only update that changes description for ParticipantToken. +* `github.com/aws/aws-sdk-go-v2/service/simspaceweaver`: [v1.5.1](service/simspaceweaver/CHANGELOG.md#v151-2023-09-13) + * **Documentation**: Edited the introductory text for the API reference. +* `github.com/aws/aws-sdk-go-v2/service/xray`: [v1.18.0](service/xray/CHANGELOG.md#v1180-2023-09-13) + * **Feature**: Add StartTime field in GetTraceSummaries API response for each TraceSummary. + +# Release (2023-09-12) + +## Module Highlights +* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.118.0](service/ec2/CHANGELOG.md#v11180-2023-09-12) + * **Feature**: This release adds support for restricting public sharing of AMIs through AMI Block Public Access +* `github.com/aws/aws-sdk-go-v2/service/eventbridge`: [v1.22.0](service/eventbridge/CHANGELOG.md#v1220-2023-09-12) + * **Feature**: Adds sensitive trait to various shapes in Jetstream Connections API model. +* `github.com/aws/aws-sdk-go-v2/service/kendra`: [v1.43.0](service/kendra/CHANGELOG.md#v1430-2023-09-12) + * **Feature**: Amazon Kendra now supports confidence score buckets for retrieved passage results using the Retrieve API. + +# Release (2023-09-11) + +## Module Highlights +* `github.com/aws/aws-sdk-go-v2/service/ecr`: [v1.20.0](service/ecr/CHANGELOG.md#v1200-2023-09-11) + * **Feature**: This release will have ValidationException be thrown from ECR LifecyclePolicy APIs in regions LifecyclePolicy is not supported, this includes existing Amazon Dedicated Cloud (ADC) regions. This release will also change Tag: TagValue and Tag: TagKey to required. +* `github.com/aws/aws-sdk-go-v2/service/medialive`: [v1.37.0](service/medialive/CHANGELOG.md#v1370-2023-09-11) + * **Feature**: AWS Elemental Link now supports attaching a Link UHD device to a MediaConnect flow. +* `github.com/aws/aws-sdk-go-v2/service/quicksight`: [v1.43.0](service/quicksight/CHANGELOG.md#v1430-2023-09-11) + * **Feature**: This release launches new updates to QuickSight KPI visuals - support for sparklines, new templated layout and new targets for conditional formatting rules. + +# Release (2023-09-08) + +## Module Highlights +* `github.com/aws/aws-sdk-go-v2/service/fsx`: [v1.32.6](service/fsx/CHANGELOG.md#v1326-2023-09-08) + * **Documentation**: Amazon FSx documentation fixes +* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.105.0](service/sagemaker/CHANGELOG.md#v11050-2023-09-08) + * **Feature**: Autopilot APIs will now support holiday featurization for Timeseries models. The models will now hold holiday metadata and should be able to accommodate holiday effect during inference. +* `github.com/aws/aws-sdk-go-v2/service/ssoadmin`: [v1.18.0](service/ssoadmin/CHANGELOG.md#v1180-2023-09-08) + * **Feature**: Content updates to IAM Identity Center API for China Regions. +* `github.com/aws/aws-sdk-go-v2/service/workspaces`: [v1.30.0](service/workspaces/CHANGELOG.md#v1300-2023-09-08) + * **Feature**: A new field "ErrorDetails" will be added to the output of "DescribeWorkspaceImages" API call. This field provides in-depth details about the error occurred during image import process. These details include the possible causes of the errors and troubleshooting information. + +# Release (2023-09-07) + +## Module Highlights +* `github.com/aws/aws-sdk-go-v2/service/securityhub`: [v1.36.2](service/securityhub/CHANGELOG.md#v1362-2023-09-07) + * **Documentation**: Documentation updates for AWS Security Hub +* `github.com/aws/aws-sdk-go-v2/service/simspaceweaver`: [v1.5.0](service/simspaceweaver/CHANGELOG.md#v150-2023-09-07) + * **Feature**: BucketName and ObjectKey are now required for the S3Location data type. BucketName is now required for the S3Destination data type. + +# Release (2023-09-06) + +## Module Highlights +* `github.com/aws/aws-sdk-go-v2/service/appflow`: [v1.35.0](service/appflow/CHANGELOG.md#v1350-2023-09-06) + * **Feature**: Adding OAuth2.0 support for servicenow connector. +* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.117.0](service/ec2/CHANGELOG.md#v11170-2023-09-06) + * **Feature**: This release adds 'outpost' location type to the DescribeInstanceTypeOfferings API, allowing customers that have been allowlisted for outpost to query their offerings in the API. +* `github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2`: [v1.21.4](service/elasticloadbalancingv2/CHANGELOG.md#v1214-2023-09-06) + * **Documentation**: This release enables default UDP connection termination and disabling unhealthy target connection termination for Network Load Balancers. +* `github.com/aws/aws-sdk-go-v2/service/medialive`: [v1.36.0](service/medialive/CHANGELOG.md#v1360-2023-09-06) + * **Feature**: Adds advanced Output Locking options for Epoch Locking: Custom Epoch and Jam Sync Time +* `github.com/aws/aws-sdk-go-v2/service/wafv2`: [v1.38.0](service/wafv2/CHANGELOG.md#v1380-2023-09-06) + * **Feature**: The targeted protection level of the Bot Control managed rule group now provides optional, machine-learning analysis of traffic statistics to detect some bot-related activity. You can enable or disable the machine learning functionality through the API. + +# Release (2023-09-05) + +## General Highlights +* **Dependency Update**: Updated to the latest SDK module versions + +## Module Highlights +* `github.com/aws/aws-sdk-go-v2/service/billingconductor`: [v1.9.0](service/billingconductor/CHANGELOG.md#v190-2023-09-05) + * **Feature**: This release adds support for line item filtering in for the custom line item resource. +* `github.com/aws/aws-sdk-go-v2/service/cloud9`: [v1.18.7](service/cloud9/CHANGELOG.md#v1187-2023-09-05) + * **Documentation**: Added support for Ubuntu 22.04 that was not picked up in a previous Trebuchet request. Doc-only update. +* `github.com/aws/aws-sdk-go-v2/service/computeoptimizer`: [v1.27.0](service/computeoptimizer/CHANGELOG.md#v1270-2023-09-05) + * **Feature**: This release adds support to provide recommendations for G4dn and P3 instances that use NVIDIA GPUs. +* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.116.0](service/ec2/CHANGELOG.md#v11160-2023-09-05) + * **Feature**: Introducing Amazon EC2 C7gd, M7gd, and R7gd Instances with up to 3.8 TB of local NVMe-based SSD block-level storage. These instances are powered by AWS Graviton3 processors, delivering up to 25% better performance over Graviton2-based instances. +* `github.com/aws/aws-sdk-go-v2/service/ecs`: [v1.30.1](service/ecs/CHANGELOG.md#v1301-2023-09-05) + * **Documentation**: Documentation only update for Amazon ECS. +* `github.com/aws/aws-sdk-go-v2/service/eventbridge`: [v1.21.0](service/eventbridge/CHANGELOG.md#v1210-2023-09-05) + * **Feature**: Improve Endpoint Ruleset test coverage. +* `github.com/aws/aws-sdk-go-v2/service/rds`: [v1.54.0](service/rds/CHANGELOG.md#v1540-2023-09-05) + * **Feature**: Add support for feature integration with AWS Backup. +* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.104.0](service/sagemaker/CHANGELOG.md#v11040-2023-09-05) + * **Feature**: SageMaker Neo now supports data input shape derivation for Pytorch 2.0 and XGBoost compilation job for cloud instance targets. You can skip DataInputConfig field during compilation job creation. You can also access derived information from model in DescribeCompilationJob response. +* `github.com/aws/aws-sdk-go-v2/service/vpclattice`: [v1.2.0](service/vpclattice/CHANGELOG.md#v120-2023-09-05) + * **Feature**: This release adds Lambda event structure version config support for LAMBDA target groups. It also adds newline support for auth policies. + +# Release (2023-09-01) + +## Module Highlights +* `github.com/aws/aws-sdk-go-v2/service/chimesdkmediapipelines`: [v1.8.0](service/chimesdkmediapipelines/CHANGELOG.md#v180-2023-09-01) + * **Feature**: This release adds support for the Voice Analytics feature for customer-owned KVS streams as part of the Amazon Chime SDK call analytics. +* `github.com/aws/aws-sdk-go-v2/service/connect`: [v1.66.0](service/connect/CHANGELOG.md#v1660-2023-09-01) + * **Feature**: Amazon Connect adds the ability to read, create, update, delete, and list view resources, and adds the ability to read, create, delete, and list view versions. +* `github.com/aws/aws-sdk-go-v2/service/identitystore`: [v1.18.0](service/identitystore/CHANGELOG.md#v1180-2023-09-01) + * **Feature**: New Identity Store content for China Region launch +* `github.com/aws/aws-sdk-go-v2/service/neptunedata`: [v1.0.1](service/neptunedata/CHANGELOG.md#v101-2023-09-01) + * **Documentation**: Removed the descriptive text in the introduction. + +# Release (2023-08-31) + +## General Highlights +* **Dependency Update**: Updated to the latest SDK module versions + +## Module Highlights +* `github.com/aws/aws-sdk-go-v2/service/chimesdkmediapipelines`: [v1.7.0](service/chimesdkmediapipelines/CHANGELOG.md#v170-2023-08-31) + * **Feature**: This release adds support for feature Voice Enhancement for Call Recording as part of Amazon Chime SDK call analytics. +* `github.com/aws/aws-sdk-go-v2/service/cloudhsm`: [v1.15.0](service/cloudhsm/CHANGELOG.md#v1150-2023-08-31) + * **Feature**: Deprecating CloudHSM Classic API Service. +* `github.com/aws/aws-sdk-go-v2/service/cloudwatchevents`: [v1.17.0](service/cloudwatchevents/CHANGELOG.md#v1170-2023-08-31) + * **Feature**: Documentation updates for CloudWatch Events. +* `github.com/aws/aws-sdk-go-v2/service/connectcampaigns`: [v1.4.0](service/connectcampaigns/CHANGELOG.md#v140-2023-08-31) + * **Feature**: Amazon Connect outbound campaigns has launched agentless dialing mode which enables customers to make automated outbound calls without agent engagement. This release updates three of the campaign management API's to support the new agentless dialing mode and the new dialing capacity field. +* `github.com/aws/aws-sdk-go-v2/service/connectparticipant`: [v1.17.0](service/connectparticipant/CHANGELOG.md#v1170-2023-08-31) + * **Feature**: Amazon Connect Participant Service adds the ability to get a view resource using a view token, which is provided in a participant message, with the release of the DescribeView API. +* `github.com/aws/aws-sdk-go-v2/service/customerprofiles`: [v1.28.0](service/customerprofiles/CHANGELOG.md#v1280-2023-08-31) + * **Feature**: Adds sensitive trait to various shapes in Customer Profiles API model. +* `github.com/aws/aws-sdk-go-v2/service/ecs`: [v1.30.0](service/ecs/CHANGELOG.md#v1300-2023-08-31) + * **Feature**: This release adds support for an account-level setting that you can use to configure the number of days for AWS Fargate task retirement. +* `github.com/aws/aws-sdk-go-v2/service/health`: [v1.19.0](service/health/CHANGELOG.md#v1190-2023-08-31) + * **Feature**: Adds new API DescribeEntityAggregatesForOrganization that retrieves entity aggregates across your organization. Also adds support for resource status filtering in DescribeAffectedEntitiesForOrganization, resource status aggregates in the DescribeEntityAggregates response, and new resource statuses. +* `github.com/aws/aws-sdk-go-v2/service/ivs`: [v1.26.0](service/ivs/CHANGELOG.md#v1260-2023-08-31) + * **Feature**: Updated "type" description for CreateChannel, UpdateChannel, Channel, and ChannelSummary. +* `github.com/aws/aws-sdk-go-v2/service/kafkaconnect`: [v1.11.0](service/kafkaconnect/CHANGELOG.md#v1110-2023-08-31) + * **Feature**: Minor model changes for Kafka Connect as well as endpoint updates. +* `github.com/aws/aws-sdk-go-v2/service/paymentcryptographydata`: [v1.2.0](service/paymentcryptographydata/CHANGELOG.md#v120-2023-08-31) + * **Feature**: Make KeyCheckValue field optional when using asymmetric keys as Key Check Values typically only apply to symmetric keys +* `github.com/aws/aws-sdk-go-v2/service/sagemakerruntime`: [v1.21.0](service/sagemakerruntime/CHANGELOG.md#v1210-2023-08-31) + * **Feature**: This release adds a new InvokeEndpointWithResponseStream API to support streaming of model responses. + +# Release (2023-08-30) + +## Module Highlights +* `github.com/aws/aws-sdk-go-v2/service/appflow`: [v1.34.0](service/appflow/CHANGELOG.md#v1340-2023-08-30) + * **Feature**: Add SAP source connector parallel and pagination feature +* `github.com/aws/aws-sdk-go-v2/service/apprunner`: [v1.19.0](service/apprunner/CHANGELOG.md#v1190-2023-08-30) + * **Feature**: App Runner adds support for Bitbucket. You can now create App Runner connection that connects to your Bitbucket repositories and deploy App Runner service with the source code stored in a Bitbucket repository. +* `github.com/aws/aws-sdk-go-v2/service/cleanrooms`: [v1.4.0](service/cleanrooms/CHANGELOG.md#v140-2023-08-30) + * **Feature**: This release decouples member abilities in a collaboration. With this change, the member who can run queries no longer needs to be the same as the member who can receive results. +* `github.com/aws/aws-sdk-go-v2/service/datasync`: [v1.29.0](service/datasync/CHANGELOG.md#v1290-2023-08-30) + * **Feature**: AWS DataSync introduces Task Reports, a new feature that provides detailed reports of data transfer operations for each task execution. +* `github.com/aws/aws-sdk-go-v2/service/neptunedata`: [v1.0.0](service/neptunedata/CHANGELOG.md#v100-2023-08-30) + * **Release**: New AWS service client module + * **Feature**: Allows customers to execute data plane actions like bulk loading graphs, issuing graph queries using Gremlin and openCypher directly from the SDK. +* `github.com/aws/aws-sdk-go-v2/service/networkfirewall`: [v1.30.0](service/networkfirewall/CHANGELOG.md#v1300-2023-08-30) + * **Feature**: Network Firewall increasing pagination token string length +* `github.com/aws/aws-sdk-go-v2/service/pcaconnectorad`: [v1.0.0](service/pcaconnectorad/CHANGELOG.md#v100-2023-08-30) + * **Release**: New AWS service client module + * **Feature**: The Connector for AD allows you to use a fully-managed AWS Private CA as a drop-in replacement for your self-managed enterprise CAs without local agents or proxy servers. Enterprises that use AD to manage Windows environments can reduce their private certificate authority (CA) costs and complexity. +* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.103.0](service/sagemaker/CHANGELOG.md#v11030-2023-08-30) + * **Feature**: Amazon SageMaker Canvas adds IdentityProviderOAuthSettings support for CanvasAppSettings + +# Release (2023-08-29) + +## Module Highlights +* `github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider`: [v1.26.0](service/cognitoidentityprovider/CHANGELOG.md#v1260-2023-08-29) + * **Feature**: Added API example requests and responses for several operations. Fixed the validation regex for user pools Identity Provider name. +* `github.com/aws/aws-sdk-go-v2/service/fsx`: [v1.32.5](service/fsx/CHANGELOG.md#v1325-2023-08-29) + * **Documentation**: Documentation updates for project quotas. +* `github.com/aws/aws-sdk-go-v2/service/omics`: [v1.9.0](service/omics/CHANGELOG.md#v190-2023-08-29) + * **Feature**: Add RetentionMode support for Runs. +* `github.com/aws/aws-sdk-go-v2/service/sesv2`: [v1.20.0](service/sesv2/CHANGELOG.md#v1200-2023-08-29) + * **Feature**: Adds support for the new Export and Message Insights features: create, get, list and cancel export jobs; get message insights. + +# Release (2023-08-28) + +## Module Highlights +* `github.com/aws/aws-sdk-go-v2/service/backup`: [v1.25.0](service/backup/CHANGELOG.md#v1250-2023-08-28) + * **Feature**: Add support for customizing time zone for backup window in backup plan rules. +* `github.com/aws/aws-sdk-go-v2/service/computeoptimizer`: [v1.26.0](service/computeoptimizer/CHANGELOG.md#v1260-2023-08-28) + * **Feature**: This release enables AWS Compute Optimizer to analyze and generate licensing optimization recommendations for sql server running on EC2 instances. +* `github.com/aws/aws-sdk-go-v2/service/organizations`: [v1.20.6](service/organizations/CHANGELOG.md#v1206-2023-08-28) + * **Documentation**: Documentation updates for permissions and links. +* `github.com/aws/aws-sdk-go-v2/service/securitylake`: [v1.7.0](service/securitylake/CHANGELOG.md#v170-2023-08-28) + * **Feature**: Remove incorrect regex enforcement on pagination tokens. +* `github.com/aws/aws-sdk-go-v2/service/servicequotas`: [v1.16.0](service/servicequotas/CHANGELOG.md#v1160-2023-08-28) + * **Feature**: Service Quotas now supports viewing the applied quota value and requesting a quota increase for a specific resource in an AWS account. +* `github.com/aws/aws-sdk-go-v2/service/workspacesweb`: [v1.12.0](service/workspacesweb/CHANGELOG.md#v1120-2023-08-28) + * **Feature**: WorkSpaces Web now enables Admins to configure which cookies are synchronized from an end-user's local browser to the in-session browser. In conjunction with a browser extension, this feature enables enhanced Single-Sign On capability by reducing the number of times an end-user has to authenticate. + +# Release (2023-08-25) + +## Module Highlights +* `github.com/aws/aws-sdk-go-v2/service/cloudtrail`: [v1.29.0](service/cloudtrail/CHANGELOG.md#v1290-2023-08-25) + * **Feature**: Add ThrottlingException with error code 429 to handle CloudTrail Delegated Admin request rate exceeded on organization resources. +* `github.com/aws/aws-sdk-go-v2/service/cloudwatch`: [v1.27.7](service/cloudwatch/CHANGELOG.md#v1277-2023-08-25) + * **Documentation**: Doc-only update to get doc bug fixes into the SDK docs + +# Release (2023-08-24) + +## Module Highlights +* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.115.0](service/ec2/CHANGELOG.md#v11150-2023-08-24) + * **Feature**: Amazon EC2 M7a instances, powered by 4th generation AMD EPYC processors, deliver up to 50% higher performance compared to M6a instances. Amazon EC2 Hpc7a instances, powered by 4th Gen AMD EPYC processors, deliver up to 2.5x better performance compared to Amazon EC2 Hpc6a instances. +* `github.com/aws/aws-sdk-go-v2/service/glue`: [v1.62.0](service/glue/CHANGELOG.md#v1620-2023-08-24) + * **Feature**: Added API attributes that help in the monitoring of sessions. +* `github.com/aws/aws-sdk-go-v2/service/mediaconvert`: [v1.41.0](service/mediaconvert/CHANGELOG.md#v1410-2023-08-24) + * **Feature**: This release includes additional audio channel tags in Quicktime outputs, support for film grain synthesis for AV1 outputs, ability to create audio-only FLAC outputs, and ability to specify Amazon S3 destination storage class. +* `github.com/aws/aws-sdk-go-v2/service/medialive`: [v1.35.0](service/medialive/CHANGELOG.md#v1350-2023-08-24) + * **Feature**: MediaLive now supports passthrough of KLV data to a HLS output group with a TS container. MediaLive now supports setting an attenuation mode for AC3 audio when the coding mode is 3/2 LFE. MediaLive now supports specifying whether to include filler NAL units in RTMP output group settings. +* `github.com/aws/aws-sdk-go-v2/service/mediatailor`: [v1.27.0](service/mediatailor/CHANGELOG.md#v1270-2023-08-24) + * **Feature**: Adds new source location AUTODETECT_SIGV4 access type. +* `github.com/aws/aws-sdk-go-v2/service/quicksight`: [v1.42.0](service/quicksight/CHANGELOG.md#v1420-2023-08-24) + * **Feature**: Excel support in Snapshot Export APIs. Removed Required trait for some insight Computations. Namespace-shared Folders support. Global Filters support. Table pin Column support. +* `github.com/aws/aws-sdk-go-v2/service/rds`: [v1.53.0](service/rds/CHANGELOG.md#v1530-2023-08-24) + * **Feature**: This release updates the supported versions for Percona XtraBackup in Aurora MySQL. +* `github.com/aws/aws-sdk-go-v2/service/s3control`: [v1.33.0](service/s3control/CHANGELOG.md#v1330-2023-08-24) + * **Feature**: Updates to endpoint ruleset tests to address Smithy validation issues and standardize the capitalization of DualStack. +* `github.com/aws/aws-sdk-go-v2/service/verifiedpermissions`: [v1.2.1](service/verifiedpermissions/CHANGELOG.md#v121-2023-08-24) + * **Documentation**: Documentation updates for Amazon Verified Permissions. + +# Release (2023-08-23) + +## General Highlights +* **Dependency Update**: Updated to the latest SDK module versions + +## Module Highlights +* `github.com/aws/aws-sdk-go-v2/service/apigateway`: [v1.18.0](service/apigateway/CHANGELOG.md#v1180-2023-08-23) + * **Feature**: This release adds RootResourceId to GetRestApi response. +* `github.com/aws/aws-sdk-go-v2/service/polly`: [v1.31.0](service/polly/CHANGELOG.md#v1310-2023-08-23) + * **Feature**: Amazon Polly adds 1 new voice - Zayd (ar-AE) + +# Release (2023-08-22) + +## Module Highlights +* `github.com/aws/aws-sdk-go-v2/service/costexplorer`: [v1.28.0](service/costexplorer/CHANGELOG.md#v1280-2023-08-22) + * **Feature**: This release adds the LastUpdatedDate and LastUsedDate timestamps to help you manage your cost allocation tags. +* `github.com/aws/aws-sdk-go-v2/service/globalaccelerator`: [v1.17.7](service/globalaccelerator/CHANGELOG.md#v1177-2023-08-22) + * **Documentation**: Global Accelerator now supports Client Ip Preservation for Network Load Balancer endpoints. +* `github.com/aws/aws-sdk-go-v2/service/rds`: [v1.52.0](service/rds/CHANGELOG.md#v1520-2023-08-22) + * **Feature**: Adding parameters to CreateCustomDbEngineVersion reserved for future use. +* `github.com/aws/aws-sdk-go-v2/service/verifiedpermissions`: [v1.2.0](service/verifiedpermissions/CHANGELOG.md#v120-2023-08-22) + * **Feature**: Documentation updates for Amazon Verified Permissions. Increases max results per page for ListPolicyStores, ListPolicies, and ListPolicyTemplates APIs from 20 to 50. + # Release (2023-08-21) ## General Highlights diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/go_module_metadata.go index 8cd672b6f..cd38b9280 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/go_module_metadata.go @@ -3,4 +3,4 @@ package aws // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.21.0" +const goModuleVersion = "1.21.2" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/CHANGELOG.md index 44d08cee7..6e993742b 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/CHANGELOG.md @@ -1,3 +1,7 @@ +# v1.4.14 (2023-10-06) + +* No change notes available for this release. + # v1.4.13 (2023-08-18) * No change notes available for this release. diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/go_module_metadata.go index 19f7e20cb..9bdca4eb7 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/go_module_metadata.go @@ -3,4 +3,4 @@ package eventstream // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.4.13" +const goModuleVersion = "1.4.14" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/retry/retryable_error.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/retry/retryable_error.go index 00d7d3eee..987affdde 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/retry/retryable_error.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/retry/retryable_error.go @@ -97,11 +97,21 @@ func (r RetryableConnectionError) IsErrorRetryable(err error) aws.Ternary { var netOpErr *net.OpError var dnsError *net.DNSError - switch { - case errors.As(err, &dnsError): + if errors.As(err, &dnsError) { // NXDOMAIN errors should not be retried - retryable = !dnsError.IsNotFound && dnsError.IsTemporary + if dnsError.IsNotFound { + return aws.BoolTernary(false) + } + // if !dnsError.Temporary(), error may or may not be temporary, + // (i.e. !Temporary() =/=> !retryable) so we should fall through to + // remaining checks + if dnsError.Temporary() { + return aws.BoolTernary(true) + } + } + + switch { case errors.As(err, &conErr) && conErr.ConnectionError(): retryable = true diff --git a/vendor/github.com/aws/aws-sdk-go-v2/ci-find-smithy-go.sh b/vendor/github.com/aws/aws-sdk-go-v2/ci-find-smithy-go.sh index 9b8f3a3d2..4da5d09cb 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/ci-find-smithy-go.sh +++ b/vendor/github.com/aws/aws-sdk-go-v2/ci-find-smithy-go.sh @@ -18,7 +18,7 @@ if [ -z "$RUNNER_TMPDIR" ]; then exit 1 fi -branch=`git branch --show-current` +branch=$(git branch --show-current) if [ "$branch" == main ]; then echo aws-sdk-go-v2 is on branch main, stop exit 0 @@ -38,10 +38,10 @@ fi echo on branch \"$branch\" while [ -n "$branch" ] && [[ "$branch" == *-* ]]; do - echo looking for $branch... - git ls-remote --exit-code --heads $repository refs/heads/$branch + echo looking for "$branch"... + git ls-remote --exit-code --heads "$repository" refs/heads/"$branch" if [ "$?" == 0 ]; then - echo found $branch + echo found "$branch" matched_branch=$branch break fi @@ -54,5 +54,5 @@ if [ -z "$matched_branch" ]; then exit 0 fi -git clone -b $matched_branch $repository $RUNNER_TMPDIR/smithy-go +git clone -b "$matched_branch" "$repository" "$RUNNER_TMPDIR"/smithy-go SMITHY_GO_SRC=$RUNNER_TMPDIR/smithy-go make gen-mod-replace-smithy-. diff --git a/vendor/github.com/aws/aws-sdk-go-v2/config/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/config/CHANGELOG.md index c76a89236..e1ddd4cd1 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/config/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/config/CHANGELOG.md @@ -1,3 +1,12 @@ +# v1.18.45 (2023-10-12) + +* **Bug Fix**: Fail to load config if an explicitly provided profile doesn't exist. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.44 (2023-10-06) + +* **Dependency Update**: Updated to the latest SDK module versions + # v1.18.43 (2023-10-02) * **Dependency Update**: Updated to the latest SDK module versions diff --git a/vendor/github.com/aws/aws-sdk-go-v2/config/config.go b/vendor/github.com/aws/aws-sdk-go-v2/config/config.go index 138f8e76d..bf26eab9a 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/config/config.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/config/config.go @@ -2,18 +2,11 @@ package config import ( "context" + "os" "github.com/aws/aws-sdk-go-v2/aws" ) -// defaultLoaders are a slice of functions that will read external configuration -// sources for configuration values. These values are read by the AWSConfigResolvers -// using interfaces to extract specific information from the external configuration. -var defaultLoaders = []loader{ - loadEnvConfig, - loadSharedConfigIgnoreNotExist, -} - // defaultAWSConfigResolvers are a slice of functions that will resolve external // configuration values into AWS configuration values. // @@ -190,7 +183,7 @@ func LoadDefaultConfig(ctx context.Context, optFns ...func(*LoadOptions) error) // assign Load Options to configs var cfgCpy = configs{options} - cfgCpy, err = cfgCpy.AppendFromLoaders(ctx, defaultLoaders) + cfgCpy, err = cfgCpy.AppendFromLoaders(ctx, resolveConfigLoaders(&options)) if err != nil { return aws.Config{}, err } @@ -202,3 +195,17 @@ func LoadDefaultConfig(ctx context.Context, optFns ...func(*LoadOptions) error) return cfg, nil } + +func resolveConfigLoaders(options *LoadOptions) []loader { + loaders := make([]loader, 2) + loaders[0] = loadEnvConfig + + // specification of a profile should cause a load failure if it doesn't exist + if os.Getenv(awsProfileEnvVar) != "" || options.SharedConfigProfile != "" { + loaders[1] = loadSharedConfig + } else { + loaders[1] = loadSharedConfigIgnoreNotExist + } + + return loaders +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/config/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/config/go_module_metadata.go index 85155756c..22c98ac01 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/config/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/config/go_module_metadata.go @@ -3,4 +3,4 @@ package config // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.18.43" +const goModuleVersion = "1.18.45" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/credentials/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/credentials/CHANGELOG.md index 02dce8562..ed558d3b9 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/credentials/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/credentials/CHANGELOG.md @@ -1,3 +1,11 @@ +# v1.13.43 (2023-10-12) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.42 (2023-10-06) + +* **Dependency Update**: Updated to the latest SDK module versions + # v1.13.41 (2023-10-02) * **Dependency Update**: Updated to the latest SDK module versions diff --git a/vendor/github.com/aws/aws-sdk-go-v2/credentials/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/credentials/go_module_metadata.go index 58ea71d58..5cf1064a6 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/credentials/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/credentials/go_module_metadata.go @@ -3,4 +3,4 @@ package credentials // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.13.41" +const goModuleVersion = "1.13.43" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/CHANGELOG.md index 66b3e83c3..5605f42d6 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/CHANGELOG.md @@ -1,3 +1,11 @@ +# v1.13.13 (2023-10-12) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.12 (2023-10-06) + +* **Dependency Update**: Updated to the latest SDK module versions + # v1.13.11 (2023-08-21) * **Dependency Update**: Updated to the latest SDK module versions diff --git a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/go_module_metadata.go index deb28a237..ab96ef614 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/go_module_metadata.go @@ -3,4 +3,4 @@ package imds // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.13.11" +const goModuleVersion = "1.13.13" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/feature/s3/manager/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/feature/s3/manager/CHANGELOG.md index 9343645f3..05927b853 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/feature/s3/manager/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/feature/s3/manager/CHANGELOG.md @@ -1,3 +1,11 @@ +# v1.11.90 (2023-10-12) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.11.89 (2023-10-06) + +* **Dependency Update**: Updated to the latest SDK module versions + # v1.11.88 (2023-10-02) * **Dependency Update**: Updated to the latest SDK module versions diff --git a/vendor/github.com/aws/aws-sdk-go-v2/feature/s3/manager/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/feature/s3/manager/go_module_metadata.go index c6f557958..60d025752 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/feature/s3/manager/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/feature/s3/manager/go_module_metadata.go @@ -3,4 +3,4 @@ package manager // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.11.88" +const goModuleVersion = "1.11.90" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/CHANGELOG.md index 9826a85e6..efcbed2e7 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/CHANGELOG.md @@ -1,3 +1,11 @@ +# v1.1.43 (2023-10-12) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.1.42 (2023-10-06) + +* **Dependency Update**: Updated to the latest SDK module versions + # v1.1.41 (2023-08-21) * **Dependency Update**: Updated to the latest SDK module versions diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/go_module_metadata.go index c7eec1c13..2eab5803b 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/go_module_metadata.go @@ -3,4 +3,4 @@ package configsources // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.1.41" +const goModuleVersion = "1.1.43" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partitions.json b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partitions.json index 4e0c6f123..ab107ca55 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partitions.json +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partitions.json @@ -4,6 +4,7 @@ "outputs" : { "dnsSuffix" : "amazonaws.com", "dualStackDnsSuffix" : "api.aws", + "implicitGlobalRegion" : "us-east-1", "name" : "aws", "supportsDualStack" : true, "supportsFIPS" : true @@ -103,6 +104,7 @@ "outputs" : { "dnsSuffix" : "amazonaws.com.cn", "dualStackDnsSuffix" : "api.amazonwebservices.com.cn", + "implicitGlobalRegion" : "cn-northwest-1", "name" : "aws-cn", "supportsDualStack" : true, "supportsFIPS" : true @@ -124,6 +126,7 @@ "outputs" : { "dnsSuffix" : "amazonaws.com", "dualStackDnsSuffix" : "api.aws", + "implicitGlobalRegion" : "us-gov-west-1", "name" : "aws-us-gov", "supportsDualStack" : true, "supportsFIPS" : true @@ -145,6 +148,7 @@ "outputs" : { "dnsSuffix" : "c2s.ic.gov", "dualStackDnsSuffix" : "c2s.ic.gov", + "implicitGlobalRegion" : "us-iso-east-1", "name" : "aws-iso", "supportsDualStack" : false, "supportsFIPS" : true @@ -166,6 +170,7 @@ "outputs" : { "dnsSuffix" : "sc2s.sgov.gov", "dualStackDnsSuffix" : "sc2s.sgov.gov", + "implicitGlobalRegion" : "us-isob-east-1", "name" : "aws-iso-b", "supportsDualStack" : false, "supportsFIPS" : true @@ -184,6 +189,7 @@ "outputs" : { "dnsSuffix" : "cloud.adc-e.uk", "dualStackDnsSuffix" : "cloud.adc-e.uk", + "implicitGlobalRegion" : "eu-isoe-west-1", "name" : "aws-iso-e", "supportsDualStack" : false, "supportsFIPS" : true @@ -195,6 +201,7 @@ "outputs" : { "dnsSuffix" : "csp.hci.ic.gov", "dualStackDnsSuffix" : "csp.hci.ic.gov", + "implicitGlobalRegion" : "us-isof-south-1", "name" : "aws-iso-f", "supportsDualStack" : false, "supportsFIPS" : true diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/CHANGELOG.md index a470e22de..bd830abea 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/CHANGELOG.md @@ -1,3 +1,11 @@ +# v2.4.37 (2023-10-12) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.4.36 (2023-10-06) + +* **Dependency Update**: Updated to the latest SDK module versions + # v2.4.35 (2023-08-21) * **Dependency Update**: Updated to the latest SDK module versions diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/go_module_metadata.go index ac28b313b..085819076 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/go_module_metadata.go @@ -3,4 +3,4 @@ package endpoints // goModuleVersion is the tagged release for this module -const goModuleVersion = "2.4.35" +const goModuleVersion = "2.4.37" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/CHANGELOG.md index 6254bbf61..8aab66186 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/CHANGELOG.md @@ -1,3 +1,11 @@ +# v1.3.45 (2023-10-12) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.44 (2023-10-06) + +* **Dependency Update**: Updated to the latest SDK module versions + # v1.3.43 (2023-09-22) * **Bug Fix**: Fixed a bug where merging `max_attempts` or `duration_seconds` fields across shared config files with invalid values would silently default them to 0. diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/go_module_metadata.go index 5f0d4498c..f92dc23cc 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/go_module_metadata.go @@ -3,4 +3,4 @@ package ini // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.3.43" +const goModuleVersion = "1.3.45" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/v4a/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/internal/v4a/CHANGELOG.md index 80510904e..0d0f6425c 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/v4a/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/v4a/CHANGELOG.md @@ -1,3 +1,11 @@ +# v1.1.6 (2023-10-12) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.1.5 (2023-10-06) + +* **Dependency Update**: Updated to the latest SDK module versions + # v1.1.4 (2023-08-21) * **Dependency Update**: Updated to the latest SDK module versions diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/v4a/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/v4a/go_module_metadata.go index 5a0e19ae6..9152c9cd6 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/v4a/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/v4a/go_module_metadata.go @@ -3,4 +3,4 @@ package v4a // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.1.4" +const goModuleVersion = "1.1.6" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/modman.toml b/vendor/github.com/aws/aws-sdk-go-v2/modman.toml index dad0dfc63..e505f5314 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/modman.toml +++ b/vendor/github.com/aws/aws-sdk-go-v2/modman.toml @@ -1,7 +1,7 @@ [dependencies] "github.com/aws/aws-sdk-go" = "v1.44.28" - "github.com/aws/smithy-go" = "v1.14.2" + "github.com/aws/smithy-go" = "v1.15.0" "github.com/google/go-cmp" = "v0.5.8" "github.com/jmespath/go-jmespath" = "v0.4.0" "golang.org/x/net" = "v0.1.0" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/CHANGELOG.md index 289c55c23..850b02ab8 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/CHANGELOG.md @@ -1,3 +1,7 @@ +# v1.9.15 (2023-10-06) + +* No change notes available for this release. + # v1.9.14 (2023-08-18) * No change notes available for this release. diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/go_module_metadata.go index 187ef12b3..c2a0276cf 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/go_module_metadata.go @@ -3,4 +3,4 @@ package acceptencoding // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.9.14" +const goModuleVersion = "1.9.15" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/checksum/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/checksum/CHANGELOG.md index cf2e59dd4..92d661a86 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/checksum/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/checksum/CHANGELOG.md @@ -1,3 +1,11 @@ +# v1.1.38 (2023-10-12) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.1.37 (2023-10-06) + +* **Dependency Update**: Updated to the latest SDK module versions + # v1.1.36 (2023-08-21) * **Dependency Update**: Updated to the latest SDK module versions diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/checksum/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/checksum/go_module_metadata.go index 479bff9cb..86be6850f 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/checksum/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/checksum/go_module_metadata.go @@ -3,4 +3,4 @@ package checksum // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.1.36" +const goModuleVersion = "1.1.38" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/CHANGELOG.md index e410f3e48..318955895 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/CHANGELOG.md @@ -1,3 +1,11 @@ +# v1.9.37 (2023-10-12) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.9.36 (2023-10-06) + +* **Dependency Update**: Updated to the latest SDK module versions + # v1.9.35 (2023-08-21) * **Dependency Update**: Updated to the latest SDK module versions diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/go_module_metadata.go index 9c076b11f..1d73a0cde 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/go_module_metadata.go @@ -3,4 +3,4 @@ package presignedurl // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.9.35" +const goModuleVersion = "1.9.37" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/s3shared/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/s3shared/CHANGELOG.md index a7676224d..1f1c90f3e 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/s3shared/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/s3shared/CHANGELOG.md @@ -1,3 +1,11 @@ +# v1.15.6 (2023-10-12) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.15.5 (2023-10-06) + +* **Dependency Update**: Updated to the latest SDK module versions + # v1.15.4 (2023-08-21) * **Dependency Update**: Updated to the latest SDK module versions diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/s3shared/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/s3shared/go_module_metadata.go index 283fe42a0..dca8bb886 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/s3shared/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/s3shared/go_module_metadata.go @@ -3,4 +3,4 @@ package s3shared // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.15.4" +const goModuleVersion = "1.15.6" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/s3/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/service/s3/CHANGELOG.md index 608814d4c..562872654 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/s3/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/s3/CHANGELOG.md @@ -1,3 +1,11 @@ +# v1.40.2 (2023-10-12) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.40.1 (2023-10-06) + +* **Dependency Update**: Updated to the latest SDK module versions + # v1.40.0 (2023-09-26) * **Feature**: This release adds a new field COMPLETED to the ReplicationStatus Enum. You can now use this field to validate the replication status of S3 objects using the AWS SDK. diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/s3/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/service/s3/go_module_metadata.go index 667ff71e4..649c57bc9 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/s3/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/s3/go_module_metadata.go @@ -3,4 +3,4 @@ package s3 // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.40.0" +const goModuleVersion = "1.40.2" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/CHANGELOG.md index 99874b505..0b2700161 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/CHANGELOG.md @@ -1,3 +1,11 @@ +# v1.15.2 (2023-10-12) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.15.1 (2023-10-06) + +* **Dependency Update**: Updated to the latest SDK module versions + # v1.15.0 (2023-10-02) * **Feature**: Fix FIPS Endpoints in aws-us-gov. diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/go_module_metadata.go index da1722b05..0f216f4ef 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/go_module_metadata.go @@ -3,4 +3,4 @@ package sso // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.15.0" +const goModuleVersion = "1.15.2" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/CHANGELOG.md index 7801d76fa..536619724 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/CHANGELOG.md @@ -1,3 +1,11 @@ +# v1.17.3 (2023-10-12) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.2 (2023-10-06) + +* **Dependency Update**: Updated to the latest SDK module versions + # v1.17.1 (2023-09-22) * No change notes available for this release. diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/go_module_metadata.go index 6e9c160f8..fab953b91 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/go_module_metadata.go @@ -3,4 +3,4 @@ package ssooidc // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.17.1" +const goModuleVersion = "1.17.3" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/CHANGELOG.md index caac8a1b6..d94dc1ab3 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/CHANGELOG.md @@ -1,3 +1,11 @@ +# v1.23.2 (2023-10-12) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.23.1 (2023-10-06) + +* **Dependency Update**: Updated to the latest SDK module versions + # v1.23.0 (2023-10-02) * **Feature**: STS API updates for assumeRole diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/go_module_metadata.go index 672d04812..90dc95f1e 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/go_module_metadata.go @@ -3,4 +3,4 @@ package sts // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.23.0" +const goModuleVersion = "1.23.2" diff --git a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go index c37008420..5f97b40a6 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go @@ -4470,9 +4470,20 @@ var awsPartition = partition{ }, "bedrock": service{ Endpoints: serviceEndpoints{ + endpointKey{ + Region: "ap-northeast-1", + }: endpoint{}, endpointKey{ Region: "ap-southeast-1", }: endpoint{}, + endpointKey{ + Region: "bedrock-ap-northeast-1", + }: endpoint{ + Hostname: "bedrock.ap-northeast-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-northeast-1", + }, + }, endpointKey{ Region: "bedrock-ap-southeast-1", }: endpoint{ @@ -4497,6 +4508,14 @@ var awsPartition = partition{ Region: "us-west-2", }, }, + endpointKey{ + Region: "bedrock-runtime-ap-northeast-1", + }: endpoint{ + Hostname: "bedrock-runtime.ap-northeast-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-northeast-1", + }, + }, endpointKey{ Region: "bedrock-runtime-ap-southeast-1", }: endpoint{ @@ -8160,6 +8179,185 @@ var awsPartition = partition{ }, }, }, + "datazone": service{ + Defaults: endpointDefaults{ + defaultKey{}: endpoint{ + DNSSuffix: "api.aws", + }, + defaultKey{ + Variant: fipsVariant, + }: endpoint{ + Hostname: "{service}-fips.{region}.{dnsSuffix}", + DNSSuffix: "api.aws", + }, + }, + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "af-south-1", + }: endpoint{ + Hostname: "datazone.af-south-1.api.aws", + }, + endpointKey{ + Region: "ap-east-1", + }: endpoint{ + Hostname: "datazone.ap-east-1.api.aws", + }, + endpointKey{ + Region: "ap-northeast-1", + }: endpoint{ + Hostname: "datazone.ap-northeast-1.api.aws", + }, + endpointKey{ + Region: "ap-northeast-2", + }: endpoint{ + Hostname: "datazone.ap-northeast-2.api.aws", + }, + endpointKey{ + Region: "ap-northeast-3", + }: endpoint{ + Hostname: "datazone.ap-northeast-3.api.aws", + }, + endpointKey{ + Region: "ap-south-1", + }: endpoint{ + Hostname: "datazone.ap-south-1.api.aws", + }, + endpointKey{ + Region: "ap-south-2", + }: endpoint{ + Hostname: "datazone.ap-south-2.api.aws", + }, + endpointKey{ + Region: "ap-southeast-1", + }: endpoint{ + Hostname: "datazone.ap-southeast-1.api.aws", + }, + endpointKey{ + Region: "ap-southeast-2", + }: endpoint{ + Hostname: "datazone.ap-southeast-2.api.aws", + }, + endpointKey{ + Region: "ap-southeast-3", + }: endpoint{ + Hostname: "datazone.ap-southeast-3.api.aws", + }, + endpointKey{ + Region: "ap-southeast-4", + }: endpoint{ + Hostname: "datazone.ap-southeast-4.api.aws", + }, + endpointKey{ + Region: "ca-central-1", + }: endpoint{ + Hostname: "datazone.ca-central-1.api.aws", + }, + endpointKey{ + Region: "ca-central-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "datazone-fips.ca-central-1.amazonaws.com", + }, + endpointKey{ + Region: "eu-central-1", + }: endpoint{ + Hostname: "datazone.eu-central-1.api.aws", + }, + endpointKey{ + Region: "eu-central-2", + }: endpoint{ + Hostname: "datazone.eu-central-2.api.aws", + }, + endpointKey{ + Region: "eu-north-1", + }: endpoint{ + Hostname: "datazone.eu-north-1.api.aws", + }, + endpointKey{ + Region: "eu-south-1", + }: endpoint{ + Hostname: "datazone.eu-south-1.api.aws", + }, + endpointKey{ + Region: "eu-south-2", + }: endpoint{ + Hostname: "datazone.eu-south-2.api.aws", + }, + endpointKey{ + Region: "eu-west-1", + }: endpoint{ + Hostname: "datazone.eu-west-1.api.aws", + }, + endpointKey{ + Region: "eu-west-2", + }: endpoint{ + Hostname: "datazone.eu-west-2.api.aws", + }, + endpointKey{ + Region: "eu-west-3", + }: endpoint{ + Hostname: "datazone.eu-west-3.api.aws", + }, + endpointKey{ + Region: "il-central-1", + }: endpoint{ + Hostname: "datazone.il-central-1.api.aws", + }, + endpointKey{ + Region: "me-central-1", + }: endpoint{ + Hostname: "datazone.me-central-1.api.aws", + }, + endpointKey{ + Region: "me-south-1", + }: endpoint{ + Hostname: "datazone.me-south-1.api.aws", + }, + endpointKey{ + Region: "sa-east-1", + }: endpoint{ + Hostname: "datazone.sa-east-1.api.aws", + }, + endpointKey{ + Region: "us-east-1", + }: endpoint{ + Hostname: "datazone.us-east-1.api.aws", + }, + endpointKey{ + Region: "us-east-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "datazone-fips.us-east-1.amazonaws.com", + }, + endpointKey{ + Region: "us-east-2", + }: endpoint{ + Hostname: "datazone.us-east-2.api.aws", + }, + endpointKey{ + Region: "us-east-2", + Variant: fipsVariant, + }: endpoint{ + Hostname: "datazone-fips.us-east-2.amazonaws.com", + }, + endpointKey{ + Region: "us-west-1", + }: endpoint{ + Hostname: "datazone.us-west-1.api.aws", + }, + endpointKey{ + Region: "us-west-2", + }: endpoint{ + Hostname: "datazone.us-west-2.api.aws", + }, + endpointKey{ + Region: "us-west-2", + Variant: fipsVariant, + }: endpoint{ + Hostname: "datazone-fips.us-west-2.amazonaws.com", + }, + }, + }, "dax": service{ Endpoints: serviceEndpoints{ endpointKey{ @@ -17549,6 +17747,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-south-1", }: endpoint{}, + endpointKey{ + Region: "ap-south-2", + }: endpoint{}, endpointKey{ Region: "ap-southeast-1", }: endpoint{}, @@ -17558,12 +17759,18 @@ var awsPartition = partition{ endpointKey{ Region: "ap-southeast-3", }: endpoint{}, + endpointKey{ + Region: "ap-southeast-4", + }: endpoint{}, endpointKey{ Region: "ca-central-1", }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, + endpointKey{ + Region: "eu-central-2", + }: endpoint{}, endpointKey{ Region: "eu-north-1", }: endpoint{}, @@ -17618,6 +17825,9 @@ var awsPartition = partition{ endpointKey{ Region: "il-central-1", }: endpoint{}, + endpointKey{ + Region: "me-central-1", + }: endpoint{}, endpointKey{ Region: "me-south-1", }: endpoint{}, @@ -32805,6 +33015,31 @@ var awscnPartition = partition{ }: endpoint{}, }, }, + "datazone": service{ + Defaults: endpointDefaults{ + defaultKey{}: endpoint{ + DNSSuffix: "api.amazonwebservices.com.cn", + }, + defaultKey{ + Variant: fipsVariant, + }: endpoint{ + Hostname: "{service}-fips.{region}.{dnsSuffix}", + DNSSuffix: "api.amazonwebservices.com.cn", + }, + }, + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "cn-north-1", + }: endpoint{ + Hostname: "datazone.cn-north-1.api.amazonwebservices.com.cn", + }, + endpointKey{ + Region: "cn-northwest-1", + }: endpoint{ + Hostname: "datazone.cn-northwest-1.api.amazonwebservices.com.cn", + }, + }, + }, "dax": service{ Endpoints: serviceEndpoints{ endpointKey{ @@ -35566,6 +35801,13 @@ var awsusgovPartition = partition{ }, }, }, + "codestar-connections": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "us-gov-east-1", + }: endpoint{}, + }, + }, "cognito-identity": service{ Endpoints: serviceEndpoints{ endpointKey{ @@ -35909,6 +36151,31 @@ var awsusgovPartition = partition{ }, }, }, + "datazone": service{ + Defaults: endpointDefaults{ + defaultKey{}: endpoint{ + DNSSuffix: "api.aws", + }, + defaultKey{ + Variant: fipsVariant, + }: endpoint{ + Hostname: "{service}-fips.{region}.{dnsSuffix}", + DNSSuffix: "api.aws", + }, + }, + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "us-gov-east-1", + }: endpoint{ + Hostname: "datazone.us-gov-east-1.api.aws", + }, + endpointKey{ + Region: "us-gov-west-1", + }: endpoint{ + Hostname: "datazone.us-gov-west-1.api.aws", + }, + }, + }, "directconnect": service{ Endpoints: serviceEndpoints{ endpointKey{ @@ -37939,6 +38206,36 @@ var awsusgovPartition = partition{ }, }, }, + "m2": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "fips-us-gov-east-1", + }: endpoint{ + + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-gov-west-1", + }: endpoint{ + + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "us-gov-east-1", + }: endpoint{}, + endpointKey{ + Region: "us-gov-east-1", + Variant: fipsVariant, + }: endpoint{}, + endpointKey{ + Region: "us-gov-west-1", + }: endpoint{}, + endpointKey{ + Region: "us-gov-west-1", + Variant: fipsVariant, + }: endpoint{}, + }, + }, "managedblockchain": service{ Endpoints: serviceEndpoints{ endpointKey{ @@ -39534,10 +39831,20 @@ var awsusgovPartition = partition{ Endpoints: serviceEndpoints{ endpointKey{ Region: "us-gov-east-1", - }: endpoint{}, + }: endpoint{ + Hostname: "simspaceweaver.us-gov-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-east-1", + }, + }, endpointKey{ Region: "us-gov-west-1", - }: endpoint{}, + }: endpoint{ + Hostname: "simspaceweaver.us-gov-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-west-1", + }, + }, }, }, "sms": service{ diff --git a/vendor/github.com/aws/aws-sdk-go/aws/version.go b/vendor/github.com/aws/aws-sdk-go/aws/version.go index f556d8d0f..d03e56170 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/version.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/version.go @@ -5,4 +5,4 @@ package aws const SDKName = "aws-sdk-go" // SDKVersion is the version of this SDK -const SDKVersion = "1.45.20" +const SDKVersion = "1.45.25" diff --git a/vendor/github.com/aws/smithy-go/CHANGELOG.md b/vendor/github.com/aws/smithy-go/CHANGELOG.md index b9171b88b..8a3540e04 100644 --- a/vendor/github.com/aws/smithy-go/CHANGELOG.md +++ b/vendor/github.com/aws/smithy-go/CHANGELOG.md @@ -1,3 +1,9 @@ +# Release (2023-10-06) + +## Module Highlights +* `github.com/aws/smithy-go`: v1.15.0 + * **Feature**: Add `http.WithHeaderComment` middleware. + # Release (2023-08-18) * No change notes available for this release. diff --git a/vendor/github.com/aws/smithy-go/README.md b/vendor/github.com/aws/smithy-go/README.md index a4bb43fbe..c374f6928 100644 --- a/vendor/github.com/aws/smithy-go/README.md +++ b/vendor/github.com/aws/smithy-go/README.md @@ -6,6 +6,21 @@ **WARNING: All interfaces are subject to change.** +## Can I use this? + +In order to generate a usable smithy client you must provide a [protocol definition](https://github.com/aws/smithy-go/blob/main/codegen/smithy-go-codegen/src/main/java/software/amazon/smithy/go/codegen/integration/ProtocolGenerator.java), +such as [AWS restJson1](https://smithy.io/2.0/aws/protocols/aws-restjson1-protocol.html), +in order to generate transport mechanisms and serialization/deserialization +code ("serde") accordingly. + +The code generator does not currently support any protocols out of the box, +therefore the useability of this project on its own is currently limited. +Support for all [AWS protocols](https://smithy.io/2.0/aws/protocols/index.html) +exists in [aws-sdk-go-v2](https://github.com/aws/aws-sdk-go-v2). We are +tracking the movement of those out of the SDK into smithy-go in +[#458](https://github.com/aws/smithy-go/issues/458), but there's currently no +timeline for doing so. + ## License This project is licensed under the Apache-2.0 License. diff --git a/vendor/github.com/aws/smithy-go/go_module_metadata.go b/vendor/github.com/aws/smithy-go/go_module_metadata.go index 997c30924..6b795a2c8 100644 --- a/vendor/github.com/aws/smithy-go/go_module_metadata.go +++ b/vendor/github.com/aws/smithy-go/go_module_metadata.go @@ -3,4 +3,4 @@ package smithy // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.14.2" +const goModuleVersion = "1.15.0" diff --git a/vendor/github.com/aws/smithy-go/transport/http/middleware_header_comment.go b/vendor/github.com/aws/smithy-go/transport/http/middleware_header_comment.go new file mode 100644 index 000000000..855c22720 --- /dev/null +++ b/vendor/github.com/aws/smithy-go/transport/http/middleware_header_comment.go @@ -0,0 +1,81 @@ +package http + +import ( + "context" + "fmt" + "net/http" + + "github.com/aws/smithy-go/middleware" +) + +// WithHeaderComment instruments a middleware stack to append an HTTP field +// comment to the given header as specified in RFC 9110 +// (https://www.rfc-editor.org/rfc/rfc9110#name-comments). +// +// The header is case-insensitive. If the provided header exists when the +// middleware runs, the content will be inserted as-is enclosed in parentheses. +// +// Note that per the HTTP specification, comments are only allowed in fields +// containing "comment" as part of their field value definition, but this API +// will NOT verify whether the provided header is one of them. +// +// WithHeaderComment MAY be applied more than once to a middleware stack and/or +// more than once per header. +func WithHeaderComment(header, content string) func(*middleware.Stack) error { + return func(s *middleware.Stack) error { + m, err := getOrAddHeaderComment(s) + if err != nil { + return fmt.Errorf("get or add header comment: %v", err) + } + + m.values.Add(header, content) + return nil + } +} + +type headerCommentMiddleware struct { + values http.Header // hijack case-insensitive access APIs +} + +func (*headerCommentMiddleware) ID() string { + return "headerComment" +} + +func (m *headerCommentMiddleware) HandleBuild(ctx context.Context, in middleware.BuildInput, next middleware.BuildHandler) ( + out middleware.BuildOutput, metadata middleware.Metadata, err error, +) { + r, ok := in.Request.(*Request) + if !ok { + return out, metadata, fmt.Errorf("unknown transport type %T", in.Request) + } + + for h, contents := range m.values { + for _, c := range contents { + if existing := r.Header.Get(h); existing != "" { + r.Header.Set(h, fmt.Sprintf("%s (%s)", existing, c)) + } + } + } + + return next.HandleBuild(ctx, in) +} + +func getOrAddHeaderComment(s *middleware.Stack) (*headerCommentMiddleware, error) { + id := (*headerCommentMiddleware)(nil).ID() + m, ok := s.Build.Get(id) + if !ok { + m := &headerCommentMiddleware{values: http.Header{}} + if err := s.Build.Add(m, middleware.After); err != nil { + return nil, fmt.Errorf("add build: %v", err) + } + + return m, nil + } + + hc, ok := m.(*headerCommentMiddleware) + if !ok { + return nil, fmt.Errorf("existing middleware w/ id %s is not *headerCommentMiddleware", id) + } + + return hc, nil +} diff --git a/vendor/github.com/cpuguy83/go-md2man/v2/md2man/md2man.go b/vendor/github.com/cpuguy83/go-md2man/v2/md2man/md2man.go index b48005673..42bf32aab 100644 --- a/vendor/github.com/cpuguy83/go-md2man/v2/md2man/md2man.go +++ b/vendor/github.com/cpuguy83/go-md2man/v2/md2man/md2man.go @@ -9,6 +9,8 @@ func Render(doc []byte) []byte { renderer := NewRoffRenderer() return blackfriday.Run(doc, - []blackfriday.Option{blackfriday.WithRenderer(renderer), - blackfriday.WithExtensions(renderer.GetExtensions())}...) + []blackfriday.Option{ + blackfriday.WithRenderer(renderer), + blackfriday.WithExtensions(renderer.GetExtensions()), + }...) } diff --git a/vendor/github.com/cpuguy83/go-md2man/v2/md2man/roff.go b/vendor/github.com/cpuguy83/go-md2man/v2/md2man/roff.go index be2b34360..4b19188d9 100644 --- a/vendor/github.com/cpuguy83/go-md2man/v2/md2man/roff.go +++ b/vendor/github.com/cpuguy83/go-md2man/v2/md2man/roff.go @@ -1,6 +1,7 @@ package md2man import ( + "bytes" "fmt" "io" "os" @@ -34,10 +35,10 @@ const ( hruleTag = "\n.ti 0\n\\l'\\n(.lu'\n" linkTag = "\n\\[la]" linkCloseTag = "\\[ra]" - codespanTag = "\\fB\\fC" + codespanTag = "\\fB" codespanCloseTag = "\\fR" - codeTag = "\n.PP\n.RS\n\n.nf\n" - codeCloseTag = "\n.fi\n.RE\n" + codeTag = "\n.EX\n" + codeCloseTag = "\n.EE\n" quoteTag = "\n.PP\n.RS\n" quoteCloseTag = "\n.RE\n" listTag = "\n.RS\n" @@ -86,8 +87,7 @@ func (r *roffRenderer) RenderFooter(w io.Writer, ast *blackfriday.Node) { // RenderNode is called for each node in a markdown document; based on the node // type the equivalent roff output is sent to the writer func (r *roffRenderer) RenderNode(w io.Writer, node *blackfriday.Node, entering bool) blackfriday.WalkStatus { - - var walkAction = blackfriday.GoToNext + walkAction := blackfriday.GoToNext switch node.Type { case blackfriday.Text: @@ -109,9 +109,16 @@ func (r *roffRenderer) RenderNode(w io.Writer, node *blackfriday.Node, entering out(w, strongCloseTag) } case blackfriday.Link: - if !entering { - out(w, linkTag+string(node.LinkData.Destination)+linkCloseTag) + // Don't render the link text for automatic links, because this + // will only duplicate the URL in the roff output. + // See https://daringfireball.net/projects/markdown/syntax#autolink + if !bytes.Equal(node.LinkData.Destination, node.FirstChild.Literal) { + out(w, string(node.FirstChild.Literal)) } + // Hyphens in a link must be escaped to avoid word-wrap in the rendered man page. + escapedLink := strings.ReplaceAll(string(node.LinkData.Destination), "-", "\\-") + out(w, linkTag+escapedLink+linkCloseTag) + walkAction = blackfriday.SkipChildren case blackfriday.Image: // ignore images walkAction = blackfriday.SkipChildren @@ -160,6 +167,11 @@ func (r *roffRenderer) RenderNode(w io.Writer, node *blackfriday.Node, entering r.handleTableCell(w, node, entering) case blackfriday.HTMLSpan: // ignore other HTML tags + case blackfriday.HTMLBlock: + if bytes.HasPrefix(node.Literal, []byte("