diff --git a/.circleci/config.yml b/.circleci/config.yml index 47539d729..01b2b10a1 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -3,7 +3,7 @@ version: 2.1 orbs: prometheus: prometheus/prometheus@0.11.0 - go: circleci/go@0.2.0 + go: circleci/go@1.7.0 win: circleci/windows@2.3.0 executors: @@ -11,10 +11,10 @@ executors: # should also be updated. golang: docker: - - image: circleci/golang:1.16-node + - image: quay.io/prometheus/golang-builder:1.17-base golang_115: docker: - - image: circleci/golang:1.15-node + - image: quay.io/prometheus/golang-builder:1.15-base jobs: test_go: @@ -24,8 +24,6 @@ jobs: - prometheus/setup_environment - go/load-cache: key: v1 - - run: - command: sudo apt-get install -y yamllint - run: command: make GO_ONLY=1 environment: @@ -49,21 +47,23 @@ jobs: - store_test_results: path: test-results - test_react: + test_ui: executor: golang steps: - checkout - restore_cache: keys: - - v3-npm-deps-{{ checksum "web/ui/react-app/yarn.lock" }} + - v3-npm-deps-{{ checksum "web/ui/package-lock.json" }} - v3-npm-deps- - - run: - command: make react-app-test + - run: make ui-install + - run: make ui-lint + - run: make ui-build-module + - run: make ui-test - save_cache: - key: v3-npm-deps-{{ checksum "web/ui/react-app/yarn.lock" }} + key: v3-npm-deps-{{ checksum "web/ui/package-lock.json" }} paths: - - /home/circleci/.cache/yarn + - ~/.npm test_windows: executor: @@ -108,8 +108,6 @@ jobs: - run: command: jb install working_directory: ~/project/documentation/prometheus-mixin - - run: - command: sudo apt-get install -y yamllint - run: command: make working_directory: ~/project/documentation/prometheus-mixin @@ -121,9 +119,8 @@ jobs: executor: golang steps: - checkout - - run: mkdir -v -p "${PATH%%:*}" && curl -sL --fail https://github.com/mikefarah/yq/releases/download/v4.6.3/yq_linux_amd64 -o "${PATH%%:*}/yq" && chmod -v +x "${PATH%%:*}/yq" - - run: sha256sum -c <(echo "c4343783c3361495c0d6d1eb742bba7432aa65e13e9fb8d7e201d544bcf14246 ${PATH%%:*}/yq") - run: ./scripts/sync_repo_files.sh + - run: ./scripts/sync_codemirror.sh workflows: version: 2 @@ -133,7 +130,7 @@ workflows: filters: tags: only: /.*/ - - test_react: + - test_ui: filters: tags: only: /.*/ @@ -159,7 +156,7 @@ workflows: context: org-context requires: - test_go - - test_react + - test_ui - build filters: branches: @@ -169,7 +166,7 @@ workflows: context: org-context requires: - test_go - - test_react + - test_ui - build filters: tags: diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index b61fb4f93..61c5809da 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,5 +1,7 @@ /web/ui @juliusv +/web/ui/module @juliusv @nexucis /storage/remote @csmarchbanks @cstyan @bwplotka @tomwilkie /discovery/kubernetes @brancz /tsdb @codesome /promql @codesome @roidelapluie +/cmd/promtool @jessicagreben @dgl diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml new file mode 100644 index 000000000..431fef711 --- /dev/null +++ b/.github/workflows/golangci-lint.yml @@ -0,0 +1,29 @@ +name: golangci-lint +on: + push: + paths: + - "go.sum" + - "go.mod" + - "**.go" + - "scripts/errcheck_excludes.txt" + - ".github/workflows/golangci-lint.yml" + pull_request: + paths: + - "go.sum" + - "go.mod" + - "**.go" + - "scripts/errcheck_excludes.txt" + - ".github/workflows/golangci-lint.yml" + +jobs: + golangci: + name: lint + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Lint + uses: golangci/golangci-lint-action@v2 + with: + version: v1.42.0 diff --git a/.gitignore b/.gitignore index de176eaab..b382f6c0e 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,5 @@ npm_licenses.tar.bz2 /vendor /.build + +/**/node_modules diff --git a/.gitpod.Dockerfile b/.gitpod.Dockerfile new file mode 100644 index 000000000..22df08f68 --- /dev/null +++ b/.gitpod.Dockerfile @@ -0,0 +1,7 @@ +FROM gitpod/workspace-full + +ENV CUSTOM_NODE_VERSION=16 + +RUN bash -c ". .nvm/nvm.sh && nvm install ${CUSTOM_NODE_VERSION} && nvm use ${CUSTOM_NODE_VERSION} && nvm alias default ${CUSTOM_NODE_VERSION}" + +RUN echo "nvm use default &>/dev/null" >> ~/.bashrc.d/51-nvm-fix diff --git a/.gitpod.yml b/.gitpod.yml index 563f35223..bb38f6d2c 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -1,4 +1,5 @@ ---- +image: + file: .gitpod.Dockerfile tasks: - init: make build @@ -6,11 +7,11 @@ tasks: gp sync-done build ./prometheus --config.file=documentation/examples/prometheus.yml - command: | - cd web/ui/react-app + cd web/ui/ gp sync-await build unset BROWSER export DANGEROUSLY_DISABLE_HOST_CHECK=true - yarn start + npm start openMode: split-right ports: - port: 3000 diff --git a/.promu.yml b/.promu.yml index f52a646de..9601efeee 100644 --- a/.promu.yml +++ b/.promu.yml @@ -1,7 +1,7 @@ go: # Whenever the Go version is updated here, # .circle/config.yml should also be updated. - version: 1.16 + version: 1.17 repository: path: github.com/prometheus/prometheus build: diff --git a/.yamllint b/.yamllint index 3b83e9d49..281c94646 100644 --- a/.yamllint +++ b/.yamllint @@ -24,3 +24,4 @@ rules: .github/workflows/funcbench.yml .github/workflows/fuzzing.yml .github/workflows/prombench.yml + .github/workflows/golangci-lint.yml diff --git a/CHANGELOG.md b/CHANGELOG.md index d61f6e560..00919b057 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,80 @@ +## 2.30.3 / 2021-10-05 + +* [BUGFIX] TSDB: Fix panic on failed snapshot replay. #9438 +* [BUGFIX] TSDB: Don't fail snapshot replay with exemplar storage disabled when the snapshot contains exemplars. #9438 + +## 2.30.2 / 2021-10-01 + +* [BUGFIX] TSDB: Don't error on overlapping m-mapped chunks during WAL replay. #9381 + +## 2.30.1 / 2021-09-28 + +* [ENHANCEMENT] Remote Write: Redact remote write URL when used for metric label. #9383 +* [ENHANCEMENT] UI: Redact remote write URL and proxy URL passwords in the `/config` page. #9408 +* [BUGFIX] promtool rules backfill: Prevent creation of data before the start time. #9339 +* [BUGFIX] promtool rules backfill: Do not query after the end time. #9340 +* [BUGFIX] Azure SD: Fix panic when no computername is set. #9387 + +## 2.30.0 / 2021-09-14 + +* [FEATURE] **experimental** TSDB: Snapshot in-memory chunks on shutdown for faster restarts. Behind `--enable-feature=memory-snapshot-on-shutdown` flag. #7229 +* [FEATURE] **experimental** Scrape: Configure scrape interval and scrape timeout via relabeling using `__scrape_interval__` and `__scrape_timeout__` labels respectively. #8911 +* [FEATURE] Scrape: Add `scrape_timeout_seconds` and `scrape_sample_limit` metric. Behind `--enable-feature=extra-scrape-metrics` flag to avoid additional cardinality by default. #9247 #9295 +* [ENHANCEMENT] Scrape: Add `--scrape.timestamp-tolerance` flag to adjust scrape timestamp tolerance when enabled via `--scrape.adjust-timestamps`. #9283 +* [ENHANCEMENT] Remote Write: Improve throughput when sending exemplars. #8921 +* [ENHANCEMENT] TSDB: Optimise WAL loading by removing extra map and caching min-time #9160 +* [ENHANCEMENT] promtool: Speed up checking for duplicate rules. #9262/#9306 +* [ENHANCEMENT] Scrape: Reduce allocations when parsing the metrics. #9299 +* [ENHANCEMENT] docker_sd: Support host network mode #9125 +* [BUGFIX] Exemplars: Fix panic when resizing exemplar storage from 0 to a non-zero size. #9286 +* [BUGFIX] TSDB: Correctly decrement `prometheus_tsdb_head_active_appenders` when the append has no samples. #9230 +* [BUGFIX] promtool rules backfill: Return 1 if backfill was unsuccessful. #9303 +* [BUGFIX] promtool rules backfill: Avoid creation of overlapping blocks. #9324 +* [BUGFIX] config: Fix a panic when reloading configuration with a `null` relabel action. #9224 + +## 2.29.2 / 2021-08-27 + +* [BUGFIX] Fix Kubernetes SD failing to discover Ingress in Kubernetes v1.22. #9205 +* [BUGFIX] Fix data race in loading write-ahead-log (WAL). #9259 + +## 2.29.1 / 2021-08-11 + +* [BUGFIX] tsdb: align atomically accessed int64 to prevent panic in 32-bit + archs. #9192 + +## 2.29.0 / 2021-08-11 + +Note for macOS users: Due to [changes in the upcoming Go 1.17](https://tip.golang.org/doc/go1.17#darwin), +this is the last Prometheus release that supports macOS 10.12 Sierra. + +* [CHANGE] Promote `--storage.tsdb.allow-overlapping-blocks` flag to stable. #9117 +* [CHANGE] Promote `--storage.tsdb.retention.size` flag to stable. #9004 +* [FEATURE] Add Kuma service discovery. #8844 +* [FEATURE] Add `present_over_time` PromQL function. #9097 +* [FEATURE] Allow configuring exemplar storage via file and make it reloadable. #8974 +* [FEATURE] UI: Allow selecting time range with mouse drag. #8977 +* [FEATURE] promtool: Add feature flags flag `--enable-feature`. #8958 +* [FEATURE] promtool: Add file_sd file validation. #8950 +* [ENHANCEMENT] Reduce blocking of outgoing remote write requests from series garbage collection. #9109 +* [ENHANCEMENT] Improve write-ahead-log decoding performance. #9106 +* [ENHANCEMENT] Improve append performance in TSDB by reducing mutexes usage. #9061 +* [ENHANCEMENT] Allow configuring `max_samples_per_send` for remote write metadata. #8959 +* [ENHANCEMENT] Add `__meta_gce_interface_ipv4_` meta label to GCE discovery. #8978 +* [ENHANCEMENT] Add `__meta_ec2_availability_zone_id` meta label to EC2 discovery. #8896 +* [ENHANCEMENT] Add `__meta_azure_machine_computer_name` meta label to Azure discovery. #9112 +* [ENHANCEMENT] Add `__meta_hetzner_hcloud_labelpresent_` meta label to Hetzner discovery. #9028 +* [ENHANCEMENT] promtool: Add compaction efficiency to `promtool tsdb analyze` reports. #8940 +* [ENHANCEMENT] promtool: Allow configuring max block duration for backfilling via `--max-block-duration` flag. #8919 +* [ENHANCEMENT] UI: Add sorting and filtering to flags page. #8988 +* [ENHANCEMENT] UI: Improve alerts page rendering performance. #9005 +* [BUGFIX] Log when total symbol size exceeds 2^32 bytes, causing compaction to fail, and skip compaction. #9104 +* [BUGFIX] Fix incorrect `target_limit` reloading of zero value. #9120 +* [BUGFIX] Fix head GC and pending readers race condition. #9081 +* [BUGFIX] Fix timestamp handling in OpenMetrics parser. #9008 +* [BUGFIX] Fix potential duplicate metrics in `/federate` endpoint when specifying multiple matchers. #8885 +* [BUGFIX] Fix server configuration and validation for authentication via client cert. #9123 +* [BUGFIX] Allow `start` and `end` again as label names in PromQL queries. They were disallowed since the introduction of @ timestamp feature. #9119 + ## 2.28.1 / 2021-07-01 * [BUGFIX]: HTTP SD: Allow `charset` specification in `Content-Type` header. #8981 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0a073926b..1b61c5de0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -52,7 +52,7 @@ All our issues are regularly tagged so that you can also filter down the issues * Commits should be as small as possible, while ensuring that each commit is correct independently (i.e., each commit should compile and pass tests). -* If your patch is not getting reviewed or you need a specific person to review it, you can @-reply a reviewer asking for a review in the pull request or a comment, or you can ask for a review on IRC channel [#prometheus](https://web.libera.chat/?channels=#prometheus) on irc.libera.chat (for the easiest start, [join via Riot](https://riot.im/app/#/room/#prometheus:matrix.org)). +* If your patch is not getting reviewed or you need a specific person to review it, you can @-reply a reviewer asking for a review in the pull request or a comment, or you can ask for a review on the IRC channel [#prometheus-dev](https://web.libera.chat/?channels=#prometheus-dev) on irc.libera.chat (for the easiest start, [join via Element](https://app.element.io/#/room/#prometheus-dev:matrix.org)). * Add tests relevant to the fixed bug or new feature. @@ -64,10 +64,10 @@ To add or update a new dependency, use the `go get` command: ```bash # Pick the latest tagged release. -go get example.com/some/module/pkg +go install example.com/some/module/pkg@latest # Pick a specific version. -go get example.com/some/module/pkg@vX.Y.Z +go install example.com/some/module/pkg@vX.Y.Z ``` Tidy up the `go.mod` and `go.sum` files: diff --git a/Dockerfile b/Dockerfile index 838bf1834..b47f77dcd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,14 +14,13 @@ COPY LICENSE /LICENSE COPY NOTICE /NOTICE COPY npm_licenses.tar.bz2 /npm_licenses.tar.bz2 -RUN ln -s /usr/share/prometheus/console_libraries /usr/share/prometheus/consoles/ /etc/prometheus/ -RUN mkdir -p /prometheus && \ - chown -R nobody:nobody etc/prometheus /prometheus +WORKDIR /prometheus +RUN ln -s /usr/share/prometheus/console_libraries /usr/share/prometheus/consoles/ /etc/prometheus/ && \ + chown -R nobody:nobody /etc/prometheus /prometheus USER nobody EXPOSE 9090 VOLUME [ "/prometheus" ] -WORKDIR /prometheus ENTRYPOINT [ "/bin/prometheus" ] CMD [ "--config.file=/etc/prometheus/prometheus.yml", \ "--storage.tsdb.path=/prometheus", \ diff --git a/MAINTAINERS.md b/MAINTAINERS.md index f22a43b7f..3dc5abd25 100644 --- a/MAINTAINERS.md +++ b/MAINTAINERS.md @@ -1,7 +1,7 @@ Julien Pivotto ( / @roidelapluie) is the main/default maintainer, some parts of the codebase have other maintainers: * `cmd` - * `promtool`: David Leadbeater ( / @dgl) + * `promtool`: David Leadbeater ( / @dgl), Jessica Grebenschikov ( / @jessicagreben) * `discovery` * `k8s`: Frederic Branczyk ( / @brancz) * `documentation` @@ -11,6 +11,7 @@ Julien Pivotto ( / @roidelapluie) is the main/defaul * `tsdb`: Ganesh Vernekar ( / @codesome), Bartłomiej Płotka ( / @bwplotka) * `web` * `ui`: Julius Volz ( / @juliusv) + * `module`: Augustin Husson ( @nexucis) * `Makefile` and related build configuration: Simon Pasquier ( / @simonpasquier), Ben Kochie ( / @SuperQ) For the sake of brevity, not all subtrees are explicitly listed. Due to the diff --git a/Makefile b/Makefile index 17e14c968..b4961541c 100644 --- a/Makefile +++ b/Makefile @@ -14,12 +14,9 @@ # Needs to be defined before including Makefile.common to auto-generate targets DOCKER_ARCHS ?= amd64 armv7 arm64 ppc64le s390x -REACT_APP_PATH = web/ui/react-app -REACT_APP_SOURCE_FILES = $(shell find $(REACT_APP_PATH)/public/ $(REACT_APP_PATH)/src/ $(REACT_APP_PATH)/tsconfig.json) -REACT_APP_OUTPUT_DIR = web/ui/static/react -REACT_APP_NODE_MODULES_PATH = $(REACT_APP_PATH)/node_modules +UI_PATH = web/ui +UI_NODE_MODULES_PATH = $(UI_PATH)/node_modules REACT_APP_NPM_LICENSES_TARBALL = "npm_licenses.tar.bz2" -REACT_APP_BUILD_SCRIPT = ./scripts/build_react_app.sh PROMTOOL = ./promtool TSDB_BENCHMARK_NUM_METRICS ?= 1000 @@ -32,15 +29,28 @@ include Makefile.common DOCKER_IMAGE_NAME ?= prometheus -$(REACT_APP_NODE_MODULES_PATH): $(REACT_APP_PATH)/package.json $(REACT_APP_PATH)/yarn.lock - cd $(REACT_APP_PATH) && yarn --frozen-lockfile +.PHONY: ui-install +ui-install: + cd $(UI_PATH) && npm install -$(REACT_APP_OUTPUT_DIR): $(REACT_APP_NODE_MODULES_PATH) $(REACT_APP_SOURCE_FILES) $(REACT_APP_BUILD_SCRIPT) - @echo ">> building React app" - @$(REACT_APP_BUILD_SCRIPT) +.PHONY: ui-build +ui-build: + cd $(UI_PATH) && npm run build + +.PHONY: ui-build-module +ui-build-module: + cd $(UI_PATH) && npm run build:module + +.PHONY: ui-test +ui-test: + cd $(UI_PATH) && npm run test:coverage + +.PHONY: ui-lint +ui-lint: + cd $(UI_PATH) && npm run lint .PHONY: assets -assets: $(REACT_APP_OUTPUT_DIR) +assets: ui-install ui-build @echo ">> writing assets" # Un-setting GOOS and GOARCH here because the generated Go code is always the same, # but the cached object code is incompatible between architectures and OSes (which @@ -48,36 +58,20 @@ assets: $(REACT_APP_OUTPUT_DIR) cd web/ui && GO111MODULE=$(GO111MODULE) GOOS= GOARCH= $(GO) generate -x -v $(GOOPTS) @$(GOFMT) -w ./web/ui -.PHONY: react-app-lint -react-app-lint: - @echo ">> running React app linting" - cd $(REACT_APP_PATH) && yarn lint:ci - -.PHONY: react-app-lint-fix -react-app-lint-fix: - @echo ">> running React app linting and fixing errors where possible" - cd $(REACT_APP_PATH) && yarn lint - -.PHONY: react-app-test -react-app-test: | $(REACT_APP_NODE_MODULES_PATH) react-app-lint - @echo ">> running React app tests" - cd $(REACT_APP_PATH) && yarn test --no-watch --coverage - .PHONY: test # If we only want to only test go code we have to change the test target # which is called by all. ifeq ($(GO_ONLY),1) test: common-test else -test: common-test react-app-test +test: common-test ui-build-module ui-test ui-lint endif - .PHONY: npm_licenses -npm_licenses: $(REACT_APP_NODE_MODULES_PATH) +npm_licenses: ui-install @echo ">> bundling npm licenses" rm -f $(REACT_APP_NPM_LICENSES_TARBALL) - find $(REACT_APP_NODE_MODULES_PATH) -iname "license*" | tar cfj $(REACT_APP_NPM_LICENSES_TARBALL) --transform 's/^/npm_licenses\//' --files-from=- + find $(UI_NODE_MODULES_PATH) -iname "license*" | tar cfj $(REACT_APP_NPM_LICENSES_TARBALL) --transform 's/^/npm_licenses\//' --files-from=- .PHONY: tarball tarball: npm_licenses common-tarball diff --git a/Makefile.common b/Makefile.common index a1b1ca40f..99e8f9f1b 100644 --- a/Makefile.common +++ b/Makefile.common @@ -83,12 +83,18 @@ PROMU_URL := https://github.com/prometheus/promu/releases/download/v$(PROMU_ GOLANGCI_LINT := GOLANGCI_LINT_OPTS ?= -GOLANGCI_LINT_VERSION ?= v1.39.0 +GOLANGCI_LINT_VERSION ?= v1.42.0 # golangci-lint only supports linux, darwin and windows platforms on i386/amd64. # windows isn't included here because of the path separator being different. ifeq ($(GOHOSTOS),$(filter $(GOHOSTOS),linux darwin)) ifeq ($(GOHOSTARCH),$(filter $(GOHOSTARCH),amd64 i386)) - GOLANGCI_LINT := $(FIRST_GOPATH)/bin/golangci-lint + # If we're in CI and there is an Actions file, that means the linter + # is being run in Actions, so we don't need to run it here. + ifeq (,$(CIRCLE_JOB)) + GOLANGCI_LINT := $(FIRST_GOPATH)/bin/golangci-lint + else ifeq (,$(wildcard .github/workflows/golangci-lint.yml)) + GOLANGCI_LINT := $(FIRST_GOPATH)/bin/golangci-lint + endif endif endif diff --git a/README.md b/README.md index 671335a5c..a91960425 100644 --- a/README.md +++ b/README.md @@ -55,18 +55,18 @@ Prometheus will now be reachable at http://localhost:9090/. ### Building from source -To build Prometheus from source code, first ensure that have a working +To build Prometheus from source code, first ensure that you have a working Go environment with [version 1.14 or greater installed](https://golang.org/doc/install). -You also need [Node.js](https://nodejs.org/) and [Yarn](https://yarnpkg.com/) +You also need [Node.js](https://nodejs.org/) and [npm](https://www.npmjs.com/) installed in order to build the frontend assets. You can directly use the `go` tool to download and install the `prometheus` and `promtool` binaries into your `GOPATH`: - $ GO111MODULE=on go get github.com/prometheus/prometheus/cmd/... + $ GO111MODULE=on go install github.com/prometheus/prometheus/cmd/... $ prometheus --config.file=your_config.yml -*However*, when using `go get` to build Prometheus, Prometheus will expect to be able to +*However*, when using `go install` to build Prometheus, Prometheus will expect to be able to read its web assets from local filesystem directories under `web/ui/static` and `web/ui/templates`. In order for these assets to be found, you will have to run Prometheus from the root of the cloned repository. Note also that these directories do not include the diff --git a/RELEASE.md b/RELEASE.md index 05ade879f..4dc3d12e0 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -34,8 +34,10 @@ Release cadence of first pre-releases being cut is 6 weeks. | v2.27 | 2021-05-05 | Chris Marchbanks (GitHub: @csmarchbanks) | | v2.28 | 2021-06-16 | Julius Volz (GitHub: @juliusv) | | v2.29 | 2021-07-28 | Frederic Branczyk (GitHub: @brancz) | -| v2.30 | 2021-09-08 | **searching for volunteer** | +| v2.30 | 2021-09-08 | Ganesh Vernekar (GitHub: @codesome) | | v2.31 | 2021-10-20 | **searching for volunteer** | +| v2.32 | 2021-12-01 | **searching for volunteer** | +| v2.33 | 2022-01-12 | **searching for volunteer** | If you are interested in volunteering please create a pull request against the [prometheus/prometheus](https://github.com/prometheus/prometheus) repository and propose yourself for the release series of your choice. @@ -97,18 +99,21 @@ Either upgrade the dependencies within their existing version constraints as spe ``` cd web/ui/react-app -yarn upgrade -git add yarn.lock +npm update +git add package.json package-lock.json ``` Or alternatively, update all dependencies to their latest major versions. This is potentially more disruptive and will require more follow-up fixes, but should be done from time to time (use your best judgement): ``` cd web/ui/react-app -yarn upgrade --latest -git add package.json yarn.lock +npx npm-check-updates -u +npm install +git add package.json package-lock.json ``` +You can find more details on managing npm dependencies and updates [in this blog post](https://www.carlrippon.com/upgrading-npm-dependencies/). + ### 1. Prepare your release At the start of a new major or minor release cycle create the corresponding release branch based on the main branch. For example if we're releasing `2.17.0` and the previous stable release is `2.16.0` we need to create a `release-2.17` branch. Note that all releases are handled in protected release branches, see the above `Branch management and versioning` section. Release candidates and patch releases for any given major or minor release happen in the same `release-.` branch. Do not create `release-` for patch or release candidate releases. diff --git a/VERSION b/VERSION index 90efbd4e3..e88ba89ba 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.28.0 +2.30.3 diff --git a/cmd/prometheus/main.go b/cmd/prometheus/main.go index b8d30218f..c124d2337 100644 --- a/cmd/prometheus/main.go +++ b/cmd/prometheus/main.go @@ -108,6 +108,7 @@ type flagConfig struct { outageTolerance model.Duration resendDelay model.Duration web web.Options + scrape scrape.Options tsdb tsdbOptions lookbackDelta model.Duration webTimeout model.Duration @@ -153,6 +154,9 @@ func (c *flagConfig) setFeatureListOptions(logger log.Logger) error { case "memory-snapshot-on-shutdown": c.tsdb.EnableMemorySnapshotOnShutdown = true level.Info(logger).Log("msg", "Experimental memory snapshot on shutdown enabled") + case "extra-scrape-metrics": + c.scrape.ExtraMetrics = true + level.Info(logger).Log("msg", "Experimental additional scrape metrics") case "": continue default: @@ -259,7 +263,7 @@ func main() { a.Flag("storage.tsdb.retention.time", "How long to retain samples in storage. When this flag is set it overrides \"storage.tsdb.retention\". If neither this flag nor \"storage.tsdb.retention\" nor \"storage.tsdb.retention.size\" is set, the retention time defaults to "+defaultRetentionString+". Units Supported: y, w, d, h, m, s, ms."). SetValue(&newFlagRetentionDuration) - a.Flag("storage.tsdb.retention.size", "Maximum number of bytes that can be stored for blocks. A unit is required, supported units: B, KB, MB, GB, TB, PB, EB. Ex: \"512MB\". This flag is experimental and can be changed in future releases."). + a.Flag("storage.tsdb.retention.size", "Maximum number of bytes that can be stored for blocks. A unit is required, supported units: B, KB, MB, GB, TB, PB, EB. Ex: \"512MB\"."). BytesVar(&cfg.tsdb.MaxBytes) a.Flag("storage.tsdb.no-lockfile", "Do not create lockfile in data directory."). @@ -292,9 +296,12 @@ func main() { a.Flag("rules.alert.resend-delay", "Minimum amount of time to wait before resending an alert to Alertmanager."). Default("1m").SetValue(&cfg.resendDelay) - a.Flag("scrape.adjust-timestamps", "Adjust scrape timestamps by up to 2ms to align them to the intended schedule. See https://github.com/prometheus/prometheus/issues/7846 for more context. Experimental. This flag will be removed in a future release."). + a.Flag("scrape.adjust-timestamps", "Adjust scrape timestamps by up to `scrape.timestamp-tolerance` to align them to the intended schedule. See https://github.com/prometheus/prometheus/issues/7846 for more context. Experimental. This flag will be removed in a future release."). Hidden().Default("true").BoolVar(&scrape.AlignScrapeTimestamps) + a.Flag("scrape.timestamp-tolerance", "Timestamp tolerance. See https://github.com/prometheus/prometheus/issues/7846 for more context. Experimental. This flag will be removed in a future release."). + Hidden().Default("2ms").DurationVar(&scrape.ScrapeTimestampTolerance) + a.Flag("alertmanager.notification-queue-capacity", "The capacity of the queue for pending Alertmanager notifications."). Default("10000").IntVar(&cfg.notifier.QueueCapacity) @@ -313,7 +320,7 @@ func main() { a.Flag("query.max-samples", "Maximum number of samples a single query can load into memory. Note that queries will fail if they try to load more samples than this into memory, so this also limits the number of samples a query can return."). Default("50000000").IntVar(&cfg.queryMaxSamples) - a.Flag("enable-feature", "Comma separated feature names to enable. Valid options: exemplar-storage, expand-external-labels, memory-snapshot-on-shutdown, promql-at-modifier, promql-negative-offset, remote-write-receiver. See https://prometheus.io/docs/prometheus/latest/feature_flags/ for more details."). + a.Flag("enable-feature", "Comma separated feature names to enable. Valid options: exemplar-storage, expand-external-labels, memory-snapshot-on-shutdown, promql-at-modifier, promql-negative-offset, remote-write-receiver, extra-scrape-metrics. See https://prometheus.io/docs/prometheus/latest/feature_flags/ for more details."). Default("").StringsVar(&cfg.featureList) promlogflag.AddFlags(a, &cfg.promlogConfig) @@ -458,7 +465,7 @@ func main() { ctxNotify, cancelNotify = context.WithCancel(context.Background()) discoveryManagerNotify = discovery.NewManager(ctxNotify, log.With(logger, "component", "discovery manager notify"), discovery.Name("notify")) - scrapeManager = scrape.NewManager(log.With(logger, "component", "scrape manager"), fanoutStorage) + scrapeManager = scrape.NewManager(&cfg.scrape, log.With(logger, "component", "scrape manager"), fanoutStorage) opts = promql.EngineOpts{ Logger: log.With(logger, "component", "query engine"), diff --git a/cmd/prometheus/main_unix_test.go b/cmd/prometheus/main_unix_test.go index 393c6f952..7724f0dd1 100644 --- a/cmd/prometheus/main_unix_test.go +++ b/cmd/prometheus/main_unix_test.go @@ -11,6 +11,7 @@ // See the License for the specific language governing permissions and // limitations under the License. // +//go:build !windows // +build !windows package main diff --git a/cmd/promtool/main.go b/cmd/promtool/main.go index 1267631aa..ae46d84e5 100644 --- a/cmd/promtool/main.go +++ b/cmd/promtool/main.go @@ -24,7 +24,7 @@ import ( "net/url" "os" "path/filepath" - "reflect" + "sort" "strconv" "strings" "time" @@ -48,6 +48,7 @@ import ( _ "github.com/prometheus/prometheus/discovery/install" // Register service discovery implementations. "github.com/prometheus/prometheus/discovery/kubernetes" "github.com/prometheus/prometheus/discovery/targetgroup" + "github.com/prometheus/prometheus/pkg/labels" "github.com/prometheus/prometheus/pkg/rulefmt" "github.com/prometheus/prometheus/promql" ) @@ -136,6 +137,7 @@ func main() { analyzePath := tsdbAnalyzeCmd.Arg("db path", "Database path (default is "+defaultDBPath+").").Default(defaultDBPath).String() analyzeBlockID := tsdbAnalyzeCmd.Arg("block id", "Block to analyze (default is the last block).").String() analyzeLimit := tsdbAnalyzeCmd.Flag("limit", "How many items to show in each list.").Default("20").Int() + analyzeRunExtended := tsdbAnalyzeCmd.Flag("extended", "Run extended analysis.").Bool() tsdbListCmd := tsdbCmd.Command("list", "List tsdb blocks.") listHumanReadable := tsdbListCmd.Flag("human-readable", "Print human readable values.").Short('r').Bool() @@ -236,7 +238,7 @@ func main() { os.Exit(checkErr(benchmarkWrite(*benchWriteOutPath, *benchSamplesFile, *benchWriteNumMetrics, *benchWriteNumScrapes))) case tsdbAnalyzeCmd.FullCommand(): - os.Exit(checkErr(analyzeBlock(*analyzePath, *analyzeBlockID, *analyzeLimit))) + os.Exit(checkErr(analyzeBlock(*analyzePath, *analyzeBlockID, *analyzeLimit, *analyzeRunExtended))) case tsdbListCmd.FullCommand(): os.Exit(checkErr(listBlocks(*listPath, *listHumanReadable))) @@ -471,8 +473,8 @@ func checkRules(filename string) (int, []error) { fmt.Printf("%d duplicate rule(s) found.\n", len(dRules)) for _, n := range dRules { fmt.Printf("Metric: %s\nLabel(s):\n", n.metric) - for i, l := range n.label { - fmt.Printf("\t%s: %s\n", i, l) + for _, l := range n.label { + fmt.Printf("\t%s: %s\n", l.Name, l.Value) } } fmt.Println("Might cause inconsistency while recording expressions.") @@ -483,29 +485,52 @@ func checkRules(filename string) (int, []error) { type compareRuleType struct { metric string - label map[string]string + label labels.Labels +} + +type compareRuleTypes []compareRuleType + +func (c compareRuleTypes) Len() int { return len(c) } +func (c compareRuleTypes) Swap(i, j int) { c[i], c[j] = c[j], c[i] } +func (c compareRuleTypes) Less(i, j int) bool { return compare(c[i], c[j]) < 0 } + +func compare(a, b compareRuleType) int { + if res := strings.Compare(a.metric, b.metric); res != 0 { + return res + } + + return labels.Compare(a.label, b.label) } func checkDuplicates(groups []rulefmt.RuleGroup) []compareRuleType { var duplicates []compareRuleType + var rules compareRuleTypes for _, group := range groups { - for index, rule := range group.Rules { - inst := compareRuleType{ + + for _, rule := range group.Rules { + rules = append(rules, compareRuleType{ metric: ruleMetric(rule), - label: rule.Labels, - } - for i := 0; i < index; i++ { - t := compareRuleType{ - metric: ruleMetric(group.Rules[i]), - label: group.Rules[i].Labels, - } - if reflect.DeepEqual(t, inst) { - duplicates = append(duplicates, t) - } - } + label: labels.FromMap(rule.Labels), + }) } } + if len(rules) < 2 { + return duplicates + } + sort.Sort(rules) + + last := rules[0] + for i := 1; i < len(rules); i++ { + if compare(last, rules[i]) == 0 { + // Don't add a duplicated rule multiple times. + if len(duplicates) == 0 || compare(last, duplicates[len(duplicates)-1]) != 0 { + duplicates = append(duplicates, rules[i]) + } + } + last = rules[i] + } + return duplicates } @@ -911,20 +936,17 @@ func importRules(url *url.URL, start, end, outputDir string, evalInterval time.D } else { etime, err = parseTime(end) if err != nil { - fmt.Fprintln(os.Stderr, "error parsing end time:", err) - return err + return fmt.Errorf("error parsing end time: %v", err) } } stime, err = parseTime(start) if err != nil { - fmt.Fprintln(os.Stderr, "error parsing start time:", err) - return err + return fmt.Errorf("error parsing start time: %v", err) } if !stime.Before(etime) { - fmt.Fprintln(os.Stderr, "start time is not before end time") - return nil + return errors.New("start time is not before end time") } cfg := ruleImporterConfig{ @@ -937,25 +959,24 @@ func importRules(url *url.URL, start, end, outputDir string, evalInterval time.D Address: url.String(), }) if err != nil { - fmt.Fprintln(os.Stderr, "new api client error", err) - return err + return fmt.Errorf("new api client error: %v", err) } ruleImporter := newRuleImporter(log.NewLogfmtLogger(log.NewSyncWriter(os.Stderr)), cfg, v1.NewAPI(client)) errs := ruleImporter.loadGroups(ctx, files) for _, err := range errs { if err != nil { - fmt.Fprintln(os.Stderr, "rule importer parse error", err) - return err + return fmt.Errorf("rule importer parse error: %v", err) } } errs = ruleImporter.importAll(ctx) for _, err := range errs { - if err != nil { - fmt.Fprintln(os.Stderr, "rule importer error", err) - } + fmt.Fprintln(os.Stderr, "rule importer error:", err) + } + if len(errs) > 0 { + return errors.New("error importing rules") } - return err + return nil } diff --git a/cmd/promtool/main_test.go b/cmd/promtool/main_test.go index 4949c467c..87ac13e76 100644 --- a/cmd/promtool/main_test.go +++ b/cmd/promtool/main_test.go @@ -21,6 +21,8 @@ import ( "testing" "time" + "github.com/prometheus/prometheus/pkg/labels" + "github.com/prometheus/prometheus/pkg/rulefmt" "github.com/stretchr/testify/require" ) @@ -118,3 +120,46 @@ func TestCheckSDFile(t *testing.T) { }) } } + +func TestCheckDuplicates(t *testing.T) { + cases := []struct { + name string + ruleFile string + expectedDups []compareRuleType + }{ + { + name: "no duplicates", + ruleFile: "./testdata/rules.yml", + }, + { + name: "duplicate in other group", + ruleFile: "./testdata/rules_duplicates.yml", + expectedDups: []compareRuleType{ + { + metric: "job:test:count_over_time1m", + label: labels.New(), + }, + }, + }, + } + + for _, test := range cases { + c := test + t.Run(c.name, func(t *testing.T) { + rgs, err := rulefmt.ParseFile(c.ruleFile) + require.Empty(t, err) + dups := checkDuplicates(rgs.Groups) + require.Equal(t, c.expectedDups, dups) + }) + } +} + +func BenchmarkCheckDuplicates(b *testing.B) { + rgs, err := rulefmt.ParseFile("./testdata/rules_large.yml") + require.Empty(b, err) + b.ResetTimer() + + for i := 0; i < b.N; i++ { + checkDuplicates(rgs.Groups) + } +} diff --git a/cmd/promtool/rules.go b/cmd/promtool/rules.go index 75faa1b60..7140d8aa9 100644 --- a/cmd/promtool/rules.go +++ b/cmd/promtool/rules.go @@ -57,7 +57,7 @@ type ruleImporterConfig struct { // newRuleImporter creates a new rule importer that can be used to parse and evaluate recording rule files and create new series // written to disk in blocks. func newRuleImporter(logger log.Logger, config ruleImporterConfig, apiClient queryRangeAPI) *ruleImporter { - level.Info(logger).Log("backfiller", "new rule importer from start", config.start.Format(time.RFC822), " to end", config.end.Format(time.RFC822)) + level.Info(logger).Log("backfiller", "new rule importer", "start", config.start.Format(time.RFC822), "end", config.end.Format(time.RFC822)) return &ruleImporter{ logger: logger, config: config, @@ -81,10 +81,9 @@ func (importer *ruleImporter) importAll(ctx context.Context) (errs []error) { for name, group := range importer.groups { level.Info(importer.logger).Log("backfiller", "processing group", "name", name) - stimeWithAlignment := group.EvalTimestamp(importer.config.start.UnixNano()) for i, r := range group.Rules() { level.Info(importer.logger).Log("backfiller", "processing rule", "id", i, "name", r.Name()) - if err := importer.importRule(ctx, r.Query().String(), r.Name(), r.Labels(), stimeWithAlignment, importer.config.end, group); err != nil { + if err := importer.importRule(ctx, r.Query().String(), r.Name(), r.Labels(), importer.config.start, importer.config.end, group); err != nil { errs = append(errs, err) } } @@ -103,11 +102,18 @@ func (importer *ruleImporter) importRule(ctx context.Context, ruleExpr, ruleName currStart := max(startOfBlock/int64(time.Second/time.Millisecond), start.Unix()) startWithAlignment := grp.EvalTimestamp(time.Unix(currStart, 0).UTC().UnixNano()) + for startWithAlignment.Unix() < currStart { + startWithAlignment = startWithAlignment.Add(grp.Interval()) + } + end := time.Unix(min(endOfBlock/int64(time.Second/time.Millisecond), end.Unix()), 0).UTC() + if end.Before(startWithAlignment) { + break + } val, warnings, err := importer.apiClient.QueryRange(ctx, ruleExpr, v1.Range{ Start: startWithAlignment, - End: time.Unix(min(endOfBlock/int64(time.Second/time.Millisecond), end.Unix()), 0).UTC(), + End: end, Step: grp.Interval(), }, ) @@ -141,22 +147,16 @@ func (importer *ruleImporter) importRule(ctx context.Context, ruleExpr, ruleName matrix = val.(model.Matrix) for _, sample := range matrix { - currentLabels := make(labels.Labels, 0, len(sample.Metric)+len(ruleLabels)+1) - currentLabels = append(currentLabels, labels.Label{ - Name: labels.MetricName, - Value: ruleName, - }) - - currentLabels = append(currentLabels, ruleLabels...) + lb := labels.NewBuilder(ruleLabels) for name, value := range sample.Metric { - currentLabels = append(currentLabels, labels.Label{ - Name: string(name), - Value: string(value), - }) + lb.Set(string(name), string(value)) } + + lb.Set(labels.MetricName, ruleName) + for _, value := range sample.Values { - if err := app.add(ctx, currentLabels, timestamp.FromTime(value.Timestamp.Time()), float64(value.Value)); err != nil { + if err := app.add(ctx, lb.Labels(), timestamp.FromTime(value.Timestamp.Time()), float64(value.Value)); err != nil { return errors.Wrap(err, "add") } } diff --git a/cmd/promtool/rules_test.go b/cmd/promtool/rules_test.go index 4afae2c9f..0c5d85aca 100644 --- a/cmd/promtool/rules_test.go +++ b/cmd/promtool/rules_test.go @@ -61,6 +61,7 @@ func TestBackfillRuleIntegration(t *testing.T) { }{ {"no samples", 1, 0, 0, 0, []*model.SampleStream{}}, {"run importer once", 1, 8, 4, 4, []*model.SampleStream{{Metric: model.Metric{"name1": "val1"}, Values: []model.SamplePair{{Timestamp: testTime, Value: testValue}}}}}, + {"run importer with dup name label", 1, 8, 4, 4, []*model.SampleStream{{Metric: model.Metric{"__name__": "val1", "name1": "val1"}, Values: []model.SamplePair{{Timestamp: testTime, Value: testValue}}}}}, {"one importer twice", 2, 8, 4, 8, []*model.SampleStream{{Metric: model.Metric{"name1": "val1"}, Values: []model.SamplePair{{Timestamp: testTime, Value: testValue}, {Timestamp: testTime2, Value: testValue2}}}}}, } for _, tt := range testCases { @@ -194,7 +195,7 @@ func createMultiRuleTestFiles(path string) error { - record: grp1_rule1 expr: grp1_rule1_expr labels: - testlabel11: testlabelvalue11 + testlabel11: testlabelvalue12 - name: group2 rules: - record: grp2_rule1 @@ -202,7 +203,7 @@ func createMultiRuleTestFiles(path string) error { - record: grp2_rule2 expr: grp2_rule2_expr labels: - testlabel11: testlabelvalue11 + testlabel11: testlabelvalue13 ` return ioutil.WriteFile(path, []byte(recordingRules), 0777) } diff --git a/cmd/promtool/testdata/rules_duplicates.yml b/cmd/promtool/testdata/rules_duplicates.yml new file mode 100644 index 000000000..757006817 --- /dev/null +++ b/cmd/promtool/testdata/rules_duplicates.yml @@ -0,0 +1,24 @@ +# This is a rules file with duplicate expressions + +groups: + - name: base + rules: + - record: job:test:count_over_time1m + expr: sum without(instance) (count_over_time(test[1m])) + + # A recording rule that doesn't depend on input series. + - record: fixed_data + expr: 1 + + # Subquery with default resolution test. + - record: suquery_interval_test + expr: count_over_time(up[5m:]) + + # Duplicating + - record: job:test:count_over_time1m + expr: sum without(instance) (count_over_time(test[1m])) + + - name: duplicate + rules: + - record: job:test:count_over_time1m + expr: sum without(instance) (count_over_time(test[1m])) diff --git a/cmd/promtool/testdata/rules_large.yml b/cmd/promtool/testdata/rules_large.yml new file mode 100644 index 000000000..6137652da --- /dev/null +++ b/cmd/promtool/testdata/rules_large.yml @@ -0,0 +1,40011 @@ +groups: + - name: example + rules: + - record: job:http_inprogress_requests:sum:1 + expr: vector(1) + labels: + job: job1 + - record: job:http_inprogress_requests:sum:1 + expr: vector(1) + labels: + job: job1 + - record: job:http_inprogress_requests:sum:2 + expr: vector(1) + labels: + job: job2 + - record: job:http_inprogress_requests:sum:3 + expr: vector(1) + labels: + job: job3 + - record: job:http_inprogress_requests:sum:4 + expr: vector(1) + labels: + job: job4 + - record: job:http_inprogress_requests:sum:5 + expr: vector(1) + labels: + job: job5 + - record: job:http_inprogress_requests:sum:6 + expr: vector(1) + labels: + job: job6 + - record: job:http_inprogress_requests:sum:7 + expr: vector(1) + labels: + job: job7 + - record: job:http_inprogress_requests:sum:8 + expr: vector(1) + labels: + job: job8 + - record: job:http_inprogress_requests:sum:9 + expr: vector(1) + labels: + job: job9 + - record: job:http_inprogress_requests:sum:10 + expr: vector(1) + labels: + job: job10 + - record: job:http_inprogress_requests:sum:11 + expr: vector(1) + labels: + job: job11 + - record: job:http_inprogress_requests:sum:12 + expr: vector(1) + labels: + job: job12 + - record: job:http_inprogress_requests:sum:13 + expr: vector(1) + labels: + job: job13 + - record: job:http_inprogress_requests:sum:14 + expr: vector(1) + labels: + job: job14 + - record: job:http_inprogress_requests:sum:15 + expr: vector(1) + labels: + job: job15 + - record: job:http_inprogress_requests:sum:16 + expr: vector(1) + labels: + job: job16 + - record: job:http_inprogress_requests:sum:17 + expr: vector(1) + labels: + job: job17 + - record: job:http_inprogress_requests:sum:18 + expr: vector(1) + labels: + job: job18 + - record: job:http_inprogress_requests:sum:19 + expr: vector(1) + labels: + job: job19 + - record: job:http_inprogress_requests:sum:20 + expr: vector(1) + labels: + job: job20 + - record: job:http_inprogress_requests:sum:21 + expr: vector(1) + labels: + job: job21 + - record: job:http_inprogress_requests:sum:22 + expr: vector(1) + labels: + job: job22 + - record: job:http_inprogress_requests:sum:23 + expr: vector(1) + labels: + job: job23 + - record: job:http_inprogress_requests:sum:24 + expr: vector(1) + labels: + job: job24 + - record: job:http_inprogress_requests:sum:25 + expr: vector(1) + labels: + job: job25 + - record: job:http_inprogress_requests:sum:26 + expr: vector(1) + labels: + job: job26 + - record: job:http_inprogress_requests:sum:27 + expr: vector(1) + labels: + job: job27 + - record: job:http_inprogress_requests:sum:28 + expr: vector(1) + labels: + job: job28 + - record: job:http_inprogress_requests:sum:29 + expr: vector(1) + labels: + job: job29 + - record: job:http_inprogress_requests:sum:30 + expr: vector(1) + labels: + job: job30 + - record: job:http_inprogress_requests:sum:31 + expr: vector(1) + labels: + job: job31 + - record: job:http_inprogress_requests:sum:32 + expr: vector(1) + labels: + job: job32 + - record: job:http_inprogress_requests:sum:33 + expr: vector(1) + labels: + job: job33 + - record: job:http_inprogress_requests:sum:34 + expr: vector(1) + labels: + job: job34 + - record: job:http_inprogress_requests:sum:35 + expr: vector(1) + labels: + job: job35 + - record: job:http_inprogress_requests:sum:36 + expr: vector(1) + labels: + job: job36 + - record: job:http_inprogress_requests:sum:37 + expr: vector(1) + labels: + job: job37 + - record: job:http_inprogress_requests:sum:38 + expr: vector(1) + labels: + job: job38 + - record: job:http_inprogress_requests:sum:39 + expr: vector(1) + labels: + job: job39 + - record: job:http_inprogress_requests:sum:40 + expr: vector(1) + labels: + job: job40 + - record: job:http_inprogress_requests:sum:41 + expr: vector(1) + labels: + job: job41 + - record: job:http_inprogress_requests:sum:42 + expr: vector(1) + labels: + job: job42 + - record: job:http_inprogress_requests:sum:43 + expr: vector(1) + labels: + job: job43 + - record: job:http_inprogress_requests:sum:44 + expr: vector(1) + labels: + job: job44 + - record: job:http_inprogress_requests:sum:45 + expr: vector(1) + labels: + job: job45 + - record: job:http_inprogress_requests:sum:46 + expr: vector(1) + labels: + job: job46 + - record: job:http_inprogress_requests:sum:47 + expr: vector(1) + labels: + job: job47 + - record: job:http_inprogress_requests:sum:48 + expr: vector(1) + labels: + job: job48 + - record: job:http_inprogress_requests:sum:49 + expr: vector(1) + labels: + job: job49 + - record: job:http_inprogress_requests:sum:50 + expr: vector(1) + labels: + job: job50 + - record: job:http_inprogress_requests:sum:51 + expr: vector(1) + labels: + job: job51 + - record: job:http_inprogress_requests:sum:52 + expr: vector(1) + labels: + job: job52 + - record: job:http_inprogress_requests:sum:53 + expr: vector(1) + labels: + job: job53 + - record: job:http_inprogress_requests:sum:54 + expr: vector(1) + labels: + job: job54 + - record: job:http_inprogress_requests:sum:55 + expr: vector(1) + labels: + job: job55 + - record: job:http_inprogress_requests:sum:56 + expr: vector(1) + labels: + job: job56 + - record: job:http_inprogress_requests:sum:57 + expr: vector(1) + labels: + job: job57 + - record: job:http_inprogress_requests:sum:58 + expr: vector(1) + labels: + job: job58 + - record: job:http_inprogress_requests:sum:59 + expr: vector(1) + labels: + job: job59 + - record: job:http_inprogress_requests:sum:60 + expr: vector(1) + labels: + job: job60 + - record: job:http_inprogress_requests:sum:61 + expr: vector(1) + labels: + job: job61 + - record: job:http_inprogress_requests:sum:62 + expr: vector(1) + labels: + job: job62 + - record: job:http_inprogress_requests:sum:63 + expr: vector(1) + labels: + job: job63 + - record: job:http_inprogress_requests:sum:64 + expr: vector(1) + labels: + job: job64 + - record: job:http_inprogress_requests:sum:65 + expr: vector(1) + labels: + job: job65 + - record: job:http_inprogress_requests:sum:66 + expr: vector(1) + labels: + job: job66 + - record: job:http_inprogress_requests:sum:67 + expr: vector(1) + labels: + job: job67 + - record: job:http_inprogress_requests:sum:68 + expr: vector(1) + labels: + job: job68 + - record: job:http_inprogress_requests:sum:69 + expr: vector(1) + labels: + job: job69 + - record: job:http_inprogress_requests:sum:70 + expr: vector(1) + labels: + job: job70 + - record: job:http_inprogress_requests:sum:71 + expr: vector(1) + labels: + job: job71 + - record: job:http_inprogress_requests:sum:72 + expr: vector(1) + labels: + job: job72 + - record: job:http_inprogress_requests:sum:73 + expr: vector(1) + labels: + job: job73 + - record: job:http_inprogress_requests:sum:74 + expr: vector(1) + labels: + job: job74 + - record: job:http_inprogress_requests:sum:75 + expr: vector(1) + labels: + job: job75 + - record: job:http_inprogress_requests:sum:76 + expr: vector(1) + labels: + job: job76 + - record: job:http_inprogress_requests:sum:77 + expr: vector(1) + labels: + job: job77 + - record: job:http_inprogress_requests:sum:78 + expr: vector(1) + labels: + job: job78 + - record: job:http_inprogress_requests:sum:79 + expr: vector(1) + labels: + job: job79 + - record: job:http_inprogress_requests:sum:80 + expr: vector(1) + labels: + job: job80 + - record: job:http_inprogress_requests:sum:81 + expr: vector(1) + labels: + job: job81 + - record: job:http_inprogress_requests:sum:82 + expr: vector(1) + labels: + job: job82 + - record: job:http_inprogress_requests:sum:83 + expr: vector(1) + labels: + job: job83 + - record: job:http_inprogress_requests:sum:84 + expr: vector(1) + labels: + job: job84 + - record: job:http_inprogress_requests:sum:85 + expr: vector(1) + labels: + job: job85 + - record: job:http_inprogress_requests:sum:86 + expr: vector(1) + labels: + job: job86 + - record: job:http_inprogress_requests:sum:87 + expr: vector(1) + labels: + job: job87 + - record: job:http_inprogress_requests:sum:88 + expr: vector(1) + labels: + job: job88 + - record: job:http_inprogress_requests:sum:89 + expr: vector(1) + labels: + job: job89 + - record: job:http_inprogress_requests:sum:90 + expr: vector(1) + labels: + job: job90 + - record: job:http_inprogress_requests:sum:91 + expr: vector(1) + labels: + job: job91 + - record: job:http_inprogress_requests:sum:92 + expr: vector(1) + labels: + job: job92 + - record: job:http_inprogress_requests:sum:93 + expr: vector(1) + labels: + job: job93 + - record: job:http_inprogress_requests:sum:94 + expr: vector(1) + labels: + job: job94 + - record: job:http_inprogress_requests:sum:95 + expr: vector(1) + labels: + job: job95 + - record: job:http_inprogress_requests:sum:96 + expr: vector(1) + labels: + job: job96 + - record: job:http_inprogress_requests:sum:97 + expr: vector(1) + labels: + job: job97 + - record: job:http_inprogress_requests:sum:98 + expr: vector(1) + labels: + job: job98 + - record: job:http_inprogress_requests:sum:99 + expr: vector(1) + labels: + job: job99 + - record: job:http_inprogress_requests:sum:100 + expr: vector(1) + labels: + job: job100 + - record: job:http_inprogress_requests:sum:101 + expr: vector(1) + labels: + job: job101 + - record: job:http_inprogress_requests:sum:102 + expr: vector(1) + labels: + job: job102 + - record: job:http_inprogress_requests:sum:103 + expr: vector(1) + labels: + job: job103 + - record: job:http_inprogress_requests:sum:104 + expr: vector(1) + labels: + job: job104 + - record: job:http_inprogress_requests:sum:105 + expr: vector(1) + labels: + job: job105 + - record: job:http_inprogress_requests:sum:106 + expr: vector(1) + labels: + job: job106 + - record: job:http_inprogress_requests:sum:107 + expr: vector(1) + labels: + job: job107 + - record: job:http_inprogress_requests:sum:108 + expr: vector(1) + labels: + job: job108 + - record: job:http_inprogress_requests:sum:109 + expr: vector(1) + labels: + job: job109 + - record: job:http_inprogress_requests:sum:110 + expr: vector(1) + labels: + job: job110 + - record: job:http_inprogress_requests:sum:111 + expr: vector(1) + labels: + job: job111 + - record: job:http_inprogress_requests:sum:112 + expr: vector(1) + labels: + job: job112 + - record: job:http_inprogress_requests:sum:113 + expr: vector(1) + labels: + job: job113 + - record: job:http_inprogress_requests:sum:114 + expr: vector(1) + labels: + job: job114 + - record: job:http_inprogress_requests:sum:115 + expr: vector(1) + labels: + job: job115 + - record: job:http_inprogress_requests:sum:116 + expr: vector(1) + labels: + job: job116 + - record: job:http_inprogress_requests:sum:117 + expr: vector(1) + labels: + job: job117 + - record: job:http_inprogress_requests:sum:118 + expr: vector(1) + labels: + job: job118 + - record: job:http_inprogress_requests:sum:119 + expr: vector(1) + labels: + job: job119 + - record: job:http_inprogress_requests:sum:120 + expr: vector(1) + labels: + job: job120 + - record: job:http_inprogress_requests:sum:121 + expr: vector(1) + labels: + job: job121 + - record: job:http_inprogress_requests:sum:122 + expr: vector(1) + labels: + job: job122 + - record: job:http_inprogress_requests:sum:123 + expr: vector(1) + labels: + job: job123 + - record: job:http_inprogress_requests:sum:124 + expr: vector(1) + labels: + job: job124 + - record: job:http_inprogress_requests:sum:125 + expr: vector(1) + labels: + job: job125 + - record: job:http_inprogress_requests:sum:126 + expr: vector(1) + labels: + job: job126 + - record: job:http_inprogress_requests:sum:127 + expr: vector(1) + labels: + job: job127 + - record: job:http_inprogress_requests:sum:128 + expr: vector(1) + labels: + job: job128 + - record: job:http_inprogress_requests:sum:129 + expr: vector(1) + labels: + job: job129 + - record: job:http_inprogress_requests:sum:130 + expr: vector(1) + labels: + job: job130 + - record: job:http_inprogress_requests:sum:131 + expr: vector(1) + labels: + job: job131 + - record: job:http_inprogress_requests:sum:132 + expr: vector(1) + labels: + job: job132 + - record: job:http_inprogress_requests:sum:133 + expr: vector(1) + labels: + job: job133 + - record: job:http_inprogress_requests:sum:134 + expr: vector(1) + labels: + job: job134 + - record: job:http_inprogress_requests:sum:135 + expr: vector(1) + labels: + job: job135 + - record: job:http_inprogress_requests:sum:136 + expr: vector(1) + labels: + job: job136 + - record: job:http_inprogress_requests:sum:137 + expr: vector(1) + labels: + job: job137 + - record: job:http_inprogress_requests:sum:138 + expr: vector(1) + labels: + job: job138 + - record: job:http_inprogress_requests:sum:139 + expr: vector(1) + labels: + job: job139 + - record: job:http_inprogress_requests:sum:140 + expr: vector(1) + labels: + job: job140 + - record: job:http_inprogress_requests:sum:141 + expr: vector(1) + labels: + job: job141 + - record: job:http_inprogress_requests:sum:142 + expr: vector(1) + labels: + job: job142 + - record: job:http_inprogress_requests:sum:143 + expr: vector(1) + labels: + job: job143 + - record: job:http_inprogress_requests:sum:144 + expr: vector(1) + labels: + job: job144 + - record: job:http_inprogress_requests:sum:145 + expr: vector(1) + labels: + job: job145 + - record: job:http_inprogress_requests:sum:146 + expr: vector(1) + labels: + job: job146 + - record: job:http_inprogress_requests:sum:147 + expr: vector(1) + labels: + job: job147 + - record: job:http_inprogress_requests:sum:148 + expr: vector(1) + labels: + job: job148 + - record: job:http_inprogress_requests:sum:149 + expr: vector(1) + labels: + job: job149 + - record: job:http_inprogress_requests:sum:150 + expr: vector(1) + labels: + job: job150 + - record: job:http_inprogress_requests:sum:151 + expr: vector(1) + labels: + job: job151 + - record: job:http_inprogress_requests:sum:152 + expr: vector(1) + labels: + job: job152 + - record: job:http_inprogress_requests:sum:153 + expr: vector(1) + labels: + job: job153 + - record: job:http_inprogress_requests:sum:154 + expr: vector(1) + labels: + job: job154 + - record: job:http_inprogress_requests:sum:155 + expr: vector(1) + labels: + job: job155 + - record: job:http_inprogress_requests:sum:156 + expr: vector(1) + labels: + job: job156 + - record: job:http_inprogress_requests:sum:157 + expr: vector(1) + labels: + job: job157 + - record: job:http_inprogress_requests:sum:158 + expr: vector(1) + labels: + job: job158 + - record: job:http_inprogress_requests:sum:159 + expr: vector(1) + labels: + job: job159 + - record: job:http_inprogress_requests:sum:160 + expr: vector(1) + labels: + job: job160 + - record: job:http_inprogress_requests:sum:161 + expr: vector(1) + labels: + job: job161 + - record: job:http_inprogress_requests:sum:162 + expr: vector(1) + labels: + job: job162 + - record: job:http_inprogress_requests:sum:163 + expr: vector(1) + labels: + job: job163 + - record: job:http_inprogress_requests:sum:164 + expr: vector(1) + labels: + job: job164 + - record: job:http_inprogress_requests:sum:165 + expr: vector(1) + labels: + job: job165 + - record: job:http_inprogress_requests:sum:166 + expr: vector(1) + labels: + job: job166 + - record: job:http_inprogress_requests:sum:167 + expr: vector(1) + labels: + job: job167 + - record: job:http_inprogress_requests:sum:168 + expr: vector(1) + labels: + job: job168 + - record: job:http_inprogress_requests:sum:169 + expr: vector(1) + labels: + job: job169 + - record: job:http_inprogress_requests:sum:170 + expr: vector(1) + labels: + job: job170 + - record: job:http_inprogress_requests:sum:171 + expr: vector(1) + labels: + job: job171 + - record: job:http_inprogress_requests:sum:172 + expr: vector(1) + labels: + job: job172 + - record: job:http_inprogress_requests:sum:173 + expr: vector(1) + labels: + job: job173 + - record: job:http_inprogress_requests:sum:174 + expr: vector(1) + labels: + job: job174 + - record: job:http_inprogress_requests:sum:175 + expr: vector(1) + labels: + job: job175 + - record: job:http_inprogress_requests:sum:176 + expr: vector(1) + labels: + job: job176 + - record: job:http_inprogress_requests:sum:177 + expr: vector(1) + labels: + job: job177 + - record: job:http_inprogress_requests:sum:178 + expr: vector(1) + labels: + job: job178 + - record: job:http_inprogress_requests:sum:179 + expr: vector(1) + labels: + job: job179 + - record: job:http_inprogress_requests:sum:180 + expr: vector(1) + labels: + job: job180 + - record: job:http_inprogress_requests:sum:181 + expr: vector(1) + labels: + job: job181 + - record: job:http_inprogress_requests:sum:182 + expr: vector(1) + labels: + job: job182 + - record: job:http_inprogress_requests:sum:183 + expr: vector(1) + labels: + job: job183 + - record: job:http_inprogress_requests:sum:184 + expr: vector(1) + labels: + job: job184 + - record: job:http_inprogress_requests:sum:185 + expr: vector(1) + labels: + job: job185 + - record: job:http_inprogress_requests:sum:186 + expr: vector(1) + labels: + job: job186 + - record: job:http_inprogress_requests:sum:187 + expr: vector(1) + labels: + job: job187 + - record: job:http_inprogress_requests:sum:188 + expr: vector(1) + labels: + job: job188 + - record: job:http_inprogress_requests:sum:189 + expr: vector(1) + labels: + job: job189 + - record: job:http_inprogress_requests:sum:190 + expr: vector(1) + labels: + job: job190 + - record: job:http_inprogress_requests:sum:191 + expr: vector(1) + labels: + job: job191 + - record: job:http_inprogress_requests:sum:192 + expr: vector(1) + labels: + job: job192 + - record: job:http_inprogress_requests:sum:193 + expr: vector(1) + labels: + job: job193 + - record: job:http_inprogress_requests:sum:194 + expr: vector(1) + labels: + job: job194 + - record: job:http_inprogress_requests:sum:195 + expr: vector(1) + labels: + job: job195 + - record: job:http_inprogress_requests:sum:196 + expr: vector(1) + labels: + job: job196 + - record: job:http_inprogress_requests:sum:197 + expr: vector(1) + labels: + job: job197 + - record: job:http_inprogress_requests:sum:198 + expr: vector(1) + labels: + job: job198 + - record: job:http_inprogress_requests:sum:199 + expr: vector(1) + labels: + job: job199 + - record: job:http_inprogress_requests:sum:200 + expr: vector(1) + labels: + job: job200 + - record: job:http_inprogress_requests:sum:201 + expr: vector(1) + labels: + job: job201 + - record: job:http_inprogress_requests:sum:202 + expr: vector(1) + labels: + job: job202 + - record: job:http_inprogress_requests:sum:203 + expr: vector(1) + labels: + job: job203 + - record: job:http_inprogress_requests:sum:204 + expr: vector(1) + labels: + job: job204 + - record: job:http_inprogress_requests:sum:205 + expr: vector(1) + labels: + job: job205 + - record: job:http_inprogress_requests:sum:206 + expr: vector(1) + labels: + job: job206 + - record: job:http_inprogress_requests:sum:207 + expr: vector(1) + labels: + job: job207 + - record: job:http_inprogress_requests:sum:208 + expr: vector(1) + labels: + job: job208 + - record: job:http_inprogress_requests:sum:209 + expr: vector(1) + labels: + job: job209 + - record: job:http_inprogress_requests:sum:210 + expr: vector(1) + labels: + job: job210 + - record: job:http_inprogress_requests:sum:211 + expr: vector(1) + labels: + job: job211 + - record: job:http_inprogress_requests:sum:212 + expr: vector(1) + labels: + job: job212 + - record: job:http_inprogress_requests:sum:213 + expr: vector(1) + labels: + job: job213 + - record: job:http_inprogress_requests:sum:214 + expr: vector(1) + labels: + job: job214 + - record: job:http_inprogress_requests:sum:215 + expr: vector(1) + labels: + job: job215 + - record: job:http_inprogress_requests:sum:216 + expr: vector(1) + labels: + job: job216 + - record: job:http_inprogress_requests:sum:217 + expr: vector(1) + labels: + job: job217 + - record: job:http_inprogress_requests:sum:218 + expr: vector(1) + labels: + job: job218 + - record: job:http_inprogress_requests:sum:219 + expr: vector(1) + labels: + job: job219 + - record: job:http_inprogress_requests:sum:220 + expr: vector(1) + labels: + job: job220 + - record: job:http_inprogress_requests:sum:221 + expr: vector(1) + labels: + job: job221 + - record: job:http_inprogress_requests:sum:222 + expr: vector(1) + labels: + job: job222 + - record: job:http_inprogress_requests:sum:223 + expr: vector(1) + labels: + job: job223 + - record: job:http_inprogress_requests:sum:224 + expr: vector(1) + labels: + job: job224 + - record: job:http_inprogress_requests:sum:225 + expr: vector(1) + labels: + job: job225 + - record: job:http_inprogress_requests:sum:226 + expr: vector(1) + labels: + job: job226 + - record: job:http_inprogress_requests:sum:227 + expr: vector(1) + labels: + job: job227 + - record: job:http_inprogress_requests:sum:228 + expr: vector(1) + labels: + job: job228 + - record: job:http_inprogress_requests:sum:229 + expr: vector(1) + labels: + job: job229 + - record: job:http_inprogress_requests:sum:230 + expr: vector(1) + labels: + job: job230 + - record: job:http_inprogress_requests:sum:231 + expr: vector(1) + labels: + job: job231 + - record: job:http_inprogress_requests:sum:232 + expr: vector(1) + labels: + job: job232 + - record: job:http_inprogress_requests:sum:233 + expr: vector(1) + labels: + job: job233 + - record: job:http_inprogress_requests:sum:234 + expr: vector(1) + labels: + job: job234 + - record: job:http_inprogress_requests:sum:235 + expr: vector(1) + labels: + job: job235 + - record: job:http_inprogress_requests:sum:236 + expr: vector(1) + labels: + job: job236 + - record: job:http_inprogress_requests:sum:237 + expr: vector(1) + labels: + job: job237 + - record: job:http_inprogress_requests:sum:238 + expr: vector(1) + labels: + job: job238 + - record: job:http_inprogress_requests:sum:239 + expr: vector(1) + labels: + job: job239 + - record: job:http_inprogress_requests:sum:240 + expr: vector(1) + labels: + job: job240 + - record: job:http_inprogress_requests:sum:241 + expr: vector(1) + labels: + job: job241 + - record: job:http_inprogress_requests:sum:242 + expr: vector(1) + labels: + job: job242 + - record: job:http_inprogress_requests:sum:243 + expr: vector(1) + labels: + job: job243 + - record: job:http_inprogress_requests:sum:244 + expr: vector(1) + labels: + job: job244 + - record: job:http_inprogress_requests:sum:245 + expr: vector(1) + labels: + job: job245 + - record: job:http_inprogress_requests:sum:246 + expr: vector(1) + labels: + job: job246 + - record: job:http_inprogress_requests:sum:247 + expr: vector(1) + labels: + job: job247 + - record: job:http_inprogress_requests:sum:248 + expr: vector(1) + labels: + job: job248 + - record: job:http_inprogress_requests:sum:249 + expr: vector(1) + labels: + job: job249 + - record: job:http_inprogress_requests:sum:250 + expr: vector(1) + labels: + job: job250 + - record: job:http_inprogress_requests:sum:251 + expr: vector(1) + labels: + job: job251 + - record: job:http_inprogress_requests:sum:252 + expr: vector(1) + labels: + job: job252 + - record: job:http_inprogress_requests:sum:253 + expr: vector(1) + labels: + job: job253 + - record: job:http_inprogress_requests:sum:254 + expr: vector(1) + labels: + job: job254 + - record: job:http_inprogress_requests:sum:255 + expr: vector(1) + labels: + job: job255 + - record: job:http_inprogress_requests:sum:256 + expr: vector(1) + labels: + job: job256 + - record: job:http_inprogress_requests:sum:257 + expr: vector(1) + labels: + job: job257 + - record: job:http_inprogress_requests:sum:258 + expr: vector(1) + labels: + job: job258 + - record: job:http_inprogress_requests:sum:259 + expr: vector(1) + labels: + job: job259 + - record: job:http_inprogress_requests:sum:260 + expr: vector(1) + labels: + job: job260 + - record: job:http_inprogress_requests:sum:261 + expr: vector(1) + labels: + job: job261 + - record: job:http_inprogress_requests:sum:262 + expr: vector(1) + labels: + job: job262 + - record: job:http_inprogress_requests:sum:263 + expr: vector(1) + labels: + job: job263 + - record: job:http_inprogress_requests:sum:264 + expr: vector(1) + labels: + job: job264 + - record: job:http_inprogress_requests:sum:265 + expr: vector(1) + labels: + job: job265 + - record: job:http_inprogress_requests:sum:266 + expr: vector(1) + labels: + job: job266 + - record: job:http_inprogress_requests:sum:267 + expr: vector(1) + labels: + job: job267 + - record: job:http_inprogress_requests:sum:268 + expr: vector(1) + labels: + job: job268 + - record: job:http_inprogress_requests:sum:269 + expr: vector(1) + labels: + job: job269 + - record: job:http_inprogress_requests:sum:270 + expr: vector(1) + labels: + job: job270 + - record: job:http_inprogress_requests:sum:271 + expr: vector(1) + labels: + job: job271 + - record: job:http_inprogress_requests:sum:272 + expr: vector(1) + labels: + job: job272 + - record: job:http_inprogress_requests:sum:273 + expr: vector(1) + labels: + job: job273 + - record: job:http_inprogress_requests:sum:274 + expr: vector(1) + labels: + job: job274 + - record: job:http_inprogress_requests:sum:275 + expr: vector(1) + labels: + job: job275 + - record: job:http_inprogress_requests:sum:276 + expr: vector(1) + labels: + job: job276 + - record: job:http_inprogress_requests:sum:277 + expr: vector(1) + labels: + job: job277 + - record: job:http_inprogress_requests:sum:278 + expr: vector(1) + labels: + job: job278 + - record: job:http_inprogress_requests:sum:279 + expr: vector(1) + labels: + job: job279 + - record: job:http_inprogress_requests:sum:280 + expr: vector(1) + labels: + job: job280 + - record: job:http_inprogress_requests:sum:281 + expr: vector(1) + labels: + job: job281 + - record: job:http_inprogress_requests:sum:282 + expr: vector(1) + labels: + job: job282 + - record: job:http_inprogress_requests:sum:283 + expr: vector(1) + labels: + job: job283 + - record: job:http_inprogress_requests:sum:284 + expr: vector(1) + labels: + job: job284 + - record: job:http_inprogress_requests:sum:285 + expr: vector(1) + labels: + job: job285 + - record: job:http_inprogress_requests:sum:286 + expr: vector(1) + labels: + job: job286 + - record: job:http_inprogress_requests:sum:287 + expr: vector(1) + labels: + job: job287 + - record: job:http_inprogress_requests:sum:288 + expr: vector(1) + labels: + job: job288 + - record: job:http_inprogress_requests:sum:289 + expr: vector(1) + labels: + job: job289 + - record: job:http_inprogress_requests:sum:290 + expr: vector(1) + labels: + job: job290 + - record: job:http_inprogress_requests:sum:291 + expr: vector(1) + labels: + job: job291 + - record: job:http_inprogress_requests:sum:292 + expr: vector(1) + labels: + job: job292 + - record: job:http_inprogress_requests:sum:293 + expr: vector(1) + labels: + job: job293 + - record: job:http_inprogress_requests:sum:294 + expr: vector(1) + labels: + job: job294 + - record: job:http_inprogress_requests:sum:295 + expr: vector(1) + labels: + job: job295 + - record: job:http_inprogress_requests:sum:296 + expr: vector(1) + labels: + job: job296 + - record: job:http_inprogress_requests:sum:297 + expr: vector(1) + labels: + job: job297 + - record: job:http_inprogress_requests:sum:298 + expr: vector(1) + labels: + job: job298 + - record: job:http_inprogress_requests:sum:299 + expr: vector(1) + labels: + job: job299 + - record: job:http_inprogress_requests:sum:300 + expr: vector(1) + labels: + job: job300 + - record: job:http_inprogress_requests:sum:301 + expr: vector(1) + labels: + job: job301 + - record: job:http_inprogress_requests:sum:302 + expr: vector(1) + labels: + job: job302 + - record: job:http_inprogress_requests:sum:303 + expr: vector(1) + labels: + job: job303 + - record: job:http_inprogress_requests:sum:304 + expr: vector(1) + labels: + job: job304 + - record: job:http_inprogress_requests:sum:305 + expr: vector(1) + labels: + job: job305 + - record: job:http_inprogress_requests:sum:306 + expr: vector(1) + labels: + job: job306 + - record: job:http_inprogress_requests:sum:307 + expr: vector(1) + labels: + job: job307 + - record: job:http_inprogress_requests:sum:308 + expr: vector(1) + labels: + job: job308 + - record: job:http_inprogress_requests:sum:309 + expr: vector(1) + labels: + job: job309 + - record: job:http_inprogress_requests:sum:310 + expr: vector(1) + labels: + job: job310 + - record: job:http_inprogress_requests:sum:311 + expr: vector(1) + labels: + job: job311 + - record: job:http_inprogress_requests:sum:312 + expr: vector(1) + labels: + job: job312 + - record: job:http_inprogress_requests:sum:313 + expr: vector(1) + labels: + job: job313 + - record: job:http_inprogress_requests:sum:314 + expr: vector(1) + labels: + job: job314 + - record: job:http_inprogress_requests:sum:315 + expr: vector(1) + labels: + job: job315 + - record: job:http_inprogress_requests:sum:316 + expr: vector(1) + labels: + job: job316 + - record: job:http_inprogress_requests:sum:317 + expr: vector(1) + labels: + job: job317 + - record: job:http_inprogress_requests:sum:318 + expr: vector(1) + labels: + job: job318 + - record: job:http_inprogress_requests:sum:319 + expr: vector(1) + labels: + job: job319 + - record: job:http_inprogress_requests:sum:320 + expr: vector(1) + labels: + job: job320 + - record: job:http_inprogress_requests:sum:321 + expr: vector(1) + labels: + job: job321 + - record: job:http_inprogress_requests:sum:322 + expr: vector(1) + labels: + job: job322 + - record: job:http_inprogress_requests:sum:323 + expr: vector(1) + labels: + job: job323 + - record: job:http_inprogress_requests:sum:324 + expr: vector(1) + labels: + job: job324 + - record: job:http_inprogress_requests:sum:325 + expr: vector(1) + labels: + job: job325 + - record: job:http_inprogress_requests:sum:326 + expr: vector(1) + labels: + job: job326 + - record: job:http_inprogress_requests:sum:327 + expr: vector(1) + labels: + job: job327 + - record: job:http_inprogress_requests:sum:328 + expr: vector(1) + labels: + job: job328 + - record: job:http_inprogress_requests:sum:329 + expr: vector(1) + labels: + job: job329 + - record: job:http_inprogress_requests:sum:330 + expr: vector(1) + labels: + job: job330 + - record: job:http_inprogress_requests:sum:331 + expr: vector(1) + labels: + job: job331 + - record: job:http_inprogress_requests:sum:332 + expr: vector(1) + labels: + job: job332 + - record: job:http_inprogress_requests:sum:333 + expr: vector(1) + labels: + job: job333 + - record: job:http_inprogress_requests:sum:334 + expr: vector(1) + labels: + job: job334 + - record: job:http_inprogress_requests:sum:335 + expr: vector(1) + labels: + job: job335 + - record: job:http_inprogress_requests:sum:336 + expr: vector(1) + labels: + job: job336 + - record: job:http_inprogress_requests:sum:337 + expr: vector(1) + labels: + job: job337 + - record: job:http_inprogress_requests:sum:338 + expr: vector(1) + labels: + job: job338 + - record: job:http_inprogress_requests:sum:339 + expr: vector(1) + labels: + job: job339 + - record: job:http_inprogress_requests:sum:340 + expr: vector(1) + labels: + job: job340 + - record: job:http_inprogress_requests:sum:341 + expr: vector(1) + labels: + job: job341 + - record: job:http_inprogress_requests:sum:342 + expr: vector(1) + labels: + job: job342 + - record: job:http_inprogress_requests:sum:343 + expr: vector(1) + labels: + job: job343 + - record: job:http_inprogress_requests:sum:344 + expr: vector(1) + labels: + job: job344 + - record: job:http_inprogress_requests:sum:345 + expr: vector(1) + labels: + job: job345 + - record: job:http_inprogress_requests:sum:346 + expr: vector(1) + labels: + job: job346 + - record: job:http_inprogress_requests:sum:347 + expr: vector(1) + labels: + job: job347 + - record: job:http_inprogress_requests:sum:348 + expr: vector(1) + labels: + job: job348 + - record: job:http_inprogress_requests:sum:349 + expr: vector(1) + labels: + job: job349 + - record: job:http_inprogress_requests:sum:350 + expr: vector(1) + labels: + job: job350 + - record: job:http_inprogress_requests:sum:351 + expr: vector(1) + labels: + job: job351 + - record: job:http_inprogress_requests:sum:352 + expr: vector(1) + labels: + job: job352 + - record: job:http_inprogress_requests:sum:353 + expr: vector(1) + labels: + job: job353 + - record: job:http_inprogress_requests:sum:354 + expr: vector(1) + labels: + job: job354 + - record: job:http_inprogress_requests:sum:355 + expr: vector(1) + labels: + job: job355 + - record: job:http_inprogress_requests:sum:356 + expr: vector(1) + labels: + job: job356 + - record: job:http_inprogress_requests:sum:357 + expr: vector(1) + labels: + job: job357 + - record: job:http_inprogress_requests:sum:358 + expr: vector(1) + labels: + job: job358 + - record: job:http_inprogress_requests:sum:359 + expr: vector(1) + labels: + job: job359 + - record: job:http_inprogress_requests:sum:360 + expr: vector(1) + labels: + job: job360 + - record: job:http_inprogress_requests:sum:361 + expr: vector(1) + labels: + job: job361 + - record: job:http_inprogress_requests:sum:362 + expr: vector(1) + labels: + job: job362 + - record: job:http_inprogress_requests:sum:363 + expr: vector(1) + labels: + job: job363 + - record: job:http_inprogress_requests:sum:364 + expr: vector(1) + labels: + job: job364 + - record: job:http_inprogress_requests:sum:365 + expr: vector(1) + labels: + job: job365 + - record: job:http_inprogress_requests:sum:366 + expr: vector(1) + labels: + job: job366 + - record: job:http_inprogress_requests:sum:367 + expr: vector(1) + labels: + job: job367 + - record: job:http_inprogress_requests:sum:368 + expr: vector(1) + labels: + job: job368 + - record: job:http_inprogress_requests:sum:369 + expr: vector(1) + labels: + job: job369 + - record: job:http_inprogress_requests:sum:370 + expr: vector(1) + labels: + job: job370 + - record: job:http_inprogress_requests:sum:371 + expr: vector(1) + labels: + job: job371 + - record: job:http_inprogress_requests:sum:372 + expr: vector(1) + labels: + job: job372 + - record: job:http_inprogress_requests:sum:373 + expr: vector(1) + labels: + job: job373 + - record: job:http_inprogress_requests:sum:374 + expr: vector(1) + labels: + job: job374 + - record: job:http_inprogress_requests:sum:375 + expr: vector(1) + labels: + job: job375 + - record: job:http_inprogress_requests:sum:376 + expr: vector(1) + labels: + job: job376 + - record: job:http_inprogress_requests:sum:377 + expr: vector(1) + labels: + job: job377 + - record: job:http_inprogress_requests:sum:378 + expr: vector(1) + labels: + job: job378 + - record: job:http_inprogress_requests:sum:379 + expr: vector(1) + labels: + job: job379 + - record: job:http_inprogress_requests:sum:380 + expr: vector(1) + labels: + job: job380 + - record: job:http_inprogress_requests:sum:381 + expr: vector(1) + labels: + job: job381 + - record: job:http_inprogress_requests:sum:382 + expr: vector(1) + labels: + job: job382 + - record: job:http_inprogress_requests:sum:383 + expr: vector(1) + labels: + job: job383 + - record: job:http_inprogress_requests:sum:384 + expr: vector(1) + labels: + job: job384 + - record: job:http_inprogress_requests:sum:385 + expr: vector(1) + labels: + job: job385 + - record: job:http_inprogress_requests:sum:386 + expr: vector(1) + labels: + job: job386 + - record: job:http_inprogress_requests:sum:387 + expr: vector(1) + labels: + job: job387 + - record: job:http_inprogress_requests:sum:388 + expr: vector(1) + labels: + job: job388 + - record: job:http_inprogress_requests:sum:389 + expr: vector(1) + labels: + job: job389 + - record: job:http_inprogress_requests:sum:390 + expr: vector(1) + labels: + job: job390 + - record: job:http_inprogress_requests:sum:391 + expr: vector(1) + labels: + job: job391 + - record: job:http_inprogress_requests:sum:392 + expr: vector(1) + labels: + job: job392 + - record: job:http_inprogress_requests:sum:393 + expr: vector(1) + labels: + job: job393 + - record: job:http_inprogress_requests:sum:394 + expr: vector(1) + labels: + job: job394 + - record: job:http_inprogress_requests:sum:395 + expr: vector(1) + labels: + job: job395 + - record: job:http_inprogress_requests:sum:396 + expr: vector(1) + labels: + job: job396 + - record: job:http_inprogress_requests:sum:397 + expr: vector(1) + labels: + job: job397 + - record: job:http_inprogress_requests:sum:398 + expr: vector(1) + labels: + job: job398 + - record: job:http_inprogress_requests:sum:399 + expr: vector(1) + labels: + job: job399 + - record: job:http_inprogress_requests:sum:400 + expr: vector(1) + labels: + job: job400 + - record: job:http_inprogress_requests:sum:401 + expr: vector(1) + labels: + job: job401 + - record: job:http_inprogress_requests:sum:402 + expr: vector(1) + labels: + job: job402 + - record: job:http_inprogress_requests:sum:403 + expr: vector(1) + labels: + job: job403 + - record: job:http_inprogress_requests:sum:404 + expr: vector(1) + labels: + job: job404 + - record: job:http_inprogress_requests:sum:405 + expr: vector(1) + labels: + job: job405 + - record: job:http_inprogress_requests:sum:406 + expr: vector(1) + labels: + job: job406 + - record: job:http_inprogress_requests:sum:407 + expr: vector(1) + labels: + job: job407 + - record: job:http_inprogress_requests:sum:408 + expr: vector(1) + labels: + job: job408 + - record: job:http_inprogress_requests:sum:409 + expr: vector(1) + labels: + job: job409 + - record: job:http_inprogress_requests:sum:410 + expr: vector(1) + labels: + job: job410 + - record: job:http_inprogress_requests:sum:411 + expr: vector(1) + labels: + job: job411 + - record: job:http_inprogress_requests:sum:412 + expr: vector(1) + labels: + job: job412 + - record: job:http_inprogress_requests:sum:413 + expr: vector(1) + labels: + job: job413 + - record: job:http_inprogress_requests:sum:414 + expr: vector(1) + labels: + job: job414 + - record: job:http_inprogress_requests:sum:415 + expr: vector(1) + labels: + job: job415 + - record: job:http_inprogress_requests:sum:416 + expr: vector(1) + labels: + job: job416 + - record: job:http_inprogress_requests:sum:417 + expr: vector(1) + labels: + job: job417 + - record: job:http_inprogress_requests:sum:418 + expr: vector(1) + labels: + job: job418 + - record: job:http_inprogress_requests:sum:419 + expr: vector(1) + labels: + job: job419 + - record: job:http_inprogress_requests:sum:420 + expr: vector(1) + labels: + job: job420 + - record: job:http_inprogress_requests:sum:421 + expr: vector(1) + labels: + job: job421 + - record: job:http_inprogress_requests:sum:422 + expr: vector(1) + labels: + job: job422 + - record: job:http_inprogress_requests:sum:423 + expr: vector(1) + labels: + job: job423 + - record: job:http_inprogress_requests:sum:424 + expr: vector(1) + labels: + job: job424 + - record: job:http_inprogress_requests:sum:425 + expr: vector(1) + labels: + job: job425 + - record: job:http_inprogress_requests:sum:426 + expr: vector(1) + labels: + job: job426 + - record: job:http_inprogress_requests:sum:427 + expr: vector(1) + labels: + job: job427 + - record: job:http_inprogress_requests:sum:428 + expr: vector(1) + labels: + job: job428 + - record: job:http_inprogress_requests:sum:429 + expr: vector(1) + labels: + job: job429 + - record: job:http_inprogress_requests:sum:430 + expr: vector(1) + labels: + job: job430 + - record: job:http_inprogress_requests:sum:431 + expr: vector(1) + labels: + job: job431 + - record: job:http_inprogress_requests:sum:432 + expr: vector(1) + labels: + job: job432 + - record: job:http_inprogress_requests:sum:433 + expr: vector(1) + labels: + job: job433 + - record: job:http_inprogress_requests:sum:434 + expr: vector(1) + labels: + job: job434 + - record: job:http_inprogress_requests:sum:435 + expr: vector(1) + labels: + job: job435 + - record: job:http_inprogress_requests:sum:436 + expr: vector(1) + labels: + job: job436 + - record: job:http_inprogress_requests:sum:437 + expr: vector(1) + labels: + job: job437 + - record: job:http_inprogress_requests:sum:438 + expr: vector(1) + labels: + job: job438 + - record: job:http_inprogress_requests:sum:439 + expr: vector(1) + labels: + job: job439 + - record: job:http_inprogress_requests:sum:440 + expr: vector(1) + labels: + job: job440 + - record: job:http_inprogress_requests:sum:441 + expr: vector(1) + labels: + job: job441 + - record: job:http_inprogress_requests:sum:442 + expr: vector(1) + labels: + job: job442 + - record: job:http_inprogress_requests:sum:443 + expr: vector(1) + labels: + job: job443 + - record: job:http_inprogress_requests:sum:444 + expr: vector(1) + labels: + job: job444 + - record: job:http_inprogress_requests:sum:445 + expr: vector(1) + labels: + job: job445 + - record: job:http_inprogress_requests:sum:446 + expr: vector(1) + labels: + job: job446 + - record: job:http_inprogress_requests:sum:447 + expr: vector(1) + labels: + job: job447 + - record: job:http_inprogress_requests:sum:448 + expr: vector(1) + labels: + job: job448 + - record: job:http_inprogress_requests:sum:449 + expr: vector(1) + labels: + job: job449 + - record: job:http_inprogress_requests:sum:450 + expr: vector(1) + labels: + job: job450 + - record: job:http_inprogress_requests:sum:451 + expr: vector(1) + labels: + job: job451 + - record: job:http_inprogress_requests:sum:452 + expr: vector(1) + labels: + job: job452 + - record: job:http_inprogress_requests:sum:453 + expr: vector(1) + labels: + job: job453 + - record: job:http_inprogress_requests:sum:454 + expr: vector(1) + labels: + job: job454 + - record: job:http_inprogress_requests:sum:455 + expr: vector(1) + labels: + job: job455 + - record: job:http_inprogress_requests:sum:456 + expr: vector(1) + labels: + job: job456 + - record: job:http_inprogress_requests:sum:457 + expr: vector(1) + labels: + job: job457 + - record: job:http_inprogress_requests:sum:458 + expr: vector(1) + labels: + job: job458 + - record: job:http_inprogress_requests:sum:459 + expr: vector(1) + labels: + job: job459 + - record: job:http_inprogress_requests:sum:460 + expr: vector(1) + labels: + job: job460 + - record: job:http_inprogress_requests:sum:461 + expr: vector(1) + labels: + job: job461 + - record: job:http_inprogress_requests:sum:462 + expr: vector(1) + labels: + job: job462 + - record: job:http_inprogress_requests:sum:463 + expr: vector(1) + labels: + job: job463 + - record: job:http_inprogress_requests:sum:464 + expr: vector(1) + labels: + job: job464 + - record: job:http_inprogress_requests:sum:465 + expr: vector(1) + labels: + job: job465 + - record: job:http_inprogress_requests:sum:466 + expr: vector(1) + labels: + job: job466 + - record: job:http_inprogress_requests:sum:467 + expr: vector(1) + labels: + job: job467 + - record: job:http_inprogress_requests:sum:468 + expr: vector(1) + labels: + job: job468 + - record: job:http_inprogress_requests:sum:469 + expr: vector(1) + labels: + job: job469 + - record: job:http_inprogress_requests:sum:470 + expr: vector(1) + labels: + job: job470 + - record: job:http_inprogress_requests:sum:471 + expr: vector(1) + labels: + job: job471 + - record: job:http_inprogress_requests:sum:472 + expr: vector(1) + labels: + job: job472 + - record: job:http_inprogress_requests:sum:473 + expr: vector(1) + labels: + job: job473 + - record: job:http_inprogress_requests:sum:474 + expr: vector(1) + labels: + job: job474 + - record: job:http_inprogress_requests:sum:475 + expr: vector(1) + labels: + job: job475 + - record: job:http_inprogress_requests:sum:476 + expr: vector(1) + labels: + job: job476 + - record: job:http_inprogress_requests:sum:477 + expr: vector(1) + labels: + job: job477 + - record: job:http_inprogress_requests:sum:478 + expr: vector(1) + labels: + job: job478 + - record: job:http_inprogress_requests:sum:479 + expr: vector(1) + labels: + job: job479 + - record: job:http_inprogress_requests:sum:480 + expr: vector(1) + labels: + job: job480 + - record: job:http_inprogress_requests:sum:481 + expr: vector(1) + labels: + job: job481 + - record: job:http_inprogress_requests:sum:482 + expr: vector(1) + labels: + job: job482 + - record: job:http_inprogress_requests:sum:483 + expr: vector(1) + labels: + job: job483 + - record: job:http_inprogress_requests:sum:484 + expr: vector(1) + labels: + job: job484 + - record: job:http_inprogress_requests:sum:485 + expr: vector(1) + labels: + job: job485 + - record: job:http_inprogress_requests:sum:486 + expr: vector(1) + labels: + job: job486 + - record: job:http_inprogress_requests:sum:487 + expr: vector(1) + labels: + job: job487 + - record: job:http_inprogress_requests:sum:488 + expr: vector(1) + labels: + job: job488 + - record: job:http_inprogress_requests:sum:489 + expr: vector(1) + labels: + job: job489 + - record: job:http_inprogress_requests:sum:490 + expr: vector(1) + labels: + job: job490 + - record: job:http_inprogress_requests:sum:491 + expr: vector(1) + labels: + job: job491 + - record: job:http_inprogress_requests:sum:492 + expr: vector(1) + labels: + job: job492 + - record: job:http_inprogress_requests:sum:493 + expr: vector(1) + labels: + job: job493 + - record: job:http_inprogress_requests:sum:494 + expr: vector(1) + labels: + job: job494 + - record: job:http_inprogress_requests:sum:495 + expr: vector(1) + labels: + job: job495 + - record: job:http_inprogress_requests:sum:496 + expr: vector(1) + labels: + job: job496 + - record: job:http_inprogress_requests:sum:497 + expr: vector(1) + labels: + job: job497 + - record: job:http_inprogress_requests:sum:498 + expr: vector(1) + labels: + job: job498 + - record: job:http_inprogress_requests:sum:499 + expr: vector(1) + labels: + job: job499 + - record: job:http_inprogress_requests:sum:500 + expr: vector(1) + labels: + job: job500 + - record: job:http_inprogress_requests:sum:501 + expr: vector(1) + labels: + job: job501 + - record: job:http_inprogress_requests:sum:502 + expr: vector(1) + labels: + job: job502 + - record: job:http_inprogress_requests:sum:503 + expr: vector(1) + labels: + job: job503 + - record: job:http_inprogress_requests:sum:504 + expr: vector(1) + labels: + job: job504 + - record: job:http_inprogress_requests:sum:505 + expr: vector(1) + labels: + job: job505 + - record: job:http_inprogress_requests:sum:506 + expr: vector(1) + labels: + job: job506 + - record: job:http_inprogress_requests:sum:507 + expr: vector(1) + labels: + job: job507 + - record: job:http_inprogress_requests:sum:508 + expr: vector(1) + labels: + job: job508 + - record: job:http_inprogress_requests:sum:509 + expr: vector(1) + labels: + job: job509 + - record: job:http_inprogress_requests:sum:510 + expr: vector(1) + labels: + job: job510 + - record: job:http_inprogress_requests:sum:511 + expr: vector(1) + labels: + job: job511 + - record: job:http_inprogress_requests:sum:512 + expr: vector(1) + labels: + job: job512 + - record: job:http_inprogress_requests:sum:513 + expr: vector(1) + labels: + job: job513 + - record: job:http_inprogress_requests:sum:514 + expr: vector(1) + labels: + job: job514 + - record: job:http_inprogress_requests:sum:515 + expr: vector(1) + labels: + job: job515 + - record: job:http_inprogress_requests:sum:516 + expr: vector(1) + labels: + job: job516 + - record: job:http_inprogress_requests:sum:517 + expr: vector(1) + labels: + job: job517 + - record: job:http_inprogress_requests:sum:518 + expr: vector(1) + labels: + job: job518 + - record: job:http_inprogress_requests:sum:519 + expr: vector(1) + labels: + job: job519 + - record: job:http_inprogress_requests:sum:520 + expr: vector(1) + labels: + job: job520 + - record: job:http_inprogress_requests:sum:521 + expr: vector(1) + labels: + job: job521 + - record: job:http_inprogress_requests:sum:522 + expr: vector(1) + labels: + job: job522 + - record: job:http_inprogress_requests:sum:523 + expr: vector(1) + labels: + job: job523 + - record: job:http_inprogress_requests:sum:524 + expr: vector(1) + labels: + job: job524 + - record: job:http_inprogress_requests:sum:525 + expr: vector(1) + labels: + job: job525 + - record: job:http_inprogress_requests:sum:526 + expr: vector(1) + labels: + job: job526 + - record: job:http_inprogress_requests:sum:527 + expr: vector(1) + labels: + job: job527 + - record: job:http_inprogress_requests:sum:528 + expr: vector(1) + labels: + job: job528 + - record: job:http_inprogress_requests:sum:529 + expr: vector(1) + labels: + job: job529 + - record: job:http_inprogress_requests:sum:530 + expr: vector(1) + labels: + job: job530 + - record: job:http_inprogress_requests:sum:531 + expr: vector(1) + labels: + job: job531 + - record: job:http_inprogress_requests:sum:532 + expr: vector(1) + labels: + job: job532 + - record: job:http_inprogress_requests:sum:533 + expr: vector(1) + labels: + job: job533 + - record: job:http_inprogress_requests:sum:534 + expr: vector(1) + labels: + job: job534 + - record: job:http_inprogress_requests:sum:535 + expr: vector(1) + labels: + job: job535 + - record: job:http_inprogress_requests:sum:536 + expr: vector(1) + labels: + job: job536 + - record: job:http_inprogress_requests:sum:537 + expr: vector(1) + labels: + job: job537 + - record: job:http_inprogress_requests:sum:538 + expr: vector(1) + labels: + job: job538 + - record: job:http_inprogress_requests:sum:539 + expr: vector(1) + labels: + job: job539 + - record: job:http_inprogress_requests:sum:540 + expr: vector(1) + labels: + job: job540 + - record: job:http_inprogress_requests:sum:541 + expr: vector(1) + labels: + job: job541 + - record: job:http_inprogress_requests:sum:542 + expr: vector(1) + labels: + job: job542 + - record: job:http_inprogress_requests:sum:543 + expr: vector(1) + labels: + job: job543 + - record: job:http_inprogress_requests:sum:544 + expr: vector(1) + labels: + job: job544 + - record: job:http_inprogress_requests:sum:545 + expr: vector(1) + labels: + job: job545 + - record: job:http_inprogress_requests:sum:546 + expr: vector(1) + labels: + job: job546 + - record: job:http_inprogress_requests:sum:547 + expr: vector(1) + labels: + job: job547 + - record: job:http_inprogress_requests:sum:548 + expr: vector(1) + labels: + job: job548 + - record: job:http_inprogress_requests:sum:549 + expr: vector(1) + labels: + job: job549 + - record: job:http_inprogress_requests:sum:550 + expr: vector(1) + labels: + job: job550 + - record: job:http_inprogress_requests:sum:551 + expr: vector(1) + labels: + job: job551 + - record: job:http_inprogress_requests:sum:552 + expr: vector(1) + labels: + job: job552 + - record: job:http_inprogress_requests:sum:553 + expr: vector(1) + labels: + job: job553 + - record: job:http_inprogress_requests:sum:554 + expr: vector(1) + labels: + job: job554 + - record: job:http_inprogress_requests:sum:555 + expr: vector(1) + labels: + job: job555 + - record: job:http_inprogress_requests:sum:556 + expr: vector(1) + labels: + job: job556 + - record: job:http_inprogress_requests:sum:557 + expr: vector(1) + labels: + job: job557 + - record: job:http_inprogress_requests:sum:558 + expr: vector(1) + labels: + job: job558 + - record: job:http_inprogress_requests:sum:559 + expr: vector(1) + labels: + job: job559 + - record: job:http_inprogress_requests:sum:560 + expr: vector(1) + labels: + job: job560 + - record: job:http_inprogress_requests:sum:561 + expr: vector(1) + labels: + job: job561 + - record: job:http_inprogress_requests:sum:562 + expr: vector(1) + labels: + job: job562 + - record: job:http_inprogress_requests:sum:563 + expr: vector(1) + labels: + job: job563 + - record: job:http_inprogress_requests:sum:564 + expr: vector(1) + labels: + job: job564 + - record: job:http_inprogress_requests:sum:565 + expr: vector(1) + labels: + job: job565 + - record: job:http_inprogress_requests:sum:566 + expr: vector(1) + labels: + job: job566 + - record: job:http_inprogress_requests:sum:567 + expr: vector(1) + labels: + job: job567 + - record: job:http_inprogress_requests:sum:568 + expr: vector(1) + labels: + job: job568 + - record: job:http_inprogress_requests:sum:569 + expr: vector(1) + labels: + job: job569 + - record: job:http_inprogress_requests:sum:570 + expr: vector(1) + labels: + job: job570 + - record: job:http_inprogress_requests:sum:571 + expr: vector(1) + labels: + job: job571 + - record: job:http_inprogress_requests:sum:572 + expr: vector(1) + labels: + job: job572 + - record: job:http_inprogress_requests:sum:573 + expr: vector(1) + labels: + job: job573 + - record: job:http_inprogress_requests:sum:574 + expr: vector(1) + labels: + job: job574 + - record: job:http_inprogress_requests:sum:575 + expr: vector(1) + labels: + job: job575 + - record: job:http_inprogress_requests:sum:576 + expr: vector(1) + labels: + job: job576 + - record: job:http_inprogress_requests:sum:577 + expr: vector(1) + labels: + job: job577 + - record: job:http_inprogress_requests:sum:578 + expr: vector(1) + labels: + job: job578 + - record: job:http_inprogress_requests:sum:579 + expr: vector(1) + labels: + job: job579 + - record: job:http_inprogress_requests:sum:580 + expr: vector(1) + labels: + job: job580 + - record: job:http_inprogress_requests:sum:581 + expr: vector(1) + labels: + job: job581 + - record: job:http_inprogress_requests:sum:582 + expr: vector(1) + labels: + job: job582 + - record: job:http_inprogress_requests:sum:583 + expr: vector(1) + labels: + job: job583 + - record: job:http_inprogress_requests:sum:584 + expr: vector(1) + labels: + job: job584 + - record: job:http_inprogress_requests:sum:585 + expr: vector(1) + labels: + job: job585 + - record: job:http_inprogress_requests:sum:586 + expr: vector(1) + labels: + job: job586 + - record: job:http_inprogress_requests:sum:587 + expr: vector(1) + labels: + job: job587 + - record: job:http_inprogress_requests:sum:588 + expr: vector(1) + labels: + job: job588 + - record: job:http_inprogress_requests:sum:589 + expr: vector(1) + labels: + job: job589 + - record: job:http_inprogress_requests:sum:590 + expr: vector(1) + labels: + job: job590 + - record: job:http_inprogress_requests:sum:591 + expr: vector(1) + labels: + job: job591 + - record: job:http_inprogress_requests:sum:592 + expr: vector(1) + labels: + job: job592 + - record: job:http_inprogress_requests:sum:593 + expr: vector(1) + labels: + job: job593 + - record: job:http_inprogress_requests:sum:594 + expr: vector(1) + labels: + job: job594 + - record: job:http_inprogress_requests:sum:595 + expr: vector(1) + labels: + job: job595 + - record: job:http_inprogress_requests:sum:596 + expr: vector(1) + labels: + job: job596 + - record: job:http_inprogress_requests:sum:597 + expr: vector(1) + labels: + job: job597 + - record: job:http_inprogress_requests:sum:598 + expr: vector(1) + labels: + job: job598 + - record: job:http_inprogress_requests:sum:599 + expr: vector(1) + labels: + job: job599 + - record: job:http_inprogress_requests:sum:600 + expr: vector(1) + labels: + job: job600 + - record: job:http_inprogress_requests:sum:601 + expr: vector(1) + labels: + job: job601 + - record: job:http_inprogress_requests:sum:602 + expr: vector(1) + labels: + job: job602 + - record: job:http_inprogress_requests:sum:603 + expr: vector(1) + labels: + job: job603 + - record: job:http_inprogress_requests:sum:604 + expr: vector(1) + labels: + job: job604 + - record: job:http_inprogress_requests:sum:605 + expr: vector(1) + labels: + job: job605 + - record: job:http_inprogress_requests:sum:606 + expr: vector(1) + labels: + job: job606 + - record: job:http_inprogress_requests:sum:607 + expr: vector(1) + labels: + job: job607 + - record: job:http_inprogress_requests:sum:608 + expr: vector(1) + labels: + job: job608 + - record: job:http_inprogress_requests:sum:609 + expr: vector(1) + labels: + job: job609 + - record: job:http_inprogress_requests:sum:610 + expr: vector(1) + labels: + job: job610 + - record: job:http_inprogress_requests:sum:611 + expr: vector(1) + labels: + job: job611 + - record: job:http_inprogress_requests:sum:612 + expr: vector(1) + labels: + job: job612 + - record: job:http_inprogress_requests:sum:613 + expr: vector(1) + labels: + job: job613 + - record: job:http_inprogress_requests:sum:614 + expr: vector(1) + labels: + job: job614 + - record: job:http_inprogress_requests:sum:615 + expr: vector(1) + labels: + job: job615 + - record: job:http_inprogress_requests:sum:616 + expr: vector(1) + labels: + job: job616 + - record: job:http_inprogress_requests:sum:617 + expr: vector(1) + labels: + job: job617 + - record: job:http_inprogress_requests:sum:618 + expr: vector(1) + labels: + job: job618 + - record: job:http_inprogress_requests:sum:619 + expr: vector(1) + labels: + job: job619 + - record: job:http_inprogress_requests:sum:620 + expr: vector(1) + labels: + job: job620 + - record: job:http_inprogress_requests:sum:621 + expr: vector(1) + labels: + job: job621 + - record: job:http_inprogress_requests:sum:622 + expr: vector(1) + labels: + job: job622 + - record: job:http_inprogress_requests:sum:623 + expr: vector(1) + labels: + job: job623 + - record: job:http_inprogress_requests:sum:624 + expr: vector(1) + labels: + job: job624 + - record: job:http_inprogress_requests:sum:625 + expr: vector(1) + labels: + job: job625 + - record: job:http_inprogress_requests:sum:626 + expr: vector(1) + labels: + job: job626 + - record: job:http_inprogress_requests:sum:627 + expr: vector(1) + labels: + job: job627 + - record: job:http_inprogress_requests:sum:628 + expr: vector(1) + labels: + job: job628 + - record: job:http_inprogress_requests:sum:629 + expr: vector(1) + labels: + job: job629 + - record: job:http_inprogress_requests:sum:630 + expr: vector(1) + labels: + job: job630 + - record: job:http_inprogress_requests:sum:631 + expr: vector(1) + labels: + job: job631 + - record: job:http_inprogress_requests:sum:632 + expr: vector(1) + labels: + job: job632 + - record: job:http_inprogress_requests:sum:633 + expr: vector(1) + labels: + job: job633 + - record: job:http_inprogress_requests:sum:634 + expr: vector(1) + labels: + job: job634 + - record: job:http_inprogress_requests:sum:635 + expr: vector(1) + labels: + job: job635 + - record: job:http_inprogress_requests:sum:636 + expr: vector(1) + labels: + job: job636 + - record: job:http_inprogress_requests:sum:637 + expr: vector(1) + labels: + job: job637 + - record: job:http_inprogress_requests:sum:638 + expr: vector(1) + labels: + job: job638 + - record: job:http_inprogress_requests:sum:639 + expr: vector(1) + labels: + job: job639 + - record: job:http_inprogress_requests:sum:640 + expr: vector(1) + labels: + job: job640 + - record: job:http_inprogress_requests:sum:641 + expr: vector(1) + labels: + job: job641 + - record: job:http_inprogress_requests:sum:642 + expr: vector(1) + labels: + job: job642 + - record: job:http_inprogress_requests:sum:643 + expr: vector(1) + labels: + job: job643 + - record: job:http_inprogress_requests:sum:644 + expr: vector(1) + labels: + job: job644 + - record: job:http_inprogress_requests:sum:645 + expr: vector(1) + labels: + job: job645 + - record: job:http_inprogress_requests:sum:646 + expr: vector(1) + labels: + job: job646 + - record: job:http_inprogress_requests:sum:647 + expr: vector(1) + labels: + job: job647 + - record: job:http_inprogress_requests:sum:648 + expr: vector(1) + labels: + job: job648 + - record: job:http_inprogress_requests:sum:649 + expr: vector(1) + labels: + job: job649 + - record: job:http_inprogress_requests:sum:650 + expr: vector(1) + labels: + job: job650 + - record: job:http_inprogress_requests:sum:651 + expr: vector(1) + labels: + job: job651 + - record: job:http_inprogress_requests:sum:652 + expr: vector(1) + labels: + job: job652 + - record: job:http_inprogress_requests:sum:653 + expr: vector(1) + labels: + job: job653 + - record: job:http_inprogress_requests:sum:654 + expr: vector(1) + labels: + job: job654 + - record: job:http_inprogress_requests:sum:655 + expr: vector(1) + labels: + job: job655 + - record: job:http_inprogress_requests:sum:656 + expr: vector(1) + labels: + job: job656 + - record: job:http_inprogress_requests:sum:657 + expr: vector(1) + labels: + job: job657 + - record: job:http_inprogress_requests:sum:658 + expr: vector(1) + labels: + job: job658 + - record: job:http_inprogress_requests:sum:659 + expr: vector(1) + labels: + job: job659 + - record: job:http_inprogress_requests:sum:660 + expr: vector(1) + labels: + job: job660 + - record: job:http_inprogress_requests:sum:661 + expr: vector(1) + labels: + job: job661 + - record: job:http_inprogress_requests:sum:662 + expr: vector(1) + labels: + job: job662 + - record: job:http_inprogress_requests:sum:663 + expr: vector(1) + labels: + job: job663 + - record: job:http_inprogress_requests:sum:664 + expr: vector(1) + labels: + job: job664 + - record: job:http_inprogress_requests:sum:665 + expr: vector(1) + labels: + job: job665 + - record: job:http_inprogress_requests:sum:666 + expr: vector(1) + labels: + job: job666 + - record: job:http_inprogress_requests:sum:667 + expr: vector(1) + labels: + job: job667 + - record: job:http_inprogress_requests:sum:668 + expr: vector(1) + labels: + job: job668 + - record: job:http_inprogress_requests:sum:669 + expr: vector(1) + labels: + job: job669 + - record: job:http_inprogress_requests:sum:670 + expr: vector(1) + labels: + job: job670 + - record: job:http_inprogress_requests:sum:671 + expr: vector(1) + labels: + job: job671 + - record: job:http_inprogress_requests:sum:672 + expr: vector(1) + labels: + job: job672 + - record: job:http_inprogress_requests:sum:673 + expr: vector(1) + labels: + job: job673 + - record: job:http_inprogress_requests:sum:674 + expr: vector(1) + labels: + job: job674 + - record: job:http_inprogress_requests:sum:675 + expr: vector(1) + labels: + job: job675 + - record: job:http_inprogress_requests:sum:676 + expr: vector(1) + labels: + job: job676 + - record: job:http_inprogress_requests:sum:677 + expr: vector(1) + labels: + job: job677 + - record: job:http_inprogress_requests:sum:678 + expr: vector(1) + labels: + job: job678 + - record: job:http_inprogress_requests:sum:679 + expr: vector(1) + labels: + job: job679 + - record: job:http_inprogress_requests:sum:680 + expr: vector(1) + labels: + job: job680 + - record: job:http_inprogress_requests:sum:681 + expr: vector(1) + labels: + job: job681 + - record: job:http_inprogress_requests:sum:682 + expr: vector(1) + labels: + job: job682 + - record: job:http_inprogress_requests:sum:683 + expr: vector(1) + labels: + job: job683 + - record: job:http_inprogress_requests:sum:684 + expr: vector(1) + labels: + job: job684 + - record: job:http_inprogress_requests:sum:685 + expr: vector(1) + labels: + job: job685 + - record: job:http_inprogress_requests:sum:686 + expr: vector(1) + labels: + job: job686 + - record: job:http_inprogress_requests:sum:687 + expr: vector(1) + labels: + job: job687 + - record: job:http_inprogress_requests:sum:688 + expr: vector(1) + labels: + job: job688 + - record: job:http_inprogress_requests:sum:689 + expr: vector(1) + labels: + job: job689 + - record: job:http_inprogress_requests:sum:690 + expr: vector(1) + labels: + job: job690 + - record: job:http_inprogress_requests:sum:691 + expr: vector(1) + labels: + job: job691 + - record: job:http_inprogress_requests:sum:692 + expr: vector(1) + labels: + job: job692 + - record: job:http_inprogress_requests:sum:693 + expr: vector(1) + labels: + job: job693 + - record: job:http_inprogress_requests:sum:694 + expr: vector(1) + labels: + job: job694 + - record: job:http_inprogress_requests:sum:695 + expr: vector(1) + labels: + job: job695 + - record: job:http_inprogress_requests:sum:696 + expr: vector(1) + labels: + job: job696 + - record: job:http_inprogress_requests:sum:697 + expr: vector(1) + labels: + job: job697 + - record: job:http_inprogress_requests:sum:698 + expr: vector(1) + labels: + job: job698 + - record: job:http_inprogress_requests:sum:699 + expr: vector(1) + labels: + job: job699 + - record: job:http_inprogress_requests:sum:700 + expr: vector(1) + labels: + job: job700 + - record: job:http_inprogress_requests:sum:701 + expr: vector(1) + labels: + job: job701 + - record: job:http_inprogress_requests:sum:702 + expr: vector(1) + labels: + job: job702 + - record: job:http_inprogress_requests:sum:703 + expr: vector(1) + labels: + job: job703 + - record: job:http_inprogress_requests:sum:704 + expr: vector(1) + labels: + job: job704 + - record: job:http_inprogress_requests:sum:705 + expr: vector(1) + labels: + job: job705 + - record: job:http_inprogress_requests:sum:706 + expr: vector(1) + labels: + job: job706 + - record: job:http_inprogress_requests:sum:707 + expr: vector(1) + labels: + job: job707 + - record: job:http_inprogress_requests:sum:708 + expr: vector(1) + labels: + job: job708 + - record: job:http_inprogress_requests:sum:709 + expr: vector(1) + labels: + job: job709 + - record: job:http_inprogress_requests:sum:710 + expr: vector(1) + labels: + job: job710 + - record: job:http_inprogress_requests:sum:711 + expr: vector(1) + labels: + job: job711 + - record: job:http_inprogress_requests:sum:712 + expr: vector(1) + labels: + job: job712 + - record: job:http_inprogress_requests:sum:713 + expr: vector(1) + labels: + job: job713 + - record: job:http_inprogress_requests:sum:714 + expr: vector(1) + labels: + job: job714 + - record: job:http_inprogress_requests:sum:715 + expr: vector(1) + labels: + job: job715 + - record: job:http_inprogress_requests:sum:716 + expr: vector(1) + labels: + job: job716 + - record: job:http_inprogress_requests:sum:717 + expr: vector(1) + labels: + job: job717 + - record: job:http_inprogress_requests:sum:718 + expr: vector(1) + labels: + job: job718 + - record: job:http_inprogress_requests:sum:719 + expr: vector(1) + labels: + job: job719 + - record: job:http_inprogress_requests:sum:720 + expr: vector(1) + labels: + job: job720 + - record: job:http_inprogress_requests:sum:721 + expr: vector(1) + labels: + job: job721 + - record: job:http_inprogress_requests:sum:722 + expr: vector(1) + labels: + job: job722 + - record: job:http_inprogress_requests:sum:723 + expr: vector(1) + labels: + job: job723 + - record: job:http_inprogress_requests:sum:724 + expr: vector(1) + labels: + job: job724 + - record: job:http_inprogress_requests:sum:725 + expr: vector(1) + labels: + job: job725 + - record: job:http_inprogress_requests:sum:726 + expr: vector(1) + labels: + job: job726 + - record: job:http_inprogress_requests:sum:727 + expr: vector(1) + labels: + job: job727 + - record: job:http_inprogress_requests:sum:728 + expr: vector(1) + labels: + job: job728 + - record: job:http_inprogress_requests:sum:729 + expr: vector(1) + labels: + job: job729 + - record: job:http_inprogress_requests:sum:730 + expr: vector(1) + labels: + job: job730 + - record: job:http_inprogress_requests:sum:731 + expr: vector(1) + labels: + job: job731 + - record: job:http_inprogress_requests:sum:732 + expr: vector(1) + labels: + job: job732 + - record: job:http_inprogress_requests:sum:733 + expr: vector(1) + labels: + job: job733 + - record: job:http_inprogress_requests:sum:734 + expr: vector(1) + labels: + job: job734 + - record: job:http_inprogress_requests:sum:735 + expr: vector(1) + labels: + job: job735 + - record: job:http_inprogress_requests:sum:736 + expr: vector(1) + labels: + job: job736 + - record: job:http_inprogress_requests:sum:737 + expr: vector(1) + labels: + job: job737 + - record: job:http_inprogress_requests:sum:738 + expr: vector(1) + labels: + job: job738 + - record: job:http_inprogress_requests:sum:739 + expr: vector(1) + labels: + job: job739 + - record: job:http_inprogress_requests:sum:740 + expr: vector(1) + labels: + job: job740 + - record: job:http_inprogress_requests:sum:741 + expr: vector(1) + labels: + job: job741 + - record: job:http_inprogress_requests:sum:742 + expr: vector(1) + labels: + job: job742 + - record: job:http_inprogress_requests:sum:743 + expr: vector(1) + labels: + job: job743 + - record: job:http_inprogress_requests:sum:744 + expr: vector(1) + labels: + job: job744 + - record: job:http_inprogress_requests:sum:745 + expr: vector(1) + labels: + job: job745 + - record: job:http_inprogress_requests:sum:746 + expr: vector(1) + labels: + job: job746 + - record: job:http_inprogress_requests:sum:747 + expr: vector(1) + labels: + job: job747 + - record: job:http_inprogress_requests:sum:748 + expr: vector(1) + labels: + job: job748 + - record: job:http_inprogress_requests:sum:749 + expr: vector(1) + labels: + job: job749 + - record: job:http_inprogress_requests:sum:750 + expr: vector(1) + labels: + job: job750 + - record: job:http_inprogress_requests:sum:751 + expr: vector(1) + labels: + job: job751 + - record: job:http_inprogress_requests:sum:752 + expr: vector(1) + labels: + job: job752 + - record: job:http_inprogress_requests:sum:753 + expr: vector(1) + labels: + job: job753 + - record: job:http_inprogress_requests:sum:754 + expr: vector(1) + labels: + job: job754 + - record: job:http_inprogress_requests:sum:755 + expr: vector(1) + labels: + job: job755 + - record: job:http_inprogress_requests:sum:756 + expr: vector(1) + labels: + job: job756 + - record: job:http_inprogress_requests:sum:757 + expr: vector(1) + labels: + job: job757 + - record: job:http_inprogress_requests:sum:758 + expr: vector(1) + labels: + job: job758 + - record: job:http_inprogress_requests:sum:759 + expr: vector(1) + labels: + job: job759 + - record: job:http_inprogress_requests:sum:760 + expr: vector(1) + labels: + job: job760 + - record: job:http_inprogress_requests:sum:761 + expr: vector(1) + labels: + job: job761 + - record: job:http_inprogress_requests:sum:762 + expr: vector(1) + labels: + job: job762 + - record: job:http_inprogress_requests:sum:763 + expr: vector(1) + labels: + job: job763 + - record: job:http_inprogress_requests:sum:764 + expr: vector(1) + labels: + job: job764 + - record: job:http_inprogress_requests:sum:765 + expr: vector(1) + labels: + job: job765 + - record: job:http_inprogress_requests:sum:766 + expr: vector(1) + labels: + job: job766 + - record: job:http_inprogress_requests:sum:767 + expr: vector(1) + labels: + job: job767 + - record: job:http_inprogress_requests:sum:768 + expr: vector(1) + labels: + job: job768 + - record: job:http_inprogress_requests:sum:769 + expr: vector(1) + labels: + job: job769 + - record: job:http_inprogress_requests:sum:770 + expr: vector(1) + labels: + job: job770 + - record: job:http_inprogress_requests:sum:771 + expr: vector(1) + labels: + job: job771 + - record: job:http_inprogress_requests:sum:772 + expr: vector(1) + labels: + job: job772 + - record: job:http_inprogress_requests:sum:773 + expr: vector(1) + labels: + job: job773 + - record: job:http_inprogress_requests:sum:774 + expr: vector(1) + labels: + job: job774 + - record: job:http_inprogress_requests:sum:775 + expr: vector(1) + labels: + job: job775 + - record: job:http_inprogress_requests:sum:776 + expr: vector(1) + labels: + job: job776 + - record: job:http_inprogress_requests:sum:777 + expr: vector(1) + labels: + job: job777 + - record: job:http_inprogress_requests:sum:778 + expr: vector(1) + labels: + job: job778 + - record: job:http_inprogress_requests:sum:779 + expr: vector(1) + labels: + job: job779 + - record: job:http_inprogress_requests:sum:780 + expr: vector(1) + labels: + job: job780 + - record: job:http_inprogress_requests:sum:781 + expr: vector(1) + labels: + job: job781 + - record: job:http_inprogress_requests:sum:782 + expr: vector(1) + labels: + job: job782 + - record: job:http_inprogress_requests:sum:783 + expr: vector(1) + labels: + job: job783 + - record: job:http_inprogress_requests:sum:784 + expr: vector(1) + labels: + job: job784 + - record: job:http_inprogress_requests:sum:785 + expr: vector(1) + labels: + job: job785 + - record: job:http_inprogress_requests:sum:786 + expr: vector(1) + labels: + job: job786 + - record: job:http_inprogress_requests:sum:787 + expr: vector(1) + labels: + job: job787 + - record: job:http_inprogress_requests:sum:788 + expr: vector(1) + labels: + job: job788 + - record: job:http_inprogress_requests:sum:789 + expr: vector(1) + labels: + job: job789 + - record: job:http_inprogress_requests:sum:790 + expr: vector(1) + labels: + job: job790 + - record: job:http_inprogress_requests:sum:791 + expr: vector(1) + labels: + job: job791 + - record: job:http_inprogress_requests:sum:792 + expr: vector(1) + labels: + job: job792 + - record: job:http_inprogress_requests:sum:793 + expr: vector(1) + labels: + job: job793 + - record: job:http_inprogress_requests:sum:794 + expr: vector(1) + labels: + job: job794 + - record: job:http_inprogress_requests:sum:795 + expr: vector(1) + labels: + job: job795 + - record: job:http_inprogress_requests:sum:796 + expr: vector(1) + labels: + job: job796 + - record: job:http_inprogress_requests:sum:797 + expr: vector(1) + labels: + job: job797 + - record: job:http_inprogress_requests:sum:798 + expr: vector(1) + labels: + job: job798 + - record: job:http_inprogress_requests:sum:799 + expr: vector(1) + labels: + job: job799 + - record: job:http_inprogress_requests:sum:800 + expr: vector(1) + labels: + job: job800 + - record: job:http_inprogress_requests:sum:801 + expr: vector(1) + labels: + job: job801 + - record: job:http_inprogress_requests:sum:802 + expr: vector(1) + labels: + job: job802 + - record: job:http_inprogress_requests:sum:803 + expr: vector(1) + labels: + job: job803 + - record: job:http_inprogress_requests:sum:804 + expr: vector(1) + labels: + job: job804 + - record: job:http_inprogress_requests:sum:805 + expr: vector(1) + labels: + job: job805 + - record: job:http_inprogress_requests:sum:806 + expr: vector(1) + labels: + job: job806 + - record: job:http_inprogress_requests:sum:807 + expr: vector(1) + labels: + job: job807 + - record: job:http_inprogress_requests:sum:808 + expr: vector(1) + labels: + job: job808 + - record: job:http_inprogress_requests:sum:809 + expr: vector(1) + labels: + job: job809 + - record: job:http_inprogress_requests:sum:810 + expr: vector(1) + labels: + job: job810 + - record: job:http_inprogress_requests:sum:811 + expr: vector(1) + labels: + job: job811 + - record: job:http_inprogress_requests:sum:812 + expr: vector(1) + labels: + job: job812 + - record: job:http_inprogress_requests:sum:813 + expr: vector(1) + labels: + job: job813 + - record: job:http_inprogress_requests:sum:814 + expr: vector(1) + labels: + job: job814 + - record: job:http_inprogress_requests:sum:815 + expr: vector(1) + labels: + job: job815 + - record: job:http_inprogress_requests:sum:816 + expr: vector(1) + labels: + job: job816 + - record: job:http_inprogress_requests:sum:817 + expr: vector(1) + labels: + job: job817 + - record: job:http_inprogress_requests:sum:818 + expr: vector(1) + labels: + job: job818 + - record: job:http_inprogress_requests:sum:819 + expr: vector(1) + labels: + job: job819 + - record: job:http_inprogress_requests:sum:820 + expr: vector(1) + labels: + job: job820 + - record: job:http_inprogress_requests:sum:821 + expr: vector(1) + labels: + job: job821 + - record: job:http_inprogress_requests:sum:822 + expr: vector(1) + labels: + job: job822 + - record: job:http_inprogress_requests:sum:823 + expr: vector(1) + labels: + job: job823 + - record: job:http_inprogress_requests:sum:824 + expr: vector(1) + labels: + job: job824 + - record: job:http_inprogress_requests:sum:825 + expr: vector(1) + labels: + job: job825 + - record: job:http_inprogress_requests:sum:826 + expr: vector(1) + labels: + job: job826 + - record: job:http_inprogress_requests:sum:827 + expr: vector(1) + labels: + job: job827 + - record: job:http_inprogress_requests:sum:828 + expr: vector(1) + labels: + job: job828 + - record: job:http_inprogress_requests:sum:829 + expr: vector(1) + labels: + job: job829 + - record: job:http_inprogress_requests:sum:830 + expr: vector(1) + labels: + job: job830 + - record: job:http_inprogress_requests:sum:831 + expr: vector(1) + labels: + job: job831 + - record: job:http_inprogress_requests:sum:832 + expr: vector(1) + labels: + job: job832 + - record: job:http_inprogress_requests:sum:833 + expr: vector(1) + labels: + job: job833 + - record: job:http_inprogress_requests:sum:834 + expr: vector(1) + labels: + job: job834 + - record: job:http_inprogress_requests:sum:835 + expr: vector(1) + labels: + job: job835 + - record: job:http_inprogress_requests:sum:836 + expr: vector(1) + labels: + job: job836 + - record: job:http_inprogress_requests:sum:837 + expr: vector(1) + labels: + job: job837 + - record: job:http_inprogress_requests:sum:838 + expr: vector(1) + labels: + job: job838 + - record: job:http_inprogress_requests:sum:839 + expr: vector(1) + labels: + job: job839 + - record: job:http_inprogress_requests:sum:840 + expr: vector(1) + labels: + job: job840 + - record: job:http_inprogress_requests:sum:841 + expr: vector(1) + labels: + job: job841 + - record: job:http_inprogress_requests:sum:842 + expr: vector(1) + labels: + job: job842 + - record: job:http_inprogress_requests:sum:843 + expr: vector(1) + labels: + job: job843 + - record: job:http_inprogress_requests:sum:844 + expr: vector(1) + labels: + job: job844 + - record: job:http_inprogress_requests:sum:845 + expr: vector(1) + labels: + job: job845 + - record: job:http_inprogress_requests:sum:846 + expr: vector(1) + labels: + job: job846 + - record: job:http_inprogress_requests:sum:847 + expr: vector(1) + labels: + job: job847 + - record: job:http_inprogress_requests:sum:848 + expr: vector(1) + labels: + job: job848 + - record: job:http_inprogress_requests:sum:849 + expr: vector(1) + labels: + job: job849 + - record: job:http_inprogress_requests:sum:850 + expr: vector(1) + labels: + job: job850 + - record: job:http_inprogress_requests:sum:851 + expr: vector(1) + labels: + job: job851 + - record: job:http_inprogress_requests:sum:852 + expr: vector(1) + labels: + job: job852 + - record: job:http_inprogress_requests:sum:853 + expr: vector(1) + labels: + job: job853 + - record: job:http_inprogress_requests:sum:854 + expr: vector(1) + labels: + job: job854 + - record: job:http_inprogress_requests:sum:855 + expr: vector(1) + labels: + job: job855 + - record: job:http_inprogress_requests:sum:856 + expr: vector(1) + labels: + job: job856 + - record: job:http_inprogress_requests:sum:857 + expr: vector(1) + labels: + job: job857 + - record: job:http_inprogress_requests:sum:858 + expr: vector(1) + labels: + job: job858 + - record: job:http_inprogress_requests:sum:859 + expr: vector(1) + labels: + job: job859 + - record: job:http_inprogress_requests:sum:860 + expr: vector(1) + labels: + job: job860 + - record: job:http_inprogress_requests:sum:861 + expr: vector(1) + labels: + job: job861 + - record: job:http_inprogress_requests:sum:862 + expr: vector(1) + labels: + job: job862 + - record: job:http_inprogress_requests:sum:863 + expr: vector(1) + labels: + job: job863 + - record: job:http_inprogress_requests:sum:864 + expr: vector(1) + labels: + job: job864 + - record: job:http_inprogress_requests:sum:865 + expr: vector(1) + labels: + job: job865 + - record: job:http_inprogress_requests:sum:866 + expr: vector(1) + labels: + job: job866 + - record: job:http_inprogress_requests:sum:867 + expr: vector(1) + labels: + job: job867 + - record: job:http_inprogress_requests:sum:868 + expr: vector(1) + labels: + job: job868 + - record: job:http_inprogress_requests:sum:869 + expr: vector(1) + labels: + job: job869 + - record: job:http_inprogress_requests:sum:870 + expr: vector(1) + labels: + job: job870 + - record: job:http_inprogress_requests:sum:871 + expr: vector(1) + labels: + job: job871 + - record: job:http_inprogress_requests:sum:872 + expr: vector(1) + labels: + job: job872 + - record: job:http_inprogress_requests:sum:873 + expr: vector(1) + labels: + job: job873 + - record: job:http_inprogress_requests:sum:874 + expr: vector(1) + labels: + job: job874 + - record: job:http_inprogress_requests:sum:875 + expr: vector(1) + labels: + job: job875 + - record: job:http_inprogress_requests:sum:876 + expr: vector(1) + labels: + job: job876 + - record: job:http_inprogress_requests:sum:877 + expr: vector(1) + labels: + job: job877 + - record: job:http_inprogress_requests:sum:878 + expr: vector(1) + labels: + job: job878 + - record: job:http_inprogress_requests:sum:879 + expr: vector(1) + labels: + job: job879 + - record: job:http_inprogress_requests:sum:880 + expr: vector(1) + labels: + job: job880 + - record: job:http_inprogress_requests:sum:881 + expr: vector(1) + labels: + job: job881 + - record: job:http_inprogress_requests:sum:882 + expr: vector(1) + labels: + job: job882 + - record: job:http_inprogress_requests:sum:883 + expr: vector(1) + labels: + job: job883 + - record: job:http_inprogress_requests:sum:884 + expr: vector(1) + labels: + job: job884 + - record: job:http_inprogress_requests:sum:885 + expr: vector(1) + labels: + job: job885 + - record: job:http_inprogress_requests:sum:886 + expr: vector(1) + labels: + job: job886 + - record: job:http_inprogress_requests:sum:887 + expr: vector(1) + labels: + job: job887 + - record: job:http_inprogress_requests:sum:888 + expr: vector(1) + labels: + job: job888 + - record: job:http_inprogress_requests:sum:889 + expr: vector(1) + labels: + job: job889 + - record: job:http_inprogress_requests:sum:890 + expr: vector(1) + labels: + job: job890 + - record: job:http_inprogress_requests:sum:891 + expr: vector(1) + labels: + job: job891 + - record: job:http_inprogress_requests:sum:892 + expr: vector(1) + labels: + job: job892 + - record: job:http_inprogress_requests:sum:893 + expr: vector(1) + labels: + job: job893 + - record: job:http_inprogress_requests:sum:894 + expr: vector(1) + labels: + job: job894 + - record: job:http_inprogress_requests:sum:895 + expr: vector(1) + labels: + job: job895 + - record: job:http_inprogress_requests:sum:896 + expr: vector(1) + labels: + job: job896 + - record: job:http_inprogress_requests:sum:897 + expr: vector(1) + labels: + job: job897 + - record: job:http_inprogress_requests:sum:898 + expr: vector(1) + labels: + job: job898 + - record: job:http_inprogress_requests:sum:899 + expr: vector(1) + labels: + job: job899 + - record: job:http_inprogress_requests:sum:900 + expr: vector(1) + labels: + job: job900 + - record: job:http_inprogress_requests:sum:901 + expr: vector(1) + labels: + job: job901 + - record: job:http_inprogress_requests:sum:902 + expr: vector(1) + labels: + job: job902 + - record: job:http_inprogress_requests:sum:903 + expr: vector(1) + labels: + job: job903 + - record: job:http_inprogress_requests:sum:904 + expr: vector(1) + labels: + job: job904 + - record: job:http_inprogress_requests:sum:905 + expr: vector(1) + labels: + job: job905 + - record: job:http_inprogress_requests:sum:906 + expr: vector(1) + labels: + job: job906 + - record: job:http_inprogress_requests:sum:907 + expr: vector(1) + labels: + job: job907 + - record: job:http_inprogress_requests:sum:908 + expr: vector(1) + labels: + job: job908 + - record: job:http_inprogress_requests:sum:909 + expr: vector(1) + labels: + job: job909 + - record: job:http_inprogress_requests:sum:910 + expr: vector(1) + labels: + job: job910 + - record: job:http_inprogress_requests:sum:911 + expr: vector(1) + labels: + job: job911 + - record: job:http_inprogress_requests:sum:912 + expr: vector(1) + labels: + job: job912 + - record: job:http_inprogress_requests:sum:913 + expr: vector(1) + labels: + job: job913 + - record: job:http_inprogress_requests:sum:914 + expr: vector(1) + labels: + job: job914 + - record: job:http_inprogress_requests:sum:915 + expr: vector(1) + labels: + job: job915 + - record: job:http_inprogress_requests:sum:916 + expr: vector(1) + labels: + job: job916 + - record: job:http_inprogress_requests:sum:917 + expr: vector(1) + labels: + job: job917 + - record: job:http_inprogress_requests:sum:918 + expr: vector(1) + labels: + job: job918 + - record: job:http_inprogress_requests:sum:919 + expr: vector(1) + labels: + job: job919 + - record: job:http_inprogress_requests:sum:920 + expr: vector(1) + labels: + job: job920 + - record: job:http_inprogress_requests:sum:921 + expr: vector(1) + labels: + job: job921 + - record: job:http_inprogress_requests:sum:922 + expr: vector(1) + labels: + job: job922 + - record: job:http_inprogress_requests:sum:923 + expr: vector(1) + labels: + job: job923 + - record: job:http_inprogress_requests:sum:924 + expr: vector(1) + labels: + job: job924 + - record: job:http_inprogress_requests:sum:925 + expr: vector(1) + labels: + job: job925 + - record: job:http_inprogress_requests:sum:926 + expr: vector(1) + labels: + job: job926 + - record: job:http_inprogress_requests:sum:927 + expr: vector(1) + labels: + job: job927 + - record: job:http_inprogress_requests:sum:928 + expr: vector(1) + labels: + job: job928 + - record: job:http_inprogress_requests:sum:929 + expr: vector(1) + labels: + job: job929 + - record: job:http_inprogress_requests:sum:930 + expr: vector(1) + labels: + job: job930 + - record: job:http_inprogress_requests:sum:931 + expr: vector(1) + labels: + job: job931 + - record: job:http_inprogress_requests:sum:932 + expr: vector(1) + labels: + job: job932 + - record: job:http_inprogress_requests:sum:933 + expr: vector(1) + labels: + job: job933 + - record: job:http_inprogress_requests:sum:934 + expr: vector(1) + labels: + job: job934 + - record: job:http_inprogress_requests:sum:935 + expr: vector(1) + labels: + job: job935 + - record: job:http_inprogress_requests:sum:936 + expr: vector(1) + labels: + job: job936 + - record: job:http_inprogress_requests:sum:937 + expr: vector(1) + labels: + job: job937 + - record: job:http_inprogress_requests:sum:938 + expr: vector(1) + labels: + job: job938 + - record: job:http_inprogress_requests:sum:939 + expr: vector(1) + labels: + job: job939 + - record: job:http_inprogress_requests:sum:940 + expr: vector(1) + labels: + job: job940 + - record: job:http_inprogress_requests:sum:941 + expr: vector(1) + labels: + job: job941 + - record: job:http_inprogress_requests:sum:942 + expr: vector(1) + labels: + job: job942 + - record: job:http_inprogress_requests:sum:943 + expr: vector(1) + labels: + job: job943 + - record: job:http_inprogress_requests:sum:944 + expr: vector(1) + labels: + job: job944 + - record: job:http_inprogress_requests:sum:945 + expr: vector(1) + labels: + job: job945 + - record: job:http_inprogress_requests:sum:946 + expr: vector(1) + labels: + job: job946 + - record: job:http_inprogress_requests:sum:947 + expr: vector(1) + labels: + job: job947 + - record: job:http_inprogress_requests:sum:948 + expr: vector(1) + labels: + job: job948 + - record: job:http_inprogress_requests:sum:949 + expr: vector(1) + labels: + job: job949 + - record: job:http_inprogress_requests:sum:950 + expr: vector(1) + labels: + job: job950 + - record: job:http_inprogress_requests:sum:951 + expr: vector(1) + labels: + job: job951 + - record: job:http_inprogress_requests:sum:952 + expr: vector(1) + labels: + job: job952 + - record: job:http_inprogress_requests:sum:953 + expr: vector(1) + labels: + job: job953 + - record: job:http_inprogress_requests:sum:954 + expr: vector(1) + labels: + job: job954 + - record: job:http_inprogress_requests:sum:955 + expr: vector(1) + labels: + job: job955 + - record: job:http_inprogress_requests:sum:956 + expr: vector(1) + labels: + job: job956 + - record: job:http_inprogress_requests:sum:957 + expr: vector(1) + labels: + job: job957 + - record: job:http_inprogress_requests:sum:958 + expr: vector(1) + labels: + job: job958 + - record: job:http_inprogress_requests:sum:959 + expr: vector(1) + labels: + job: job959 + - record: job:http_inprogress_requests:sum:960 + expr: vector(1) + labels: + job: job960 + - record: job:http_inprogress_requests:sum:961 + expr: vector(1) + labels: + job: job961 + - record: job:http_inprogress_requests:sum:962 + expr: vector(1) + labels: + job: job962 + - record: job:http_inprogress_requests:sum:963 + expr: vector(1) + labels: + job: job963 + - record: job:http_inprogress_requests:sum:964 + expr: vector(1) + labels: + job: job964 + - record: job:http_inprogress_requests:sum:965 + expr: vector(1) + labels: + job: job965 + - record: job:http_inprogress_requests:sum:966 + expr: vector(1) + labels: + job: job966 + - record: job:http_inprogress_requests:sum:967 + expr: vector(1) + labels: + job: job967 + - record: job:http_inprogress_requests:sum:968 + expr: vector(1) + labels: + job: job968 + - record: job:http_inprogress_requests:sum:969 + expr: vector(1) + labels: + job: job969 + - record: job:http_inprogress_requests:sum:970 + expr: vector(1) + labels: + job: job970 + - record: job:http_inprogress_requests:sum:971 + expr: vector(1) + labels: + job: job971 + - record: job:http_inprogress_requests:sum:972 + expr: vector(1) + labels: + job: job972 + - record: job:http_inprogress_requests:sum:973 + expr: vector(1) + labels: + job: job973 + - record: job:http_inprogress_requests:sum:974 + expr: vector(1) + labels: + job: job974 + - record: job:http_inprogress_requests:sum:975 + expr: vector(1) + labels: + job: job975 + - record: job:http_inprogress_requests:sum:976 + expr: vector(1) + labels: + job: job976 + - record: job:http_inprogress_requests:sum:977 + expr: vector(1) + labels: + job: job977 + - record: job:http_inprogress_requests:sum:978 + expr: vector(1) + labels: + job: job978 + - record: job:http_inprogress_requests:sum:979 + expr: vector(1) + labels: + job: job979 + - record: job:http_inprogress_requests:sum:980 + expr: vector(1) + labels: + job: job980 + - record: job:http_inprogress_requests:sum:981 + expr: vector(1) + labels: + job: job981 + - record: job:http_inprogress_requests:sum:982 + expr: vector(1) + labels: + job: job982 + - record: job:http_inprogress_requests:sum:983 + expr: vector(1) + labels: + job: job983 + - record: job:http_inprogress_requests:sum:984 + expr: vector(1) + labels: + job: job984 + - record: job:http_inprogress_requests:sum:985 + expr: vector(1) + labels: + job: job985 + - record: job:http_inprogress_requests:sum:986 + expr: vector(1) + labels: + job: job986 + - record: job:http_inprogress_requests:sum:987 + expr: vector(1) + labels: + job: job987 + - record: job:http_inprogress_requests:sum:988 + expr: vector(1) + labels: + job: job988 + - record: job:http_inprogress_requests:sum:989 + expr: vector(1) + labels: + job: job989 + - record: job:http_inprogress_requests:sum:990 + expr: vector(1) + labels: + job: job990 + - record: job:http_inprogress_requests:sum:991 + expr: vector(1) + labels: + job: job991 + - record: job:http_inprogress_requests:sum:992 + expr: vector(1) + labels: + job: job992 + - record: job:http_inprogress_requests:sum:993 + expr: vector(1) + labels: + job: job993 + - record: job:http_inprogress_requests:sum:994 + expr: vector(1) + labels: + job: job994 + - record: job:http_inprogress_requests:sum:995 + expr: vector(1) + labels: + job: job995 + - record: job:http_inprogress_requests:sum:996 + expr: vector(1) + labels: + job: job996 + - record: job:http_inprogress_requests:sum:997 + expr: vector(1) + labels: + job: job997 + - record: job:http_inprogress_requests:sum:998 + expr: vector(1) + labels: + job: job998 + - record: job:http_inprogress_requests:sum:999 + expr: vector(1) + labels: + job: job999 + - record: job:http_inprogress_requests:sum:1000 + expr: vector(1) + labels: + job: job1000 + - record: job:http_inprogress_requests:sum:1001 + expr: vector(1) + labels: + job: job1001 + - record: job:http_inprogress_requests:sum:1002 + expr: vector(1) + labels: + job: job1002 + - record: job:http_inprogress_requests:sum:1003 + expr: vector(1) + labels: + job: job1003 + - record: job:http_inprogress_requests:sum:1004 + expr: vector(1) + labels: + job: job1004 + - record: job:http_inprogress_requests:sum:1005 + expr: vector(1) + labels: + job: job1005 + - record: job:http_inprogress_requests:sum:1006 + expr: vector(1) + labels: + job: job1006 + - record: job:http_inprogress_requests:sum:1007 + expr: vector(1) + labels: + job: job1007 + - record: job:http_inprogress_requests:sum:1008 + expr: vector(1) + labels: + job: job1008 + - record: job:http_inprogress_requests:sum:1009 + expr: vector(1) + labels: + job: job1009 + - record: job:http_inprogress_requests:sum:1010 + expr: vector(1) + labels: + job: job1010 + - record: job:http_inprogress_requests:sum:1011 + expr: vector(1) + labels: + job: job1011 + - record: job:http_inprogress_requests:sum:1012 + expr: vector(1) + labels: + job: job1012 + - record: job:http_inprogress_requests:sum:1013 + expr: vector(1) + labels: + job: job1013 + - record: job:http_inprogress_requests:sum:1014 + expr: vector(1) + labels: + job: job1014 + - record: job:http_inprogress_requests:sum:1015 + expr: vector(1) + labels: + job: job1015 + - record: job:http_inprogress_requests:sum:1016 + expr: vector(1) + labels: + job: job1016 + - record: job:http_inprogress_requests:sum:1017 + expr: vector(1) + labels: + job: job1017 + - record: job:http_inprogress_requests:sum:1018 + expr: vector(1) + labels: + job: job1018 + - record: job:http_inprogress_requests:sum:1019 + expr: vector(1) + labels: + job: job1019 + - record: job:http_inprogress_requests:sum:1020 + expr: vector(1) + labels: + job: job1020 + - record: job:http_inprogress_requests:sum:1021 + expr: vector(1) + labels: + job: job1021 + - record: job:http_inprogress_requests:sum:1022 + expr: vector(1) + labels: + job: job1022 + - record: job:http_inprogress_requests:sum:1023 + expr: vector(1) + labels: + job: job1023 + - record: job:http_inprogress_requests:sum:1024 + expr: vector(1) + labels: + job: job1024 + - record: job:http_inprogress_requests:sum:1025 + expr: vector(1) + labels: + job: job1025 + - record: job:http_inprogress_requests:sum:1026 + expr: vector(1) + labels: + job: job1026 + - record: job:http_inprogress_requests:sum:1027 + expr: vector(1) + labels: + job: job1027 + - record: job:http_inprogress_requests:sum:1028 + expr: vector(1) + labels: + job: job1028 + - record: job:http_inprogress_requests:sum:1029 + expr: vector(1) + labels: + job: job1029 + - record: job:http_inprogress_requests:sum:1030 + expr: vector(1) + labels: + job: job1030 + - record: job:http_inprogress_requests:sum:1031 + expr: vector(1) + labels: + job: job1031 + - record: job:http_inprogress_requests:sum:1032 + expr: vector(1) + labels: + job: job1032 + - record: job:http_inprogress_requests:sum:1033 + expr: vector(1) + labels: + job: job1033 + - record: job:http_inprogress_requests:sum:1034 + expr: vector(1) + labels: + job: job1034 + - record: job:http_inprogress_requests:sum:1035 + expr: vector(1) + labels: + job: job1035 + - record: job:http_inprogress_requests:sum:1036 + expr: vector(1) + labels: + job: job1036 + - record: job:http_inprogress_requests:sum:1037 + expr: vector(1) + labels: + job: job1037 + - record: job:http_inprogress_requests:sum:1038 + expr: vector(1) + labels: + job: job1038 + - record: job:http_inprogress_requests:sum:1039 + expr: vector(1) + labels: + job: job1039 + - record: job:http_inprogress_requests:sum:1040 + expr: vector(1) + labels: + job: job1040 + - record: job:http_inprogress_requests:sum:1041 + expr: vector(1) + labels: + job: job1041 + - record: job:http_inprogress_requests:sum:1042 + expr: vector(1) + labels: + job: job1042 + - record: job:http_inprogress_requests:sum:1043 + expr: vector(1) + labels: + job: job1043 + - record: job:http_inprogress_requests:sum:1044 + expr: vector(1) + labels: + job: job1044 + - record: job:http_inprogress_requests:sum:1045 + expr: vector(1) + labels: + job: job1045 + - record: job:http_inprogress_requests:sum:1046 + expr: vector(1) + labels: + job: job1046 + - record: job:http_inprogress_requests:sum:1047 + expr: vector(1) + labels: + job: job1047 + - record: job:http_inprogress_requests:sum:1048 + expr: vector(1) + labels: + job: job1048 + - record: job:http_inprogress_requests:sum:1049 + expr: vector(1) + labels: + job: job1049 + - record: job:http_inprogress_requests:sum:1050 + expr: vector(1) + labels: + job: job1050 + - record: job:http_inprogress_requests:sum:1051 + expr: vector(1) + labels: + job: job1051 + - record: job:http_inprogress_requests:sum:1052 + expr: vector(1) + labels: + job: job1052 + - record: job:http_inprogress_requests:sum:1053 + expr: vector(1) + labels: + job: job1053 + - record: job:http_inprogress_requests:sum:1054 + expr: vector(1) + labels: + job: job1054 + - record: job:http_inprogress_requests:sum:1055 + expr: vector(1) + labels: + job: job1055 + - record: job:http_inprogress_requests:sum:1056 + expr: vector(1) + labels: + job: job1056 + - record: job:http_inprogress_requests:sum:1057 + expr: vector(1) + labels: + job: job1057 + - record: job:http_inprogress_requests:sum:1058 + expr: vector(1) + labels: + job: job1058 + - record: job:http_inprogress_requests:sum:1059 + expr: vector(1) + labels: + job: job1059 + - record: job:http_inprogress_requests:sum:1060 + expr: vector(1) + labels: + job: job1060 + - record: job:http_inprogress_requests:sum:1061 + expr: vector(1) + labels: + job: job1061 + - record: job:http_inprogress_requests:sum:1062 + expr: vector(1) + labels: + job: job1062 + - record: job:http_inprogress_requests:sum:1063 + expr: vector(1) + labels: + job: job1063 + - record: job:http_inprogress_requests:sum:1064 + expr: vector(1) + labels: + job: job1064 + - record: job:http_inprogress_requests:sum:1065 + expr: vector(1) + labels: + job: job1065 + - record: job:http_inprogress_requests:sum:1066 + expr: vector(1) + labels: + job: job1066 + - record: job:http_inprogress_requests:sum:1067 + expr: vector(1) + labels: + job: job1067 + - record: job:http_inprogress_requests:sum:1068 + expr: vector(1) + labels: + job: job1068 + - record: job:http_inprogress_requests:sum:1069 + expr: vector(1) + labels: + job: job1069 + - record: job:http_inprogress_requests:sum:1070 + expr: vector(1) + labels: + job: job1070 + - record: job:http_inprogress_requests:sum:1071 + expr: vector(1) + labels: + job: job1071 + - record: job:http_inprogress_requests:sum:1072 + expr: vector(1) + labels: + job: job1072 + - record: job:http_inprogress_requests:sum:1073 + expr: vector(1) + labels: + job: job1073 + - record: job:http_inprogress_requests:sum:1074 + expr: vector(1) + labels: + job: job1074 + - record: job:http_inprogress_requests:sum:1075 + expr: vector(1) + labels: + job: job1075 + - record: job:http_inprogress_requests:sum:1076 + expr: vector(1) + labels: + job: job1076 + - record: job:http_inprogress_requests:sum:1077 + expr: vector(1) + labels: + job: job1077 + - record: job:http_inprogress_requests:sum:1078 + expr: vector(1) + labels: + job: job1078 + - record: job:http_inprogress_requests:sum:1079 + expr: vector(1) + labels: + job: job1079 + - record: job:http_inprogress_requests:sum:1080 + expr: vector(1) + labels: + job: job1080 + - record: job:http_inprogress_requests:sum:1081 + expr: vector(1) + labels: + job: job1081 + - record: job:http_inprogress_requests:sum:1082 + expr: vector(1) + labels: + job: job1082 + - record: job:http_inprogress_requests:sum:1083 + expr: vector(1) + labels: + job: job1083 + - record: job:http_inprogress_requests:sum:1084 + expr: vector(1) + labels: + job: job1084 + - record: job:http_inprogress_requests:sum:1085 + expr: vector(1) + labels: + job: job1085 + - record: job:http_inprogress_requests:sum:1086 + expr: vector(1) + labels: + job: job1086 + - record: job:http_inprogress_requests:sum:1087 + expr: vector(1) + labels: + job: job1087 + - record: job:http_inprogress_requests:sum:1088 + expr: vector(1) + labels: + job: job1088 + - record: job:http_inprogress_requests:sum:1089 + expr: vector(1) + labels: + job: job1089 + - record: job:http_inprogress_requests:sum:1090 + expr: vector(1) + labels: + job: job1090 + - record: job:http_inprogress_requests:sum:1091 + expr: vector(1) + labels: + job: job1091 + - record: job:http_inprogress_requests:sum:1092 + expr: vector(1) + labels: + job: job1092 + - record: job:http_inprogress_requests:sum:1093 + expr: vector(1) + labels: + job: job1093 + - record: job:http_inprogress_requests:sum:1094 + expr: vector(1) + labels: + job: job1094 + - record: job:http_inprogress_requests:sum:1095 + expr: vector(1) + labels: + job: job1095 + - record: job:http_inprogress_requests:sum:1096 + expr: vector(1) + labels: + job: job1096 + - record: job:http_inprogress_requests:sum:1097 + expr: vector(1) + labels: + job: job1097 + - record: job:http_inprogress_requests:sum:1098 + expr: vector(1) + labels: + job: job1098 + - record: job:http_inprogress_requests:sum:1099 + expr: vector(1) + labels: + job: job1099 + - record: job:http_inprogress_requests:sum:1100 + expr: vector(1) + labels: + job: job1100 + - record: job:http_inprogress_requests:sum:1101 + expr: vector(1) + labels: + job: job1101 + - record: job:http_inprogress_requests:sum:1102 + expr: vector(1) + labels: + job: job1102 + - record: job:http_inprogress_requests:sum:1103 + expr: vector(1) + labels: + job: job1103 + - record: job:http_inprogress_requests:sum:1104 + expr: vector(1) + labels: + job: job1104 + - record: job:http_inprogress_requests:sum:1105 + expr: vector(1) + labels: + job: job1105 + - record: job:http_inprogress_requests:sum:1106 + expr: vector(1) + labels: + job: job1106 + - record: job:http_inprogress_requests:sum:1107 + expr: vector(1) + labels: + job: job1107 + - record: job:http_inprogress_requests:sum:1108 + expr: vector(1) + labels: + job: job1108 + - record: job:http_inprogress_requests:sum:1109 + expr: vector(1) + labels: + job: job1109 + - record: job:http_inprogress_requests:sum:1110 + expr: vector(1) + labels: + job: job1110 + - record: job:http_inprogress_requests:sum:1111 + expr: vector(1) + labels: + job: job1111 + - record: job:http_inprogress_requests:sum:1112 + expr: vector(1) + labels: + job: job1112 + - record: job:http_inprogress_requests:sum:1113 + expr: vector(1) + labels: + job: job1113 + - record: job:http_inprogress_requests:sum:1114 + expr: vector(1) + labels: + job: job1114 + - record: job:http_inprogress_requests:sum:1115 + expr: vector(1) + labels: + job: job1115 + - record: job:http_inprogress_requests:sum:1116 + expr: vector(1) + labels: + job: job1116 + - record: job:http_inprogress_requests:sum:1117 + expr: vector(1) + labels: + job: job1117 + - record: job:http_inprogress_requests:sum:1118 + expr: vector(1) + labels: + job: job1118 + - record: job:http_inprogress_requests:sum:1119 + expr: vector(1) + labels: + job: job1119 + - record: job:http_inprogress_requests:sum:1120 + expr: vector(1) + labels: + job: job1120 + - record: job:http_inprogress_requests:sum:1121 + expr: vector(1) + labels: + job: job1121 + - record: job:http_inprogress_requests:sum:1122 + expr: vector(1) + labels: + job: job1122 + - record: job:http_inprogress_requests:sum:1123 + expr: vector(1) + labels: + job: job1123 + - record: job:http_inprogress_requests:sum:1124 + expr: vector(1) + labels: + job: job1124 + - record: job:http_inprogress_requests:sum:1125 + expr: vector(1) + labels: + job: job1125 + - record: job:http_inprogress_requests:sum:1126 + expr: vector(1) + labels: + job: job1126 + - record: job:http_inprogress_requests:sum:1127 + expr: vector(1) + labels: + job: job1127 + - record: job:http_inprogress_requests:sum:1128 + expr: vector(1) + labels: + job: job1128 + - record: job:http_inprogress_requests:sum:1129 + expr: vector(1) + labels: + job: job1129 + - record: job:http_inprogress_requests:sum:1130 + expr: vector(1) + labels: + job: job1130 + - record: job:http_inprogress_requests:sum:1131 + expr: vector(1) + labels: + job: job1131 + - record: job:http_inprogress_requests:sum:1132 + expr: vector(1) + labels: + job: job1132 + - record: job:http_inprogress_requests:sum:1133 + expr: vector(1) + labels: + job: job1133 + - record: job:http_inprogress_requests:sum:1134 + expr: vector(1) + labels: + job: job1134 + - record: job:http_inprogress_requests:sum:1135 + expr: vector(1) + labels: + job: job1135 + - record: job:http_inprogress_requests:sum:1136 + expr: vector(1) + labels: + job: job1136 + - record: job:http_inprogress_requests:sum:1137 + expr: vector(1) + labels: + job: job1137 + - record: job:http_inprogress_requests:sum:1138 + expr: vector(1) + labels: + job: job1138 + - record: job:http_inprogress_requests:sum:1139 + expr: vector(1) + labels: + job: job1139 + - record: job:http_inprogress_requests:sum:1140 + expr: vector(1) + labels: + job: job1140 + - record: job:http_inprogress_requests:sum:1141 + expr: vector(1) + labels: + job: job1141 + - record: job:http_inprogress_requests:sum:1142 + expr: vector(1) + labels: + job: job1142 + - record: job:http_inprogress_requests:sum:1143 + expr: vector(1) + labels: + job: job1143 + - record: job:http_inprogress_requests:sum:1144 + expr: vector(1) + labels: + job: job1144 + - record: job:http_inprogress_requests:sum:1145 + expr: vector(1) + labels: + job: job1145 + - record: job:http_inprogress_requests:sum:1146 + expr: vector(1) + labels: + job: job1146 + - record: job:http_inprogress_requests:sum:1147 + expr: vector(1) + labels: + job: job1147 + - record: job:http_inprogress_requests:sum:1148 + expr: vector(1) + labels: + job: job1148 + - record: job:http_inprogress_requests:sum:1149 + expr: vector(1) + labels: + job: job1149 + - record: job:http_inprogress_requests:sum:1150 + expr: vector(1) + labels: + job: job1150 + - record: job:http_inprogress_requests:sum:1151 + expr: vector(1) + labels: + job: job1151 + - record: job:http_inprogress_requests:sum:1152 + expr: vector(1) + labels: + job: job1152 + - record: job:http_inprogress_requests:sum:1153 + expr: vector(1) + labels: + job: job1153 + - record: job:http_inprogress_requests:sum:1154 + expr: vector(1) + labels: + job: job1154 + - record: job:http_inprogress_requests:sum:1155 + expr: vector(1) + labels: + job: job1155 + - record: job:http_inprogress_requests:sum:1156 + expr: vector(1) + labels: + job: job1156 + - record: job:http_inprogress_requests:sum:1157 + expr: vector(1) + labels: + job: job1157 + - record: job:http_inprogress_requests:sum:1158 + expr: vector(1) + labels: + job: job1158 + - record: job:http_inprogress_requests:sum:1159 + expr: vector(1) + labels: + job: job1159 + - record: job:http_inprogress_requests:sum:1160 + expr: vector(1) + labels: + job: job1160 + - record: job:http_inprogress_requests:sum:1161 + expr: vector(1) + labels: + job: job1161 + - record: job:http_inprogress_requests:sum:1162 + expr: vector(1) + labels: + job: job1162 + - record: job:http_inprogress_requests:sum:1163 + expr: vector(1) + labels: + job: job1163 + - record: job:http_inprogress_requests:sum:1164 + expr: vector(1) + labels: + job: job1164 + - record: job:http_inprogress_requests:sum:1165 + expr: vector(1) + labels: + job: job1165 + - record: job:http_inprogress_requests:sum:1166 + expr: vector(1) + labels: + job: job1166 + - record: job:http_inprogress_requests:sum:1167 + expr: vector(1) + labels: + job: job1167 + - record: job:http_inprogress_requests:sum:1168 + expr: vector(1) + labels: + job: job1168 + - record: job:http_inprogress_requests:sum:1169 + expr: vector(1) + labels: + job: job1169 + - record: job:http_inprogress_requests:sum:1170 + expr: vector(1) + labels: + job: job1170 + - record: job:http_inprogress_requests:sum:1171 + expr: vector(1) + labels: + job: job1171 + - record: job:http_inprogress_requests:sum:1172 + expr: vector(1) + labels: + job: job1172 + - record: job:http_inprogress_requests:sum:1173 + expr: vector(1) + labels: + job: job1173 + - record: job:http_inprogress_requests:sum:1174 + expr: vector(1) + labels: + job: job1174 + - record: job:http_inprogress_requests:sum:1175 + expr: vector(1) + labels: + job: job1175 + - record: job:http_inprogress_requests:sum:1176 + expr: vector(1) + labels: + job: job1176 + - record: job:http_inprogress_requests:sum:1177 + expr: vector(1) + labels: + job: job1177 + - record: job:http_inprogress_requests:sum:1178 + expr: vector(1) + labels: + job: job1178 + - record: job:http_inprogress_requests:sum:1179 + expr: vector(1) + labels: + job: job1179 + - record: job:http_inprogress_requests:sum:1180 + expr: vector(1) + labels: + job: job1180 + - record: job:http_inprogress_requests:sum:1181 + expr: vector(1) + labels: + job: job1181 + - record: job:http_inprogress_requests:sum:1182 + expr: vector(1) + labels: + job: job1182 + - record: job:http_inprogress_requests:sum:1183 + expr: vector(1) + labels: + job: job1183 + - record: job:http_inprogress_requests:sum:1184 + expr: vector(1) + labels: + job: job1184 + - record: job:http_inprogress_requests:sum:1185 + expr: vector(1) + labels: + job: job1185 + - record: job:http_inprogress_requests:sum:1186 + expr: vector(1) + labels: + job: job1186 + - record: job:http_inprogress_requests:sum:1187 + expr: vector(1) + labels: + job: job1187 + - record: job:http_inprogress_requests:sum:1188 + expr: vector(1) + labels: + job: job1188 + - record: job:http_inprogress_requests:sum:1189 + expr: vector(1) + labels: + job: job1189 + - record: job:http_inprogress_requests:sum:1190 + expr: vector(1) + labels: + job: job1190 + - record: job:http_inprogress_requests:sum:1191 + expr: vector(1) + labels: + job: job1191 + - record: job:http_inprogress_requests:sum:1192 + expr: vector(1) + labels: + job: job1192 + - record: job:http_inprogress_requests:sum:1193 + expr: vector(1) + labels: + job: job1193 + - record: job:http_inprogress_requests:sum:1194 + expr: vector(1) + labels: + job: job1194 + - record: job:http_inprogress_requests:sum:1195 + expr: vector(1) + labels: + job: job1195 + - record: job:http_inprogress_requests:sum:1196 + expr: vector(1) + labels: + job: job1196 + - record: job:http_inprogress_requests:sum:1197 + expr: vector(1) + labels: + job: job1197 + - record: job:http_inprogress_requests:sum:1198 + expr: vector(1) + labels: + job: job1198 + - record: job:http_inprogress_requests:sum:1199 + expr: vector(1) + labels: + job: job1199 + - record: job:http_inprogress_requests:sum:1200 + expr: vector(1) + labels: + job: job1200 + - record: job:http_inprogress_requests:sum:1201 + expr: vector(1) + labels: + job: job1201 + - record: job:http_inprogress_requests:sum:1202 + expr: vector(1) + labels: + job: job1202 + - record: job:http_inprogress_requests:sum:1203 + expr: vector(1) + labels: + job: job1203 + - record: job:http_inprogress_requests:sum:1204 + expr: vector(1) + labels: + job: job1204 + - record: job:http_inprogress_requests:sum:1205 + expr: vector(1) + labels: + job: job1205 + - record: job:http_inprogress_requests:sum:1206 + expr: vector(1) + labels: + job: job1206 + - record: job:http_inprogress_requests:sum:1207 + expr: vector(1) + labels: + job: job1207 + - record: job:http_inprogress_requests:sum:1208 + expr: vector(1) + labels: + job: job1208 + - record: job:http_inprogress_requests:sum:1209 + expr: vector(1) + labels: + job: job1209 + - record: job:http_inprogress_requests:sum:1210 + expr: vector(1) + labels: + job: job1210 + - record: job:http_inprogress_requests:sum:1211 + expr: vector(1) + labels: + job: job1211 + - record: job:http_inprogress_requests:sum:1212 + expr: vector(1) + labels: + job: job1212 + - record: job:http_inprogress_requests:sum:1213 + expr: vector(1) + labels: + job: job1213 + - record: job:http_inprogress_requests:sum:1214 + expr: vector(1) + labels: + job: job1214 + - record: job:http_inprogress_requests:sum:1215 + expr: vector(1) + labels: + job: job1215 + - record: job:http_inprogress_requests:sum:1216 + expr: vector(1) + labels: + job: job1216 + - record: job:http_inprogress_requests:sum:1217 + expr: vector(1) + labels: + job: job1217 + - record: job:http_inprogress_requests:sum:1218 + expr: vector(1) + labels: + job: job1218 + - record: job:http_inprogress_requests:sum:1219 + expr: vector(1) + labels: + job: job1219 + - record: job:http_inprogress_requests:sum:1220 + expr: vector(1) + labels: + job: job1220 + - record: job:http_inprogress_requests:sum:1221 + expr: vector(1) + labels: + job: job1221 + - record: job:http_inprogress_requests:sum:1222 + expr: vector(1) + labels: + job: job1222 + - record: job:http_inprogress_requests:sum:1223 + expr: vector(1) + labels: + job: job1223 + - record: job:http_inprogress_requests:sum:1224 + expr: vector(1) + labels: + job: job1224 + - record: job:http_inprogress_requests:sum:1225 + expr: vector(1) + labels: + job: job1225 + - record: job:http_inprogress_requests:sum:1226 + expr: vector(1) + labels: + job: job1226 + - record: job:http_inprogress_requests:sum:1227 + expr: vector(1) + labels: + job: job1227 + - record: job:http_inprogress_requests:sum:1228 + expr: vector(1) + labels: + job: job1228 + - record: job:http_inprogress_requests:sum:1229 + expr: vector(1) + labels: + job: job1229 + - record: job:http_inprogress_requests:sum:1230 + expr: vector(1) + labels: + job: job1230 + - record: job:http_inprogress_requests:sum:1231 + expr: vector(1) + labels: + job: job1231 + - record: job:http_inprogress_requests:sum:1232 + expr: vector(1) + labels: + job: job1232 + - record: job:http_inprogress_requests:sum:1233 + expr: vector(1) + labels: + job: job1233 + - record: job:http_inprogress_requests:sum:1234 + expr: vector(1) + labels: + job: job1234 + - record: job:http_inprogress_requests:sum:1235 + expr: vector(1) + labels: + job: job1235 + - record: job:http_inprogress_requests:sum:1236 + expr: vector(1) + labels: + job: job1236 + - record: job:http_inprogress_requests:sum:1237 + expr: vector(1) + labels: + job: job1237 + - record: job:http_inprogress_requests:sum:1238 + expr: vector(1) + labels: + job: job1238 + - record: job:http_inprogress_requests:sum:1239 + expr: vector(1) + labels: + job: job1239 + - record: job:http_inprogress_requests:sum:1240 + expr: vector(1) + labels: + job: job1240 + - record: job:http_inprogress_requests:sum:1241 + expr: vector(1) + labels: + job: job1241 + - record: job:http_inprogress_requests:sum:1242 + expr: vector(1) + labels: + job: job1242 + - record: job:http_inprogress_requests:sum:1243 + expr: vector(1) + labels: + job: job1243 + - record: job:http_inprogress_requests:sum:1244 + expr: vector(1) + labels: + job: job1244 + - record: job:http_inprogress_requests:sum:1245 + expr: vector(1) + labels: + job: job1245 + - record: job:http_inprogress_requests:sum:1246 + expr: vector(1) + labels: + job: job1246 + - record: job:http_inprogress_requests:sum:1247 + expr: vector(1) + labels: + job: job1247 + - record: job:http_inprogress_requests:sum:1248 + expr: vector(1) + labels: + job: job1248 + - record: job:http_inprogress_requests:sum:1249 + expr: vector(1) + labels: + job: job1249 + - record: job:http_inprogress_requests:sum:1250 + expr: vector(1) + labels: + job: job1250 + - record: job:http_inprogress_requests:sum:1251 + expr: vector(1) + labels: + job: job1251 + - record: job:http_inprogress_requests:sum:1252 + expr: vector(1) + labels: + job: job1252 + - record: job:http_inprogress_requests:sum:1253 + expr: vector(1) + labels: + job: job1253 + - record: job:http_inprogress_requests:sum:1254 + expr: vector(1) + labels: + job: job1254 + - record: job:http_inprogress_requests:sum:1255 + expr: vector(1) + labels: + job: job1255 + - record: job:http_inprogress_requests:sum:1256 + expr: vector(1) + labels: + job: job1256 + - record: job:http_inprogress_requests:sum:1257 + expr: vector(1) + labels: + job: job1257 + - record: job:http_inprogress_requests:sum:1258 + expr: vector(1) + labels: + job: job1258 + - record: job:http_inprogress_requests:sum:1259 + expr: vector(1) + labels: + job: job1259 + - record: job:http_inprogress_requests:sum:1260 + expr: vector(1) + labels: + job: job1260 + - record: job:http_inprogress_requests:sum:1261 + expr: vector(1) + labels: + job: job1261 + - record: job:http_inprogress_requests:sum:1262 + expr: vector(1) + labels: + job: job1262 + - record: job:http_inprogress_requests:sum:1263 + expr: vector(1) + labels: + job: job1263 + - record: job:http_inprogress_requests:sum:1264 + expr: vector(1) + labels: + job: job1264 + - record: job:http_inprogress_requests:sum:1265 + expr: vector(1) + labels: + job: job1265 + - record: job:http_inprogress_requests:sum:1266 + expr: vector(1) + labels: + job: job1266 + - record: job:http_inprogress_requests:sum:1267 + expr: vector(1) + labels: + job: job1267 + - record: job:http_inprogress_requests:sum:1268 + expr: vector(1) + labels: + job: job1268 + - record: job:http_inprogress_requests:sum:1269 + expr: vector(1) + labels: + job: job1269 + - record: job:http_inprogress_requests:sum:1270 + expr: vector(1) + labels: + job: job1270 + - record: job:http_inprogress_requests:sum:1271 + expr: vector(1) + labels: + job: job1271 + - record: job:http_inprogress_requests:sum:1272 + expr: vector(1) + labels: + job: job1272 + - record: job:http_inprogress_requests:sum:1273 + expr: vector(1) + labels: + job: job1273 + - record: job:http_inprogress_requests:sum:1274 + expr: vector(1) + labels: + job: job1274 + - record: job:http_inprogress_requests:sum:1275 + expr: vector(1) + labels: + job: job1275 + - record: job:http_inprogress_requests:sum:1276 + expr: vector(1) + labels: + job: job1276 + - record: job:http_inprogress_requests:sum:1277 + expr: vector(1) + labels: + job: job1277 + - record: job:http_inprogress_requests:sum:1278 + expr: vector(1) + labels: + job: job1278 + - record: job:http_inprogress_requests:sum:1279 + expr: vector(1) + labels: + job: job1279 + - record: job:http_inprogress_requests:sum:1280 + expr: vector(1) + labels: + job: job1280 + - record: job:http_inprogress_requests:sum:1281 + expr: vector(1) + labels: + job: job1281 + - record: job:http_inprogress_requests:sum:1282 + expr: vector(1) + labels: + job: job1282 + - record: job:http_inprogress_requests:sum:1283 + expr: vector(1) + labels: + job: job1283 + - record: job:http_inprogress_requests:sum:1284 + expr: vector(1) + labels: + job: job1284 + - record: job:http_inprogress_requests:sum:1285 + expr: vector(1) + labels: + job: job1285 + - record: job:http_inprogress_requests:sum:1286 + expr: vector(1) + labels: + job: job1286 + - record: job:http_inprogress_requests:sum:1287 + expr: vector(1) + labels: + job: job1287 + - record: job:http_inprogress_requests:sum:1288 + expr: vector(1) + labels: + job: job1288 + - record: job:http_inprogress_requests:sum:1289 + expr: vector(1) + labels: + job: job1289 + - record: job:http_inprogress_requests:sum:1290 + expr: vector(1) + labels: + job: job1290 + - record: job:http_inprogress_requests:sum:1291 + expr: vector(1) + labels: + job: job1291 + - record: job:http_inprogress_requests:sum:1292 + expr: vector(1) + labels: + job: job1292 + - record: job:http_inprogress_requests:sum:1293 + expr: vector(1) + labels: + job: job1293 + - record: job:http_inprogress_requests:sum:1294 + expr: vector(1) + labels: + job: job1294 + - record: job:http_inprogress_requests:sum:1295 + expr: vector(1) + labels: + job: job1295 + - record: job:http_inprogress_requests:sum:1296 + expr: vector(1) + labels: + job: job1296 + - record: job:http_inprogress_requests:sum:1297 + expr: vector(1) + labels: + job: job1297 + - record: job:http_inprogress_requests:sum:1298 + expr: vector(1) + labels: + job: job1298 + - record: job:http_inprogress_requests:sum:1299 + expr: vector(1) + labels: + job: job1299 + - record: job:http_inprogress_requests:sum:1300 + expr: vector(1) + labels: + job: job1300 + - record: job:http_inprogress_requests:sum:1301 + expr: vector(1) + labels: + job: job1301 + - record: job:http_inprogress_requests:sum:1302 + expr: vector(1) + labels: + job: job1302 + - record: job:http_inprogress_requests:sum:1303 + expr: vector(1) + labels: + job: job1303 + - record: job:http_inprogress_requests:sum:1304 + expr: vector(1) + labels: + job: job1304 + - record: job:http_inprogress_requests:sum:1305 + expr: vector(1) + labels: + job: job1305 + - record: job:http_inprogress_requests:sum:1306 + expr: vector(1) + labels: + job: job1306 + - record: job:http_inprogress_requests:sum:1307 + expr: vector(1) + labels: + job: job1307 + - record: job:http_inprogress_requests:sum:1308 + expr: vector(1) + labels: + job: job1308 + - record: job:http_inprogress_requests:sum:1309 + expr: vector(1) + labels: + job: job1309 + - record: job:http_inprogress_requests:sum:1310 + expr: vector(1) + labels: + job: job1310 + - record: job:http_inprogress_requests:sum:1311 + expr: vector(1) + labels: + job: job1311 + - record: job:http_inprogress_requests:sum:1312 + expr: vector(1) + labels: + job: job1312 + - record: job:http_inprogress_requests:sum:1313 + expr: vector(1) + labels: + job: job1313 + - record: job:http_inprogress_requests:sum:1314 + expr: vector(1) + labels: + job: job1314 + - record: job:http_inprogress_requests:sum:1315 + expr: vector(1) + labels: + job: job1315 + - record: job:http_inprogress_requests:sum:1316 + expr: vector(1) + labels: + job: job1316 + - record: job:http_inprogress_requests:sum:1317 + expr: vector(1) + labels: + job: job1317 + - record: job:http_inprogress_requests:sum:1318 + expr: vector(1) + labels: + job: job1318 + - record: job:http_inprogress_requests:sum:1319 + expr: vector(1) + labels: + job: job1319 + - record: job:http_inprogress_requests:sum:1320 + expr: vector(1) + labels: + job: job1320 + - record: job:http_inprogress_requests:sum:1321 + expr: vector(1) + labels: + job: job1321 + - record: job:http_inprogress_requests:sum:1322 + expr: vector(1) + labels: + job: job1322 + - record: job:http_inprogress_requests:sum:1323 + expr: vector(1) + labels: + job: job1323 + - record: job:http_inprogress_requests:sum:1324 + expr: vector(1) + labels: + job: job1324 + - record: job:http_inprogress_requests:sum:1325 + expr: vector(1) + labels: + job: job1325 + - record: job:http_inprogress_requests:sum:1326 + expr: vector(1) + labels: + job: job1326 + - record: job:http_inprogress_requests:sum:1327 + expr: vector(1) + labels: + job: job1327 + - record: job:http_inprogress_requests:sum:1328 + expr: vector(1) + labels: + job: job1328 + - record: job:http_inprogress_requests:sum:1329 + expr: vector(1) + labels: + job: job1329 + - record: job:http_inprogress_requests:sum:1330 + expr: vector(1) + labels: + job: job1330 + - record: job:http_inprogress_requests:sum:1331 + expr: vector(1) + labels: + job: job1331 + - record: job:http_inprogress_requests:sum:1332 + expr: vector(1) + labels: + job: job1332 + - record: job:http_inprogress_requests:sum:1333 + expr: vector(1) + labels: + job: job1333 + - record: job:http_inprogress_requests:sum:1334 + expr: vector(1) + labels: + job: job1334 + - record: job:http_inprogress_requests:sum:1335 + expr: vector(1) + labels: + job: job1335 + - record: job:http_inprogress_requests:sum:1336 + expr: vector(1) + labels: + job: job1336 + - record: job:http_inprogress_requests:sum:1337 + expr: vector(1) + labels: + job: job1337 + - record: job:http_inprogress_requests:sum:1338 + expr: vector(1) + labels: + job: job1338 + - record: job:http_inprogress_requests:sum:1339 + expr: vector(1) + labels: + job: job1339 + - record: job:http_inprogress_requests:sum:1340 + expr: vector(1) + labels: + job: job1340 + - record: job:http_inprogress_requests:sum:1341 + expr: vector(1) + labels: + job: job1341 + - record: job:http_inprogress_requests:sum:1342 + expr: vector(1) + labels: + job: job1342 + - record: job:http_inprogress_requests:sum:1343 + expr: vector(1) + labels: + job: job1343 + - record: job:http_inprogress_requests:sum:1344 + expr: vector(1) + labels: + job: job1344 + - record: job:http_inprogress_requests:sum:1345 + expr: vector(1) + labels: + job: job1345 + - record: job:http_inprogress_requests:sum:1346 + expr: vector(1) + labels: + job: job1346 + - record: job:http_inprogress_requests:sum:1347 + expr: vector(1) + labels: + job: job1347 + - record: job:http_inprogress_requests:sum:1348 + expr: vector(1) + labels: + job: job1348 + - record: job:http_inprogress_requests:sum:1349 + expr: vector(1) + labels: + job: job1349 + - record: job:http_inprogress_requests:sum:1350 + expr: vector(1) + labels: + job: job1350 + - record: job:http_inprogress_requests:sum:1351 + expr: vector(1) + labels: + job: job1351 + - record: job:http_inprogress_requests:sum:1352 + expr: vector(1) + labels: + job: job1352 + - record: job:http_inprogress_requests:sum:1353 + expr: vector(1) + labels: + job: job1353 + - record: job:http_inprogress_requests:sum:1354 + expr: vector(1) + labels: + job: job1354 + - record: job:http_inprogress_requests:sum:1355 + expr: vector(1) + labels: + job: job1355 + - record: job:http_inprogress_requests:sum:1356 + expr: vector(1) + labels: + job: job1356 + - record: job:http_inprogress_requests:sum:1357 + expr: vector(1) + labels: + job: job1357 + - record: job:http_inprogress_requests:sum:1358 + expr: vector(1) + labels: + job: job1358 + - record: job:http_inprogress_requests:sum:1359 + expr: vector(1) + labels: + job: job1359 + - record: job:http_inprogress_requests:sum:1360 + expr: vector(1) + labels: + job: job1360 + - record: job:http_inprogress_requests:sum:1361 + expr: vector(1) + labels: + job: job1361 + - record: job:http_inprogress_requests:sum:1362 + expr: vector(1) + labels: + job: job1362 + - record: job:http_inprogress_requests:sum:1363 + expr: vector(1) + labels: + job: job1363 + - record: job:http_inprogress_requests:sum:1364 + expr: vector(1) + labels: + job: job1364 + - record: job:http_inprogress_requests:sum:1365 + expr: vector(1) + labels: + job: job1365 + - record: job:http_inprogress_requests:sum:1366 + expr: vector(1) + labels: + job: job1366 + - record: job:http_inprogress_requests:sum:1367 + expr: vector(1) + labels: + job: job1367 + - record: job:http_inprogress_requests:sum:1368 + expr: vector(1) + labels: + job: job1368 + - record: job:http_inprogress_requests:sum:1369 + expr: vector(1) + labels: + job: job1369 + - record: job:http_inprogress_requests:sum:1370 + expr: vector(1) + labels: + job: job1370 + - record: job:http_inprogress_requests:sum:1371 + expr: vector(1) + labels: + job: job1371 + - record: job:http_inprogress_requests:sum:1372 + expr: vector(1) + labels: + job: job1372 + - record: job:http_inprogress_requests:sum:1373 + expr: vector(1) + labels: + job: job1373 + - record: job:http_inprogress_requests:sum:1374 + expr: vector(1) + labels: + job: job1374 + - record: job:http_inprogress_requests:sum:1375 + expr: vector(1) + labels: + job: job1375 + - record: job:http_inprogress_requests:sum:1376 + expr: vector(1) + labels: + job: job1376 + - record: job:http_inprogress_requests:sum:1377 + expr: vector(1) + labels: + job: job1377 + - record: job:http_inprogress_requests:sum:1378 + expr: vector(1) + labels: + job: job1378 + - record: job:http_inprogress_requests:sum:1379 + expr: vector(1) + labels: + job: job1379 + - record: job:http_inprogress_requests:sum:1380 + expr: vector(1) + labels: + job: job1380 + - record: job:http_inprogress_requests:sum:1381 + expr: vector(1) + labels: + job: job1381 + - record: job:http_inprogress_requests:sum:1382 + expr: vector(1) + labels: + job: job1382 + - record: job:http_inprogress_requests:sum:1383 + expr: vector(1) + labels: + job: job1383 + - record: job:http_inprogress_requests:sum:1384 + expr: vector(1) + labels: + job: job1384 + - record: job:http_inprogress_requests:sum:1385 + expr: vector(1) + labels: + job: job1385 + - record: job:http_inprogress_requests:sum:1386 + expr: vector(1) + labels: + job: job1386 + - record: job:http_inprogress_requests:sum:1387 + expr: vector(1) + labels: + job: job1387 + - record: job:http_inprogress_requests:sum:1388 + expr: vector(1) + labels: + job: job1388 + - record: job:http_inprogress_requests:sum:1389 + expr: vector(1) + labels: + job: job1389 + - record: job:http_inprogress_requests:sum:1390 + expr: vector(1) + labels: + job: job1390 + - record: job:http_inprogress_requests:sum:1391 + expr: vector(1) + labels: + job: job1391 + - record: job:http_inprogress_requests:sum:1392 + expr: vector(1) + labels: + job: job1392 + - record: job:http_inprogress_requests:sum:1393 + expr: vector(1) + labels: + job: job1393 + - record: job:http_inprogress_requests:sum:1394 + expr: vector(1) + labels: + job: job1394 + - record: job:http_inprogress_requests:sum:1395 + expr: vector(1) + labels: + job: job1395 + - record: job:http_inprogress_requests:sum:1396 + expr: vector(1) + labels: + job: job1396 + - record: job:http_inprogress_requests:sum:1397 + expr: vector(1) + labels: + job: job1397 + - record: job:http_inprogress_requests:sum:1398 + expr: vector(1) + labels: + job: job1398 + - record: job:http_inprogress_requests:sum:1399 + expr: vector(1) + labels: + job: job1399 + - record: job:http_inprogress_requests:sum:1400 + expr: vector(1) + labels: + job: job1400 + - record: job:http_inprogress_requests:sum:1401 + expr: vector(1) + labels: + job: job1401 + - record: job:http_inprogress_requests:sum:1402 + expr: vector(1) + labels: + job: job1402 + - record: job:http_inprogress_requests:sum:1403 + expr: vector(1) + labels: + job: job1403 + - record: job:http_inprogress_requests:sum:1404 + expr: vector(1) + labels: + job: job1404 + - record: job:http_inprogress_requests:sum:1405 + expr: vector(1) + labels: + job: job1405 + - record: job:http_inprogress_requests:sum:1406 + expr: vector(1) + labels: + job: job1406 + - record: job:http_inprogress_requests:sum:1407 + expr: vector(1) + labels: + job: job1407 + - record: job:http_inprogress_requests:sum:1408 + expr: vector(1) + labels: + job: job1408 + - record: job:http_inprogress_requests:sum:1409 + expr: vector(1) + labels: + job: job1409 + - record: job:http_inprogress_requests:sum:1410 + expr: vector(1) + labels: + job: job1410 + - record: job:http_inprogress_requests:sum:1411 + expr: vector(1) + labels: + job: job1411 + - record: job:http_inprogress_requests:sum:1412 + expr: vector(1) + labels: + job: job1412 + - record: job:http_inprogress_requests:sum:1413 + expr: vector(1) + labels: + job: job1413 + - record: job:http_inprogress_requests:sum:1414 + expr: vector(1) + labels: + job: job1414 + - record: job:http_inprogress_requests:sum:1415 + expr: vector(1) + labels: + job: job1415 + - record: job:http_inprogress_requests:sum:1416 + expr: vector(1) + labels: + job: job1416 + - record: job:http_inprogress_requests:sum:1417 + expr: vector(1) + labels: + job: job1417 + - record: job:http_inprogress_requests:sum:1418 + expr: vector(1) + labels: + job: job1418 + - record: job:http_inprogress_requests:sum:1419 + expr: vector(1) + labels: + job: job1419 + - record: job:http_inprogress_requests:sum:1420 + expr: vector(1) + labels: + job: job1420 + - record: job:http_inprogress_requests:sum:1421 + expr: vector(1) + labels: + job: job1421 + - record: job:http_inprogress_requests:sum:1422 + expr: vector(1) + labels: + job: job1422 + - record: job:http_inprogress_requests:sum:1423 + expr: vector(1) + labels: + job: job1423 + - record: job:http_inprogress_requests:sum:1424 + expr: vector(1) + labels: + job: job1424 + - record: job:http_inprogress_requests:sum:1425 + expr: vector(1) + labels: + job: job1425 + - record: job:http_inprogress_requests:sum:1426 + expr: vector(1) + labels: + job: job1426 + - record: job:http_inprogress_requests:sum:1427 + expr: vector(1) + labels: + job: job1427 + - record: job:http_inprogress_requests:sum:1428 + expr: vector(1) + labels: + job: job1428 + - record: job:http_inprogress_requests:sum:1429 + expr: vector(1) + labels: + job: job1429 + - record: job:http_inprogress_requests:sum:1430 + expr: vector(1) + labels: + job: job1430 + - record: job:http_inprogress_requests:sum:1431 + expr: vector(1) + labels: + job: job1431 + - record: job:http_inprogress_requests:sum:1432 + expr: vector(1) + labels: + job: job1432 + - record: job:http_inprogress_requests:sum:1433 + expr: vector(1) + labels: + job: job1433 + - record: job:http_inprogress_requests:sum:1434 + expr: vector(1) + labels: + job: job1434 + - record: job:http_inprogress_requests:sum:1435 + expr: vector(1) + labels: + job: job1435 + - record: job:http_inprogress_requests:sum:1436 + expr: vector(1) + labels: + job: job1436 + - record: job:http_inprogress_requests:sum:1437 + expr: vector(1) + labels: + job: job1437 + - record: job:http_inprogress_requests:sum:1438 + expr: vector(1) + labels: + job: job1438 + - record: job:http_inprogress_requests:sum:1439 + expr: vector(1) + labels: + job: job1439 + - record: job:http_inprogress_requests:sum:1440 + expr: vector(1) + labels: + job: job1440 + - record: job:http_inprogress_requests:sum:1441 + expr: vector(1) + labels: + job: job1441 + - record: job:http_inprogress_requests:sum:1442 + expr: vector(1) + labels: + job: job1442 + - record: job:http_inprogress_requests:sum:1443 + expr: vector(1) + labels: + job: job1443 + - record: job:http_inprogress_requests:sum:1444 + expr: vector(1) + labels: + job: job1444 + - record: job:http_inprogress_requests:sum:1445 + expr: vector(1) + labels: + job: job1445 + - record: job:http_inprogress_requests:sum:1446 + expr: vector(1) + labels: + job: job1446 + - record: job:http_inprogress_requests:sum:1447 + expr: vector(1) + labels: + job: job1447 + - record: job:http_inprogress_requests:sum:1448 + expr: vector(1) + labels: + job: job1448 + - record: job:http_inprogress_requests:sum:1449 + expr: vector(1) + labels: + job: job1449 + - record: job:http_inprogress_requests:sum:1450 + expr: vector(1) + labels: + job: job1450 + - record: job:http_inprogress_requests:sum:1451 + expr: vector(1) + labels: + job: job1451 + - record: job:http_inprogress_requests:sum:1452 + expr: vector(1) + labels: + job: job1452 + - record: job:http_inprogress_requests:sum:1453 + expr: vector(1) + labels: + job: job1453 + - record: job:http_inprogress_requests:sum:1454 + expr: vector(1) + labels: + job: job1454 + - record: job:http_inprogress_requests:sum:1455 + expr: vector(1) + labels: + job: job1455 + - record: job:http_inprogress_requests:sum:1456 + expr: vector(1) + labels: + job: job1456 + - record: job:http_inprogress_requests:sum:1457 + expr: vector(1) + labels: + job: job1457 + - record: job:http_inprogress_requests:sum:1458 + expr: vector(1) + labels: + job: job1458 + - record: job:http_inprogress_requests:sum:1459 + expr: vector(1) + labels: + job: job1459 + - record: job:http_inprogress_requests:sum:1460 + expr: vector(1) + labels: + job: job1460 + - record: job:http_inprogress_requests:sum:1461 + expr: vector(1) + labels: + job: job1461 + - record: job:http_inprogress_requests:sum:1462 + expr: vector(1) + labels: + job: job1462 + - record: job:http_inprogress_requests:sum:1463 + expr: vector(1) + labels: + job: job1463 + - record: job:http_inprogress_requests:sum:1464 + expr: vector(1) + labels: + job: job1464 + - record: job:http_inprogress_requests:sum:1465 + expr: vector(1) + labels: + job: job1465 + - record: job:http_inprogress_requests:sum:1466 + expr: vector(1) + labels: + job: job1466 + - record: job:http_inprogress_requests:sum:1467 + expr: vector(1) + labels: + job: job1467 + - record: job:http_inprogress_requests:sum:1468 + expr: vector(1) + labels: + job: job1468 + - record: job:http_inprogress_requests:sum:1469 + expr: vector(1) + labels: + job: job1469 + - record: job:http_inprogress_requests:sum:1470 + expr: vector(1) + labels: + job: job1470 + - record: job:http_inprogress_requests:sum:1471 + expr: vector(1) + labels: + job: job1471 + - record: job:http_inprogress_requests:sum:1472 + expr: vector(1) + labels: + job: job1472 + - record: job:http_inprogress_requests:sum:1473 + expr: vector(1) + labels: + job: job1473 + - record: job:http_inprogress_requests:sum:1474 + expr: vector(1) + labels: + job: job1474 + - record: job:http_inprogress_requests:sum:1475 + expr: vector(1) + labels: + job: job1475 + - record: job:http_inprogress_requests:sum:1476 + expr: vector(1) + labels: + job: job1476 + - record: job:http_inprogress_requests:sum:1477 + expr: vector(1) + labels: + job: job1477 + - record: job:http_inprogress_requests:sum:1478 + expr: vector(1) + labels: + job: job1478 + - record: job:http_inprogress_requests:sum:1479 + expr: vector(1) + labels: + job: job1479 + - record: job:http_inprogress_requests:sum:1480 + expr: vector(1) + labels: + job: job1480 + - record: job:http_inprogress_requests:sum:1481 + expr: vector(1) + labels: + job: job1481 + - record: job:http_inprogress_requests:sum:1482 + expr: vector(1) + labels: + job: job1482 + - record: job:http_inprogress_requests:sum:1483 + expr: vector(1) + labels: + job: job1483 + - record: job:http_inprogress_requests:sum:1484 + expr: vector(1) + labels: + job: job1484 + - record: job:http_inprogress_requests:sum:1485 + expr: vector(1) + labels: + job: job1485 + - record: job:http_inprogress_requests:sum:1486 + expr: vector(1) + labels: + job: job1486 + - record: job:http_inprogress_requests:sum:1487 + expr: vector(1) + labels: + job: job1487 + - record: job:http_inprogress_requests:sum:1488 + expr: vector(1) + labels: + job: job1488 + - record: job:http_inprogress_requests:sum:1489 + expr: vector(1) + labels: + job: job1489 + - record: job:http_inprogress_requests:sum:1490 + expr: vector(1) + labels: + job: job1490 + - record: job:http_inprogress_requests:sum:1491 + expr: vector(1) + labels: + job: job1491 + - record: job:http_inprogress_requests:sum:1492 + expr: vector(1) + labels: + job: job1492 + - record: job:http_inprogress_requests:sum:1493 + expr: vector(1) + labels: + job: job1493 + - record: job:http_inprogress_requests:sum:1494 + expr: vector(1) + labels: + job: job1494 + - record: job:http_inprogress_requests:sum:1495 + expr: vector(1) + labels: + job: job1495 + - record: job:http_inprogress_requests:sum:1496 + expr: vector(1) + labels: + job: job1496 + - record: job:http_inprogress_requests:sum:1497 + expr: vector(1) + labels: + job: job1497 + - record: job:http_inprogress_requests:sum:1498 + expr: vector(1) + labels: + job: job1498 + - record: job:http_inprogress_requests:sum:1499 + expr: vector(1) + labels: + job: job1499 + - record: job:http_inprogress_requests:sum:1500 + expr: vector(1) + labels: + job: job1500 + - record: job:http_inprogress_requests:sum:1501 + expr: vector(1) + labels: + job: job1501 + - record: job:http_inprogress_requests:sum:1502 + expr: vector(1) + labels: + job: job1502 + - record: job:http_inprogress_requests:sum:1503 + expr: vector(1) + labels: + job: job1503 + - record: job:http_inprogress_requests:sum:1504 + expr: vector(1) + labels: + job: job1504 + - record: job:http_inprogress_requests:sum:1505 + expr: vector(1) + labels: + job: job1505 + - record: job:http_inprogress_requests:sum:1506 + expr: vector(1) + labels: + job: job1506 + - record: job:http_inprogress_requests:sum:1507 + expr: vector(1) + labels: + job: job1507 + - record: job:http_inprogress_requests:sum:1508 + expr: vector(1) + labels: + job: job1508 + - record: job:http_inprogress_requests:sum:1509 + expr: vector(1) + labels: + job: job1509 + - record: job:http_inprogress_requests:sum:1510 + expr: vector(1) + labels: + job: job1510 + - record: job:http_inprogress_requests:sum:1511 + expr: vector(1) + labels: + job: job1511 + - record: job:http_inprogress_requests:sum:1512 + expr: vector(1) + labels: + job: job1512 + - record: job:http_inprogress_requests:sum:1513 + expr: vector(1) + labels: + job: job1513 + - record: job:http_inprogress_requests:sum:1514 + expr: vector(1) + labels: + job: job1514 + - record: job:http_inprogress_requests:sum:1515 + expr: vector(1) + labels: + job: job1515 + - record: job:http_inprogress_requests:sum:1516 + expr: vector(1) + labels: + job: job1516 + - record: job:http_inprogress_requests:sum:1517 + expr: vector(1) + labels: + job: job1517 + - record: job:http_inprogress_requests:sum:1518 + expr: vector(1) + labels: + job: job1518 + - record: job:http_inprogress_requests:sum:1519 + expr: vector(1) + labels: + job: job1519 + - record: job:http_inprogress_requests:sum:1520 + expr: vector(1) + labels: + job: job1520 + - record: job:http_inprogress_requests:sum:1521 + expr: vector(1) + labels: + job: job1521 + - record: job:http_inprogress_requests:sum:1522 + expr: vector(1) + labels: + job: job1522 + - record: job:http_inprogress_requests:sum:1523 + expr: vector(1) + labels: + job: job1523 + - record: job:http_inprogress_requests:sum:1524 + expr: vector(1) + labels: + job: job1524 + - record: job:http_inprogress_requests:sum:1525 + expr: vector(1) + labels: + job: job1525 + - record: job:http_inprogress_requests:sum:1526 + expr: vector(1) + labels: + job: job1526 + - record: job:http_inprogress_requests:sum:1527 + expr: vector(1) + labels: + job: job1527 + - record: job:http_inprogress_requests:sum:1528 + expr: vector(1) + labels: + job: job1528 + - record: job:http_inprogress_requests:sum:1529 + expr: vector(1) + labels: + job: job1529 + - record: job:http_inprogress_requests:sum:1530 + expr: vector(1) + labels: + job: job1530 + - record: job:http_inprogress_requests:sum:1531 + expr: vector(1) + labels: + job: job1531 + - record: job:http_inprogress_requests:sum:1532 + expr: vector(1) + labels: + job: job1532 + - record: job:http_inprogress_requests:sum:1533 + expr: vector(1) + labels: + job: job1533 + - record: job:http_inprogress_requests:sum:1534 + expr: vector(1) + labels: + job: job1534 + - record: job:http_inprogress_requests:sum:1535 + expr: vector(1) + labels: + job: job1535 + - record: job:http_inprogress_requests:sum:1536 + expr: vector(1) + labels: + job: job1536 + - record: job:http_inprogress_requests:sum:1537 + expr: vector(1) + labels: + job: job1537 + - record: job:http_inprogress_requests:sum:1538 + expr: vector(1) + labels: + job: job1538 + - record: job:http_inprogress_requests:sum:1539 + expr: vector(1) + labels: + job: job1539 + - record: job:http_inprogress_requests:sum:1540 + expr: vector(1) + labels: + job: job1540 + - record: job:http_inprogress_requests:sum:1541 + expr: vector(1) + labels: + job: job1541 + - record: job:http_inprogress_requests:sum:1542 + expr: vector(1) + labels: + job: job1542 + - record: job:http_inprogress_requests:sum:1543 + expr: vector(1) + labels: + job: job1543 + - record: job:http_inprogress_requests:sum:1544 + expr: vector(1) + labels: + job: job1544 + - record: job:http_inprogress_requests:sum:1545 + expr: vector(1) + labels: + job: job1545 + - record: job:http_inprogress_requests:sum:1546 + expr: vector(1) + labels: + job: job1546 + - record: job:http_inprogress_requests:sum:1547 + expr: vector(1) + labels: + job: job1547 + - record: job:http_inprogress_requests:sum:1548 + expr: vector(1) + labels: + job: job1548 + - record: job:http_inprogress_requests:sum:1549 + expr: vector(1) + labels: + job: job1549 + - record: job:http_inprogress_requests:sum:1550 + expr: vector(1) + labels: + job: job1550 + - record: job:http_inprogress_requests:sum:1551 + expr: vector(1) + labels: + job: job1551 + - record: job:http_inprogress_requests:sum:1552 + expr: vector(1) + labels: + job: job1552 + - record: job:http_inprogress_requests:sum:1553 + expr: vector(1) + labels: + job: job1553 + - record: job:http_inprogress_requests:sum:1554 + expr: vector(1) + labels: + job: job1554 + - record: job:http_inprogress_requests:sum:1555 + expr: vector(1) + labels: + job: job1555 + - record: job:http_inprogress_requests:sum:1556 + expr: vector(1) + labels: + job: job1556 + - record: job:http_inprogress_requests:sum:1557 + expr: vector(1) + labels: + job: job1557 + - record: job:http_inprogress_requests:sum:1558 + expr: vector(1) + labels: + job: job1558 + - record: job:http_inprogress_requests:sum:1559 + expr: vector(1) + labels: + job: job1559 + - record: job:http_inprogress_requests:sum:1560 + expr: vector(1) + labels: + job: job1560 + - record: job:http_inprogress_requests:sum:1561 + expr: vector(1) + labels: + job: job1561 + - record: job:http_inprogress_requests:sum:1562 + expr: vector(1) + labels: + job: job1562 + - record: job:http_inprogress_requests:sum:1563 + expr: vector(1) + labels: + job: job1563 + - record: job:http_inprogress_requests:sum:1564 + expr: vector(1) + labels: + job: job1564 + - record: job:http_inprogress_requests:sum:1565 + expr: vector(1) + labels: + job: job1565 + - record: job:http_inprogress_requests:sum:1566 + expr: vector(1) + labels: + job: job1566 + - record: job:http_inprogress_requests:sum:1567 + expr: vector(1) + labels: + job: job1567 + - record: job:http_inprogress_requests:sum:1568 + expr: vector(1) + labels: + job: job1568 + - record: job:http_inprogress_requests:sum:1569 + expr: vector(1) + labels: + job: job1569 + - record: job:http_inprogress_requests:sum:1570 + expr: vector(1) + labels: + job: job1570 + - record: job:http_inprogress_requests:sum:1571 + expr: vector(1) + labels: + job: job1571 + - record: job:http_inprogress_requests:sum:1572 + expr: vector(1) + labels: + job: job1572 + - record: job:http_inprogress_requests:sum:1573 + expr: vector(1) + labels: + job: job1573 + - record: job:http_inprogress_requests:sum:1574 + expr: vector(1) + labels: + job: job1574 + - record: job:http_inprogress_requests:sum:1575 + expr: vector(1) + labels: + job: job1575 + - record: job:http_inprogress_requests:sum:1576 + expr: vector(1) + labels: + job: job1576 + - record: job:http_inprogress_requests:sum:1577 + expr: vector(1) + labels: + job: job1577 + - record: job:http_inprogress_requests:sum:1578 + expr: vector(1) + labels: + job: job1578 + - record: job:http_inprogress_requests:sum:1579 + expr: vector(1) + labels: + job: job1579 + - record: job:http_inprogress_requests:sum:1580 + expr: vector(1) + labels: + job: job1580 + - record: job:http_inprogress_requests:sum:1581 + expr: vector(1) + labels: + job: job1581 + - record: job:http_inprogress_requests:sum:1582 + expr: vector(1) + labels: + job: job1582 + - record: job:http_inprogress_requests:sum:1583 + expr: vector(1) + labels: + job: job1583 + - record: job:http_inprogress_requests:sum:1584 + expr: vector(1) + labels: + job: job1584 + - record: job:http_inprogress_requests:sum:1585 + expr: vector(1) + labels: + job: job1585 + - record: job:http_inprogress_requests:sum:1586 + expr: vector(1) + labels: + job: job1586 + - record: job:http_inprogress_requests:sum:1587 + expr: vector(1) + labels: + job: job1587 + - record: job:http_inprogress_requests:sum:1588 + expr: vector(1) + labels: + job: job1588 + - record: job:http_inprogress_requests:sum:1589 + expr: vector(1) + labels: + job: job1589 + - record: job:http_inprogress_requests:sum:1590 + expr: vector(1) + labels: + job: job1590 + - record: job:http_inprogress_requests:sum:1591 + expr: vector(1) + labels: + job: job1591 + - record: job:http_inprogress_requests:sum:1592 + expr: vector(1) + labels: + job: job1592 + - record: job:http_inprogress_requests:sum:1593 + expr: vector(1) + labels: + job: job1593 + - record: job:http_inprogress_requests:sum:1594 + expr: vector(1) + labels: + job: job1594 + - record: job:http_inprogress_requests:sum:1595 + expr: vector(1) + labels: + job: job1595 + - record: job:http_inprogress_requests:sum:1596 + expr: vector(1) + labels: + job: job1596 + - record: job:http_inprogress_requests:sum:1597 + expr: vector(1) + labels: + job: job1597 + - record: job:http_inprogress_requests:sum:1598 + expr: vector(1) + labels: + job: job1598 + - record: job:http_inprogress_requests:sum:1599 + expr: vector(1) + labels: + job: job1599 + - record: job:http_inprogress_requests:sum:1600 + expr: vector(1) + labels: + job: job1600 + - record: job:http_inprogress_requests:sum:1601 + expr: vector(1) + labels: + job: job1601 + - record: job:http_inprogress_requests:sum:1602 + expr: vector(1) + labels: + job: job1602 + - record: job:http_inprogress_requests:sum:1603 + expr: vector(1) + labels: + job: job1603 + - record: job:http_inprogress_requests:sum:1604 + expr: vector(1) + labels: + job: job1604 + - record: job:http_inprogress_requests:sum:1605 + expr: vector(1) + labels: + job: job1605 + - record: job:http_inprogress_requests:sum:1606 + expr: vector(1) + labels: + job: job1606 + - record: job:http_inprogress_requests:sum:1607 + expr: vector(1) + labels: + job: job1607 + - record: job:http_inprogress_requests:sum:1608 + expr: vector(1) + labels: + job: job1608 + - record: job:http_inprogress_requests:sum:1609 + expr: vector(1) + labels: + job: job1609 + - record: job:http_inprogress_requests:sum:1610 + expr: vector(1) + labels: + job: job1610 + - record: job:http_inprogress_requests:sum:1611 + expr: vector(1) + labels: + job: job1611 + - record: job:http_inprogress_requests:sum:1612 + expr: vector(1) + labels: + job: job1612 + - record: job:http_inprogress_requests:sum:1613 + expr: vector(1) + labels: + job: job1613 + - record: job:http_inprogress_requests:sum:1614 + expr: vector(1) + labels: + job: job1614 + - record: job:http_inprogress_requests:sum:1615 + expr: vector(1) + labels: + job: job1615 + - record: job:http_inprogress_requests:sum:1616 + expr: vector(1) + labels: + job: job1616 + - record: job:http_inprogress_requests:sum:1617 + expr: vector(1) + labels: + job: job1617 + - record: job:http_inprogress_requests:sum:1618 + expr: vector(1) + labels: + job: job1618 + - record: job:http_inprogress_requests:sum:1619 + expr: vector(1) + labels: + job: job1619 + - record: job:http_inprogress_requests:sum:1620 + expr: vector(1) + labels: + job: job1620 + - record: job:http_inprogress_requests:sum:1621 + expr: vector(1) + labels: + job: job1621 + - record: job:http_inprogress_requests:sum:1622 + expr: vector(1) + labels: + job: job1622 + - record: job:http_inprogress_requests:sum:1623 + expr: vector(1) + labels: + job: job1623 + - record: job:http_inprogress_requests:sum:1624 + expr: vector(1) + labels: + job: job1624 + - record: job:http_inprogress_requests:sum:1625 + expr: vector(1) + labels: + job: job1625 + - record: job:http_inprogress_requests:sum:1626 + expr: vector(1) + labels: + job: job1626 + - record: job:http_inprogress_requests:sum:1627 + expr: vector(1) + labels: + job: job1627 + - record: job:http_inprogress_requests:sum:1628 + expr: vector(1) + labels: + job: job1628 + - record: job:http_inprogress_requests:sum:1629 + expr: vector(1) + labels: + job: job1629 + - record: job:http_inprogress_requests:sum:1630 + expr: vector(1) + labels: + job: job1630 + - record: job:http_inprogress_requests:sum:1631 + expr: vector(1) + labels: + job: job1631 + - record: job:http_inprogress_requests:sum:1632 + expr: vector(1) + labels: + job: job1632 + - record: job:http_inprogress_requests:sum:1633 + expr: vector(1) + labels: + job: job1633 + - record: job:http_inprogress_requests:sum:1634 + expr: vector(1) + labels: + job: job1634 + - record: job:http_inprogress_requests:sum:1635 + expr: vector(1) + labels: + job: job1635 + - record: job:http_inprogress_requests:sum:1636 + expr: vector(1) + labels: + job: job1636 + - record: job:http_inprogress_requests:sum:1637 + expr: vector(1) + labels: + job: job1637 + - record: job:http_inprogress_requests:sum:1638 + expr: vector(1) + labels: + job: job1638 + - record: job:http_inprogress_requests:sum:1639 + expr: vector(1) + labels: + job: job1639 + - record: job:http_inprogress_requests:sum:1640 + expr: vector(1) + labels: + job: job1640 + - record: job:http_inprogress_requests:sum:1641 + expr: vector(1) + labels: + job: job1641 + - record: job:http_inprogress_requests:sum:1642 + expr: vector(1) + labels: + job: job1642 + - record: job:http_inprogress_requests:sum:1643 + expr: vector(1) + labels: + job: job1643 + - record: job:http_inprogress_requests:sum:1644 + expr: vector(1) + labels: + job: job1644 + - record: job:http_inprogress_requests:sum:1645 + expr: vector(1) + labels: + job: job1645 + - record: job:http_inprogress_requests:sum:1646 + expr: vector(1) + labels: + job: job1646 + - record: job:http_inprogress_requests:sum:1647 + expr: vector(1) + labels: + job: job1647 + - record: job:http_inprogress_requests:sum:1648 + expr: vector(1) + labels: + job: job1648 + - record: job:http_inprogress_requests:sum:1649 + expr: vector(1) + labels: + job: job1649 + - record: job:http_inprogress_requests:sum:1650 + expr: vector(1) + labels: + job: job1650 + - record: job:http_inprogress_requests:sum:1651 + expr: vector(1) + labels: + job: job1651 + - record: job:http_inprogress_requests:sum:1652 + expr: vector(1) + labels: + job: job1652 + - record: job:http_inprogress_requests:sum:1653 + expr: vector(1) + labels: + job: job1653 + - record: job:http_inprogress_requests:sum:1654 + expr: vector(1) + labels: + job: job1654 + - record: job:http_inprogress_requests:sum:1655 + expr: vector(1) + labels: + job: job1655 + - record: job:http_inprogress_requests:sum:1656 + expr: vector(1) + labels: + job: job1656 + - record: job:http_inprogress_requests:sum:1657 + expr: vector(1) + labels: + job: job1657 + - record: job:http_inprogress_requests:sum:1658 + expr: vector(1) + labels: + job: job1658 + - record: job:http_inprogress_requests:sum:1659 + expr: vector(1) + labels: + job: job1659 + - record: job:http_inprogress_requests:sum:1660 + expr: vector(1) + labels: + job: job1660 + - record: job:http_inprogress_requests:sum:1661 + expr: vector(1) + labels: + job: job1661 + - record: job:http_inprogress_requests:sum:1662 + expr: vector(1) + labels: + job: job1662 + - record: job:http_inprogress_requests:sum:1663 + expr: vector(1) + labels: + job: job1663 + - record: job:http_inprogress_requests:sum:1664 + expr: vector(1) + labels: + job: job1664 + - record: job:http_inprogress_requests:sum:1665 + expr: vector(1) + labels: + job: job1665 + - record: job:http_inprogress_requests:sum:1666 + expr: vector(1) + labels: + job: job1666 + - record: job:http_inprogress_requests:sum:1667 + expr: vector(1) + labels: + job: job1667 + - record: job:http_inprogress_requests:sum:1668 + expr: vector(1) + labels: + job: job1668 + - record: job:http_inprogress_requests:sum:1669 + expr: vector(1) + labels: + job: job1669 + - record: job:http_inprogress_requests:sum:1670 + expr: vector(1) + labels: + job: job1670 + - record: job:http_inprogress_requests:sum:1671 + expr: vector(1) + labels: + job: job1671 + - record: job:http_inprogress_requests:sum:1672 + expr: vector(1) + labels: + job: job1672 + - record: job:http_inprogress_requests:sum:1673 + expr: vector(1) + labels: + job: job1673 + - record: job:http_inprogress_requests:sum:1674 + expr: vector(1) + labels: + job: job1674 + - record: job:http_inprogress_requests:sum:1675 + expr: vector(1) + labels: + job: job1675 + - record: job:http_inprogress_requests:sum:1676 + expr: vector(1) + labels: + job: job1676 + - record: job:http_inprogress_requests:sum:1677 + expr: vector(1) + labels: + job: job1677 + - record: job:http_inprogress_requests:sum:1678 + expr: vector(1) + labels: + job: job1678 + - record: job:http_inprogress_requests:sum:1679 + expr: vector(1) + labels: + job: job1679 + - record: job:http_inprogress_requests:sum:1680 + expr: vector(1) + labels: + job: job1680 + - record: job:http_inprogress_requests:sum:1681 + expr: vector(1) + labels: + job: job1681 + - record: job:http_inprogress_requests:sum:1682 + expr: vector(1) + labels: + job: job1682 + - record: job:http_inprogress_requests:sum:1683 + expr: vector(1) + labels: + job: job1683 + - record: job:http_inprogress_requests:sum:1684 + expr: vector(1) + labels: + job: job1684 + - record: job:http_inprogress_requests:sum:1685 + expr: vector(1) + labels: + job: job1685 + - record: job:http_inprogress_requests:sum:1686 + expr: vector(1) + labels: + job: job1686 + - record: job:http_inprogress_requests:sum:1687 + expr: vector(1) + labels: + job: job1687 + - record: job:http_inprogress_requests:sum:1688 + expr: vector(1) + labels: + job: job1688 + - record: job:http_inprogress_requests:sum:1689 + expr: vector(1) + labels: + job: job1689 + - record: job:http_inprogress_requests:sum:1690 + expr: vector(1) + labels: + job: job1690 + - record: job:http_inprogress_requests:sum:1691 + expr: vector(1) + labels: + job: job1691 + - record: job:http_inprogress_requests:sum:1692 + expr: vector(1) + labels: + job: job1692 + - record: job:http_inprogress_requests:sum:1693 + expr: vector(1) + labels: + job: job1693 + - record: job:http_inprogress_requests:sum:1694 + expr: vector(1) + labels: + job: job1694 + - record: job:http_inprogress_requests:sum:1695 + expr: vector(1) + labels: + job: job1695 + - record: job:http_inprogress_requests:sum:1696 + expr: vector(1) + labels: + job: job1696 + - record: job:http_inprogress_requests:sum:1697 + expr: vector(1) + labels: + job: job1697 + - record: job:http_inprogress_requests:sum:1698 + expr: vector(1) + labels: + job: job1698 + - record: job:http_inprogress_requests:sum:1699 + expr: vector(1) + labels: + job: job1699 + - record: job:http_inprogress_requests:sum:1700 + expr: vector(1) + labels: + job: job1700 + - record: job:http_inprogress_requests:sum:1701 + expr: vector(1) + labels: + job: job1701 + - record: job:http_inprogress_requests:sum:1702 + expr: vector(1) + labels: + job: job1702 + - record: job:http_inprogress_requests:sum:1703 + expr: vector(1) + labels: + job: job1703 + - record: job:http_inprogress_requests:sum:1704 + expr: vector(1) + labels: + job: job1704 + - record: job:http_inprogress_requests:sum:1705 + expr: vector(1) + labels: + job: job1705 + - record: job:http_inprogress_requests:sum:1706 + expr: vector(1) + labels: + job: job1706 + - record: job:http_inprogress_requests:sum:1707 + expr: vector(1) + labels: + job: job1707 + - record: job:http_inprogress_requests:sum:1708 + expr: vector(1) + labels: + job: job1708 + - record: job:http_inprogress_requests:sum:1709 + expr: vector(1) + labels: + job: job1709 + - record: job:http_inprogress_requests:sum:1710 + expr: vector(1) + labels: + job: job1710 + - record: job:http_inprogress_requests:sum:1711 + expr: vector(1) + labels: + job: job1711 + - record: job:http_inprogress_requests:sum:1712 + expr: vector(1) + labels: + job: job1712 + - record: job:http_inprogress_requests:sum:1713 + expr: vector(1) + labels: + job: job1713 + - record: job:http_inprogress_requests:sum:1714 + expr: vector(1) + labels: + job: job1714 + - record: job:http_inprogress_requests:sum:1715 + expr: vector(1) + labels: + job: job1715 + - record: job:http_inprogress_requests:sum:1716 + expr: vector(1) + labels: + job: job1716 + - record: job:http_inprogress_requests:sum:1717 + expr: vector(1) + labels: + job: job1717 + - record: job:http_inprogress_requests:sum:1718 + expr: vector(1) + labels: + job: job1718 + - record: job:http_inprogress_requests:sum:1719 + expr: vector(1) + labels: + job: job1719 + - record: job:http_inprogress_requests:sum:1720 + expr: vector(1) + labels: + job: job1720 + - record: job:http_inprogress_requests:sum:1721 + expr: vector(1) + labels: + job: job1721 + - record: job:http_inprogress_requests:sum:1722 + expr: vector(1) + labels: + job: job1722 + - record: job:http_inprogress_requests:sum:1723 + expr: vector(1) + labels: + job: job1723 + - record: job:http_inprogress_requests:sum:1724 + expr: vector(1) + labels: + job: job1724 + - record: job:http_inprogress_requests:sum:1725 + expr: vector(1) + labels: + job: job1725 + - record: job:http_inprogress_requests:sum:1726 + expr: vector(1) + labels: + job: job1726 + - record: job:http_inprogress_requests:sum:1727 + expr: vector(1) + labels: + job: job1727 + - record: job:http_inprogress_requests:sum:1728 + expr: vector(1) + labels: + job: job1728 + - record: job:http_inprogress_requests:sum:1729 + expr: vector(1) + labels: + job: job1729 + - record: job:http_inprogress_requests:sum:1730 + expr: vector(1) + labels: + job: job1730 + - record: job:http_inprogress_requests:sum:1731 + expr: vector(1) + labels: + job: job1731 + - record: job:http_inprogress_requests:sum:1732 + expr: vector(1) + labels: + job: job1732 + - record: job:http_inprogress_requests:sum:1733 + expr: vector(1) + labels: + job: job1733 + - record: job:http_inprogress_requests:sum:1734 + expr: vector(1) + labels: + job: job1734 + - record: job:http_inprogress_requests:sum:1735 + expr: vector(1) + labels: + job: job1735 + - record: job:http_inprogress_requests:sum:1736 + expr: vector(1) + labels: + job: job1736 + - record: job:http_inprogress_requests:sum:1737 + expr: vector(1) + labels: + job: job1737 + - record: job:http_inprogress_requests:sum:1738 + expr: vector(1) + labels: + job: job1738 + - record: job:http_inprogress_requests:sum:1739 + expr: vector(1) + labels: + job: job1739 + - record: job:http_inprogress_requests:sum:1740 + expr: vector(1) + labels: + job: job1740 + - record: job:http_inprogress_requests:sum:1741 + expr: vector(1) + labels: + job: job1741 + - record: job:http_inprogress_requests:sum:1742 + expr: vector(1) + labels: + job: job1742 + - record: job:http_inprogress_requests:sum:1743 + expr: vector(1) + labels: + job: job1743 + - record: job:http_inprogress_requests:sum:1744 + expr: vector(1) + labels: + job: job1744 + - record: job:http_inprogress_requests:sum:1745 + expr: vector(1) + labels: + job: job1745 + - record: job:http_inprogress_requests:sum:1746 + expr: vector(1) + labels: + job: job1746 + - record: job:http_inprogress_requests:sum:1747 + expr: vector(1) + labels: + job: job1747 + - record: job:http_inprogress_requests:sum:1748 + expr: vector(1) + labels: + job: job1748 + - record: job:http_inprogress_requests:sum:1749 + expr: vector(1) + labels: + job: job1749 + - record: job:http_inprogress_requests:sum:1750 + expr: vector(1) + labels: + job: job1750 + - record: job:http_inprogress_requests:sum:1751 + expr: vector(1) + labels: + job: job1751 + - record: job:http_inprogress_requests:sum:1752 + expr: vector(1) + labels: + job: job1752 + - record: job:http_inprogress_requests:sum:1753 + expr: vector(1) + labels: + job: job1753 + - record: job:http_inprogress_requests:sum:1754 + expr: vector(1) + labels: + job: job1754 + - record: job:http_inprogress_requests:sum:1755 + expr: vector(1) + labels: + job: job1755 + - record: job:http_inprogress_requests:sum:1756 + expr: vector(1) + labels: + job: job1756 + - record: job:http_inprogress_requests:sum:1757 + expr: vector(1) + labels: + job: job1757 + - record: job:http_inprogress_requests:sum:1758 + expr: vector(1) + labels: + job: job1758 + - record: job:http_inprogress_requests:sum:1759 + expr: vector(1) + labels: + job: job1759 + - record: job:http_inprogress_requests:sum:1760 + expr: vector(1) + labels: + job: job1760 + - record: job:http_inprogress_requests:sum:1761 + expr: vector(1) + labels: + job: job1761 + - record: job:http_inprogress_requests:sum:1762 + expr: vector(1) + labels: + job: job1762 + - record: job:http_inprogress_requests:sum:1763 + expr: vector(1) + labels: + job: job1763 + - record: job:http_inprogress_requests:sum:1764 + expr: vector(1) + labels: + job: job1764 + - record: job:http_inprogress_requests:sum:1765 + expr: vector(1) + labels: + job: job1765 + - record: job:http_inprogress_requests:sum:1766 + expr: vector(1) + labels: + job: job1766 + - record: job:http_inprogress_requests:sum:1767 + expr: vector(1) + labels: + job: job1767 + - record: job:http_inprogress_requests:sum:1768 + expr: vector(1) + labels: + job: job1768 + - record: job:http_inprogress_requests:sum:1769 + expr: vector(1) + labels: + job: job1769 + - record: job:http_inprogress_requests:sum:1770 + expr: vector(1) + labels: + job: job1770 + - record: job:http_inprogress_requests:sum:1771 + expr: vector(1) + labels: + job: job1771 + - record: job:http_inprogress_requests:sum:1772 + expr: vector(1) + labels: + job: job1772 + - record: job:http_inprogress_requests:sum:1773 + expr: vector(1) + labels: + job: job1773 + - record: job:http_inprogress_requests:sum:1774 + expr: vector(1) + labels: + job: job1774 + - record: job:http_inprogress_requests:sum:1775 + expr: vector(1) + labels: + job: job1775 + - record: job:http_inprogress_requests:sum:1776 + expr: vector(1) + labels: + job: job1776 + - record: job:http_inprogress_requests:sum:1777 + expr: vector(1) + labels: + job: job1777 + - record: job:http_inprogress_requests:sum:1778 + expr: vector(1) + labels: + job: job1778 + - record: job:http_inprogress_requests:sum:1779 + expr: vector(1) + labels: + job: job1779 + - record: job:http_inprogress_requests:sum:1780 + expr: vector(1) + labels: + job: job1780 + - record: job:http_inprogress_requests:sum:1781 + expr: vector(1) + labels: + job: job1781 + - record: job:http_inprogress_requests:sum:1782 + expr: vector(1) + labels: + job: job1782 + - record: job:http_inprogress_requests:sum:1783 + expr: vector(1) + labels: + job: job1783 + - record: job:http_inprogress_requests:sum:1784 + expr: vector(1) + labels: + job: job1784 + - record: job:http_inprogress_requests:sum:1785 + expr: vector(1) + labels: + job: job1785 + - record: job:http_inprogress_requests:sum:1786 + expr: vector(1) + labels: + job: job1786 + - record: job:http_inprogress_requests:sum:1787 + expr: vector(1) + labels: + job: job1787 + - record: job:http_inprogress_requests:sum:1788 + expr: vector(1) + labels: + job: job1788 + - record: job:http_inprogress_requests:sum:1789 + expr: vector(1) + labels: + job: job1789 + - record: job:http_inprogress_requests:sum:1790 + expr: vector(1) + labels: + job: job1790 + - record: job:http_inprogress_requests:sum:1791 + expr: vector(1) + labels: + job: job1791 + - record: job:http_inprogress_requests:sum:1792 + expr: vector(1) + labels: + job: job1792 + - record: job:http_inprogress_requests:sum:1793 + expr: vector(1) + labels: + job: job1793 + - record: job:http_inprogress_requests:sum:1794 + expr: vector(1) + labels: + job: job1794 + - record: job:http_inprogress_requests:sum:1795 + expr: vector(1) + labels: + job: job1795 + - record: job:http_inprogress_requests:sum:1796 + expr: vector(1) + labels: + job: job1796 + - record: job:http_inprogress_requests:sum:1797 + expr: vector(1) + labels: + job: job1797 + - record: job:http_inprogress_requests:sum:1798 + expr: vector(1) + labels: + job: job1798 + - record: job:http_inprogress_requests:sum:1799 + expr: vector(1) + labels: + job: job1799 + - record: job:http_inprogress_requests:sum:1800 + expr: vector(1) + labels: + job: job1800 + - record: job:http_inprogress_requests:sum:1801 + expr: vector(1) + labels: + job: job1801 + - record: job:http_inprogress_requests:sum:1802 + expr: vector(1) + labels: + job: job1802 + - record: job:http_inprogress_requests:sum:1803 + expr: vector(1) + labels: + job: job1803 + - record: job:http_inprogress_requests:sum:1804 + expr: vector(1) + labels: + job: job1804 + - record: job:http_inprogress_requests:sum:1805 + expr: vector(1) + labels: + job: job1805 + - record: job:http_inprogress_requests:sum:1806 + expr: vector(1) + labels: + job: job1806 + - record: job:http_inprogress_requests:sum:1807 + expr: vector(1) + labels: + job: job1807 + - record: job:http_inprogress_requests:sum:1808 + expr: vector(1) + labels: + job: job1808 + - record: job:http_inprogress_requests:sum:1809 + expr: vector(1) + labels: + job: job1809 + - record: job:http_inprogress_requests:sum:1810 + expr: vector(1) + labels: + job: job1810 + - record: job:http_inprogress_requests:sum:1811 + expr: vector(1) + labels: + job: job1811 + - record: job:http_inprogress_requests:sum:1812 + expr: vector(1) + labels: + job: job1812 + - record: job:http_inprogress_requests:sum:1813 + expr: vector(1) + labels: + job: job1813 + - record: job:http_inprogress_requests:sum:1814 + expr: vector(1) + labels: + job: job1814 + - record: job:http_inprogress_requests:sum:1815 + expr: vector(1) + labels: + job: job1815 + - record: job:http_inprogress_requests:sum:1816 + expr: vector(1) + labels: + job: job1816 + - record: job:http_inprogress_requests:sum:1817 + expr: vector(1) + labels: + job: job1817 + - record: job:http_inprogress_requests:sum:1818 + expr: vector(1) + labels: + job: job1818 + - record: job:http_inprogress_requests:sum:1819 + expr: vector(1) + labels: + job: job1819 + - record: job:http_inprogress_requests:sum:1820 + expr: vector(1) + labels: + job: job1820 + - record: job:http_inprogress_requests:sum:1821 + expr: vector(1) + labels: + job: job1821 + - record: job:http_inprogress_requests:sum:1822 + expr: vector(1) + labels: + job: job1822 + - record: job:http_inprogress_requests:sum:1823 + expr: vector(1) + labels: + job: job1823 + - record: job:http_inprogress_requests:sum:1824 + expr: vector(1) + labels: + job: job1824 + - record: job:http_inprogress_requests:sum:1825 + expr: vector(1) + labels: + job: job1825 + - record: job:http_inprogress_requests:sum:1826 + expr: vector(1) + labels: + job: job1826 + - record: job:http_inprogress_requests:sum:1827 + expr: vector(1) + labels: + job: job1827 + - record: job:http_inprogress_requests:sum:1828 + expr: vector(1) + labels: + job: job1828 + - record: job:http_inprogress_requests:sum:1829 + expr: vector(1) + labels: + job: job1829 + - record: job:http_inprogress_requests:sum:1830 + expr: vector(1) + labels: + job: job1830 + - record: job:http_inprogress_requests:sum:1831 + expr: vector(1) + labels: + job: job1831 + - record: job:http_inprogress_requests:sum:1832 + expr: vector(1) + labels: + job: job1832 + - record: job:http_inprogress_requests:sum:1833 + expr: vector(1) + labels: + job: job1833 + - record: job:http_inprogress_requests:sum:1834 + expr: vector(1) + labels: + job: job1834 + - record: job:http_inprogress_requests:sum:1835 + expr: vector(1) + labels: + job: job1835 + - record: job:http_inprogress_requests:sum:1836 + expr: vector(1) + labels: + job: job1836 + - record: job:http_inprogress_requests:sum:1837 + expr: vector(1) + labels: + job: job1837 + - record: job:http_inprogress_requests:sum:1838 + expr: vector(1) + labels: + job: job1838 + - record: job:http_inprogress_requests:sum:1839 + expr: vector(1) + labels: + job: job1839 + - record: job:http_inprogress_requests:sum:1840 + expr: vector(1) + labels: + job: job1840 + - record: job:http_inprogress_requests:sum:1841 + expr: vector(1) + labels: + job: job1841 + - record: job:http_inprogress_requests:sum:1842 + expr: vector(1) + labels: + job: job1842 + - record: job:http_inprogress_requests:sum:1843 + expr: vector(1) + labels: + job: job1843 + - record: job:http_inprogress_requests:sum:1844 + expr: vector(1) + labels: + job: job1844 + - record: job:http_inprogress_requests:sum:1845 + expr: vector(1) + labels: + job: job1845 + - record: job:http_inprogress_requests:sum:1846 + expr: vector(1) + labels: + job: job1846 + - record: job:http_inprogress_requests:sum:1847 + expr: vector(1) + labels: + job: job1847 + - record: job:http_inprogress_requests:sum:1848 + expr: vector(1) + labels: + job: job1848 + - record: job:http_inprogress_requests:sum:1849 + expr: vector(1) + labels: + job: job1849 + - record: job:http_inprogress_requests:sum:1850 + expr: vector(1) + labels: + job: job1850 + - record: job:http_inprogress_requests:sum:1851 + expr: vector(1) + labels: + job: job1851 + - record: job:http_inprogress_requests:sum:1852 + expr: vector(1) + labels: + job: job1852 + - record: job:http_inprogress_requests:sum:1853 + expr: vector(1) + labels: + job: job1853 + - record: job:http_inprogress_requests:sum:1854 + expr: vector(1) + labels: + job: job1854 + - record: job:http_inprogress_requests:sum:1855 + expr: vector(1) + labels: + job: job1855 + - record: job:http_inprogress_requests:sum:1856 + expr: vector(1) + labels: + job: job1856 + - record: job:http_inprogress_requests:sum:1857 + expr: vector(1) + labels: + job: job1857 + - record: job:http_inprogress_requests:sum:1858 + expr: vector(1) + labels: + job: job1858 + - record: job:http_inprogress_requests:sum:1859 + expr: vector(1) + labels: + job: job1859 + - record: job:http_inprogress_requests:sum:1860 + expr: vector(1) + labels: + job: job1860 + - record: job:http_inprogress_requests:sum:1861 + expr: vector(1) + labels: + job: job1861 + - record: job:http_inprogress_requests:sum:1862 + expr: vector(1) + labels: + job: job1862 + - record: job:http_inprogress_requests:sum:1863 + expr: vector(1) + labels: + job: job1863 + - record: job:http_inprogress_requests:sum:1864 + expr: vector(1) + labels: + job: job1864 + - record: job:http_inprogress_requests:sum:1865 + expr: vector(1) + labels: + job: job1865 + - record: job:http_inprogress_requests:sum:1866 + expr: vector(1) + labels: + job: job1866 + - record: job:http_inprogress_requests:sum:1867 + expr: vector(1) + labels: + job: job1867 + - record: job:http_inprogress_requests:sum:1868 + expr: vector(1) + labels: + job: job1868 + - record: job:http_inprogress_requests:sum:1869 + expr: vector(1) + labels: + job: job1869 + - record: job:http_inprogress_requests:sum:1870 + expr: vector(1) + labels: + job: job1870 + - record: job:http_inprogress_requests:sum:1871 + expr: vector(1) + labels: + job: job1871 + - record: job:http_inprogress_requests:sum:1872 + expr: vector(1) + labels: + job: job1872 + - record: job:http_inprogress_requests:sum:1873 + expr: vector(1) + labels: + job: job1873 + - record: job:http_inprogress_requests:sum:1874 + expr: vector(1) + labels: + job: job1874 + - record: job:http_inprogress_requests:sum:1875 + expr: vector(1) + labels: + job: job1875 + - record: job:http_inprogress_requests:sum:1876 + expr: vector(1) + labels: + job: job1876 + - record: job:http_inprogress_requests:sum:1877 + expr: vector(1) + labels: + job: job1877 + - record: job:http_inprogress_requests:sum:1878 + expr: vector(1) + labels: + job: job1878 + - record: job:http_inprogress_requests:sum:1879 + expr: vector(1) + labels: + job: job1879 + - record: job:http_inprogress_requests:sum:1880 + expr: vector(1) + labels: + job: job1880 + - record: job:http_inprogress_requests:sum:1881 + expr: vector(1) + labels: + job: job1881 + - record: job:http_inprogress_requests:sum:1882 + expr: vector(1) + labels: + job: job1882 + - record: job:http_inprogress_requests:sum:1883 + expr: vector(1) + labels: + job: job1883 + - record: job:http_inprogress_requests:sum:1884 + expr: vector(1) + labels: + job: job1884 + - record: job:http_inprogress_requests:sum:1885 + expr: vector(1) + labels: + job: job1885 + - record: job:http_inprogress_requests:sum:1886 + expr: vector(1) + labels: + job: job1886 + - record: job:http_inprogress_requests:sum:1887 + expr: vector(1) + labels: + job: job1887 + - record: job:http_inprogress_requests:sum:1888 + expr: vector(1) + labels: + job: job1888 + - record: job:http_inprogress_requests:sum:1889 + expr: vector(1) + labels: + job: job1889 + - record: job:http_inprogress_requests:sum:1890 + expr: vector(1) + labels: + job: job1890 + - record: job:http_inprogress_requests:sum:1891 + expr: vector(1) + labels: + job: job1891 + - record: job:http_inprogress_requests:sum:1892 + expr: vector(1) + labels: + job: job1892 + - record: job:http_inprogress_requests:sum:1893 + expr: vector(1) + labels: + job: job1893 + - record: job:http_inprogress_requests:sum:1894 + expr: vector(1) + labels: + job: job1894 + - record: job:http_inprogress_requests:sum:1895 + expr: vector(1) + labels: + job: job1895 + - record: job:http_inprogress_requests:sum:1896 + expr: vector(1) + labels: + job: job1896 + - record: job:http_inprogress_requests:sum:1897 + expr: vector(1) + labels: + job: job1897 + - record: job:http_inprogress_requests:sum:1898 + expr: vector(1) + labels: + job: job1898 + - record: job:http_inprogress_requests:sum:1899 + expr: vector(1) + labels: + job: job1899 + - record: job:http_inprogress_requests:sum:1900 + expr: vector(1) + labels: + job: job1900 + - record: job:http_inprogress_requests:sum:1901 + expr: vector(1) + labels: + job: job1901 + - record: job:http_inprogress_requests:sum:1902 + expr: vector(1) + labels: + job: job1902 + - record: job:http_inprogress_requests:sum:1903 + expr: vector(1) + labels: + job: job1903 + - record: job:http_inprogress_requests:sum:1904 + expr: vector(1) + labels: + job: job1904 + - record: job:http_inprogress_requests:sum:1905 + expr: vector(1) + labels: + job: job1905 + - record: job:http_inprogress_requests:sum:1906 + expr: vector(1) + labels: + job: job1906 + - record: job:http_inprogress_requests:sum:1907 + expr: vector(1) + labels: + job: job1907 + - record: job:http_inprogress_requests:sum:1908 + expr: vector(1) + labels: + job: job1908 + - record: job:http_inprogress_requests:sum:1909 + expr: vector(1) + labels: + job: job1909 + - record: job:http_inprogress_requests:sum:1910 + expr: vector(1) + labels: + job: job1910 + - record: job:http_inprogress_requests:sum:1911 + expr: vector(1) + labels: + job: job1911 + - record: job:http_inprogress_requests:sum:1912 + expr: vector(1) + labels: + job: job1912 + - record: job:http_inprogress_requests:sum:1913 + expr: vector(1) + labels: + job: job1913 + - record: job:http_inprogress_requests:sum:1914 + expr: vector(1) + labels: + job: job1914 + - record: job:http_inprogress_requests:sum:1915 + expr: vector(1) + labels: + job: job1915 + - record: job:http_inprogress_requests:sum:1916 + expr: vector(1) + labels: + job: job1916 + - record: job:http_inprogress_requests:sum:1917 + expr: vector(1) + labels: + job: job1917 + - record: job:http_inprogress_requests:sum:1918 + expr: vector(1) + labels: + job: job1918 + - record: job:http_inprogress_requests:sum:1919 + expr: vector(1) + labels: + job: job1919 + - record: job:http_inprogress_requests:sum:1920 + expr: vector(1) + labels: + job: job1920 + - record: job:http_inprogress_requests:sum:1921 + expr: vector(1) + labels: + job: job1921 + - record: job:http_inprogress_requests:sum:1922 + expr: vector(1) + labels: + job: job1922 + - record: job:http_inprogress_requests:sum:1923 + expr: vector(1) + labels: + job: job1923 + - record: job:http_inprogress_requests:sum:1924 + expr: vector(1) + labels: + job: job1924 + - record: job:http_inprogress_requests:sum:1925 + expr: vector(1) + labels: + job: job1925 + - record: job:http_inprogress_requests:sum:1926 + expr: vector(1) + labels: + job: job1926 + - record: job:http_inprogress_requests:sum:1927 + expr: vector(1) + labels: + job: job1927 + - record: job:http_inprogress_requests:sum:1928 + expr: vector(1) + labels: + job: job1928 + - record: job:http_inprogress_requests:sum:1929 + expr: vector(1) + labels: + job: job1929 + - record: job:http_inprogress_requests:sum:1930 + expr: vector(1) + labels: + job: job1930 + - record: job:http_inprogress_requests:sum:1931 + expr: vector(1) + labels: + job: job1931 + - record: job:http_inprogress_requests:sum:1932 + expr: vector(1) + labels: + job: job1932 + - record: job:http_inprogress_requests:sum:1933 + expr: vector(1) + labels: + job: job1933 + - record: job:http_inprogress_requests:sum:1934 + expr: vector(1) + labels: + job: job1934 + - record: job:http_inprogress_requests:sum:1935 + expr: vector(1) + labels: + job: job1935 + - record: job:http_inprogress_requests:sum:1936 + expr: vector(1) + labels: + job: job1936 + - record: job:http_inprogress_requests:sum:1937 + expr: vector(1) + labels: + job: job1937 + - record: job:http_inprogress_requests:sum:1938 + expr: vector(1) + labels: + job: job1938 + - record: job:http_inprogress_requests:sum:1939 + expr: vector(1) + labels: + job: job1939 + - record: job:http_inprogress_requests:sum:1940 + expr: vector(1) + labels: + job: job1940 + - record: job:http_inprogress_requests:sum:1941 + expr: vector(1) + labels: + job: job1941 + - record: job:http_inprogress_requests:sum:1942 + expr: vector(1) + labels: + job: job1942 + - record: job:http_inprogress_requests:sum:1943 + expr: vector(1) + labels: + job: job1943 + - record: job:http_inprogress_requests:sum:1944 + expr: vector(1) + labels: + job: job1944 + - record: job:http_inprogress_requests:sum:1945 + expr: vector(1) + labels: + job: job1945 + - record: job:http_inprogress_requests:sum:1946 + expr: vector(1) + labels: + job: job1946 + - record: job:http_inprogress_requests:sum:1947 + expr: vector(1) + labels: + job: job1947 + - record: job:http_inprogress_requests:sum:1948 + expr: vector(1) + labels: + job: job1948 + - record: job:http_inprogress_requests:sum:1949 + expr: vector(1) + labels: + job: job1949 + - record: job:http_inprogress_requests:sum:1950 + expr: vector(1) + labels: + job: job1950 + - record: job:http_inprogress_requests:sum:1951 + expr: vector(1) + labels: + job: job1951 + - record: job:http_inprogress_requests:sum:1952 + expr: vector(1) + labels: + job: job1952 + - record: job:http_inprogress_requests:sum:1953 + expr: vector(1) + labels: + job: job1953 + - record: job:http_inprogress_requests:sum:1954 + expr: vector(1) + labels: + job: job1954 + - record: job:http_inprogress_requests:sum:1955 + expr: vector(1) + labels: + job: job1955 + - record: job:http_inprogress_requests:sum:1956 + expr: vector(1) + labels: + job: job1956 + - record: job:http_inprogress_requests:sum:1957 + expr: vector(1) + labels: + job: job1957 + - record: job:http_inprogress_requests:sum:1958 + expr: vector(1) + labels: + job: job1958 + - record: job:http_inprogress_requests:sum:1959 + expr: vector(1) + labels: + job: job1959 + - record: job:http_inprogress_requests:sum:1960 + expr: vector(1) + labels: + job: job1960 + - record: job:http_inprogress_requests:sum:1961 + expr: vector(1) + labels: + job: job1961 + - record: job:http_inprogress_requests:sum:1962 + expr: vector(1) + labels: + job: job1962 + - record: job:http_inprogress_requests:sum:1963 + expr: vector(1) + labels: + job: job1963 + - record: job:http_inprogress_requests:sum:1964 + expr: vector(1) + labels: + job: job1964 + - record: job:http_inprogress_requests:sum:1965 + expr: vector(1) + labels: + job: job1965 + - record: job:http_inprogress_requests:sum:1966 + expr: vector(1) + labels: + job: job1966 + - record: job:http_inprogress_requests:sum:1967 + expr: vector(1) + labels: + job: job1967 + - record: job:http_inprogress_requests:sum:1968 + expr: vector(1) + labels: + job: job1968 + - record: job:http_inprogress_requests:sum:1969 + expr: vector(1) + labels: + job: job1969 + - record: job:http_inprogress_requests:sum:1970 + expr: vector(1) + labels: + job: job1970 + - record: job:http_inprogress_requests:sum:1971 + expr: vector(1) + labels: + job: job1971 + - record: job:http_inprogress_requests:sum:1972 + expr: vector(1) + labels: + job: job1972 + - record: job:http_inprogress_requests:sum:1973 + expr: vector(1) + labels: + job: job1973 + - record: job:http_inprogress_requests:sum:1974 + expr: vector(1) + labels: + job: job1974 + - record: job:http_inprogress_requests:sum:1975 + expr: vector(1) + labels: + job: job1975 + - record: job:http_inprogress_requests:sum:1976 + expr: vector(1) + labels: + job: job1976 + - record: job:http_inprogress_requests:sum:1977 + expr: vector(1) + labels: + job: job1977 + - record: job:http_inprogress_requests:sum:1978 + expr: vector(1) + labels: + job: job1978 + - record: job:http_inprogress_requests:sum:1979 + expr: vector(1) + labels: + job: job1979 + - record: job:http_inprogress_requests:sum:1980 + expr: vector(1) + labels: + job: job1980 + - record: job:http_inprogress_requests:sum:1981 + expr: vector(1) + labels: + job: job1981 + - record: job:http_inprogress_requests:sum:1982 + expr: vector(1) + labels: + job: job1982 + - record: job:http_inprogress_requests:sum:1983 + expr: vector(1) + labels: + job: job1983 + - record: job:http_inprogress_requests:sum:1984 + expr: vector(1) + labels: + job: job1984 + - record: job:http_inprogress_requests:sum:1985 + expr: vector(1) + labels: + job: job1985 + - record: job:http_inprogress_requests:sum:1986 + expr: vector(1) + labels: + job: job1986 + - record: job:http_inprogress_requests:sum:1987 + expr: vector(1) + labels: + job: job1987 + - record: job:http_inprogress_requests:sum:1988 + expr: vector(1) + labels: + job: job1988 + - record: job:http_inprogress_requests:sum:1989 + expr: vector(1) + labels: + job: job1989 + - record: job:http_inprogress_requests:sum:1990 + expr: vector(1) + labels: + job: job1990 + - record: job:http_inprogress_requests:sum:1991 + expr: vector(1) + labels: + job: job1991 + - record: job:http_inprogress_requests:sum:1992 + expr: vector(1) + labels: + job: job1992 + - record: job:http_inprogress_requests:sum:1993 + expr: vector(1) + labels: + job: job1993 + - record: job:http_inprogress_requests:sum:1994 + expr: vector(1) + labels: + job: job1994 + - record: job:http_inprogress_requests:sum:1995 + expr: vector(1) + labels: + job: job1995 + - record: job:http_inprogress_requests:sum:1996 + expr: vector(1) + labels: + job: job1996 + - record: job:http_inprogress_requests:sum:1997 + expr: vector(1) + labels: + job: job1997 + - record: job:http_inprogress_requests:sum:1998 + expr: vector(1) + labels: + job: job1998 + - record: job:http_inprogress_requests:sum:1999 + expr: vector(1) + labels: + job: job1999 + - record: job:http_inprogress_requests:sum:2000 + expr: vector(1) + labels: + job: job2000 + - record: job:http_inprogress_requests:sum:2001 + expr: vector(1) + labels: + job: job2001 + - record: job:http_inprogress_requests:sum:2002 + expr: vector(1) + labels: + job: job2002 + - record: job:http_inprogress_requests:sum:2003 + expr: vector(1) + labels: + job: job2003 + - record: job:http_inprogress_requests:sum:2004 + expr: vector(1) + labels: + job: job2004 + - record: job:http_inprogress_requests:sum:2005 + expr: vector(1) + labels: + job: job2005 + - record: job:http_inprogress_requests:sum:2006 + expr: vector(1) + labels: + job: job2006 + - record: job:http_inprogress_requests:sum:2007 + expr: vector(1) + labels: + job: job2007 + - record: job:http_inprogress_requests:sum:2008 + expr: vector(1) + labels: + job: job2008 + - record: job:http_inprogress_requests:sum:2009 + expr: vector(1) + labels: + job: job2009 + - record: job:http_inprogress_requests:sum:2010 + expr: vector(1) + labels: + job: job2010 + - record: job:http_inprogress_requests:sum:2011 + expr: vector(1) + labels: + job: job2011 + - record: job:http_inprogress_requests:sum:2012 + expr: vector(1) + labels: + job: job2012 + - record: job:http_inprogress_requests:sum:2013 + expr: vector(1) + labels: + job: job2013 + - record: job:http_inprogress_requests:sum:2014 + expr: vector(1) + labels: + job: job2014 + - record: job:http_inprogress_requests:sum:2015 + expr: vector(1) + labels: + job: job2015 + - record: job:http_inprogress_requests:sum:2016 + expr: vector(1) + labels: + job: job2016 + - record: job:http_inprogress_requests:sum:2017 + expr: vector(1) + labels: + job: job2017 + - record: job:http_inprogress_requests:sum:2018 + expr: vector(1) + labels: + job: job2018 + - record: job:http_inprogress_requests:sum:2019 + expr: vector(1) + labels: + job: job2019 + - record: job:http_inprogress_requests:sum:2020 + expr: vector(1) + labels: + job: job2020 + - record: job:http_inprogress_requests:sum:2021 + expr: vector(1) + labels: + job: job2021 + - record: job:http_inprogress_requests:sum:2022 + expr: vector(1) + labels: + job: job2022 + - record: job:http_inprogress_requests:sum:2023 + expr: vector(1) + labels: + job: job2023 + - record: job:http_inprogress_requests:sum:2024 + expr: vector(1) + labels: + job: job2024 + - record: job:http_inprogress_requests:sum:2025 + expr: vector(1) + labels: + job: job2025 + - record: job:http_inprogress_requests:sum:2026 + expr: vector(1) + labels: + job: job2026 + - record: job:http_inprogress_requests:sum:2027 + expr: vector(1) + labels: + job: job2027 + - record: job:http_inprogress_requests:sum:2028 + expr: vector(1) + labels: + job: job2028 + - record: job:http_inprogress_requests:sum:2029 + expr: vector(1) + labels: + job: job2029 + - record: job:http_inprogress_requests:sum:2030 + expr: vector(1) + labels: + job: job2030 + - record: job:http_inprogress_requests:sum:2031 + expr: vector(1) + labels: + job: job2031 + - record: job:http_inprogress_requests:sum:2032 + expr: vector(1) + labels: + job: job2032 + - record: job:http_inprogress_requests:sum:2033 + expr: vector(1) + labels: + job: job2033 + - record: job:http_inprogress_requests:sum:2034 + expr: vector(1) + labels: + job: job2034 + - record: job:http_inprogress_requests:sum:2035 + expr: vector(1) + labels: + job: job2035 + - record: job:http_inprogress_requests:sum:2036 + expr: vector(1) + labels: + job: job2036 + - record: job:http_inprogress_requests:sum:2037 + expr: vector(1) + labels: + job: job2037 + - record: job:http_inprogress_requests:sum:2038 + expr: vector(1) + labels: + job: job2038 + - record: job:http_inprogress_requests:sum:2039 + expr: vector(1) + labels: + job: job2039 + - record: job:http_inprogress_requests:sum:2040 + expr: vector(1) + labels: + job: job2040 + - record: job:http_inprogress_requests:sum:2041 + expr: vector(1) + labels: + job: job2041 + - record: job:http_inprogress_requests:sum:2042 + expr: vector(1) + labels: + job: job2042 + - record: job:http_inprogress_requests:sum:2043 + expr: vector(1) + labels: + job: job2043 + - record: job:http_inprogress_requests:sum:2044 + expr: vector(1) + labels: + job: job2044 + - record: job:http_inprogress_requests:sum:2045 + expr: vector(1) + labels: + job: job2045 + - record: job:http_inprogress_requests:sum:2046 + expr: vector(1) + labels: + job: job2046 + - record: job:http_inprogress_requests:sum:2047 + expr: vector(1) + labels: + job: job2047 + - record: job:http_inprogress_requests:sum:2048 + expr: vector(1) + labels: + job: job2048 + - record: job:http_inprogress_requests:sum:2049 + expr: vector(1) + labels: + job: job2049 + - record: job:http_inprogress_requests:sum:2050 + expr: vector(1) + labels: + job: job2050 + - record: job:http_inprogress_requests:sum:2051 + expr: vector(1) + labels: + job: job2051 + - record: job:http_inprogress_requests:sum:2052 + expr: vector(1) + labels: + job: job2052 + - record: job:http_inprogress_requests:sum:2053 + expr: vector(1) + labels: + job: job2053 + - record: job:http_inprogress_requests:sum:2054 + expr: vector(1) + labels: + job: job2054 + - record: job:http_inprogress_requests:sum:2055 + expr: vector(1) + labels: + job: job2055 + - record: job:http_inprogress_requests:sum:2056 + expr: vector(1) + labels: + job: job2056 + - record: job:http_inprogress_requests:sum:2057 + expr: vector(1) + labels: + job: job2057 + - record: job:http_inprogress_requests:sum:2058 + expr: vector(1) + labels: + job: job2058 + - record: job:http_inprogress_requests:sum:2059 + expr: vector(1) + labels: + job: job2059 + - record: job:http_inprogress_requests:sum:2060 + expr: vector(1) + labels: + job: job2060 + - record: job:http_inprogress_requests:sum:2061 + expr: vector(1) + labels: + job: job2061 + - record: job:http_inprogress_requests:sum:2062 + expr: vector(1) + labels: + job: job2062 + - record: job:http_inprogress_requests:sum:2063 + expr: vector(1) + labels: + job: job2063 + - record: job:http_inprogress_requests:sum:2064 + expr: vector(1) + labels: + job: job2064 + - record: job:http_inprogress_requests:sum:2065 + expr: vector(1) + labels: + job: job2065 + - record: job:http_inprogress_requests:sum:2066 + expr: vector(1) + labels: + job: job2066 + - record: job:http_inprogress_requests:sum:2067 + expr: vector(1) + labels: + job: job2067 + - record: job:http_inprogress_requests:sum:2068 + expr: vector(1) + labels: + job: job2068 + - record: job:http_inprogress_requests:sum:2069 + expr: vector(1) + labels: + job: job2069 + - record: job:http_inprogress_requests:sum:2070 + expr: vector(1) + labels: + job: job2070 + - record: job:http_inprogress_requests:sum:2071 + expr: vector(1) + labels: + job: job2071 + - record: job:http_inprogress_requests:sum:2072 + expr: vector(1) + labels: + job: job2072 + - record: job:http_inprogress_requests:sum:2073 + expr: vector(1) + labels: + job: job2073 + - record: job:http_inprogress_requests:sum:2074 + expr: vector(1) + labels: + job: job2074 + - record: job:http_inprogress_requests:sum:2075 + expr: vector(1) + labels: + job: job2075 + - record: job:http_inprogress_requests:sum:2076 + expr: vector(1) + labels: + job: job2076 + - record: job:http_inprogress_requests:sum:2077 + expr: vector(1) + labels: + job: job2077 + - record: job:http_inprogress_requests:sum:2078 + expr: vector(1) + labels: + job: job2078 + - record: job:http_inprogress_requests:sum:2079 + expr: vector(1) + labels: + job: job2079 + - record: job:http_inprogress_requests:sum:2080 + expr: vector(1) + labels: + job: job2080 + - record: job:http_inprogress_requests:sum:2081 + expr: vector(1) + labels: + job: job2081 + - record: job:http_inprogress_requests:sum:2082 + expr: vector(1) + labels: + job: job2082 + - record: job:http_inprogress_requests:sum:2083 + expr: vector(1) + labels: + job: job2083 + - record: job:http_inprogress_requests:sum:2084 + expr: vector(1) + labels: + job: job2084 + - record: job:http_inprogress_requests:sum:2085 + expr: vector(1) + labels: + job: job2085 + - record: job:http_inprogress_requests:sum:2086 + expr: vector(1) + labels: + job: job2086 + - record: job:http_inprogress_requests:sum:2087 + expr: vector(1) + labels: + job: job2087 + - record: job:http_inprogress_requests:sum:2088 + expr: vector(1) + labels: + job: job2088 + - record: job:http_inprogress_requests:sum:2089 + expr: vector(1) + labels: + job: job2089 + - record: job:http_inprogress_requests:sum:2090 + expr: vector(1) + labels: + job: job2090 + - record: job:http_inprogress_requests:sum:2091 + expr: vector(1) + labels: + job: job2091 + - record: job:http_inprogress_requests:sum:2092 + expr: vector(1) + labels: + job: job2092 + - record: job:http_inprogress_requests:sum:2093 + expr: vector(1) + labels: + job: job2093 + - record: job:http_inprogress_requests:sum:2094 + expr: vector(1) + labels: + job: job2094 + - record: job:http_inprogress_requests:sum:2095 + expr: vector(1) + labels: + job: job2095 + - record: job:http_inprogress_requests:sum:2096 + expr: vector(1) + labels: + job: job2096 + - record: job:http_inprogress_requests:sum:2097 + expr: vector(1) + labels: + job: job2097 + - record: job:http_inprogress_requests:sum:2098 + expr: vector(1) + labels: + job: job2098 + - record: job:http_inprogress_requests:sum:2099 + expr: vector(1) + labels: + job: job2099 + - record: job:http_inprogress_requests:sum:2100 + expr: vector(1) + labels: + job: job2100 + - record: job:http_inprogress_requests:sum:2101 + expr: vector(1) + labels: + job: job2101 + - record: job:http_inprogress_requests:sum:2102 + expr: vector(1) + labels: + job: job2102 + - record: job:http_inprogress_requests:sum:2103 + expr: vector(1) + labels: + job: job2103 + - record: job:http_inprogress_requests:sum:2104 + expr: vector(1) + labels: + job: job2104 + - record: job:http_inprogress_requests:sum:2105 + expr: vector(1) + labels: + job: job2105 + - record: job:http_inprogress_requests:sum:2106 + expr: vector(1) + labels: + job: job2106 + - record: job:http_inprogress_requests:sum:2107 + expr: vector(1) + labels: + job: job2107 + - record: job:http_inprogress_requests:sum:2108 + expr: vector(1) + labels: + job: job2108 + - record: job:http_inprogress_requests:sum:2109 + expr: vector(1) + labels: + job: job2109 + - record: job:http_inprogress_requests:sum:2110 + expr: vector(1) + labels: + job: job2110 + - record: job:http_inprogress_requests:sum:2111 + expr: vector(1) + labels: + job: job2111 + - record: job:http_inprogress_requests:sum:2112 + expr: vector(1) + labels: + job: job2112 + - record: job:http_inprogress_requests:sum:2113 + expr: vector(1) + labels: + job: job2113 + - record: job:http_inprogress_requests:sum:2114 + expr: vector(1) + labels: + job: job2114 + - record: job:http_inprogress_requests:sum:2115 + expr: vector(1) + labels: + job: job2115 + - record: job:http_inprogress_requests:sum:2116 + expr: vector(1) + labels: + job: job2116 + - record: job:http_inprogress_requests:sum:2117 + expr: vector(1) + labels: + job: job2117 + - record: job:http_inprogress_requests:sum:2118 + expr: vector(1) + labels: + job: job2118 + - record: job:http_inprogress_requests:sum:2119 + expr: vector(1) + labels: + job: job2119 + - record: job:http_inprogress_requests:sum:2120 + expr: vector(1) + labels: + job: job2120 + - record: job:http_inprogress_requests:sum:2121 + expr: vector(1) + labels: + job: job2121 + - record: job:http_inprogress_requests:sum:2122 + expr: vector(1) + labels: + job: job2122 + - record: job:http_inprogress_requests:sum:2123 + expr: vector(1) + labels: + job: job2123 + - record: job:http_inprogress_requests:sum:2124 + expr: vector(1) + labels: + job: job2124 + - record: job:http_inprogress_requests:sum:2125 + expr: vector(1) + labels: + job: job2125 + - record: job:http_inprogress_requests:sum:2126 + expr: vector(1) + labels: + job: job2126 + - record: job:http_inprogress_requests:sum:2127 + expr: vector(1) + labels: + job: job2127 + - record: job:http_inprogress_requests:sum:2128 + expr: vector(1) + labels: + job: job2128 + - record: job:http_inprogress_requests:sum:2129 + expr: vector(1) + labels: + job: job2129 + - record: job:http_inprogress_requests:sum:2130 + expr: vector(1) + labels: + job: job2130 + - record: job:http_inprogress_requests:sum:2131 + expr: vector(1) + labels: + job: job2131 + - record: job:http_inprogress_requests:sum:2132 + expr: vector(1) + labels: + job: job2132 + - record: job:http_inprogress_requests:sum:2133 + expr: vector(1) + labels: + job: job2133 + - record: job:http_inprogress_requests:sum:2134 + expr: vector(1) + labels: + job: job2134 + - record: job:http_inprogress_requests:sum:2135 + expr: vector(1) + labels: + job: job2135 + - record: job:http_inprogress_requests:sum:2136 + expr: vector(1) + labels: + job: job2136 + - record: job:http_inprogress_requests:sum:2137 + expr: vector(1) + labels: + job: job2137 + - record: job:http_inprogress_requests:sum:2138 + expr: vector(1) + labels: + job: job2138 + - record: job:http_inprogress_requests:sum:2139 + expr: vector(1) + labels: + job: job2139 + - record: job:http_inprogress_requests:sum:2140 + expr: vector(1) + labels: + job: job2140 + - record: job:http_inprogress_requests:sum:2141 + expr: vector(1) + labels: + job: job2141 + - record: job:http_inprogress_requests:sum:2142 + expr: vector(1) + labels: + job: job2142 + - record: job:http_inprogress_requests:sum:2143 + expr: vector(1) + labels: + job: job2143 + - record: job:http_inprogress_requests:sum:2144 + expr: vector(1) + labels: + job: job2144 + - record: job:http_inprogress_requests:sum:2145 + expr: vector(1) + labels: + job: job2145 + - record: job:http_inprogress_requests:sum:2146 + expr: vector(1) + labels: + job: job2146 + - record: job:http_inprogress_requests:sum:2147 + expr: vector(1) + labels: + job: job2147 + - record: job:http_inprogress_requests:sum:2148 + expr: vector(1) + labels: + job: job2148 + - record: job:http_inprogress_requests:sum:2149 + expr: vector(1) + labels: + job: job2149 + - record: job:http_inprogress_requests:sum:2150 + expr: vector(1) + labels: + job: job2150 + - record: job:http_inprogress_requests:sum:2151 + expr: vector(1) + labels: + job: job2151 + - record: job:http_inprogress_requests:sum:2152 + expr: vector(1) + labels: + job: job2152 + - record: job:http_inprogress_requests:sum:2153 + expr: vector(1) + labels: + job: job2153 + - record: job:http_inprogress_requests:sum:2154 + expr: vector(1) + labels: + job: job2154 + - record: job:http_inprogress_requests:sum:2155 + expr: vector(1) + labels: + job: job2155 + - record: job:http_inprogress_requests:sum:2156 + expr: vector(1) + labels: + job: job2156 + - record: job:http_inprogress_requests:sum:2157 + expr: vector(1) + labels: + job: job2157 + - record: job:http_inprogress_requests:sum:2158 + expr: vector(1) + labels: + job: job2158 + - record: job:http_inprogress_requests:sum:2159 + expr: vector(1) + labels: + job: job2159 + - record: job:http_inprogress_requests:sum:2160 + expr: vector(1) + labels: + job: job2160 + - record: job:http_inprogress_requests:sum:2161 + expr: vector(1) + labels: + job: job2161 + - record: job:http_inprogress_requests:sum:2162 + expr: vector(1) + labels: + job: job2162 + - record: job:http_inprogress_requests:sum:2163 + expr: vector(1) + labels: + job: job2163 + - record: job:http_inprogress_requests:sum:2164 + expr: vector(1) + labels: + job: job2164 + - record: job:http_inprogress_requests:sum:2165 + expr: vector(1) + labels: + job: job2165 + - record: job:http_inprogress_requests:sum:2166 + expr: vector(1) + labels: + job: job2166 + - record: job:http_inprogress_requests:sum:2167 + expr: vector(1) + labels: + job: job2167 + - record: job:http_inprogress_requests:sum:2168 + expr: vector(1) + labels: + job: job2168 + - record: job:http_inprogress_requests:sum:2169 + expr: vector(1) + labels: + job: job2169 + - record: job:http_inprogress_requests:sum:2170 + expr: vector(1) + labels: + job: job2170 + - record: job:http_inprogress_requests:sum:2171 + expr: vector(1) + labels: + job: job2171 + - record: job:http_inprogress_requests:sum:2172 + expr: vector(1) + labels: + job: job2172 + - record: job:http_inprogress_requests:sum:2173 + expr: vector(1) + labels: + job: job2173 + - record: job:http_inprogress_requests:sum:2174 + expr: vector(1) + labels: + job: job2174 + - record: job:http_inprogress_requests:sum:2175 + expr: vector(1) + labels: + job: job2175 + - record: job:http_inprogress_requests:sum:2176 + expr: vector(1) + labels: + job: job2176 + - record: job:http_inprogress_requests:sum:2177 + expr: vector(1) + labels: + job: job2177 + - record: job:http_inprogress_requests:sum:2178 + expr: vector(1) + labels: + job: job2178 + - record: job:http_inprogress_requests:sum:2179 + expr: vector(1) + labels: + job: job2179 + - record: job:http_inprogress_requests:sum:2180 + expr: vector(1) + labels: + job: job2180 + - record: job:http_inprogress_requests:sum:2181 + expr: vector(1) + labels: + job: job2181 + - record: job:http_inprogress_requests:sum:2182 + expr: vector(1) + labels: + job: job2182 + - record: job:http_inprogress_requests:sum:2183 + expr: vector(1) + labels: + job: job2183 + - record: job:http_inprogress_requests:sum:2184 + expr: vector(1) + labels: + job: job2184 + - record: job:http_inprogress_requests:sum:2185 + expr: vector(1) + labels: + job: job2185 + - record: job:http_inprogress_requests:sum:2186 + expr: vector(1) + labels: + job: job2186 + - record: job:http_inprogress_requests:sum:2187 + expr: vector(1) + labels: + job: job2187 + - record: job:http_inprogress_requests:sum:2188 + expr: vector(1) + labels: + job: job2188 + - record: job:http_inprogress_requests:sum:2189 + expr: vector(1) + labels: + job: job2189 + - record: job:http_inprogress_requests:sum:2190 + expr: vector(1) + labels: + job: job2190 + - record: job:http_inprogress_requests:sum:2191 + expr: vector(1) + labels: + job: job2191 + - record: job:http_inprogress_requests:sum:2192 + expr: vector(1) + labels: + job: job2192 + - record: job:http_inprogress_requests:sum:2193 + expr: vector(1) + labels: + job: job2193 + - record: job:http_inprogress_requests:sum:2194 + expr: vector(1) + labels: + job: job2194 + - record: job:http_inprogress_requests:sum:2195 + expr: vector(1) + labels: + job: job2195 + - record: job:http_inprogress_requests:sum:2196 + expr: vector(1) + labels: + job: job2196 + - record: job:http_inprogress_requests:sum:2197 + expr: vector(1) + labels: + job: job2197 + - record: job:http_inprogress_requests:sum:2198 + expr: vector(1) + labels: + job: job2198 + - record: job:http_inprogress_requests:sum:2199 + expr: vector(1) + labels: + job: job2199 + - record: job:http_inprogress_requests:sum:2200 + expr: vector(1) + labels: + job: job2200 + - record: job:http_inprogress_requests:sum:2201 + expr: vector(1) + labels: + job: job2201 + - record: job:http_inprogress_requests:sum:2202 + expr: vector(1) + labels: + job: job2202 + - record: job:http_inprogress_requests:sum:2203 + expr: vector(1) + labels: + job: job2203 + - record: job:http_inprogress_requests:sum:2204 + expr: vector(1) + labels: + job: job2204 + - record: job:http_inprogress_requests:sum:2205 + expr: vector(1) + labels: + job: job2205 + - record: job:http_inprogress_requests:sum:2206 + expr: vector(1) + labels: + job: job2206 + - record: job:http_inprogress_requests:sum:2207 + expr: vector(1) + labels: + job: job2207 + - record: job:http_inprogress_requests:sum:2208 + expr: vector(1) + labels: + job: job2208 + - record: job:http_inprogress_requests:sum:2209 + expr: vector(1) + labels: + job: job2209 + - record: job:http_inprogress_requests:sum:2210 + expr: vector(1) + labels: + job: job2210 + - record: job:http_inprogress_requests:sum:2211 + expr: vector(1) + labels: + job: job2211 + - record: job:http_inprogress_requests:sum:2212 + expr: vector(1) + labels: + job: job2212 + - record: job:http_inprogress_requests:sum:2213 + expr: vector(1) + labels: + job: job2213 + - record: job:http_inprogress_requests:sum:2214 + expr: vector(1) + labels: + job: job2214 + - record: job:http_inprogress_requests:sum:2215 + expr: vector(1) + labels: + job: job2215 + - record: job:http_inprogress_requests:sum:2216 + expr: vector(1) + labels: + job: job2216 + - record: job:http_inprogress_requests:sum:2217 + expr: vector(1) + labels: + job: job2217 + - record: job:http_inprogress_requests:sum:2218 + expr: vector(1) + labels: + job: job2218 + - record: job:http_inprogress_requests:sum:2219 + expr: vector(1) + labels: + job: job2219 + - record: job:http_inprogress_requests:sum:2220 + expr: vector(1) + labels: + job: job2220 + - record: job:http_inprogress_requests:sum:2221 + expr: vector(1) + labels: + job: job2221 + - record: job:http_inprogress_requests:sum:2222 + expr: vector(1) + labels: + job: job2222 + - record: job:http_inprogress_requests:sum:2223 + expr: vector(1) + labels: + job: job2223 + - record: job:http_inprogress_requests:sum:2224 + expr: vector(1) + labels: + job: job2224 + - record: job:http_inprogress_requests:sum:2225 + expr: vector(1) + labels: + job: job2225 + - record: job:http_inprogress_requests:sum:2226 + expr: vector(1) + labels: + job: job2226 + - record: job:http_inprogress_requests:sum:2227 + expr: vector(1) + labels: + job: job2227 + - record: job:http_inprogress_requests:sum:2228 + expr: vector(1) + labels: + job: job2228 + - record: job:http_inprogress_requests:sum:2229 + expr: vector(1) + labels: + job: job2229 + - record: job:http_inprogress_requests:sum:2230 + expr: vector(1) + labels: + job: job2230 + - record: job:http_inprogress_requests:sum:2231 + expr: vector(1) + labels: + job: job2231 + - record: job:http_inprogress_requests:sum:2232 + expr: vector(1) + labels: + job: job2232 + - record: job:http_inprogress_requests:sum:2233 + expr: vector(1) + labels: + job: job2233 + - record: job:http_inprogress_requests:sum:2234 + expr: vector(1) + labels: + job: job2234 + - record: job:http_inprogress_requests:sum:2235 + expr: vector(1) + labels: + job: job2235 + - record: job:http_inprogress_requests:sum:2236 + expr: vector(1) + labels: + job: job2236 + - record: job:http_inprogress_requests:sum:2237 + expr: vector(1) + labels: + job: job2237 + - record: job:http_inprogress_requests:sum:2238 + expr: vector(1) + labels: + job: job2238 + - record: job:http_inprogress_requests:sum:2239 + expr: vector(1) + labels: + job: job2239 + - record: job:http_inprogress_requests:sum:2240 + expr: vector(1) + labels: + job: job2240 + - record: job:http_inprogress_requests:sum:2241 + expr: vector(1) + labels: + job: job2241 + - record: job:http_inprogress_requests:sum:2242 + expr: vector(1) + labels: + job: job2242 + - record: job:http_inprogress_requests:sum:2243 + expr: vector(1) + labels: + job: job2243 + - record: job:http_inprogress_requests:sum:2244 + expr: vector(1) + labels: + job: job2244 + - record: job:http_inprogress_requests:sum:2245 + expr: vector(1) + labels: + job: job2245 + - record: job:http_inprogress_requests:sum:2246 + expr: vector(1) + labels: + job: job2246 + - record: job:http_inprogress_requests:sum:2247 + expr: vector(1) + labels: + job: job2247 + - record: job:http_inprogress_requests:sum:2248 + expr: vector(1) + labels: + job: job2248 + - record: job:http_inprogress_requests:sum:2249 + expr: vector(1) + labels: + job: job2249 + - record: job:http_inprogress_requests:sum:2250 + expr: vector(1) + labels: + job: job2250 + - record: job:http_inprogress_requests:sum:2251 + expr: vector(1) + labels: + job: job2251 + - record: job:http_inprogress_requests:sum:2252 + expr: vector(1) + labels: + job: job2252 + - record: job:http_inprogress_requests:sum:2253 + expr: vector(1) + labels: + job: job2253 + - record: job:http_inprogress_requests:sum:2254 + expr: vector(1) + labels: + job: job2254 + - record: job:http_inprogress_requests:sum:2255 + expr: vector(1) + labels: + job: job2255 + - record: job:http_inprogress_requests:sum:2256 + expr: vector(1) + labels: + job: job2256 + - record: job:http_inprogress_requests:sum:2257 + expr: vector(1) + labels: + job: job2257 + - record: job:http_inprogress_requests:sum:2258 + expr: vector(1) + labels: + job: job2258 + - record: job:http_inprogress_requests:sum:2259 + expr: vector(1) + labels: + job: job2259 + - record: job:http_inprogress_requests:sum:2260 + expr: vector(1) + labels: + job: job2260 + - record: job:http_inprogress_requests:sum:2261 + expr: vector(1) + labels: + job: job2261 + - record: job:http_inprogress_requests:sum:2262 + expr: vector(1) + labels: + job: job2262 + - record: job:http_inprogress_requests:sum:2263 + expr: vector(1) + labels: + job: job2263 + - record: job:http_inprogress_requests:sum:2264 + expr: vector(1) + labels: + job: job2264 + - record: job:http_inprogress_requests:sum:2265 + expr: vector(1) + labels: + job: job2265 + - record: job:http_inprogress_requests:sum:2266 + expr: vector(1) + labels: + job: job2266 + - record: job:http_inprogress_requests:sum:2267 + expr: vector(1) + labels: + job: job2267 + - record: job:http_inprogress_requests:sum:2268 + expr: vector(1) + labels: + job: job2268 + - record: job:http_inprogress_requests:sum:2269 + expr: vector(1) + labels: + job: job2269 + - record: job:http_inprogress_requests:sum:2270 + expr: vector(1) + labels: + job: job2270 + - record: job:http_inprogress_requests:sum:2271 + expr: vector(1) + labels: + job: job2271 + - record: job:http_inprogress_requests:sum:2272 + expr: vector(1) + labels: + job: job2272 + - record: job:http_inprogress_requests:sum:2273 + expr: vector(1) + labels: + job: job2273 + - record: job:http_inprogress_requests:sum:2274 + expr: vector(1) + labels: + job: job2274 + - record: job:http_inprogress_requests:sum:2275 + expr: vector(1) + labels: + job: job2275 + - record: job:http_inprogress_requests:sum:2276 + expr: vector(1) + labels: + job: job2276 + - record: job:http_inprogress_requests:sum:2277 + expr: vector(1) + labels: + job: job2277 + - record: job:http_inprogress_requests:sum:2278 + expr: vector(1) + labels: + job: job2278 + - record: job:http_inprogress_requests:sum:2279 + expr: vector(1) + labels: + job: job2279 + - record: job:http_inprogress_requests:sum:2280 + expr: vector(1) + labels: + job: job2280 + - record: job:http_inprogress_requests:sum:2281 + expr: vector(1) + labels: + job: job2281 + - record: job:http_inprogress_requests:sum:2282 + expr: vector(1) + labels: + job: job2282 + - record: job:http_inprogress_requests:sum:2283 + expr: vector(1) + labels: + job: job2283 + - record: job:http_inprogress_requests:sum:2284 + expr: vector(1) + labels: + job: job2284 + - record: job:http_inprogress_requests:sum:2285 + expr: vector(1) + labels: + job: job2285 + - record: job:http_inprogress_requests:sum:2286 + expr: vector(1) + labels: + job: job2286 + - record: job:http_inprogress_requests:sum:2287 + expr: vector(1) + labels: + job: job2287 + - record: job:http_inprogress_requests:sum:2288 + expr: vector(1) + labels: + job: job2288 + - record: job:http_inprogress_requests:sum:2289 + expr: vector(1) + labels: + job: job2289 + - record: job:http_inprogress_requests:sum:2290 + expr: vector(1) + labels: + job: job2290 + - record: job:http_inprogress_requests:sum:2291 + expr: vector(1) + labels: + job: job2291 + - record: job:http_inprogress_requests:sum:2292 + expr: vector(1) + labels: + job: job2292 + - record: job:http_inprogress_requests:sum:2293 + expr: vector(1) + labels: + job: job2293 + - record: job:http_inprogress_requests:sum:2294 + expr: vector(1) + labels: + job: job2294 + - record: job:http_inprogress_requests:sum:2295 + expr: vector(1) + labels: + job: job2295 + - record: job:http_inprogress_requests:sum:2296 + expr: vector(1) + labels: + job: job2296 + - record: job:http_inprogress_requests:sum:2297 + expr: vector(1) + labels: + job: job2297 + - record: job:http_inprogress_requests:sum:2298 + expr: vector(1) + labels: + job: job2298 + - record: job:http_inprogress_requests:sum:2299 + expr: vector(1) + labels: + job: job2299 + - record: job:http_inprogress_requests:sum:2300 + expr: vector(1) + labels: + job: job2300 + - record: job:http_inprogress_requests:sum:2301 + expr: vector(1) + labels: + job: job2301 + - record: job:http_inprogress_requests:sum:2302 + expr: vector(1) + labels: + job: job2302 + - record: job:http_inprogress_requests:sum:2303 + expr: vector(1) + labels: + job: job2303 + - record: job:http_inprogress_requests:sum:2304 + expr: vector(1) + labels: + job: job2304 + - record: job:http_inprogress_requests:sum:2305 + expr: vector(1) + labels: + job: job2305 + - record: job:http_inprogress_requests:sum:2306 + expr: vector(1) + labels: + job: job2306 + - record: job:http_inprogress_requests:sum:2307 + expr: vector(1) + labels: + job: job2307 + - record: job:http_inprogress_requests:sum:2308 + expr: vector(1) + labels: + job: job2308 + - record: job:http_inprogress_requests:sum:2309 + expr: vector(1) + labels: + job: job2309 + - record: job:http_inprogress_requests:sum:2310 + expr: vector(1) + labels: + job: job2310 + - record: job:http_inprogress_requests:sum:2311 + expr: vector(1) + labels: + job: job2311 + - record: job:http_inprogress_requests:sum:2312 + expr: vector(1) + labels: + job: job2312 + - record: job:http_inprogress_requests:sum:2313 + expr: vector(1) + labels: + job: job2313 + - record: job:http_inprogress_requests:sum:2314 + expr: vector(1) + labels: + job: job2314 + - record: job:http_inprogress_requests:sum:2315 + expr: vector(1) + labels: + job: job2315 + - record: job:http_inprogress_requests:sum:2316 + expr: vector(1) + labels: + job: job2316 + - record: job:http_inprogress_requests:sum:2317 + expr: vector(1) + labels: + job: job2317 + - record: job:http_inprogress_requests:sum:2318 + expr: vector(1) + labels: + job: job2318 + - record: job:http_inprogress_requests:sum:2319 + expr: vector(1) + labels: + job: job2319 + - record: job:http_inprogress_requests:sum:2320 + expr: vector(1) + labels: + job: job2320 + - record: job:http_inprogress_requests:sum:2321 + expr: vector(1) + labels: + job: job2321 + - record: job:http_inprogress_requests:sum:2322 + expr: vector(1) + labels: + job: job2322 + - record: job:http_inprogress_requests:sum:2323 + expr: vector(1) + labels: + job: job2323 + - record: job:http_inprogress_requests:sum:2324 + expr: vector(1) + labels: + job: job2324 + - record: job:http_inprogress_requests:sum:2325 + expr: vector(1) + labels: + job: job2325 + - record: job:http_inprogress_requests:sum:2326 + expr: vector(1) + labels: + job: job2326 + - record: job:http_inprogress_requests:sum:2327 + expr: vector(1) + labels: + job: job2327 + - record: job:http_inprogress_requests:sum:2328 + expr: vector(1) + labels: + job: job2328 + - record: job:http_inprogress_requests:sum:2329 + expr: vector(1) + labels: + job: job2329 + - record: job:http_inprogress_requests:sum:2330 + expr: vector(1) + labels: + job: job2330 + - record: job:http_inprogress_requests:sum:2331 + expr: vector(1) + labels: + job: job2331 + - record: job:http_inprogress_requests:sum:2332 + expr: vector(1) + labels: + job: job2332 + - record: job:http_inprogress_requests:sum:2333 + expr: vector(1) + labels: + job: job2333 + - record: job:http_inprogress_requests:sum:2334 + expr: vector(1) + labels: + job: job2334 + - record: job:http_inprogress_requests:sum:2335 + expr: vector(1) + labels: + job: job2335 + - record: job:http_inprogress_requests:sum:2336 + expr: vector(1) + labels: + job: job2336 + - record: job:http_inprogress_requests:sum:2337 + expr: vector(1) + labels: + job: job2337 + - record: job:http_inprogress_requests:sum:2338 + expr: vector(1) + labels: + job: job2338 + - record: job:http_inprogress_requests:sum:2339 + expr: vector(1) + labels: + job: job2339 + - record: job:http_inprogress_requests:sum:2340 + expr: vector(1) + labels: + job: job2340 + - record: job:http_inprogress_requests:sum:2341 + expr: vector(1) + labels: + job: job2341 + - record: job:http_inprogress_requests:sum:2342 + expr: vector(1) + labels: + job: job2342 + - record: job:http_inprogress_requests:sum:2343 + expr: vector(1) + labels: + job: job2343 + - record: job:http_inprogress_requests:sum:2344 + expr: vector(1) + labels: + job: job2344 + - record: job:http_inprogress_requests:sum:2345 + expr: vector(1) + labels: + job: job2345 + - record: job:http_inprogress_requests:sum:2346 + expr: vector(1) + labels: + job: job2346 + - record: job:http_inprogress_requests:sum:2347 + expr: vector(1) + labels: + job: job2347 + - record: job:http_inprogress_requests:sum:2348 + expr: vector(1) + labels: + job: job2348 + - record: job:http_inprogress_requests:sum:2349 + expr: vector(1) + labels: + job: job2349 + - record: job:http_inprogress_requests:sum:2350 + expr: vector(1) + labels: + job: job2350 + - record: job:http_inprogress_requests:sum:2351 + expr: vector(1) + labels: + job: job2351 + - record: job:http_inprogress_requests:sum:2352 + expr: vector(1) + labels: + job: job2352 + - record: job:http_inprogress_requests:sum:2353 + expr: vector(1) + labels: + job: job2353 + - record: job:http_inprogress_requests:sum:2354 + expr: vector(1) + labels: + job: job2354 + - record: job:http_inprogress_requests:sum:2355 + expr: vector(1) + labels: + job: job2355 + - record: job:http_inprogress_requests:sum:2356 + expr: vector(1) + labels: + job: job2356 + - record: job:http_inprogress_requests:sum:2357 + expr: vector(1) + labels: + job: job2357 + - record: job:http_inprogress_requests:sum:2358 + expr: vector(1) + labels: + job: job2358 + - record: job:http_inprogress_requests:sum:2359 + expr: vector(1) + labels: + job: job2359 + - record: job:http_inprogress_requests:sum:2360 + expr: vector(1) + labels: + job: job2360 + - record: job:http_inprogress_requests:sum:2361 + expr: vector(1) + labels: + job: job2361 + - record: job:http_inprogress_requests:sum:2362 + expr: vector(1) + labels: + job: job2362 + - record: job:http_inprogress_requests:sum:2363 + expr: vector(1) + labels: + job: job2363 + - record: job:http_inprogress_requests:sum:2364 + expr: vector(1) + labels: + job: job2364 + - record: job:http_inprogress_requests:sum:2365 + expr: vector(1) + labels: + job: job2365 + - record: job:http_inprogress_requests:sum:2366 + expr: vector(1) + labels: + job: job2366 + - record: job:http_inprogress_requests:sum:2367 + expr: vector(1) + labels: + job: job2367 + - record: job:http_inprogress_requests:sum:2368 + expr: vector(1) + labels: + job: job2368 + - record: job:http_inprogress_requests:sum:2369 + expr: vector(1) + labels: + job: job2369 + - record: job:http_inprogress_requests:sum:2370 + expr: vector(1) + labels: + job: job2370 + - record: job:http_inprogress_requests:sum:2371 + expr: vector(1) + labels: + job: job2371 + - record: job:http_inprogress_requests:sum:2372 + expr: vector(1) + labels: + job: job2372 + - record: job:http_inprogress_requests:sum:2373 + expr: vector(1) + labels: + job: job2373 + - record: job:http_inprogress_requests:sum:2374 + expr: vector(1) + labels: + job: job2374 + - record: job:http_inprogress_requests:sum:2375 + expr: vector(1) + labels: + job: job2375 + - record: job:http_inprogress_requests:sum:2376 + expr: vector(1) + labels: + job: job2376 + - record: job:http_inprogress_requests:sum:2377 + expr: vector(1) + labels: + job: job2377 + - record: job:http_inprogress_requests:sum:2378 + expr: vector(1) + labels: + job: job2378 + - record: job:http_inprogress_requests:sum:2379 + expr: vector(1) + labels: + job: job2379 + - record: job:http_inprogress_requests:sum:2380 + expr: vector(1) + labels: + job: job2380 + - record: job:http_inprogress_requests:sum:2381 + expr: vector(1) + labels: + job: job2381 + - record: job:http_inprogress_requests:sum:2382 + expr: vector(1) + labels: + job: job2382 + - record: job:http_inprogress_requests:sum:2383 + expr: vector(1) + labels: + job: job2383 + - record: job:http_inprogress_requests:sum:2384 + expr: vector(1) + labels: + job: job2384 + - record: job:http_inprogress_requests:sum:2385 + expr: vector(1) + labels: + job: job2385 + - record: job:http_inprogress_requests:sum:2386 + expr: vector(1) + labels: + job: job2386 + - record: job:http_inprogress_requests:sum:2387 + expr: vector(1) + labels: + job: job2387 + - record: job:http_inprogress_requests:sum:2388 + expr: vector(1) + labels: + job: job2388 + - record: job:http_inprogress_requests:sum:2389 + expr: vector(1) + labels: + job: job2389 + - record: job:http_inprogress_requests:sum:2390 + expr: vector(1) + labels: + job: job2390 + - record: job:http_inprogress_requests:sum:2391 + expr: vector(1) + labels: + job: job2391 + - record: job:http_inprogress_requests:sum:2392 + expr: vector(1) + labels: + job: job2392 + - record: job:http_inprogress_requests:sum:2393 + expr: vector(1) + labels: + job: job2393 + - record: job:http_inprogress_requests:sum:2394 + expr: vector(1) + labels: + job: job2394 + - record: job:http_inprogress_requests:sum:2395 + expr: vector(1) + labels: + job: job2395 + - record: job:http_inprogress_requests:sum:2396 + expr: vector(1) + labels: + job: job2396 + - record: job:http_inprogress_requests:sum:2397 + expr: vector(1) + labels: + job: job2397 + - record: job:http_inprogress_requests:sum:2398 + expr: vector(1) + labels: + job: job2398 + - record: job:http_inprogress_requests:sum:2399 + expr: vector(1) + labels: + job: job2399 + - record: job:http_inprogress_requests:sum:2400 + expr: vector(1) + labels: + job: job2400 + - record: job:http_inprogress_requests:sum:2401 + expr: vector(1) + labels: + job: job2401 + - record: job:http_inprogress_requests:sum:2402 + expr: vector(1) + labels: + job: job2402 + - record: job:http_inprogress_requests:sum:2403 + expr: vector(1) + labels: + job: job2403 + - record: job:http_inprogress_requests:sum:2404 + expr: vector(1) + labels: + job: job2404 + - record: job:http_inprogress_requests:sum:2405 + expr: vector(1) + labels: + job: job2405 + - record: job:http_inprogress_requests:sum:2406 + expr: vector(1) + labels: + job: job2406 + - record: job:http_inprogress_requests:sum:2407 + expr: vector(1) + labels: + job: job2407 + - record: job:http_inprogress_requests:sum:2408 + expr: vector(1) + labels: + job: job2408 + - record: job:http_inprogress_requests:sum:2409 + expr: vector(1) + labels: + job: job2409 + - record: job:http_inprogress_requests:sum:2410 + expr: vector(1) + labels: + job: job2410 + - record: job:http_inprogress_requests:sum:2411 + expr: vector(1) + labels: + job: job2411 + - record: job:http_inprogress_requests:sum:2412 + expr: vector(1) + labels: + job: job2412 + - record: job:http_inprogress_requests:sum:2413 + expr: vector(1) + labels: + job: job2413 + - record: job:http_inprogress_requests:sum:2414 + expr: vector(1) + labels: + job: job2414 + - record: job:http_inprogress_requests:sum:2415 + expr: vector(1) + labels: + job: job2415 + - record: job:http_inprogress_requests:sum:2416 + expr: vector(1) + labels: + job: job2416 + - record: job:http_inprogress_requests:sum:2417 + expr: vector(1) + labels: + job: job2417 + - record: job:http_inprogress_requests:sum:2418 + expr: vector(1) + labels: + job: job2418 + - record: job:http_inprogress_requests:sum:2419 + expr: vector(1) + labels: + job: job2419 + - record: job:http_inprogress_requests:sum:2420 + expr: vector(1) + labels: + job: job2420 + - record: job:http_inprogress_requests:sum:2421 + expr: vector(1) + labels: + job: job2421 + - record: job:http_inprogress_requests:sum:2422 + expr: vector(1) + labels: + job: job2422 + - record: job:http_inprogress_requests:sum:2423 + expr: vector(1) + labels: + job: job2423 + - record: job:http_inprogress_requests:sum:2424 + expr: vector(1) + labels: + job: job2424 + - record: job:http_inprogress_requests:sum:2425 + expr: vector(1) + labels: + job: job2425 + - record: job:http_inprogress_requests:sum:2426 + expr: vector(1) + labels: + job: job2426 + - record: job:http_inprogress_requests:sum:2427 + expr: vector(1) + labels: + job: job2427 + - record: job:http_inprogress_requests:sum:2428 + expr: vector(1) + labels: + job: job2428 + - record: job:http_inprogress_requests:sum:2429 + expr: vector(1) + labels: + job: job2429 + - record: job:http_inprogress_requests:sum:2430 + expr: vector(1) + labels: + job: job2430 + - record: job:http_inprogress_requests:sum:2431 + expr: vector(1) + labels: + job: job2431 + - record: job:http_inprogress_requests:sum:2432 + expr: vector(1) + labels: + job: job2432 + - record: job:http_inprogress_requests:sum:2433 + expr: vector(1) + labels: + job: job2433 + - record: job:http_inprogress_requests:sum:2434 + expr: vector(1) + labels: + job: job2434 + - record: job:http_inprogress_requests:sum:2435 + expr: vector(1) + labels: + job: job2435 + - record: job:http_inprogress_requests:sum:2436 + expr: vector(1) + labels: + job: job2436 + - record: job:http_inprogress_requests:sum:2437 + expr: vector(1) + labels: + job: job2437 + - record: job:http_inprogress_requests:sum:2438 + expr: vector(1) + labels: + job: job2438 + - record: job:http_inprogress_requests:sum:2439 + expr: vector(1) + labels: + job: job2439 + - record: job:http_inprogress_requests:sum:2440 + expr: vector(1) + labels: + job: job2440 + - record: job:http_inprogress_requests:sum:2441 + expr: vector(1) + labels: + job: job2441 + - record: job:http_inprogress_requests:sum:2442 + expr: vector(1) + labels: + job: job2442 + - record: job:http_inprogress_requests:sum:2443 + expr: vector(1) + labels: + job: job2443 + - record: job:http_inprogress_requests:sum:2444 + expr: vector(1) + labels: + job: job2444 + - record: job:http_inprogress_requests:sum:2445 + expr: vector(1) + labels: + job: job2445 + - record: job:http_inprogress_requests:sum:2446 + expr: vector(1) + labels: + job: job2446 + - record: job:http_inprogress_requests:sum:2447 + expr: vector(1) + labels: + job: job2447 + - record: job:http_inprogress_requests:sum:2448 + expr: vector(1) + labels: + job: job2448 + - record: job:http_inprogress_requests:sum:2449 + expr: vector(1) + labels: + job: job2449 + - record: job:http_inprogress_requests:sum:2450 + expr: vector(1) + labels: + job: job2450 + - record: job:http_inprogress_requests:sum:2451 + expr: vector(1) + labels: + job: job2451 + - record: job:http_inprogress_requests:sum:2452 + expr: vector(1) + labels: + job: job2452 + - record: job:http_inprogress_requests:sum:2453 + expr: vector(1) + labels: + job: job2453 + - record: job:http_inprogress_requests:sum:2454 + expr: vector(1) + labels: + job: job2454 + - record: job:http_inprogress_requests:sum:2455 + expr: vector(1) + labels: + job: job2455 + - record: job:http_inprogress_requests:sum:2456 + expr: vector(1) + labels: + job: job2456 + - record: job:http_inprogress_requests:sum:2457 + expr: vector(1) + labels: + job: job2457 + - record: job:http_inprogress_requests:sum:2458 + expr: vector(1) + labels: + job: job2458 + - record: job:http_inprogress_requests:sum:2459 + expr: vector(1) + labels: + job: job2459 + - record: job:http_inprogress_requests:sum:2460 + expr: vector(1) + labels: + job: job2460 + - record: job:http_inprogress_requests:sum:2461 + expr: vector(1) + labels: + job: job2461 + - record: job:http_inprogress_requests:sum:2462 + expr: vector(1) + labels: + job: job2462 + - record: job:http_inprogress_requests:sum:2463 + expr: vector(1) + labels: + job: job2463 + - record: job:http_inprogress_requests:sum:2464 + expr: vector(1) + labels: + job: job2464 + - record: job:http_inprogress_requests:sum:2465 + expr: vector(1) + labels: + job: job2465 + - record: job:http_inprogress_requests:sum:2466 + expr: vector(1) + labels: + job: job2466 + - record: job:http_inprogress_requests:sum:2467 + expr: vector(1) + labels: + job: job2467 + - record: job:http_inprogress_requests:sum:2468 + expr: vector(1) + labels: + job: job2468 + - record: job:http_inprogress_requests:sum:2469 + expr: vector(1) + labels: + job: job2469 + - record: job:http_inprogress_requests:sum:2470 + expr: vector(1) + labels: + job: job2470 + - record: job:http_inprogress_requests:sum:2471 + expr: vector(1) + labels: + job: job2471 + - record: job:http_inprogress_requests:sum:2472 + expr: vector(1) + labels: + job: job2472 + - record: job:http_inprogress_requests:sum:2473 + expr: vector(1) + labels: + job: job2473 + - record: job:http_inprogress_requests:sum:2474 + expr: vector(1) + labels: + job: job2474 + - record: job:http_inprogress_requests:sum:2475 + expr: vector(1) + labels: + job: job2475 + - record: job:http_inprogress_requests:sum:2476 + expr: vector(1) + labels: + job: job2476 + - record: job:http_inprogress_requests:sum:2477 + expr: vector(1) + labels: + job: job2477 + - record: job:http_inprogress_requests:sum:2478 + expr: vector(1) + labels: + job: job2478 + - record: job:http_inprogress_requests:sum:2479 + expr: vector(1) + labels: + job: job2479 + - record: job:http_inprogress_requests:sum:2480 + expr: vector(1) + labels: + job: job2480 + - record: job:http_inprogress_requests:sum:2481 + expr: vector(1) + labels: + job: job2481 + - record: job:http_inprogress_requests:sum:2482 + expr: vector(1) + labels: + job: job2482 + - record: job:http_inprogress_requests:sum:2483 + expr: vector(1) + labels: + job: job2483 + - record: job:http_inprogress_requests:sum:2484 + expr: vector(1) + labels: + job: job2484 + - record: job:http_inprogress_requests:sum:2485 + expr: vector(1) + labels: + job: job2485 + - record: job:http_inprogress_requests:sum:2486 + expr: vector(1) + labels: + job: job2486 + - record: job:http_inprogress_requests:sum:2487 + expr: vector(1) + labels: + job: job2487 + - record: job:http_inprogress_requests:sum:2488 + expr: vector(1) + labels: + job: job2488 + - record: job:http_inprogress_requests:sum:2489 + expr: vector(1) + labels: + job: job2489 + - record: job:http_inprogress_requests:sum:2490 + expr: vector(1) + labels: + job: job2490 + - record: job:http_inprogress_requests:sum:2491 + expr: vector(1) + labels: + job: job2491 + - record: job:http_inprogress_requests:sum:2492 + expr: vector(1) + labels: + job: job2492 + - record: job:http_inprogress_requests:sum:2493 + expr: vector(1) + labels: + job: job2493 + - record: job:http_inprogress_requests:sum:2494 + expr: vector(1) + labels: + job: job2494 + - record: job:http_inprogress_requests:sum:2495 + expr: vector(1) + labels: + job: job2495 + - record: job:http_inprogress_requests:sum:2496 + expr: vector(1) + labels: + job: job2496 + - record: job:http_inprogress_requests:sum:2497 + expr: vector(1) + labels: + job: job2497 + - record: job:http_inprogress_requests:sum:2498 + expr: vector(1) + labels: + job: job2498 + - record: job:http_inprogress_requests:sum:2499 + expr: vector(1) + labels: + job: job2499 + - record: job:http_inprogress_requests:sum:2500 + expr: vector(1) + labels: + job: job2500 + - record: job:http_inprogress_requests:sum:2501 + expr: vector(1) + labels: + job: job2501 + - record: job:http_inprogress_requests:sum:2502 + expr: vector(1) + labels: + job: job2502 + - record: job:http_inprogress_requests:sum:2503 + expr: vector(1) + labels: + job: job2503 + - record: job:http_inprogress_requests:sum:2504 + expr: vector(1) + labels: + job: job2504 + - record: job:http_inprogress_requests:sum:2505 + expr: vector(1) + labels: + job: job2505 + - record: job:http_inprogress_requests:sum:2506 + expr: vector(1) + labels: + job: job2506 + - record: job:http_inprogress_requests:sum:2507 + expr: vector(1) + labels: + job: job2507 + - record: job:http_inprogress_requests:sum:2508 + expr: vector(1) + labels: + job: job2508 + - record: job:http_inprogress_requests:sum:2509 + expr: vector(1) + labels: + job: job2509 + - record: job:http_inprogress_requests:sum:2510 + expr: vector(1) + labels: + job: job2510 + - record: job:http_inprogress_requests:sum:2511 + expr: vector(1) + labels: + job: job2511 + - record: job:http_inprogress_requests:sum:2512 + expr: vector(1) + labels: + job: job2512 + - record: job:http_inprogress_requests:sum:2513 + expr: vector(1) + labels: + job: job2513 + - record: job:http_inprogress_requests:sum:2514 + expr: vector(1) + labels: + job: job2514 + - record: job:http_inprogress_requests:sum:2515 + expr: vector(1) + labels: + job: job2515 + - record: job:http_inprogress_requests:sum:2516 + expr: vector(1) + labels: + job: job2516 + - record: job:http_inprogress_requests:sum:2517 + expr: vector(1) + labels: + job: job2517 + - record: job:http_inprogress_requests:sum:2518 + expr: vector(1) + labels: + job: job2518 + - record: job:http_inprogress_requests:sum:2519 + expr: vector(1) + labels: + job: job2519 + - record: job:http_inprogress_requests:sum:2520 + expr: vector(1) + labels: + job: job2520 + - record: job:http_inprogress_requests:sum:2521 + expr: vector(1) + labels: + job: job2521 + - record: job:http_inprogress_requests:sum:2522 + expr: vector(1) + labels: + job: job2522 + - record: job:http_inprogress_requests:sum:2523 + expr: vector(1) + labels: + job: job2523 + - record: job:http_inprogress_requests:sum:2524 + expr: vector(1) + labels: + job: job2524 + - record: job:http_inprogress_requests:sum:2525 + expr: vector(1) + labels: + job: job2525 + - record: job:http_inprogress_requests:sum:2526 + expr: vector(1) + labels: + job: job2526 + - record: job:http_inprogress_requests:sum:2527 + expr: vector(1) + labels: + job: job2527 + - record: job:http_inprogress_requests:sum:2528 + expr: vector(1) + labels: + job: job2528 + - record: job:http_inprogress_requests:sum:2529 + expr: vector(1) + labels: + job: job2529 + - record: job:http_inprogress_requests:sum:2530 + expr: vector(1) + labels: + job: job2530 + - record: job:http_inprogress_requests:sum:2531 + expr: vector(1) + labels: + job: job2531 + - record: job:http_inprogress_requests:sum:2532 + expr: vector(1) + labels: + job: job2532 + - record: job:http_inprogress_requests:sum:2533 + expr: vector(1) + labels: + job: job2533 + - record: job:http_inprogress_requests:sum:2534 + expr: vector(1) + labels: + job: job2534 + - record: job:http_inprogress_requests:sum:2535 + expr: vector(1) + labels: + job: job2535 + - record: job:http_inprogress_requests:sum:2536 + expr: vector(1) + labels: + job: job2536 + - record: job:http_inprogress_requests:sum:2537 + expr: vector(1) + labels: + job: job2537 + - record: job:http_inprogress_requests:sum:2538 + expr: vector(1) + labels: + job: job2538 + - record: job:http_inprogress_requests:sum:2539 + expr: vector(1) + labels: + job: job2539 + - record: job:http_inprogress_requests:sum:2540 + expr: vector(1) + labels: + job: job2540 + - record: job:http_inprogress_requests:sum:2541 + expr: vector(1) + labels: + job: job2541 + - record: job:http_inprogress_requests:sum:2542 + expr: vector(1) + labels: + job: job2542 + - record: job:http_inprogress_requests:sum:2543 + expr: vector(1) + labels: + job: job2543 + - record: job:http_inprogress_requests:sum:2544 + expr: vector(1) + labels: + job: job2544 + - record: job:http_inprogress_requests:sum:2545 + expr: vector(1) + labels: + job: job2545 + - record: job:http_inprogress_requests:sum:2546 + expr: vector(1) + labels: + job: job2546 + - record: job:http_inprogress_requests:sum:2547 + expr: vector(1) + labels: + job: job2547 + - record: job:http_inprogress_requests:sum:2548 + expr: vector(1) + labels: + job: job2548 + - record: job:http_inprogress_requests:sum:2549 + expr: vector(1) + labels: + job: job2549 + - record: job:http_inprogress_requests:sum:2550 + expr: vector(1) + labels: + job: job2550 + - record: job:http_inprogress_requests:sum:2551 + expr: vector(1) + labels: + job: job2551 + - record: job:http_inprogress_requests:sum:2552 + expr: vector(1) + labels: + job: job2552 + - record: job:http_inprogress_requests:sum:2553 + expr: vector(1) + labels: + job: job2553 + - record: job:http_inprogress_requests:sum:2554 + expr: vector(1) + labels: + job: job2554 + - record: job:http_inprogress_requests:sum:2555 + expr: vector(1) + labels: + job: job2555 + - record: job:http_inprogress_requests:sum:2556 + expr: vector(1) + labels: + job: job2556 + - record: job:http_inprogress_requests:sum:2557 + expr: vector(1) + labels: + job: job2557 + - record: job:http_inprogress_requests:sum:2558 + expr: vector(1) + labels: + job: job2558 + - record: job:http_inprogress_requests:sum:2559 + expr: vector(1) + labels: + job: job2559 + - record: job:http_inprogress_requests:sum:2560 + expr: vector(1) + labels: + job: job2560 + - record: job:http_inprogress_requests:sum:2561 + expr: vector(1) + labels: + job: job2561 + - record: job:http_inprogress_requests:sum:2562 + expr: vector(1) + labels: + job: job2562 + - record: job:http_inprogress_requests:sum:2563 + expr: vector(1) + labels: + job: job2563 + - record: job:http_inprogress_requests:sum:2564 + expr: vector(1) + labels: + job: job2564 + - record: job:http_inprogress_requests:sum:2565 + expr: vector(1) + labels: + job: job2565 + - record: job:http_inprogress_requests:sum:2566 + expr: vector(1) + labels: + job: job2566 + - record: job:http_inprogress_requests:sum:2567 + expr: vector(1) + labels: + job: job2567 + - record: job:http_inprogress_requests:sum:2568 + expr: vector(1) + labels: + job: job2568 + - record: job:http_inprogress_requests:sum:2569 + expr: vector(1) + labels: + job: job2569 + - record: job:http_inprogress_requests:sum:2570 + expr: vector(1) + labels: + job: job2570 + - record: job:http_inprogress_requests:sum:2571 + expr: vector(1) + labels: + job: job2571 + - record: job:http_inprogress_requests:sum:2572 + expr: vector(1) + labels: + job: job2572 + - record: job:http_inprogress_requests:sum:2573 + expr: vector(1) + labels: + job: job2573 + - record: job:http_inprogress_requests:sum:2574 + expr: vector(1) + labels: + job: job2574 + - record: job:http_inprogress_requests:sum:2575 + expr: vector(1) + labels: + job: job2575 + - record: job:http_inprogress_requests:sum:2576 + expr: vector(1) + labels: + job: job2576 + - record: job:http_inprogress_requests:sum:2577 + expr: vector(1) + labels: + job: job2577 + - record: job:http_inprogress_requests:sum:2578 + expr: vector(1) + labels: + job: job2578 + - record: job:http_inprogress_requests:sum:2579 + expr: vector(1) + labels: + job: job2579 + - record: job:http_inprogress_requests:sum:2580 + expr: vector(1) + labels: + job: job2580 + - record: job:http_inprogress_requests:sum:2581 + expr: vector(1) + labels: + job: job2581 + - record: job:http_inprogress_requests:sum:2582 + expr: vector(1) + labels: + job: job2582 + - record: job:http_inprogress_requests:sum:2583 + expr: vector(1) + labels: + job: job2583 + - record: job:http_inprogress_requests:sum:2584 + expr: vector(1) + labels: + job: job2584 + - record: job:http_inprogress_requests:sum:2585 + expr: vector(1) + labels: + job: job2585 + - record: job:http_inprogress_requests:sum:2586 + expr: vector(1) + labels: + job: job2586 + - record: job:http_inprogress_requests:sum:2587 + expr: vector(1) + labels: + job: job2587 + - record: job:http_inprogress_requests:sum:2588 + expr: vector(1) + labels: + job: job2588 + - record: job:http_inprogress_requests:sum:2589 + expr: vector(1) + labels: + job: job2589 + - record: job:http_inprogress_requests:sum:2590 + expr: vector(1) + labels: + job: job2590 + - record: job:http_inprogress_requests:sum:2591 + expr: vector(1) + labels: + job: job2591 + - record: job:http_inprogress_requests:sum:2592 + expr: vector(1) + labels: + job: job2592 + - record: job:http_inprogress_requests:sum:2593 + expr: vector(1) + labels: + job: job2593 + - record: job:http_inprogress_requests:sum:2594 + expr: vector(1) + labels: + job: job2594 + - record: job:http_inprogress_requests:sum:2595 + expr: vector(1) + labels: + job: job2595 + - record: job:http_inprogress_requests:sum:2596 + expr: vector(1) + labels: + job: job2596 + - record: job:http_inprogress_requests:sum:2597 + expr: vector(1) + labels: + job: job2597 + - record: job:http_inprogress_requests:sum:2598 + expr: vector(1) + labels: + job: job2598 + - record: job:http_inprogress_requests:sum:2599 + expr: vector(1) + labels: + job: job2599 + - record: job:http_inprogress_requests:sum:2600 + expr: vector(1) + labels: + job: job2600 + - record: job:http_inprogress_requests:sum:2601 + expr: vector(1) + labels: + job: job2601 + - record: job:http_inprogress_requests:sum:2602 + expr: vector(1) + labels: + job: job2602 + - record: job:http_inprogress_requests:sum:2603 + expr: vector(1) + labels: + job: job2603 + - record: job:http_inprogress_requests:sum:2604 + expr: vector(1) + labels: + job: job2604 + - record: job:http_inprogress_requests:sum:2605 + expr: vector(1) + labels: + job: job2605 + - record: job:http_inprogress_requests:sum:2606 + expr: vector(1) + labels: + job: job2606 + - record: job:http_inprogress_requests:sum:2607 + expr: vector(1) + labels: + job: job2607 + - record: job:http_inprogress_requests:sum:2608 + expr: vector(1) + labels: + job: job2608 + - record: job:http_inprogress_requests:sum:2609 + expr: vector(1) + labels: + job: job2609 + - record: job:http_inprogress_requests:sum:2610 + expr: vector(1) + labels: + job: job2610 + - record: job:http_inprogress_requests:sum:2611 + expr: vector(1) + labels: + job: job2611 + - record: job:http_inprogress_requests:sum:2612 + expr: vector(1) + labels: + job: job2612 + - record: job:http_inprogress_requests:sum:2613 + expr: vector(1) + labels: + job: job2613 + - record: job:http_inprogress_requests:sum:2614 + expr: vector(1) + labels: + job: job2614 + - record: job:http_inprogress_requests:sum:2615 + expr: vector(1) + labels: + job: job2615 + - record: job:http_inprogress_requests:sum:2616 + expr: vector(1) + labels: + job: job2616 + - record: job:http_inprogress_requests:sum:2617 + expr: vector(1) + labels: + job: job2617 + - record: job:http_inprogress_requests:sum:2618 + expr: vector(1) + labels: + job: job2618 + - record: job:http_inprogress_requests:sum:2619 + expr: vector(1) + labels: + job: job2619 + - record: job:http_inprogress_requests:sum:2620 + expr: vector(1) + labels: + job: job2620 + - record: job:http_inprogress_requests:sum:2621 + expr: vector(1) + labels: + job: job2621 + - record: job:http_inprogress_requests:sum:2622 + expr: vector(1) + labels: + job: job2622 + - record: job:http_inprogress_requests:sum:2623 + expr: vector(1) + labels: + job: job2623 + - record: job:http_inprogress_requests:sum:2624 + expr: vector(1) + labels: + job: job2624 + - record: job:http_inprogress_requests:sum:2625 + expr: vector(1) + labels: + job: job2625 + - record: job:http_inprogress_requests:sum:2626 + expr: vector(1) + labels: + job: job2626 + - record: job:http_inprogress_requests:sum:2627 + expr: vector(1) + labels: + job: job2627 + - record: job:http_inprogress_requests:sum:2628 + expr: vector(1) + labels: + job: job2628 + - record: job:http_inprogress_requests:sum:2629 + expr: vector(1) + labels: + job: job2629 + - record: job:http_inprogress_requests:sum:2630 + expr: vector(1) + labels: + job: job2630 + - record: job:http_inprogress_requests:sum:2631 + expr: vector(1) + labels: + job: job2631 + - record: job:http_inprogress_requests:sum:2632 + expr: vector(1) + labels: + job: job2632 + - record: job:http_inprogress_requests:sum:2633 + expr: vector(1) + labels: + job: job2633 + - record: job:http_inprogress_requests:sum:2634 + expr: vector(1) + labels: + job: job2634 + - record: job:http_inprogress_requests:sum:2635 + expr: vector(1) + labels: + job: job2635 + - record: job:http_inprogress_requests:sum:2636 + expr: vector(1) + labels: + job: job2636 + - record: job:http_inprogress_requests:sum:2637 + expr: vector(1) + labels: + job: job2637 + - record: job:http_inprogress_requests:sum:2638 + expr: vector(1) + labels: + job: job2638 + - record: job:http_inprogress_requests:sum:2639 + expr: vector(1) + labels: + job: job2639 + - record: job:http_inprogress_requests:sum:2640 + expr: vector(1) + labels: + job: job2640 + - record: job:http_inprogress_requests:sum:2641 + expr: vector(1) + labels: + job: job2641 + - record: job:http_inprogress_requests:sum:2642 + expr: vector(1) + labels: + job: job2642 + - record: job:http_inprogress_requests:sum:2643 + expr: vector(1) + labels: + job: job2643 + - record: job:http_inprogress_requests:sum:2644 + expr: vector(1) + labels: + job: job2644 + - record: job:http_inprogress_requests:sum:2645 + expr: vector(1) + labels: + job: job2645 + - record: job:http_inprogress_requests:sum:2646 + expr: vector(1) + labels: + job: job2646 + - record: job:http_inprogress_requests:sum:2647 + expr: vector(1) + labels: + job: job2647 + - record: job:http_inprogress_requests:sum:2648 + expr: vector(1) + labels: + job: job2648 + - record: job:http_inprogress_requests:sum:2649 + expr: vector(1) + labels: + job: job2649 + - record: job:http_inprogress_requests:sum:2650 + expr: vector(1) + labels: + job: job2650 + - record: job:http_inprogress_requests:sum:2651 + expr: vector(1) + labels: + job: job2651 + - record: job:http_inprogress_requests:sum:2652 + expr: vector(1) + labels: + job: job2652 + - record: job:http_inprogress_requests:sum:2653 + expr: vector(1) + labels: + job: job2653 + - record: job:http_inprogress_requests:sum:2654 + expr: vector(1) + labels: + job: job2654 + - record: job:http_inprogress_requests:sum:2655 + expr: vector(1) + labels: + job: job2655 + - record: job:http_inprogress_requests:sum:2656 + expr: vector(1) + labels: + job: job2656 + - record: job:http_inprogress_requests:sum:2657 + expr: vector(1) + labels: + job: job2657 + - record: job:http_inprogress_requests:sum:2658 + expr: vector(1) + labels: + job: job2658 + - record: job:http_inprogress_requests:sum:2659 + expr: vector(1) + labels: + job: job2659 + - record: job:http_inprogress_requests:sum:2660 + expr: vector(1) + labels: + job: job2660 + - record: job:http_inprogress_requests:sum:2661 + expr: vector(1) + labels: + job: job2661 + - record: job:http_inprogress_requests:sum:2662 + expr: vector(1) + labels: + job: job2662 + - record: job:http_inprogress_requests:sum:2663 + expr: vector(1) + labels: + job: job2663 + - record: job:http_inprogress_requests:sum:2664 + expr: vector(1) + labels: + job: job2664 + - record: job:http_inprogress_requests:sum:2665 + expr: vector(1) + labels: + job: job2665 + - record: job:http_inprogress_requests:sum:2666 + expr: vector(1) + labels: + job: job2666 + - record: job:http_inprogress_requests:sum:2667 + expr: vector(1) + labels: + job: job2667 + - record: job:http_inprogress_requests:sum:2668 + expr: vector(1) + labels: + job: job2668 + - record: job:http_inprogress_requests:sum:2669 + expr: vector(1) + labels: + job: job2669 + - record: job:http_inprogress_requests:sum:2670 + expr: vector(1) + labels: + job: job2670 + - record: job:http_inprogress_requests:sum:2671 + expr: vector(1) + labels: + job: job2671 + - record: job:http_inprogress_requests:sum:2672 + expr: vector(1) + labels: + job: job2672 + - record: job:http_inprogress_requests:sum:2673 + expr: vector(1) + labels: + job: job2673 + - record: job:http_inprogress_requests:sum:2674 + expr: vector(1) + labels: + job: job2674 + - record: job:http_inprogress_requests:sum:2675 + expr: vector(1) + labels: + job: job2675 + - record: job:http_inprogress_requests:sum:2676 + expr: vector(1) + labels: + job: job2676 + - record: job:http_inprogress_requests:sum:2677 + expr: vector(1) + labels: + job: job2677 + - record: job:http_inprogress_requests:sum:2678 + expr: vector(1) + labels: + job: job2678 + - record: job:http_inprogress_requests:sum:2679 + expr: vector(1) + labels: + job: job2679 + - record: job:http_inprogress_requests:sum:2680 + expr: vector(1) + labels: + job: job2680 + - record: job:http_inprogress_requests:sum:2681 + expr: vector(1) + labels: + job: job2681 + - record: job:http_inprogress_requests:sum:2682 + expr: vector(1) + labels: + job: job2682 + - record: job:http_inprogress_requests:sum:2683 + expr: vector(1) + labels: + job: job2683 + - record: job:http_inprogress_requests:sum:2684 + expr: vector(1) + labels: + job: job2684 + - record: job:http_inprogress_requests:sum:2685 + expr: vector(1) + labels: + job: job2685 + - record: job:http_inprogress_requests:sum:2686 + expr: vector(1) + labels: + job: job2686 + - record: job:http_inprogress_requests:sum:2687 + expr: vector(1) + labels: + job: job2687 + - record: job:http_inprogress_requests:sum:2688 + expr: vector(1) + labels: + job: job2688 + - record: job:http_inprogress_requests:sum:2689 + expr: vector(1) + labels: + job: job2689 + - record: job:http_inprogress_requests:sum:2690 + expr: vector(1) + labels: + job: job2690 + - record: job:http_inprogress_requests:sum:2691 + expr: vector(1) + labels: + job: job2691 + - record: job:http_inprogress_requests:sum:2692 + expr: vector(1) + labels: + job: job2692 + - record: job:http_inprogress_requests:sum:2693 + expr: vector(1) + labels: + job: job2693 + - record: job:http_inprogress_requests:sum:2694 + expr: vector(1) + labels: + job: job2694 + - record: job:http_inprogress_requests:sum:2695 + expr: vector(1) + labels: + job: job2695 + - record: job:http_inprogress_requests:sum:2696 + expr: vector(1) + labels: + job: job2696 + - record: job:http_inprogress_requests:sum:2697 + expr: vector(1) + labels: + job: job2697 + - record: job:http_inprogress_requests:sum:2698 + expr: vector(1) + labels: + job: job2698 + - record: job:http_inprogress_requests:sum:2699 + expr: vector(1) + labels: + job: job2699 + - record: job:http_inprogress_requests:sum:2700 + expr: vector(1) + labels: + job: job2700 + - record: job:http_inprogress_requests:sum:2701 + expr: vector(1) + labels: + job: job2701 + - record: job:http_inprogress_requests:sum:2702 + expr: vector(1) + labels: + job: job2702 + - record: job:http_inprogress_requests:sum:2703 + expr: vector(1) + labels: + job: job2703 + - record: job:http_inprogress_requests:sum:2704 + expr: vector(1) + labels: + job: job2704 + - record: job:http_inprogress_requests:sum:2705 + expr: vector(1) + labels: + job: job2705 + - record: job:http_inprogress_requests:sum:2706 + expr: vector(1) + labels: + job: job2706 + - record: job:http_inprogress_requests:sum:2707 + expr: vector(1) + labels: + job: job2707 + - record: job:http_inprogress_requests:sum:2708 + expr: vector(1) + labels: + job: job2708 + - record: job:http_inprogress_requests:sum:2709 + expr: vector(1) + labels: + job: job2709 + - record: job:http_inprogress_requests:sum:2710 + expr: vector(1) + labels: + job: job2710 + - record: job:http_inprogress_requests:sum:2711 + expr: vector(1) + labels: + job: job2711 + - record: job:http_inprogress_requests:sum:2712 + expr: vector(1) + labels: + job: job2712 + - record: job:http_inprogress_requests:sum:2713 + expr: vector(1) + labels: + job: job2713 + - record: job:http_inprogress_requests:sum:2714 + expr: vector(1) + labels: + job: job2714 + - record: job:http_inprogress_requests:sum:2715 + expr: vector(1) + labels: + job: job2715 + - record: job:http_inprogress_requests:sum:2716 + expr: vector(1) + labels: + job: job2716 + - record: job:http_inprogress_requests:sum:2717 + expr: vector(1) + labels: + job: job2717 + - record: job:http_inprogress_requests:sum:2718 + expr: vector(1) + labels: + job: job2718 + - record: job:http_inprogress_requests:sum:2719 + expr: vector(1) + labels: + job: job2719 + - record: job:http_inprogress_requests:sum:2720 + expr: vector(1) + labels: + job: job2720 + - record: job:http_inprogress_requests:sum:2721 + expr: vector(1) + labels: + job: job2721 + - record: job:http_inprogress_requests:sum:2722 + expr: vector(1) + labels: + job: job2722 + - record: job:http_inprogress_requests:sum:2723 + expr: vector(1) + labels: + job: job2723 + - record: job:http_inprogress_requests:sum:2724 + expr: vector(1) + labels: + job: job2724 + - record: job:http_inprogress_requests:sum:2725 + expr: vector(1) + labels: + job: job2725 + - record: job:http_inprogress_requests:sum:2726 + expr: vector(1) + labels: + job: job2726 + - record: job:http_inprogress_requests:sum:2727 + expr: vector(1) + labels: + job: job2727 + - record: job:http_inprogress_requests:sum:2728 + expr: vector(1) + labels: + job: job2728 + - record: job:http_inprogress_requests:sum:2729 + expr: vector(1) + labels: + job: job2729 + - record: job:http_inprogress_requests:sum:2730 + expr: vector(1) + labels: + job: job2730 + - record: job:http_inprogress_requests:sum:2731 + expr: vector(1) + labels: + job: job2731 + - record: job:http_inprogress_requests:sum:2732 + expr: vector(1) + labels: + job: job2732 + - record: job:http_inprogress_requests:sum:2733 + expr: vector(1) + labels: + job: job2733 + - record: job:http_inprogress_requests:sum:2734 + expr: vector(1) + labels: + job: job2734 + - record: job:http_inprogress_requests:sum:2735 + expr: vector(1) + labels: + job: job2735 + - record: job:http_inprogress_requests:sum:2736 + expr: vector(1) + labels: + job: job2736 + - record: job:http_inprogress_requests:sum:2737 + expr: vector(1) + labels: + job: job2737 + - record: job:http_inprogress_requests:sum:2738 + expr: vector(1) + labels: + job: job2738 + - record: job:http_inprogress_requests:sum:2739 + expr: vector(1) + labels: + job: job2739 + - record: job:http_inprogress_requests:sum:2740 + expr: vector(1) + labels: + job: job2740 + - record: job:http_inprogress_requests:sum:2741 + expr: vector(1) + labels: + job: job2741 + - record: job:http_inprogress_requests:sum:2742 + expr: vector(1) + labels: + job: job2742 + - record: job:http_inprogress_requests:sum:2743 + expr: vector(1) + labels: + job: job2743 + - record: job:http_inprogress_requests:sum:2744 + expr: vector(1) + labels: + job: job2744 + - record: job:http_inprogress_requests:sum:2745 + expr: vector(1) + labels: + job: job2745 + - record: job:http_inprogress_requests:sum:2746 + expr: vector(1) + labels: + job: job2746 + - record: job:http_inprogress_requests:sum:2747 + expr: vector(1) + labels: + job: job2747 + - record: job:http_inprogress_requests:sum:2748 + expr: vector(1) + labels: + job: job2748 + - record: job:http_inprogress_requests:sum:2749 + expr: vector(1) + labels: + job: job2749 + - record: job:http_inprogress_requests:sum:2750 + expr: vector(1) + labels: + job: job2750 + - record: job:http_inprogress_requests:sum:2751 + expr: vector(1) + labels: + job: job2751 + - record: job:http_inprogress_requests:sum:2752 + expr: vector(1) + labels: + job: job2752 + - record: job:http_inprogress_requests:sum:2753 + expr: vector(1) + labels: + job: job2753 + - record: job:http_inprogress_requests:sum:2754 + expr: vector(1) + labels: + job: job2754 + - record: job:http_inprogress_requests:sum:2755 + expr: vector(1) + labels: + job: job2755 + - record: job:http_inprogress_requests:sum:2756 + expr: vector(1) + labels: + job: job2756 + - record: job:http_inprogress_requests:sum:2757 + expr: vector(1) + labels: + job: job2757 + - record: job:http_inprogress_requests:sum:2758 + expr: vector(1) + labels: + job: job2758 + - record: job:http_inprogress_requests:sum:2759 + expr: vector(1) + labels: + job: job2759 + - record: job:http_inprogress_requests:sum:2760 + expr: vector(1) + labels: + job: job2760 + - record: job:http_inprogress_requests:sum:2761 + expr: vector(1) + labels: + job: job2761 + - record: job:http_inprogress_requests:sum:2762 + expr: vector(1) + labels: + job: job2762 + - record: job:http_inprogress_requests:sum:2763 + expr: vector(1) + labels: + job: job2763 + - record: job:http_inprogress_requests:sum:2764 + expr: vector(1) + labels: + job: job2764 + - record: job:http_inprogress_requests:sum:2765 + expr: vector(1) + labels: + job: job2765 + - record: job:http_inprogress_requests:sum:2766 + expr: vector(1) + labels: + job: job2766 + - record: job:http_inprogress_requests:sum:2767 + expr: vector(1) + labels: + job: job2767 + - record: job:http_inprogress_requests:sum:2768 + expr: vector(1) + labels: + job: job2768 + - record: job:http_inprogress_requests:sum:2769 + expr: vector(1) + labels: + job: job2769 + - record: job:http_inprogress_requests:sum:2770 + expr: vector(1) + labels: + job: job2770 + - record: job:http_inprogress_requests:sum:2771 + expr: vector(1) + labels: + job: job2771 + - record: job:http_inprogress_requests:sum:2772 + expr: vector(1) + labels: + job: job2772 + - record: job:http_inprogress_requests:sum:2773 + expr: vector(1) + labels: + job: job2773 + - record: job:http_inprogress_requests:sum:2774 + expr: vector(1) + labels: + job: job2774 + - record: job:http_inprogress_requests:sum:2775 + expr: vector(1) + labels: + job: job2775 + - record: job:http_inprogress_requests:sum:2776 + expr: vector(1) + labels: + job: job2776 + - record: job:http_inprogress_requests:sum:2777 + expr: vector(1) + labels: + job: job2777 + - record: job:http_inprogress_requests:sum:2778 + expr: vector(1) + labels: + job: job2778 + - record: job:http_inprogress_requests:sum:2779 + expr: vector(1) + labels: + job: job2779 + - record: job:http_inprogress_requests:sum:2780 + expr: vector(1) + labels: + job: job2780 + - record: job:http_inprogress_requests:sum:2781 + expr: vector(1) + labels: + job: job2781 + - record: job:http_inprogress_requests:sum:2782 + expr: vector(1) + labels: + job: job2782 + - record: job:http_inprogress_requests:sum:2783 + expr: vector(1) + labels: + job: job2783 + - record: job:http_inprogress_requests:sum:2784 + expr: vector(1) + labels: + job: job2784 + - record: job:http_inprogress_requests:sum:2785 + expr: vector(1) + labels: + job: job2785 + - record: job:http_inprogress_requests:sum:2786 + expr: vector(1) + labels: + job: job2786 + - record: job:http_inprogress_requests:sum:2787 + expr: vector(1) + labels: + job: job2787 + - record: job:http_inprogress_requests:sum:2788 + expr: vector(1) + labels: + job: job2788 + - record: job:http_inprogress_requests:sum:2789 + expr: vector(1) + labels: + job: job2789 + - record: job:http_inprogress_requests:sum:2790 + expr: vector(1) + labels: + job: job2790 + - record: job:http_inprogress_requests:sum:2791 + expr: vector(1) + labels: + job: job2791 + - record: job:http_inprogress_requests:sum:2792 + expr: vector(1) + labels: + job: job2792 + - record: job:http_inprogress_requests:sum:2793 + expr: vector(1) + labels: + job: job2793 + - record: job:http_inprogress_requests:sum:2794 + expr: vector(1) + labels: + job: job2794 + - record: job:http_inprogress_requests:sum:2795 + expr: vector(1) + labels: + job: job2795 + - record: job:http_inprogress_requests:sum:2796 + expr: vector(1) + labels: + job: job2796 + - record: job:http_inprogress_requests:sum:2797 + expr: vector(1) + labels: + job: job2797 + - record: job:http_inprogress_requests:sum:2798 + expr: vector(1) + labels: + job: job2798 + - record: job:http_inprogress_requests:sum:2799 + expr: vector(1) + labels: + job: job2799 + - record: job:http_inprogress_requests:sum:2800 + expr: vector(1) + labels: + job: job2800 + - record: job:http_inprogress_requests:sum:2801 + expr: vector(1) + labels: + job: job2801 + - record: job:http_inprogress_requests:sum:2802 + expr: vector(1) + labels: + job: job2802 + - record: job:http_inprogress_requests:sum:2803 + expr: vector(1) + labels: + job: job2803 + - record: job:http_inprogress_requests:sum:2804 + expr: vector(1) + labels: + job: job2804 + - record: job:http_inprogress_requests:sum:2805 + expr: vector(1) + labels: + job: job2805 + - record: job:http_inprogress_requests:sum:2806 + expr: vector(1) + labels: + job: job2806 + - record: job:http_inprogress_requests:sum:2807 + expr: vector(1) + labels: + job: job2807 + - record: job:http_inprogress_requests:sum:2808 + expr: vector(1) + labels: + job: job2808 + - record: job:http_inprogress_requests:sum:2809 + expr: vector(1) + labels: + job: job2809 + - record: job:http_inprogress_requests:sum:2810 + expr: vector(1) + labels: + job: job2810 + - record: job:http_inprogress_requests:sum:2811 + expr: vector(1) + labels: + job: job2811 + - record: job:http_inprogress_requests:sum:2812 + expr: vector(1) + labels: + job: job2812 + - record: job:http_inprogress_requests:sum:2813 + expr: vector(1) + labels: + job: job2813 + - record: job:http_inprogress_requests:sum:2814 + expr: vector(1) + labels: + job: job2814 + - record: job:http_inprogress_requests:sum:2815 + expr: vector(1) + labels: + job: job2815 + - record: job:http_inprogress_requests:sum:2816 + expr: vector(1) + labels: + job: job2816 + - record: job:http_inprogress_requests:sum:2817 + expr: vector(1) + labels: + job: job2817 + - record: job:http_inprogress_requests:sum:2818 + expr: vector(1) + labels: + job: job2818 + - record: job:http_inprogress_requests:sum:2819 + expr: vector(1) + labels: + job: job2819 + - record: job:http_inprogress_requests:sum:2820 + expr: vector(1) + labels: + job: job2820 + - record: job:http_inprogress_requests:sum:2821 + expr: vector(1) + labels: + job: job2821 + - record: job:http_inprogress_requests:sum:2822 + expr: vector(1) + labels: + job: job2822 + - record: job:http_inprogress_requests:sum:2823 + expr: vector(1) + labels: + job: job2823 + - record: job:http_inprogress_requests:sum:2824 + expr: vector(1) + labels: + job: job2824 + - record: job:http_inprogress_requests:sum:2825 + expr: vector(1) + labels: + job: job2825 + - record: job:http_inprogress_requests:sum:2826 + expr: vector(1) + labels: + job: job2826 + - record: job:http_inprogress_requests:sum:2827 + expr: vector(1) + labels: + job: job2827 + - record: job:http_inprogress_requests:sum:2828 + expr: vector(1) + labels: + job: job2828 + - record: job:http_inprogress_requests:sum:2829 + expr: vector(1) + labels: + job: job2829 + - record: job:http_inprogress_requests:sum:2830 + expr: vector(1) + labels: + job: job2830 + - record: job:http_inprogress_requests:sum:2831 + expr: vector(1) + labels: + job: job2831 + - record: job:http_inprogress_requests:sum:2832 + expr: vector(1) + labels: + job: job2832 + - record: job:http_inprogress_requests:sum:2833 + expr: vector(1) + labels: + job: job2833 + - record: job:http_inprogress_requests:sum:2834 + expr: vector(1) + labels: + job: job2834 + - record: job:http_inprogress_requests:sum:2835 + expr: vector(1) + labels: + job: job2835 + - record: job:http_inprogress_requests:sum:2836 + expr: vector(1) + labels: + job: job2836 + - record: job:http_inprogress_requests:sum:2837 + expr: vector(1) + labels: + job: job2837 + - record: job:http_inprogress_requests:sum:2838 + expr: vector(1) + labels: + job: job2838 + - record: job:http_inprogress_requests:sum:2839 + expr: vector(1) + labels: + job: job2839 + - record: job:http_inprogress_requests:sum:2840 + expr: vector(1) + labels: + job: job2840 + - record: job:http_inprogress_requests:sum:2841 + expr: vector(1) + labels: + job: job2841 + - record: job:http_inprogress_requests:sum:2842 + expr: vector(1) + labels: + job: job2842 + - record: job:http_inprogress_requests:sum:2843 + expr: vector(1) + labels: + job: job2843 + - record: job:http_inprogress_requests:sum:2844 + expr: vector(1) + labels: + job: job2844 + - record: job:http_inprogress_requests:sum:2845 + expr: vector(1) + labels: + job: job2845 + - record: job:http_inprogress_requests:sum:2846 + expr: vector(1) + labels: + job: job2846 + - record: job:http_inprogress_requests:sum:2847 + expr: vector(1) + labels: + job: job2847 + - record: job:http_inprogress_requests:sum:2848 + expr: vector(1) + labels: + job: job2848 + - record: job:http_inprogress_requests:sum:2849 + expr: vector(1) + labels: + job: job2849 + - record: job:http_inprogress_requests:sum:2850 + expr: vector(1) + labels: + job: job2850 + - record: job:http_inprogress_requests:sum:2851 + expr: vector(1) + labels: + job: job2851 + - record: job:http_inprogress_requests:sum:2852 + expr: vector(1) + labels: + job: job2852 + - record: job:http_inprogress_requests:sum:2853 + expr: vector(1) + labels: + job: job2853 + - record: job:http_inprogress_requests:sum:2854 + expr: vector(1) + labels: + job: job2854 + - record: job:http_inprogress_requests:sum:2855 + expr: vector(1) + labels: + job: job2855 + - record: job:http_inprogress_requests:sum:2856 + expr: vector(1) + labels: + job: job2856 + - record: job:http_inprogress_requests:sum:2857 + expr: vector(1) + labels: + job: job2857 + - record: job:http_inprogress_requests:sum:2858 + expr: vector(1) + labels: + job: job2858 + - record: job:http_inprogress_requests:sum:2859 + expr: vector(1) + labels: + job: job2859 + - record: job:http_inprogress_requests:sum:2860 + expr: vector(1) + labels: + job: job2860 + - record: job:http_inprogress_requests:sum:2861 + expr: vector(1) + labels: + job: job2861 + - record: job:http_inprogress_requests:sum:2862 + expr: vector(1) + labels: + job: job2862 + - record: job:http_inprogress_requests:sum:2863 + expr: vector(1) + labels: + job: job2863 + - record: job:http_inprogress_requests:sum:2864 + expr: vector(1) + labels: + job: job2864 + - record: job:http_inprogress_requests:sum:2865 + expr: vector(1) + labels: + job: job2865 + - record: job:http_inprogress_requests:sum:2866 + expr: vector(1) + labels: + job: job2866 + - record: job:http_inprogress_requests:sum:2867 + expr: vector(1) + labels: + job: job2867 + - record: job:http_inprogress_requests:sum:2868 + expr: vector(1) + labels: + job: job2868 + - record: job:http_inprogress_requests:sum:2869 + expr: vector(1) + labels: + job: job2869 + - record: job:http_inprogress_requests:sum:2870 + expr: vector(1) + labels: + job: job2870 + - record: job:http_inprogress_requests:sum:2871 + expr: vector(1) + labels: + job: job2871 + - record: job:http_inprogress_requests:sum:2872 + expr: vector(1) + labels: + job: job2872 + - record: job:http_inprogress_requests:sum:2873 + expr: vector(1) + labels: + job: job2873 + - record: job:http_inprogress_requests:sum:2874 + expr: vector(1) + labels: + job: job2874 + - record: job:http_inprogress_requests:sum:2875 + expr: vector(1) + labels: + job: job2875 + - record: job:http_inprogress_requests:sum:2876 + expr: vector(1) + labels: + job: job2876 + - record: job:http_inprogress_requests:sum:2877 + expr: vector(1) + labels: + job: job2877 + - record: job:http_inprogress_requests:sum:2878 + expr: vector(1) + labels: + job: job2878 + - record: job:http_inprogress_requests:sum:2879 + expr: vector(1) + labels: + job: job2879 + - record: job:http_inprogress_requests:sum:2880 + expr: vector(1) + labels: + job: job2880 + - record: job:http_inprogress_requests:sum:2881 + expr: vector(1) + labels: + job: job2881 + - record: job:http_inprogress_requests:sum:2882 + expr: vector(1) + labels: + job: job2882 + - record: job:http_inprogress_requests:sum:2883 + expr: vector(1) + labels: + job: job2883 + - record: job:http_inprogress_requests:sum:2884 + expr: vector(1) + labels: + job: job2884 + - record: job:http_inprogress_requests:sum:2885 + expr: vector(1) + labels: + job: job2885 + - record: job:http_inprogress_requests:sum:2886 + expr: vector(1) + labels: + job: job2886 + - record: job:http_inprogress_requests:sum:2887 + expr: vector(1) + labels: + job: job2887 + - record: job:http_inprogress_requests:sum:2888 + expr: vector(1) + labels: + job: job2888 + - record: job:http_inprogress_requests:sum:2889 + expr: vector(1) + labels: + job: job2889 + - record: job:http_inprogress_requests:sum:2890 + expr: vector(1) + labels: + job: job2890 + - record: job:http_inprogress_requests:sum:2891 + expr: vector(1) + labels: + job: job2891 + - record: job:http_inprogress_requests:sum:2892 + expr: vector(1) + labels: + job: job2892 + - record: job:http_inprogress_requests:sum:2893 + expr: vector(1) + labels: + job: job2893 + - record: job:http_inprogress_requests:sum:2894 + expr: vector(1) + labels: + job: job2894 + - record: job:http_inprogress_requests:sum:2895 + expr: vector(1) + labels: + job: job2895 + - record: job:http_inprogress_requests:sum:2896 + expr: vector(1) + labels: + job: job2896 + - record: job:http_inprogress_requests:sum:2897 + expr: vector(1) + labels: + job: job2897 + - record: job:http_inprogress_requests:sum:2898 + expr: vector(1) + labels: + job: job2898 + - record: job:http_inprogress_requests:sum:2899 + expr: vector(1) + labels: + job: job2899 + - record: job:http_inprogress_requests:sum:2900 + expr: vector(1) + labels: + job: job2900 + - record: job:http_inprogress_requests:sum:2901 + expr: vector(1) + labels: + job: job2901 + - record: job:http_inprogress_requests:sum:2902 + expr: vector(1) + labels: + job: job2902 + - record: job:http_inprogress_requests:sum:2903 + expr: vector(1) + labels: + job: job2903 + - record: job:http_inprogress_requests:sum:2904 + expr: vector(1) + labels: + job: job2904 + - record: job:http_inprogress_requests:sum:2905 + expr: vector(1) + labels: + job: job2905 + - record: job:http_inprogress_requests:sum:2906 + expr: vector(1) + labels: + job: job2906 + - record: job:http_inprogress_requests:sum:2907 + expr: vector(1) + labels: + job: job2907 + - record: job:http_inprogress_requests:sum:2908 + expr: vector(1) + labels: + job: job2908 + - record: job:http_inprogress_requests:sum:2909 + expr: vector(1) + labels: + job: job2909 + - record: job:http_inprogress_requests:sum:2910 + expr: vector(1) + labels: + job: job2910 + - record: job:http_inprogress_requests:sum:2911 + expr: vector(1) + labels: + job: job2911 + - record: job:http_inprogress_requests:sum:2912 + expr: vector(1) + labels: + job: job2912 + - record: job:http_inprogress_requests:sum:2913 + expr: vector(1) + labels: + job: job2913 + - record: job:http_inprogress_requests:sum:2914 + expr: vector(1) + labels: + job: job2914 + - record: job:http_inprogress_requests:sum:2915 + expr: vector(1) + labels: + job: job2915 + - record: job:http_inprogress_requests:sum:2916 + expr: vector(1) + labels: + job: job2916 + - record: job:http_inprogress_requests:sum:2917 + expr: vector(1) + labels: + job: job2917 + - record: job:http_inprogress_requests:sum:2918 + expr: vector(1) + labels: + job: job2918 + - record: job:http_inprogress_requests:sum:2919 + expr: vector(1) + labels: + job: job2919 + - record: job:http_inprogress_requests:sum:2920 + expr: vector(1) + labels: + job: job2920 + - record: job:http_inprogress_requests:sum:2921 + expr: vector(1) + labels: + job: job2921 + - record: job:http_inprogress_requests:sum:2922 + expr: vector(1) + labels: + job: job2922 + - record: job:http_inprogress_requests:sum:2923 + expr: vector(1) + labels: + job: job2923 + - record: job:http_inprogress_requests:sum:2924 + expr: vector(1) + labels: + job: job2924 + - record: job:http_inprogress_requests:sum:2925 + expr: vector(1) + labels: + job: job2925 + - record: job:http_inprogress_requests:sum:2926 + expr: vector(1) + labels: + job: job2926 + - record: job:http_inprogress_requests:sum:2927 + expr: vector(1) + labels: + job: job2927 + - record: job:http_inprogress_requests:sum:2928 + expr: vector(1) + labels: + job: job2928 + - record: job:http_inprogress_requests:sum:2929 + expr: vector(1) + labels: + job: job2929 + - record: job:http_inprogress_requests:sum:2930 + expr: vector(1) + labels: + job: job2930 + - record: job:http_inprogress_requests:sum:2931 + expr: vector(1) + labels: + job: job2931 + - record: job:http_inprogress_requests:sum:2932 + expr: vector(1) + labels: + job: job2932 + - record: job:http_inprogress_requests:sum:2933 + expr: vector(1) + labels: + job: job2933 + - record: job:http_inprogress_requests:sum:2934 + expr: vector(1) + labels: + job: job2934 + - record: job:http_inprogress_requests:sum:2935 + expr: vector(1) + labels: + job: job2935 + - record: job:http_inprogress_requests:sum:2936 + expr: vector(1) + labels: + job: job2936 + - record: job:http_inprogress_requests:sum:2937 + expr: vector(1) + labels: + job: job2937 + - record: job:http_inprogress_requests:sum:2938 + expr: vector(1) + labels: + job: job2938 + - record: job:http_inprogress_requests:sum:2939 + expr: vector(1) + labels: + job: job2939 + - record: job:http_inprogress_requests:sum:2940 + expr: vector(1) + labels: + job: job2940 + - record: job:http_inprogress_requests:sum:2941 + expr: vector(1) + labels: + job: job2941 + - record: job:http_inprogress_requests:sum:2942 + expr: vector(1) + labels: + job: job2942 + - record: job:http_inprogress_requests:sum:2943 + expr: vector(1) + labels: + job: job2943 + - record: job:http_inprogress_requests:sum:2944 + expr: vector(1) + labels: + job: job2944 + - record: job:http_inprogress_requests:sum:2945 + expr: vector(1) + labels: + job: job2945 + - record: job:http_inprogress_requests:sum:2946 + expr: vector(1) + labels: + job: job2946 + - record: job:http_inprogress_requests:sum:2947 + expr: vector(1) + labels: + job: job2947 + - record: job:http_inprogress_requests:sum:2948 + expr: vector(1) + labels: + job: job2948 + - record: job:http_inprogress_requests:sum:2949 + expr: vector(1) + labels: + job: job2949 + - record: job:http_inprogress_requests:sum:2950 + expr: vector(1) + labels: + job: job2950 + - record: job:http_inprogress_requests:sum:2951 + expr: vector(1) + labels: + job: job2951 + - record: job:http_inprogress_requests:sum:2952 + expr: vector(1) + labels: + job: job2952 + - record: job:http_inprogress_requests:sum:2953 + expr: vector(1) + labels: + job: job2953 + - record: job:http_inprogress_requests:sum:2954 + expr: vector(1) + labels: + job: job2954 + - record: job:http_inprogress_requests:sum:2955 + expr: vector(1) + labels: + job: job2955 + - record: job:http_inprogress_requests:sum:2956 + expr: vector(1) + labels: + job: job2956 + - record: job:http_inprogress_requests:sum:2957 + expr: vector(1) + labels: + job: job2957 + - record: job:http_inprogress_requests:sum:2958 + expr: vector(1) + labels: + job: job2958 + - record: job:http_inprogress_requests:sum:2959 + expr: vector(1) + labels: + job: job2959 + - record: job:http_inprogress_requests:sum:2960 + expr: vector(1) + labels: + job: job2960 + - record: job:http_inprogress_requests:sum:2961 + expr: vector(1) + labels: + job: job2961 + - record: job:http_inprogress_requests:sum:2962 + expr: vector(1) + labels: + job: job2962 + - record: job:http_inprogress_requests:sum:2963 + expr: vector(1) + labels: + job: job2963 + - record: job:http_inprogress_requests:sum:2964 + expr: vector(1) + labels: + job: job2964 + - record: job:http_inprogress_requests:sum:2965 + expr: vector(1) + labels: + job: job2965 + - record: job:http_inprogress_requests:sum:2966 + expr: vector(1) + labels: + job: job2966 + - record: job:http_inprogress_requests:sum:2967 + expr: vector(1) + labels: + job: job2967 + - record: job:http_inprogress_requests:sum:2968 + expr: vector(1) + labels: + job: job2968 + - record: job:http_inprogress_requests:sum:2969 + expr: vector(1) + labels: + job: job2969 + - record: job:http_inprogress_requests:sum:2970 + expr: vector(1) + labels: + job: job2970 + - record: job:http_inprogress_requests:sum:2971 + expr: vector(1) + labels: + job: job2971 + - record: job:http_inprogress_requests:sum:2972 + expr: vector(1) + labels: + job: job2972 + - record: job:http_inprogress_requests:sum:2973 + expr: vector(1) + labels: + job: job2973 + - record: job:http_inprogress_requests:sum:2974 + expr: vector(1) + labels: + job: job2974 + - record: job:http_inprogress_requests:sum:2975 + expr: vector(1) + labels: + job: job2975 + - record: job:http_inprogress_requests:sum:2976 + expr: vector(1) + labels: + job: job2976 + - record: job:http_inprogress_requests:sum:2977 + expr: vector(1) + labels: + job: job2977 + - record: job:http_inprogress_requests:sum:2978 + expr: vector(1) + labels: + job: job2978 + - record: job:http_inprogress_requests:sum:2979 + expr: vector(1) + labels: + job: job2979 + - record: job:http_inprogress_requests:sum:2980 + expr: vector(1) + labels: + job: job2980 + - record: job:http_inprogress_requests:sum:2981 + expr: vector(1) + labels: + job: job2981 + - record: job:http_inprogress_requests:sum:2982 + expr: vector(1) + labels: + job: job2982 + - record: job:http_inprogress_requests:sum:2983 + expr: vector(1) + labels: + job: job2983 + - record: job:http_inprogress_requests:sum:2984 + expr: vector(1) + labels: + job: job2984 + - record: job:http_inprogress_requests:sum:2985 + expr: vector(1) + labels: + job: job2985 + - record: job:http_inprogress_requests:sum:2986 + expr: vector(1) + labels: + job: job2986 + - record: job:http_inprogress_requests:sum:2987 + expr: vector(1) + labels: + job: job2987 + - record: job:http_inprogress_requests:sum:2988 + expr: vector(1) + labels: + job: job2988 + - record: job:http_inprogress_requests:sum:2989 + expr: vector(1) + labels: + job: job2989 + - record: job:http_inprogress_requests:sum:2990 + expr: vector(1) + labels: + job: job2990 + - record: job:http_inprogress_requests:sum:2991 + expr: vector(1) + labels: + job: job2991 + - record: job:http_inprogress_requests:sum:2992 + expr: vector(1) + labels: + job: job2992 + - record: job:http_inprogress_requests:sum:2993 + expr: vector(1) + labels: + job: job2993 + - record: job:http_inprogress_requests:sum:2994 + expr: vector(1) + labels: + job: job2994 + - record: job:http_inprogress_requests:sum:2995 + expr: vector(1) + labels: + job: job2995 + - record: job:http_inprogress_requests:sum:2996 + expr: vector(1) + labels: + job: job2996 + - record: job:http_inprogress_requests:sum:2997 + expr: vector(1) + labels: + job: job2997 + - record: job:http_inprogress_requests:sum:2998 + expr: vector(1) + labels: + job: job2998 + - record: job:http_inprogress_requests:sum:2999 + expr: vector(1) + labels: + job: job2999 + - record: job:http_inprogress_requests:sum:3000 + expr: vector(1) + labels: + job: job3000 + - record: job:http_inprogress_requests:sum:3001 + expr: vector(1) + labels: + job: job3001 + - record: job:http_inprogress_requests:sum:3002 + expr: vector(1) + labels: + job: job3002 + - record: job:http_inprogress_requests:sum:3003 + expr: vector(1) + labels: + job: job3003 + - record: job:http_inprogress_requests:sum:3004 + expr: vector(1) + labels: + job: job3004 + - record: job:http_inprogress_requests:sum:3005 + expr: vector(1) + labels: + job: job3005 + - record: job:http_inprogress_requests:sum:3006 + expr: vector(1) + labels: + job: job3006 + - record: job:http_inprogress_requests:sum:3007 + expr: vector(1) + labels: + job: job3007 + - record: job:http_inprogress_requests:sum:3008 + expr: vector(1) + labels: + job: job3008 + - record: job:http_inprogress_requests:sum:3009 + expr: vector(1) + labels: + job: job3009 + - record: job:http_inprogress_requests:sum:3010 + expr: vector(1) + labels: + job: job3010 + - record: job:http_inprogress_requests:sum:3011 + expr: vector(1) + labels: + job: job3011 + - record: job:http_inprogress_requests:sum:3012 + expr: vector(1) + labels: + job: job3012 + - record: job:http_inprogress_requests:sum:3013 + expr: vector(1) + labels: + job: job3013 + - record: job:http_inprogress_requests:sum:3014 + expr: vector(1) + labels: + job: job3014 + - record: job:http_inprogress_requests:sum:3015 + expr: vector(1) + labels: + job: job3015 + - record: job:http_inprogress_requests:sum:3016 + expr: vector(1) + labels: + job: job3016 + - record: job:http_inprogress_requests:sum:3017 + expr: vector(1) + labels: + job: job3017 + - record: job:http_inprogress_requests:sum:3018 + expr: vector(1) + labels: + job: job3018 + - record: job:http_inprogress_requests:sum:3019 + expr: vector(1) + labels: + job: job3019 + - record: job:http_inprogress_requests:sum:3020 + expr: vector(1) + labels: + job: job3020 + - record: job:http_inprogress_requests:sum:3021 + expr: vector(1) + labels: + job: job3021 + - record: job:http_inprogress_requests:sum:3022 + expr: vector(1) + labels: + job: job3022 + - record: job:http_inprogress_requests:sum:3023 + expr: vector(1) + labels: + job: job3023 + - record: job:http_inprogress_requests:sum:3024 + expr: vector(1) + labels: + job: job3024 + - record: job:http_inprogress_requests:sum:3025 + expr: vector(1) + labels: + job: job3025 + - record: job:http_inprogress_requests:sum:3026 + expr: vector(1) + labels: + job: job3026 + - record: job:http_inprogress_requests:sum:3027 + expr: vector(1) + labels: + job: job3027 + - record: job:http_inprogress_requests:sum:3028 + expr: vector(1) + labels: + job: job3028 + - record: job:http_inprogress_requests:sum:3029 + expr: vector(1) + labels: + job: job3029 + - record: job:http_inprogress_requests:sum:3030 + expr: vector(1) + labels: + job: job3030 + - record: job:http_inprogress_requests:sum:3031 + expr: vector(1) + labels: + job: job3031 + - record: job:http_inprogress_requests:sum:3032 + expr: vector(1) + labels: + job: job3032 + - record: job:http_inprogress_requests:sum:3033 + expr: vector(1) + labels: + job: job3033 + - record: job:http_inprogress_requests:sum:3034 + expr: vector(1) + labels: + job: job3034 + - record: job:http_inprogress_requests:sum:3035 + expr: vector(1) + labels: + job: job3035 + - record: job:http_inprogress_requests:sum:3036 + expr: vector(1) + labels: + job: job3036 + - record: job:http_inprogress_requests:sum:3037 + expr: vector(1) + labels: + job: job3037 + - record: job:http_inprogress_requests:sum:3038 + expr: vector(1) + labels: + job: job3038 + - record: job:http_inprogress_requests:sum:3039 + expr: vector(1) + labels: + job: job3039 + - record: job:http_inprogress_requests:sum:3040 + expr: vector(1) + labels: + job: job3040 + - record: job:http_inprogress_requests:sum:3041 + expr: vector(1) + labels: + job: job3041 + - record: job:http_inprogress_requests:sum:3042 + expr: vector(1) + labels: + job: job3042 + - record: job:http_inprogress_requests:sum:3043 + expr: vector(1) + labels: + job: job3043 + - record: job:http_inprogress_requests:sum:3044 + expr: vector(1) + labels: + job: job3044 + - record: job:http_inprogress_requests:sum:3045 + expr: vector(1) + labels: + job: job3045 + - record: job:http_inprogress_requests:sum:3046 + expr: vector(1) + labels: + job: job3046 + - record: job:http_inprogress_requests:sum:3047 + expr: vector(1) + labels: + job: job3047 + - record: job:http_inprogress_requests:sum:3048 + expr: vector(1) + labels: + job: job3048 + - record: job:http_inprogress_requests:sum:3049 + expr: vector(1) + labels: + job: job3049 + - record: job:http_inprogress_requests:sum:3050 + expr: vector(1) + labels: + job: job3050 + - record: job:http_inprogress_requests:sum:3051 + expr: vector(1) + labels: + job: job3051 + - record: job:http_inprogress_requests:sum:3052 + expr: vector(1) + labels: + job: job3052 + - record: job:http_inprogress_requests:sum:3053 + expr: vector(1) + labels: + job: job3053 + - record: job:http_inprogress_requests:sum:3054 + expr: vector(1) + labels: + job: job3054 + - record: job:http_inprogress_requests:sum:3055 + expr: vector(1) + labels: + job: job3055 + - record: job:http_inprogress_requests:sum:3056 + expr: vector(1) + labels: + job: job3056 + - record: job:http_inprogress_requests:sum:3057 + expr: vector(1) + labels: + job: job3057 + - record: job:http_inprogress_requests:sum:3058 + expr: vector(1) + labels: + job: job3058 + - record: job:http_inprogress_requests:sum:3059 + expr: vector(1) + labels: + job: job3059 + - record: job:http_inprogress_requests:sum:3060 + expr: vector(1) + labels: + job: job3060 + - record: job:http_inprogress_requests:sum:3061 + expr: vector(1) + labels: + job: job3061 + - record: job:http_inprogress_requests:sum:3062 + expr: vector(1) + labels: + job: job3062 + - record: job:http_inprogress_requests:sum:3063 + expr: vector(1) + labels: + job: job3063 + - record: job:http_inprogress_requests:sum:3064 + expr: vector(1) + labels: + job: job3064 + - record: job:http_inprogress_requests:sum:3065 + expr: vector(1) + labels: + job: job3065 + - record: job:http_inprogress_requests:sum:3066 + expr: vector(1) + labels: + job: job3066 + - record: job:http_inprogress_requests:sum:3067 + expr: vector(1) + labels: + job: job3067 + - record: job:http_inprogress_requests:sum:3068 + expr: vector(1) + labels: + job: job3068 + - record: job:http_inprogress_requests:sum:3069 + expr: vector(1) + labels: + job: job3069 + - record: job:http_inprogress_requests:sum:3070 + expr: vector(1) + labels: + job: job3070 + - record: job:http_inprogress_requests:sum:3071 + expr: vector(1) + labels: + job: job3071 + - record: job:http_inprogress_requests:sum:3072 + expr: vector(1) + labels: + job: job3072 + - record: job:http_inprogress_requests:sum:3073 + expr: vector(1) + labels: + job: job3073 + - record: job:http_inprogress_requests:sum:3074 + expr: vector(1) + labels: + job: job3074 + - record: job:http_inprogress_requests:sum:3075 + expr: vector(1) + labels: + job: job3075 + - record: job:http_inprogress_requests:sum:3076 + expr: vector(1) + labels: + job: job3076 + - record: job:http_inprogress_requests:sum:3077 + expr: vector(1) + labels: + job: job3077 + - record: job:http_inprogress_requests:sum:3078 + expr: vector(1) + labels: + job: job3078 + - record: job:http_inprogress_requests:sum:3079 + expr: vector(1) + labels: + job: job3079 + - record: job:http_inprogress_requests:sum:3080 + expr: vector(1) + labels: + job: job3080 + - record: job:http_inprogress_requests:sum:3081 + expr: vector(1) + labels: + job: job3081 + - record: job:http_inprogress_requests:sum:3082 + expr: vector(1) + labels: + job: job3082 + - record: job:http_inprogress_requests:sum:3083 + expr: vector(1) + labels: + job: job3083 + - record: job:http_inprogress_requests:sum:3084 + expr: vector(1) + labels: + job: job3084 + - record: job:http_inprogress_requests:sum:3085 + expr: vector(1) + labels: + job: job3085 + - record: job:http_inprogress_requests:sum:3086 + expr: vector(1) + labels: + job: job3086 + - record: job:http_inprogress_requests:sum:3087 + expr: vector(1) + labels: + job: job3087 + - record: job:http_inprogress_requests:sum:3088 + expr: vector(1) + labels: + job: job3088 + - record: job:http_inprogress_requests:sum:3089 + expr: vector(1) + labels: + job: job3089 + - record: job:http_inprogress_requests:sum:3090 + expr: vector(1) + labels: + job: job3090 + - record: job:http_inprogress_requests:sum:3091 + expr: vector(1) + labels: + job: job3091 + - record: job:http_inprogress_requests:sum:3092 + expr: vector(1) + labels: + job: job3092 + - record: job:http_inprogress_requests:sum:3093 + expr: vector(1) + labels: + job: job3093 + - record: job:http_inprogress_requests:sum:3094 + expr: vector(1) + labels: + job: job3094 + - record: job:http_inprogress_requests:sum:3095 + expr: vector(1) + labels: + job: job3095 + - record: job:http_inprogress_requests:sum:3096 + expr: vector(1) + labels: + job: job3096 + - record: job:http_inprogress_requests:sum:3097 + expr: vector(1) + labels: + job: job3097 + - record: job:http_inprogress_requests:sum:3098 + expr: vector(1) + labels: + job: job3098 + - record: job:http_inprogress_requests:sum:3099 + expr: vector(1) + labels: + job: job3099 + - record: job:http_inprogress_requests:sum:3100 + expr: vector(1) + labels: + job: job3100 + - record: job:http_inprogress_requests:sum:3101 + expr: vector(1) + labels: + job: job3101 + - record: job:http_inprogress_requests:sum:3102 + expr: vector(1) + labels: + job: job3102 + - record: job:http_inprogress_requests:sum:3103 + expr: vector(1) + labels: + job: job3103 + - record: job:http_inprogress_requests:sum:3104 + expr: vector(1) + labels: + job: job3104 + - record: job:http_inprogress_requests:sum:3105 + expr: vector(1) + labels: + job: job3105 + - record: job:http_inprogress_requests:sum:3106 + expr: vector(1) + labels: + job: job3106 + - record: job:http_inprogress_requests:sum:3107 + expr: vector(1) + labels: + job: job3107 + - record: job:http_inprogress_requests:sum:3108 + expr: vector(1) + labels: + job: job3108 + - record: job:http_inprogress_requests:sum:3109 + expr: vector(1) + labels: + job: job3109 + - record: job:http_inprogress_requests:sum:3110 + expr: vector(1) + labels: + job: job3110 + - record: job:http_inprogress_requests:sum:3111 + expr: vector(1) + labels: + job: job3111 + - record: job:http_inprogress_requests:sum:3112 + expr: vector(1) + labels: + job: job3112 + - record: job:http_inprogress_requests:sum:3113 + expr: vector(1) + labels: + job: job3113 + - record: job:http_inprogress_requests:sum:3114 + expr: vector(1) + labels: + job: job3114 + - record: job:http_inprogress_requests:sum:3115 + expr: vector(1) + labels: + job: job3115 + - record: job:http_inprogress_requests:sum:3116 + expr: vector(1) + labels: + job: job3116 + - record: job:http_inprogress_requests:sum:3117 + expr: vector(1) + labels: + job: job3117 + - record: job:http_inprogress_requests:sum:3118 + expr: vector(1) + labels: + job: job3118 + - record: job:http_inprogress_requests:sum:3119 + expr: vector(1) + labels: + job: job3119 + - record: job:http_inprogress_requests:sum:3120 + expr: vector(1) + labels: + job: job3120 + - record: job:http_inprogress_requests:sum:3121 + expr: vector(1) + labels: + job: job3121 + - record: job:http_inprogress_requests:sum:3122 + expr: vector(1) + labels: + job: job3122 + - record: job:http_inprogress_requests:sum:3123 + expr: vector(1) + labels: + job: job3123 + - record: job:http_inprogress_requests:sum:3124 + expr: vector(1) + labels: + job: job3124 + - record: job:http_inprogress_requests:sum:3125 + expr: vector(1) + labels: + job: job3125 + - record: job:http_inprogress_requests:sum:3126 + expr: vector(1) + labels: + job: job3126 + - record: job:http_inprogress_requests:sum:3127 + expr: vector(1) + labels: + job: job3127 + - record: job:http_inprogress_requests:sum:3128 + expr: vector(1) + labels: + job: job3128 + - record: job:http_inprogress_requests:sum:3129 + expr: vector(1) + labels: + job: job3129 + - record: job:http_inprogress_requests:sum:3130 + expr: vector(1) + labels: + job: job3130 + - record: job:http_inprogress_requests:sum:3131 + expr: vector(1) + labels: + job: job3131 + - record: job:http_inprogress_requests:sum:3132 + expr: vector(1) + labels: + job: job3132 + - record: job:http_inprogress_requests:sum:3133 + expr: vector(1) + labels: + job: job3133 + - record: job:http_inprogress_requests:sum:3134 + expr: vector(1) + labels: + job: job3134 + - record: job:http_inprogress_requests:sum:3135 + expr: vector(1) + labels: + job: job3135 + - record: job:http_inprogress_requests:sum:3136 + expr: vector(1) + labels: + job: job3136 + - record: job:http_inprogress_requests:sum:3137 + expr: vector(1) + labels: + job: job3137 + - record: job:http_inprogress_requests:sum:3138 + expr: vector(1) + labels: + job: job3138 + - record: job:http_inprogress_requests:sum:3139 + expr: vector(1) + labels: + job: job3139 + - record: job:http_inprogress_requests:sum:3140 + expr: vector(1) + labels: + job: job3140 + - record: job:http_inprogress_requests:sum:3141 + expr: vector(1) + labels: + job: job3141 + - record: job:http_inprogress_requests:sum:3142 + expr: vector(1) + labels: + job: job3142 + - record: job:http_inprogress_requests:sum:3143 + expr: vector(1) + labels: + job: job3143 + - record: job:http_inprogress_requests:sum:3144 + expr: vector(1) + labels: + job: job3144 + - record: job:http_inprogress_requests:sum:3145 + expr: vector(1) + labels: + job: job3145 + - record: job:http_inprogress_requests:sum:3146 + expr: vector(1) + labels: + job: job3146 + - record: job:http_inprogress_requests:sum:3147 + expr: vector(1) + labels: + job: job3147 + - record: job:http_inprogress_requests:sum:3148 + expr: vector(1) + labels: + job: job3148 + - record: job:http_inprogress_requests:sum:3149 + expr: vector(1) + labels: + job: job3149 + - record: job:http_inprogress_requests:sum:3150 + expr: vector(1) + labels: + job: job3150 + - record: job:http_inprogress_requests:sum:3151 + expr: vector(1) + labels: + job: job3151 + - record: job:http_inprogress_requests:sum:3152 + expr: vector(1) + labels: + job: job3152 + - record: job:http_inprogress_requests:sum:3153 + expr: vector(1) + labels: + job: job3153 + - record: job:http_inprogress_requests:sum:3154 + expr: vector(1) + labels: + job: job3154 + - record: job:http_inprogress_requests:sum:3155 + expr: vector(1) + labels: + job: job3155 + - record: job:http_inprogress_requests:sum:3156 + expr: vector(1) + labels: + job: job3156 + - record: job:http_inprogress_requests:sum:3157 + expr: vector(1) + labels: + job: job3157 + - record: job:http_inprogress_requests:sum:3158 + expr: vector(1) + labels: + job: job3158 + - record: job:http_inprogress_requests:sum:3159 + expr: vector(1) + labels: + job: job3159 + - record: job:http_inprogress_requests:sum:3160 + expr: vector(1) + labels: + job: job3160 + - record: job:http_inprogress_requests:sum:3161 + expr: vector(1) + labels: + job: job3161 + - record: job:http_inprogress_requests:sum:3162 + expr: vector(1) + labels: + job: job3162 + - record: job:http_inprogress_requests:sum:3163 + expr: vector(1) + labels: + job: job3163 + - record: job:http_inprogress_requests:sum:3164 + expr: vector(1) + labels: + job: job3164 + - record: job:http_inprogress_requests:sum:3165 + expr: vector(1) + labels: + job: job3165 + - record: job:http_inprogress_requests:sum:3166 + expr: vector(1) + labels: + job: job3166 + - record: job:http_inprogress_requests:sum:3167 + expr: vector(1) + labels: + job: job3167 + - record: job:http_inprogress_requests:sum:3168 + expr: vector(1) + labels: + job: job3168 + - record: job:http_inprogress_requests:sum:3169 + expr: vector(1) + labels: + job: job3169 + - record: job:http_inprogress_requests:sum:3170 + expr: vector(1) + labels: + job: job3170 + - record: job:http_inprogress_requests:sum:3171 + expr: vector(1) + labels: + job: job3171 + - record: job:http_inprogress_requests:sum:3172 + expr: vector(1) + labels: + job: job3172 + - record: job:http_inprogress_requests:sum:3173 + expr: vector(1) + labels: + job: job3173 + - record: job:http_inprogress_requests:sum:3174 + expr: vector(1) + labels: + job: job3174 + - record: job:http_inprogress_requests:sum:3175 + expr: vector(1) + labels: + job: job3175 + - record: job:http_inprogress_requests:sum:3176 + expr: vector(1) + labels: + job: job3176 + - record: job:http_inprogress_requests:sum:3177 + expr: vector(1) + labels: + job: job3177 + - record: job:http_inprogress_requests:sum:3178 + expr: vector(1) + labels: + job: job3178 + - record: job:http_inprogress_requests:sum:3179 + expr: vector(1) + labels: + job: job3179 + - record: job:http_inprogress_requests:sum:3180 + expr: vector(1) + labels: + job: job3180 + - record: job:http_inprogress_requests:sum:3181 + expr: vector(1) + labels: + job: job3181 + - record: job:http_inprogress_requests:sum:3182 + expr: vector(1) + labels: + job: job3182 + - record: job:http_inprogress_requests:sum:3183 + expr: vector(1) + labels: + job: job3183 + - record: job:http_inprogress_requests:sum:3184 + expr: vector(1) + labels: + job: job3184 + - record: job:http_inprogress_requests:sum:3185 + expr: vector(1) + labels: + job: job3185 + - record: job:http_inprogress_requests:sum:3186 + expr: vector(1) + labels: + job: job3186 + - record: job:http_inprogress_requests:sum:3187 + expr: vector(1) + labels: + job: job3187 + - record: job:http_inprogress_requests:sum:3188 + expr: vector(1) + labels: + job: job3188 + - record: job:http_inprogress_requests:sum:3189 + expr: vector(1) + labels: + job: job3189 + - record: job:http_inprogress_requests:sum:3190 + expr: vector(1) + labels: + job: job3190 + - record: job:http_inprogress_requests:sum:3191 + expr: vector(1) + labels: + job: job3191 + - record: job:http_inprogress_requests:sum:3192 + expr: vector(1) + labels: + job: job3192 + - record: job:http_inprogress_requests:sum:3193 + expr: vector(1) + labels: + job: job3193 + - record: job:http_inprogress_requests:sum:3194 + expr: vector(1) + labels: + job: job3194 + - record: job:http_inprogress_requests:sum:3195 + expr: vector(1) + labels: + job: job3195 + - record: job:http_inprogress_requests:sum:3196 + expr: vector(1) + labels: + job: job3196 + - record: job:http_inprogress_requests:sum:3197 + expr: vector(1) + labels: + job: job3197 + - record: job:http_inprogress_requests:sum:3198 + expr: vector(1) + labels: + job: job3198 + - record: job:http_inprogress_requests:sum:3199 + expr: vector(1) + labels: + job: job3199 + - record: job:http_inprogress_requests:sum:3200 + expr: vector(1) + labels: + job: job3200 + - record: job:http_inprogress_requests:sum:3201 + expr: vector(1) + labels: + job: job3201 + - record: job:http_inprogress_requests:sum:3202 + expr: vector(1) + labels: + job: job3202 + - record: job:http_inprogress_requests:sum:3203 + expr: vector(1) + labels: + job: job3203 + - record: job:http_inprogress_requests:sum:3204 + expr: vector(1) + labels: + job: job3204 + - record: job:http_inprogress_requests:sum:3205 + expr: vector(1) + labels: + job: job3205 + - record: job:http_inprogress_requests:sum:3206 + expr: vector(1) + labels: + job: job3206 + - record: job:http_inprogress_requests:sum:3207 + expr: vector(1) + labels: + job: job3207 + - record: job:http_inprogress_requests:sum:3208 + expr: vector(1) + labels: + job: job3208 + - record: job:http_inprogress_requests:sum:3209 + expr: vector(1) + labels: + job: job3209 + - record: job:http_inprogress_requests:sum:3210 + expr: vector(1) + labels: + job: job3210 + - record: job:http_inprogress_requests:sum:3211 + expr: vector(1) + labels: + job: job3211 + - record: job:http_inprogress_requests:sum:3212 + expr: vector(1) + labels: + job: job3212 + - record: job:http_inprogress_requests:sum:3213 + expr: vector(1) + labels: + job: job3213 + - record: job:http_inprogress_requests:sum:3214 + expr: vector(1) + labels: + job: job3214 + - record: job:http_inprogress_requests:sum:3215 + expr: vector(1) + labels: + job: job3215 + - record: job:http_inprogress_requests:sum:3216 + expr: vector(1) + labels: + job: job3216 + - record: job:http_inprogress_requests:sum:3217 + expr: vector(1) + labels: + job: job3217 + - record: job:http_inprogress_requests:sum:3218 + expr: vector(1) + labels: + job: job3218 + - record: job:http_inprogress_requests:sum:3219 + expr: vector(1) + labels: + job: job3219 + - record: job:http_inprogress_requests:sum:3220 + expr: vector(1) + labels: + job: job3220 + - record: job:http_inprogress_requests:sum:3221 + expr: vector(1) + labels: + job: job3221 + - record: job:http_inprogress_requests:sum:3222 + expr: vector(1) + labels: + job: job3222 + - record: job:http_inprogress_requests:sum:3223 + expr: vector(1) + labels: + job: job3223 + - record: job:http_inprogress_requests:sum:3224 + expr: vector(1) + labels: + job: job3224 + - record: job:http_inprogress_requests:sum:3225 + expr: vector(1) + labels: + job: job3225 + - record: job:http_inprogress_requests:sum:3226 + expr: vector(1) + labels: + job: job3226 + - record: job:http_inprogress_requests:sum:3227 + expr: vector(1) + labels: + job: job3227 + - record: job:http_inprogress_requests:sum:3228 + expr: vector(1) + labels: + job: job3228 + - record: job:http_inprogress_requests:sum:3229 + expr: vector(1) + labels: + job: job3229 + - record: job:http_inprogress_requests:sum:3230 + expr: vector(1) + labels: + job: job3230 + - record: job:http_inprogress_requests:sum:3231 + expr: vector(1) + labels: + job: job3231 + - record: job:http_inprogress_requests:sum:3232 + expr: vector(1) + labels: + job: job3232 + - record: job:http_inprogress_requests:sum:3233 + expr: vector(1) + labels: + job: job3233 + - record: job:http_inprogress_requests:sum:3234 + expr: vector(1) + labels: + job: job3234 + - record: job:http_inprogress_requests:sum:3235 + expr: vector(1) + labels: + job: job3235 + - record: job:http_inprogress_requests:sum:3236 + expr: vector(1) + labels: + job: job3236 + - record: job:http_inprogress_requests:sum:3237 + expr: vector(1) + labels: + job: job3237 + - record: job:http_inprogress_requests:sum:3238 + expr: vector(1) + labels: + job: job3238 + - record: job:http_inprogress_requests:sum:3239 + expr: vector(1) + labels: + job: job3239 + - record: job:http_inprogress_requests:sum:3240 + expr: vector(1) + labels: + job: job3240 + - record: job:http_inprogress_requests:sum:3241 + expr: vector(1) + labels: + job: job3241 + - record: job:http_inprogress_requests:sum:3242 + expr: vector(1) + labels: + job: job3242 + - record: job:http_inprogress_requests:sum:3243 + expr: vector(1) + labels: + job: job3243 + - record: job:http_inprogress_requests:sum:3244 + expr: vector(1) + labels: + job: job3244 + - record: job:http_inprogress_requests:sum:3245 + expr: vector(1) + labels: + job: job3245 + - record: job:http_inprogress_requests:sum:3246 + expr: vector(1) + labels: + job: job3246 + - record: job:http_inprogress_requests:sum:3247 + expr: vector(1) + labels: + job: job3247 + - record: job:http_inprogress_requests:sum:3248 + expr: vector(1) + labels: + job: job3248 + - record: job:http_inprogress_requests:sum:3249 + expr: vector(1) + labels: + job: job3249 + - record: job:http_inprogress_requests:sum:3250 + expr: vector(1) + labels: + job: job3250 + - record: job:http_inprogress_requests:sum:3251 + expr: vector(1) + labels: + job: job3251 + - record: job:http_inprogress_requests:sum:3252 + expr: vector(1) + labels: + job: job3252 + - record: job:http_inprogress_requests:sum:3253 + expr: vector(1) + labels: + job: job3253 + - record: job:http_inprogress_requests:sum:3254 + expr: vector(1) + labels: + job: job3254 + - record: job:http_inprogress_requests:sum:3255 + expr: vector(1) + labels: + job: job3255 + - record: job:http_inprogress_requests:sum:3256 + expr: vector(1) + labels: + job: job3256 + - record: job:http_inprogress_requests:sum:3257 + expr: vector(1) + labels: + job: job3257 + - record: job:http_inprogress_requests:sum:3258 + expr: vector(1) + labels: + job: job3258 + - record: job:http_inprogress_requests:sum:3259 + expr: vector(1) + labels: + job: job3259 + - record: job:http_inprogress_requests:sum:3260 + expr: vector(1) + labels: + job: job3260 + - record: job:http_inprogress_requests:sum:3261 + expr: vector(1) + labels: + job: job3261 + - record: job:http_inprogress_requests:sum:3262 + expr: vector(1) + labels: + job: job3262 + - record: job:http_inprogress_requests:sum:3263 + expr: vector(1) + labels: + job: job3263 + - record: job:http_inprogress_requests:sum:3264 + expr: vector(1) + labels: + job: job3264 + - record: job:http_inprogress_requests:sum:3265 + expr: vector(1) + labels: + job: job3265 + - record: job:http_inprogress_requests:sum:3266 + expr: vector(1) + labels: + job: job3266 + - record: job:http_inprogress_requests:sum:3267 + expr: vector(1) + labels: + job: job3267 + - record: job:http_inprogress_requests:sum:3268 + expr: vector(1) + labels: + job: job3268 + - record: job:http_inprogress_requests:sum:3269 + expr: vector(1) + labels: + job: job3269 + - record: job:http_inprogress_requests:sum:3270 + expr: vector(1) + labels: + job: job3270 + - record: job:http_inprogress_requests:sum:3271 + expr: vector(1) + labels: + job: job3271 + - record: job:http_inprogress_requests:sum:3272 + expr: vector(1) + labels: + job: job3272 + - record: job:http_inprogress_requests:sum:3273 + expr: vector(1) + labels: + job: job3273 + - record: job:http_inprogress_requests:sum:3274 + expr: vector(1) + labels: + job: job3274 + - record: job:http_inprogress_requests:sum:3275 + expr: vector(1) + labels: + job: job3275 + - record: job:http_inprogress_requests:sum:3276 + expr: vector(1) + labels: + job: job3276 + - record: job:http_inprogress_requests:sum:3277 + expr: vector(1) + labels: + job: job3277 + - record: job:http_inprogress_requests:sum:3278 + expr: vector(1) + labels: + job: job3278 + - record: job:http_inprogress_requests:sum:3279 + expr: vector(1) + labels: + job: job3279 + - record: job:http_inprogress_requests:sum:3280 + expr: vector(1) + labels: + job: job3280 + - record: job:http_inprogress_requests:sum:3281 + expr: vector(1) + labels: + job: job3281 + - record: job:http_inprogress_requests:sum:3282 + expr: vector(1) + labels: + job: job3282 + - record: job:http_inprogress_requests:sum:3283 + expr: vector(1) + labels: + job: job3283 + - record: job:http_inprogress_requests:sum:3284 + expr: vector(1) + labels: + job: job3284 + - record: job:http_inprogress_requests:sum:3285 + expr: vector(1) + labels: + job: job3285 + - record: job:http_inprogress_requests:sum:3286 + expr: vector(1) + labels: + job: job3286 + - record: job:http_inprogress_requests:sum:3287 + expr: vector(1) + labels: + job: job3287 + - record: job:http_inprogress_requests:sum:3288 + expr: vector(1) + labels: + job: job3288 + - record: job:http_inprogress_requests:sum:3289 + expr: vector(1) + labels: + job: job3289 + - record: job:http_inprogress_requests:sum:3290 + expr: vector(1) + labels: + job: job3290 + - record: job:http_inprogress_requests:sum:3291 + expr: vector(1) + labels: + job: job3291 + - record: job:http_inprogress_requests:sum:3292 + expr: vector(1) + labels: + job: job3292 + - record: job:http_inprogress_requests:sum:3293 + expr: vector(1) + labels: + job: job3293 + - record: job:http_inprogress_requests:sum:3294 + expr: vector(1) + labels: + job: job3294 + - record: job:http_inprogress_requests:sum:3295 + expr: vector(1) + labels: + job: job3295 + - record: job:http_inprogress_requests:sum:3296 + expr: vector(1) + labels: + job: job3296 + - record: job:http_inprogress_requests:sum:3297 + expr: vector(1) + labels: + job: job3297 + - record: job:http_inprogress_requests:sum:3298 + expr: vector(1) + labels: + job: job3298 + - record: job:http_inprogress_requests:sum:3299 + expr: vector(1) + labels: + job: job3299 + - record: job:http_inprogress_requests:sum:3300 + expr: vector(1) + labels: + job: job3300 + - record: job:http_inprogress_requests:sum:3301 + expr: vector(1) + labels: + job: job3301 + - record: job:http_inprogress_requests:sum:3302 + expr: vector(1) + labels: + job: job3302 + - record: job:http_inprogress_requests:sum:3303 + expr: vector(1) + labels: + job: job3303 + - record: job:http_inprogress_requests:sum:3304 + expr: vector(1) + labels: + job: job3304 + - record: job:http_inprogress_requests:sum:3305 + expr: vector(1) + labels: + job: job3305 + - record: job:http_inprogress_requests:sum:3306 + expr: vector(1) + labels: + job: job3306 + - record: job:http_inprogress_requests:sum:3307 + expr: vector(1) + labels: + job: job3307 + - record: job:http_inprogress_requests:sum:3308 + expr: vector(1) + labels: + job: job3308 + - record: job:http_inprogress_requests:sum:3309 + expr: vector(1) + labels: + job: job3309 + - record: job:http_inprogress_requests:sum:3310 + expr: vector(1) + labels: + job: job3310 + - record: job:http_inprogress_requests:sum:3311 + expr: vector(1) + labels: + job: job3311 + - record: job:http_inprogress_requests:sum:3312 + expr: vector(1) + labels: + job: job3312 + - record: job:http_inprogress_requests:sum:3313 + expr: vector(1) + labels: + job: job3313 + - record: job:http_inprogress_requests:sum:3314 + expr: vector(1) + labels: + job: job3314 + - record: job:http_inprogress_requests:sum:3315 + expr: vector(1) + labels: + job: job3315 + - record: job:http_inprogress_requests:sum:3316 + expr: vector(1) + labels: + job: job3316 + - record: job:http_inprogress_requests:sum:3317 + expr: vector(1) + labels: + job: job3317 + - record: job:http_inprogress_requests:sum:3318 + expr: vector(1) + labels: + job: job3318 + - record: job:http_inprogress_requests:sum:3319 + expr: vector(1) + labels: + job: job3319 + - record: job:http_inprogress_requests:sum:3320 + expr: vector(1) + labels: + job: job3320 + - record: job:http_inprogress_requests:sum:3321 + expr: vector(1) + labels: + job: job3321 + - record: job:http_inprogress_requests:sum:3322 + expr: vector(1) + labels: + job: job3322 + - record: job:http_inprogress_requests:sum:3323 + expr: vector(1) + labels: + job: job3323 + - record: job:http_inprogress_requests:sum:3324 + expr: vector(1) + labels: + job: job3324 + - record: job:http_inprogress_requests:sum:3325 + expr: vector(1) + labels: + job: job3325 + - record: job:http_inprogress_requests:sum:3326 + expr: vector(1) + labels: + job: job3326 + - record: job:http_inprogress_requests:sum:3327 + expr: vector(1) + labels: + job: job3327 + - record: job:http_inprogress_requests:sum:3328 + expr: vector(1) + labels: + job: job3328 + - record: job:http_inprogress_requests:sum:3329 + expr: vector(1) + labels: + job: job3329 + - record: job:http_inprogress_requests:sum:3330 + expr: vector(1) + labels: + job: job3330 + - record: job:http_inprogress_requests:sum:3331 + expr: vector(1) + labels: + job: job3331 + - record: job:http_inprogress_requests:sum:3332 + expr: vector(1) + labels: + job: job3332 + - record: job:http_inprogress_requests:sum:3333 + expr: vector(1) + labels: + job: job3333 + - record: job:http_inprogress_requests:sum:3334 + expr: vector(1) + labels: + job: job3334 + - record: job:http_inprogress_requests:sum:3335 + expr: vector(1) + labels: + job: job3335 + - record: job:http_inprogress_requests:sum:3336 + expr: vector(1) + labels: + job: job3336 + - record: job:http_inprogress_requests:sum:3337 + expr: vector(1) + labels: + job: job3337 + - record: job:http_inprogress_requests:sum:3338 + expr: vector(1) + labels: + job: job3338 + - record: job:http_inprogress_requests:sum:3339 + expr: vector(1) + labels: + job: job3339 + - record: job:http_inprogress_requests:sum:3340 + expr: vector(1) + labels: + job: job3340 + - record: job:http_inprogress_requests:sum:3341 + expr: vector(1) + labels: + job: job3341 + - record: job:http_inprogress_requests:sum:3342 + expr: vector(1) + labels: + job: job3342 + - record: job:http_inprogress_requests:sum:3343 + expr: vector(1) + labels: + job: job3343 + - record: job:http_inprogress_requests:sum:3344 + expr: vector(1) + labels: + job: job3344 + - record: job:http_inprogress_requests:sum:3345 + expr: vector(1) + labels: + job: job3345 + - record: job:http_inprogress_requests:sum:3346 + expr: vector(1) + labels: + job: job3346 + - record: job:http_inprogress_requests:sum:3347 + expr: vector(1) + labels: + job: job3347 + - record: job:http_inprogress_requests:sum:3348 + expr: vector(1) + labels: + job: job3348 + - record: job:http_inprogress_requests:sum:3349 + expr: vector(1) + labels: + job: job3349 + - record: job:http_inprogress_requests:sum:3350 + expr: vector(1) + labels: + job: job3350 + - record: job:http_inprogress_requests:sum:3351 + expr: vector(1) + labels: + job: job3351 + - record: job:http_inprogress_requests:sum:3352 + expr: vector(1) + labels: + job: job3352 + - record: job:http_inprogress_requests:sum:3353 + expr: vector(1) + labels: + job: job3353 + - record: job:http_inprogress_requests:sum:3354 + expr: vector(1) + labels: + job: job3354 + - record: job:http_inprogress_requests:sum:3355 + expr: vector(1) + labels: + job: job3355 + - record: job:http_inprogress_requests:sum:3356 + expr: vector(1) + labels: + job: job3356 + - record: job:http_inprogress_requests:sum:3357 + expr: vector(1) + labels: + job: job3357 + - record: job:http_inprogress_requests:sum:3358 + expr: vector(1) + labels: + job: job3358 + - record: job:http_inprogress_requests:sum:3359 + expr: vector(1) + labels: + job: job3359 + - record: job:http_inprogress_requests:sum:3360 + expr: vector(1) + labels: + job: job3360 + - record: job:http_inprogress_requests:sum:3361 + expr: vector(1) + labels: + job: job3361 + - record: job:http_inprogress_requests:sum:3362 + expr: vector(1) + labels: + job: job3362 + - record: job:http_inprogress_requests:sum:3363 + expr: vector(1) + labels: + job: job3363 + - record: job:http_inprogress_requests:sum:3364 + expr: vector(1) + labels: + job: job3364 + - record: job:http_inprogress_requests:sum:3365 + expr: vector(1) + labels: + job: job3365 + - record: job:http_inprogress_requests:sum:3366 + expr: vector(1) + labels: + job: job3366 + - record: job:http_inprogress_requests:sum:3367 + expr: vector(1) + labels: + job: job3367 + - record: job:http_inprogress_requests:sum:3368 + expr: vector(1) + labels: + job: job3368 + - record: job:http_inprogress_requests:sum:3369 + expr: vector(1) + labels: + job: job3369 + - record: job:http_inprogress_requests:sum:3370 + expr: vector(1) + labels: + job: job3370 + - record: job:http_inprogress_requests:sum:3371 + expr: vector(1) + labels: + job: job3371 + - record: job:http_inprogress_requests:sum:3372 + expr: vector(1) + labels: + job: job3372 + - record: job:http_inprogress_requests:sum:3373 + expr: vector(1) + labels: + job: job3373 + - record: job:http_inprogress_requests:sum:3374 + expr: vector(1) + labels: + job: job3374 + - record: job:http_inprogress_requests:sum:3375 + expr: vector(1) + labels: + job: job3375 + - record: job:http_inprogress_requests:sum:3376 + expr: vector(1) + labels: + job: job3376 + - record: job:http_inprogress_requests:sum:3377 + expr: vector(1) + labels: + job: job3377 + - record: job:http_inprogress_requests:sum:3378 + expr: vector(1) + labels: + job: job3378 + - record: job:http_inprogress_requests:sum:3379 + expr: vector(1) + labels: + job: job3379 + - record: job:http_inprogress_requests:sum:3380 + expr: vector(1) + labels: + job: job3380 + - record: job:http_inprogress_requests:sum:3381 + expr: vector(1) + labels: + job: job3381 + - record: job:http_inprogress_requests:sum:3382 + expr: vector(1) + labels: + job: job3382 + - record: job:http_inprogress_requests:sum:3383 + expr: vector(1) + labels: + job: job3383 + - record: job:http_inprogress_requests:sum:3384 + expr: vector(1) + labels: + job: job3384 + - record: job:http_inprogress_requests:sum:3385 + expr: vector(1) + labels: + job: job3385 + - record: job:http_inprogress_requests:sum:3386 + expr: vector(1) + labels: + job: job3386 + - record: job:http_inprogress_requests:sum:3387 + expr: vector(1) + labels: + job: job3387 + - record: job:http_inprogress_requests:sum:3388 + expr: vector(1) + labels: + job: job3388 + - record: job:http_inprogress_requests:sum:3389 + expr: vector(1) + labels: + job: job3389 + - record: job:http_inprogress_requests:sum:3390 + expr: vector(1) + labels: + job: job3390 + - record: job:http_inprogress_requests:sum:3391 + expr: vector(1) + labels: + job: job3391 + - record: job:http_inprogress_requests:sum:3392 + expr: vector(1) + labels: + job: job3392 + - record: job:http_inprogress_requests:sum:3393 + expr: vector(1) + labels: + job: job3393 + - record: job:http_inprogress_requests:sum:3394 + expr: vector(1) + labels: + job: job3394 + - record: job:http_inprogress_requests:sum:3395 + expr: vector(1) + labels: + job: job3395 + - record: job:http_inprogress_requests:sum:3396 + expr: vector(1) + labels: + job: job3396 + - record: job:http_inprogress_requests:sum:3397 + expr: vector(1) + labels: + job: job3397 + - record: job:http_inprogress_requests:sum:3398 + expr: vector(1) + labels: + job: job3398 + - record: job:http_inprogress_requests:sum:3399 + expr: vector(1) + labels: + job: job3399 + - record: job:http_inprogress_requests:sum:3400 + expr: vector(1) + labels: + job: job3400 + - record: job:http_inprogress_requests:sum:3401 + expr: vector(1) + labels: + job: job3401 + - record: job:http_inprogress_requests:sum:3402 + expr: vector(1) + labels: + job: job3402 + - record: job:http_inprogress_requests:sum:3403 + expr: vector(1) + labels: + job: job3403 + - record: job:http_inprogress_requests:sum:3404 + expr: vector(1) + labels: + job: job3404 + - record: job:http_inprogress_requests:sum:3405 + expr: vector(1) + labels: + job: job3405 + - record: job:http_inprogress_requests:sum:3406 + expr: vector(1) + labels: + job: job3406 + - record: job:http_inprogress_requests:sum:3407 + expr: vector(1) + labels: + job: job3407 + - record: job:http_inprogress_requests:sum:3408 + expr: vector(1) + labels: + job: job3408 + - record: job:http_inprogress_requests:sum:3409 + expr: vector(1) + labels: + job: job3409 + - record: job:http_inprogress_requests:sum:3410 + expr: vector(1) + labels: + job: job3410 + - record: job:http_inprogress_requests:sum:3411 + expr: vector(1) + labels: + job: job3411 + - record: job:http_inprogress_requests:sum:3412 + expr: vector(1) + labels: + job: job3412 + - record: job:http_inprogress_requests:sum:3413 + expr: vector(1) + labels: + job: job3413 + - record: job:http_inprogress_requests:sum:3414 + expr: vector(1) + labels: + job: job3414 + - record: job:http_inprogress_requests:sum:3415 + expr: vector(1) + labels: + job: job3415 + - record: job:http_inprogress_requests:sum:3416 + expr: vector(1) + labels: + job: job3416 + - record: job:http_inprogress_requests:sum:3417 + expr: vector(1) + labels: + job: job3417 + - record: job:http_inprogress_requests:sum:3418 + expr: vector(1) + labels: + job: job3418 + - record: job:http_inprogress_requests:sum:3419 + expr: vector(1) + labels: + job: job3419 + - record: job:http_inprogress_requests:sum:3420 + expr: vector(1) + labels: + job: job3420 + - record: job:http_inprogress_requests:sum:3421 + expr: vector(1) + labels: + job: job3421 + - record: job:http_inprogress_requests:sum:3422 + expr: vector(1) + labels: + job: job3422 + - record: job:http_inprogress_requests:sum:3423 + expr: vector(1) + labels: + job: job3423 + - record: job:http_inprogress_requests:sum:3424 + expr: vector(1) + labels: + job: job3424 + - record: job:http_inprogress_requests:sum:3425 + expr: vector(1) + labels: + job: job3425 + - record: job:http_inprogress_requests:sum:3426 + expr: vector(1) + labels: + job: job3426 + - record: job:http_inprogress_requests:sum:3427 + expr: vector(1) + labels: + job: job3427 + - record: job:http_inprogress_requests:sum:3428 + expr: vector(1) + labels: + job: job3428 + - record: job:http_inprogress_requests:sum:3429 + expr: vector(1) + labels: + job: job3429 + - record: job:http_inprogress_requests:sum:3430 + expr: vector(1) + labels: + job: job3430 + - record: job:http_inprogress_requests:sum:3431 + expr: vector(1) + labels: + job: job3431 + - record: job:http_inprogress_requests:sum:3432 + expr: vector(1) + labels: + job: job3432 + - record: job:http_inprogress_requests:sum:3433 + expr: vector(1) + labels: + job: job3433 + - record: job:http_inprogress_requests:sum:3434 + expr: vector(1) + labels: + job: job3434 + - record: job:http_inprogress_requests:sum:3435 + expr: vector(1) + labels: + job: job3435 + - record: job:http_inprogress_requests:sum:3436 + expr: vector(1) + labels: + job: job3436 + - record: job:http_inprogress_requests:sum:3437 + expr: vector(1) + labels: + job: job3437 + - record: job:http_inprogress_requests:sum:3438 + expr: vector(1) + labels: + job: job3438 + - record: job:http_inprogress_requests:sum:3439 + expr: vector(1) + labels: + job: job3439 + - record: job:http_inprogress_requests:sum:3440 + expr: vector(1) + labels: + job: job3440 + - record: job:http_inprogress_requests:sum:3441 + expr: vector(1) + labels: + job: job3441 + - record: job:http_inprogress_requests:sum:3442 + expr: vector(1) + labels: + job: job3442 + - record: job:http_inprogress_requests:sum:3443 + expr: vector(1) + labels: + job: job3443 + - record: job:http_inprogress_requests:sum:3444 + expr: vector(1) + labels: + job: job3444 + - record: job:http_inprogress_requests:sum:3445 + expr: vector(1) + labels: + job: job3445 + - record: job:http_inprogress_requests:sum:3446 + expr: vector(1) + labels: + job: job3446 + - record: job:http_inprogress_requests:sum:3447 + expr: vector(1) + labels: + job: job3447 + - record: job:http_inprogress_requests:sum:3448 + expr: vector(1) + labels: + job: job3448 + - record: job:http_inprogress_requests:sum:3449 + expr: vector(1) + labels: + job: job3449 + - record: job:http_inprogress_requests:sum:3450 + expr: vector(1) + labels: + job: job3450 + - record: job:http_inprogress_requests:sum:3451 + expr: vector(1) + labels: + job: job3451 + - record: job:http_inprogress_requests:sum:3452 + expr: vector(1) + labels: + job: job3452 + - record: job:http_inprogress_requests:sum:3453 + expr: vector(1) + labels: + job: job3453 + - record: job:http_inprogress_requests:sum:3454 + expr: vector(1) + labels: + job: job3454 + - record: job:http_inprogress_requests:sum:3455 + expr: vector(1) + labels: + job: job3455 + - record: job:http_inprogress_requests:sum:3456 + expr: vector(1) + labels: + job: job3456 + - record: job:http_inprogress_requests:sum:3457 + expr: vector(1) + labels: + job: job3457 + - record: job:http_inprogress_requests:sum:3458 + expr: vector(1) + labels: + job: job3458 + - record: job:http_inprogress_requests:sum:3459 + expr: vector(1) + labels: + job: job3459 + - record: job:http_inprogress_requests:sum:3460 + expr: vector(1) + labels: + job: job3460 + - record: job:http_inprogress_requests:sum:3461 + expr: vector(1) + labels: + job: job3461 + - record: job:http_inprogress_requests:sum:3462 + expr: vector(1) + labels: + job: job3462 + - record: job:http_inprogress_requests:sum:3463 + expr: vector(1) + labels: + job: job3463 + - record: job:http_inprogress_requests:sum:3464 + expr: vector(1) + labels: + job: job3464 + - record: job:http_inprogress_requests:sum:3465 + expr: vector(1) + labels: + job: job3465 + - record: job:http_inprogress_requests:sum:3466 + expr: vector(1) + labels: + job: job3466 + - record: job:http_inprogress_requests:sum:3467 + expr: vector(1) + labels: + job: job3467 + - record: job:http_inprogress_requests:sum:3468 + expr: vector(1) + labels: + job: job3468 + - record: job:http_inprogress_requests:sum:3469 + expr: vector(1) + labels: + job: job3469 + - record: job:http_inprogress_requests:sum:3470 + expr: vector(1) + labels: + job: job3470 + - record: job:http_inprogress_requests:sum:3471 + expr: vector(1) + labels: + job: job3471 + - record: job:http_inprogress_requests:sum:3472 + expr: vector(1) + labels: + job: job3472 + - record: job:http_inprogress_requests:sum:3473 + expr: vector(1) + labels: + job: job3473 + - record: job:http_inprogress_requests:sum:3474 + expr: vector(1) + labels: + job: job3474 + - record: job:http_inprogress_requests:sum:3475 + expr: vector(1) + labels: + job: job3475 + - record: job:http_inprogress_requests:sum:3476 + expr: vector(1) + labels: + job: job3476 + - record: job:http_inprogress_requests:sum:3477 + expr: vector(1) + labels: + job: job3477 + - record: job:http_inprogress_requests:sum:3478 + expr: vector(1) + labels: + job: job3478 + - record: job:http_inprogress_requests:sum:3479 + expr: vector(1) + labels: + job: job3479 + - record: job:http_inprogress_requests:sum:3480 + expr: vector(1) + labels: + job: job3480 + - record: job:http_inprogress_requests:sum:3481 + expr: vector(1) + labels: + job: job3481 + - record: job:http_inprogress_requests:sum:3482 + expr: vector(1) + labels: + job: job3482 + - record: job:http_inprogress_requests:sum:3483 + expr: vector(1) + labels: + job: job3483 + - record: job:http_inprogress_requests:sum:3484 + expr: vector(1) + labels: + job: job3484 + - record: job:http_inprogress_requests:sum:3485 + expr: vector(1) + labels: + job: job3485 + - record: job:http_inprogress_requests:sum:3486 + expr: vector(1) + labels: + job: job3486 + - record: job:http_inprogress_requests:sum:3487 + expr: vector(1) + labels: + job: job3487 + - record: job:http_inprogress_requests:sum:3488 + expr: vector(1) + labels: + job: job3488 + - record: job:http_inprogress_requests:sum:3489 + expr: vector(1) + labels: + job: job3489 + - record: job:http_inprogress_requests:sum:3490 + expr: vector(1) + labels: + job: job3490 + - record: job:http_inprogress_requests:sum:3491 + expr: vector(1) + labels: + job: job3491 + - record: job:http_inprogress_requests:sum:3492 + expr: vector(1) + labels: + job: job3492 + - record: job:http_inprogress_requests:sum:3493 + expr: vector(1) + labels: + job: job3493 + - record: job:http_inprogress_requests:sum:3494 + expr: vector(1) + labels: + job: job3494 + - record: job:http_inprogress_requests:sum:3495 + expr: vector(1) + labels: + job: job3495 + - record: job:http_inprogress_requests:sum:3496 + expr: vector(1) + labels: + job: job3496 + - record: job:http_inprogress_requests:sum:3497 + expr: vector(1) + labels: + job: job3497 + - record: job:http_inprogress_requests:sum:3498 + expr: vector(1) + labels: + job: job3498 + - record: job:http_inprogress_requests:sum:3499 + expr: vector(1) + labels: + job: job3499 + - record: job:http_inprogress_requests:sum:3500 + expr: vector(1) + labels: + job: job3500 + - record: job:http_inprogress_requests:sum:3501 + expr: vector(1) + labels: + job: job3501 + - record: job:http_inprogress_requests:sum:3502 + expr: vector(1) + labels: + job: job3502 + - record: job:http_inprogress_requests:sum:3503 + expr: vector(1) + labels: + job: job3503 + - record: job:http_inprogress_requests:sum:3504 + expr: vector(1) + labels: + job: job3504 + - record: job:http_inprogress_requests:sum:3505 + expr: vector(1) + labels: + job: job3505 + - record: job:http_inprogress_requests:sum:3506 + expr: vector(1) + labels: + job: job3506 + - record: job:http_inprogress_requests:sum:3507 + expr: vector(1) + labels: + job: job3507 + - record: job:http_inprogress_requests:sum:3508 + expr: vector(1) + labels: + job: job3508 + - record: job:http_inprogress_requests:sum:3509 + expr: vector(1) + labels: + job: job3509 + - record: job:http_inprogress_requests:sum:3510 + expr: vector(1) + labels: + job: job3510 + - record: job:http_inprogress_requests:sum:3511 + expr: vector(1) + labels: + job: job3511 + - record: job:http_inprogress_requests:sum:3512 + expr: vector(1) + labels: + job: job3512 + - record: job:http_inprogress_requests:sum:3513 + expr: vector(1) + labels: + job: job3513 + - record: job:http_inprogress_requests:sum:3514 + expr: vector(1) + labels: + job: job3514 + - record: job:http_inprogress_requests:sum:3515 + expr: vector(1) + labels: + job: job3515 + - record: job:http_inprogress_requests:sum:3516 + expr: vector(1) + labels: + job: job3516 + - record: job:http_inprogress_requests:sum:3517 + expr: vector(1) + labels: + job: job3517 + - record: job:http_inprogress_requests:sum:3518 + expr: vector(1) + labels: + job: job3518 + - record: job:http_inprogress_requests:sum:3519 + expr: vector(1) + labels: + job: job3519 + - record: job:http_inprogress_requests:sum:3520 + expr: vector(1) + labels: + job: job3520 + - record: job:http_inprogress_requests:sum:3521 + expr: vector(1) + labels: + job: job3521 + - record: job:http_inprogress_requests:sum:3522 + expr: vector(1) + labels: + job: job3522 + - record: job:http_inprogress_requests:sum:3523 + expr: vector(1) + labels: + job: job3523 + - record: job:http_inprogress_requests:sum:3524 + expr: vector(1) + labels: + job: job3524 + - record: job:http_inprogress_requests:sum:3525 + expr: vector(1) + labels: + job: job3525 + - record: job:http_inprogress_requests:sum:3526 + expr: vector(1) + labels: + job: job3526 + - record: job:http_inprogress_requests:sum:3527 + expr: vector(1) + labels: + job: job3527 + - record: job:http_inprogress_requests:sum:3528 + expr: vector(1) + labels: + job: job3528 + - record: job:http_inprogress_requests:sum:3529 + expr: vector(1) + labels: + job: job3529 + - record: job:http_inprogress_requests:sum:3530 + expr: vector(1) + labels: + job: job3530 + - record: job:http_inprogress_requests:sum:3531 + expr: vector(1) + labels: + job: job3531 + - record: job:http_inprogress_requests:sum:3532 + expr: vector(1) + labels: + job: job3532 + - record: job:http_inprogress_requests:sum:3533 + expr: vector(1) + labels: + job: job3533 + - record: job:http_inprogress_requests:sum:3534 + expr: vector(1) + labels: + job: job3534 + - record: job:http_inprogress_requests:sum:3535 + expr: vector(1) + labels: + job: job3535 + - record: job:http_inprogress_requests:sum:3536 + expr: vector(1) + labels: + job: job3536 + - record: job:http_inprogress_requests:sum:3537 + expr: vector(1) + labels: + job: job3537 + - record: job:http_inprogress_requests:sum:3538 + expr: vector(1) + labels: + job: job3538 + - record: job:http_inprogress_requests:sum:3539 + expr: vector(1) + labels: + job: job3539 + - record: job:http_inprogress_requests:sum:3540 + expr: vector(1) + labels: + job: job3540 + - record: job:http_inprogress_requests:sum:3541 + expr: vector(1) + labels: + job: job3541 + - record: job:http_inprogress_requests:sum:3542 + expr: vector(1) + labels: + job: job3542 + - record: job:http_inprogress_requests:sum:3543 + expr: vector(1) + labels: + job: job3543 + - record: job:http_inprogress_requests:sum:3544 + expr: vector(1) + labels: + job: job3544 + - record: job:http_inprogress_requests:sum:3545 + expr: vector(1) + labels: + job: job3545 + - record: job:http_inprogress_requests:sum:3546 + expr: vector(1) + labels: + job: job3546 + - record: job:http_inprogress_requests:sum:3547 + expr: vector(1) + labels: + job: job3547 + - record: job:http_inprogress_requests:sum:3548 + expr: vector(1) + labels: + job: job3548 + - record: job:http_inprogress_requests:sum:3549 + expr: vector(1) + labels: + job: job3549 + - record: job:http_inprogress_requests:sum:3550 + expr: vector(1) + labels: + job: job3550 + - record: job:http_inprogress_requests:sum:3551 + expr: vector(1) + labels: + job: job3551 + - record: job:http_inprogress_requests:sum:3552 + expr: vector(1) + labels: + job: job3552 + - record: job:http_inprogress_requests:sum:3553 + expr: vector(1) + labels: + job: job3553 + - record: job:http_inprogress_requests:sum:3554 + expr: vector(1) + labels: + job: job3554 + - record: job:http_inprogress_requests:sum:3555 + expr: vector(1) + labels: + job: job3555 + - record: job:http_inprogress_requests:sum:3556 + expr: vector(1) + labels: + job: job3556 + - record: job:http_inprogress_requests:sum:3557 + expr: vector(1) + labels: + job: job3557 + - record: job:http_inprogress_requests:sum:3558 + expr: vector(1) + labels: + job: job3558 + - record: job:http_inprogress_requests:sum:3559 + expr: vector(1) + labels: + job: job3559 + - record: job:http_inprogress_requests:sum:3560 + expr: vector(1) + labels: + job: job3560 + - record: job:http_inprogress_requests:sum:3561 + expr: vector(1) + labels: + job: job3561 + - record: job:http_inprogress_requests:sum:3562 + expr: vector(1) + labels: + job: job3562 + - record: job:http_inprogress_requests:sum:3563 + expr: vector(1) + labels: + job: job3563 + - record: job:http_inprogress_requests:sum:3564 + expr: vector(1) + labels: + job: job3564 + - record: job:http_inprogress_requests:sum:3565 + expr: vector(1) + labels: + job: job3565 + - record: job:http_inprogress_requests:sum:3566 + expr: vector(1) + labels: + job: job3566 + - record: job:http_inprogress_requests:sum:3567 + expr: vector(1) + labels: + job: job3567 + - record: job:http_inprogress_requests:sum:3568 + expr: vector(1) + labels: + job: job3568 + - record: job:http_inprogress_requests:sum:3569 + expr: vector(1) + labels: + job: job3569 + - record: job:http_inprogress_requests:sum:3570 + expr: vector(1) + labels: + job: job3570 + - record: job:http_inprogress_requests:sum:3571 + expr: vector(1) + labels: + job: job3571 + - record: job:http_inprogress_requests:sum:3572 + expr: vector(1) + labels: + job: job3572 + - record: job:http_inprogress_requests:sum:3573 + expr: vector(1) + labels: + job: job3573 + - record: job:http_inprogress_requests:sum:3574 + expr: vector(1) + labels: + job: job3574 + - record: job:http_inprogress_requests:sum:3575 + expr: vector(1) + labels: + job: job3575 + - record: job:http_inprogress_requests:sum:3576 + expr: vector(1) + labels: + job: job3576 + - record: job:http_inprogress_requests:sum:3577 + expr: vector(1) + labels: + job: job3577 + - record: job:http_inprogress_requests:sum:3578 + expr: vector(1) + labels: + job: job3578 + - record: job:http_inprogress_requests:sum:3579 + expr: vector(1) + labels: + job: job3579 + - record: job:http_inprogress_requests:sum:3580 + expr: vector(1) + labels: + job: job3580 + - record: job:http_inprogress_requests:sum:3581 + expr: vector(1) + labels: + job: job3581 + - record: job:http_inprogress_requests:sum:3582 + expr: vector(1) + labels: + job: job3582 + - record: job:http_inprogress_requests:sum:3583 + expr: vector(1) + labels: + job: job3583 + - record: job:http_inprogress_requests:sum:3584 + expr: vector(1) + labels: + job: job3584 + - record: job:http_inprogress_requests:sum:3585 + expr: vector(1) + labels: + job: job3585 + - record: job:http_inprogress_requests:sum:3586 + expr: vector(1) + labels: + job: job3586 + - record: job:http_inprogress_requests:sum:3587 + expr: vector(1) + labels: + job: job3587 + - record: job:http_inprogress_requests:sum:3588 + expr: vector(1) + labels: + job: job3588 + - record: job:http_inprogress_requests:sum:3589 + expr: vector(1) + labels: + job: job3589 + - record: job:http_inprogress_requests:sum:3590 + expr: vector(1) + labels: + job: job3590 + - record: job:http_inprogress_requests:sum:3591 + expr: vector(1) + labels: + job: job3591 + - record: job:http_inprogress_requests:sum:3592 + expr: vector(1) + labels: + job: job3592 + - record: job:http_inprogress_requests:sum:3593 + expr: vector(1) + labels: + job: job3593 + - record: job:http_inprogress_requests:sum:3594 + expr: vector(1) + labels: + job: job3594 + - record: job:http_inprogress_requests:sum:3595 + expr: vector(1) + labels: + job: job3595 + - record: job:http_inprogress_requests:sum:3596 + expr: vector(1) + labels: + job: job3596 + - record: job:http_inprogress_requests:sum:3597 + expr: vector(1) + labels: + job: job3597 + - record: job:http_inprogress_requests:sum:3598 + expr: vector(1) + labels: + job: job3598 + - record: job:http_inprogress_requests:sum:3599 + expr: vector(1) + labels: + job: job3599 + - record: job:http_inprogress_requests:sum:3600 + expr: vector(1) + labels: + job: job3600 + - record: job:http_inprogress_requests:sum:3601 + expr: vector(1) + labels: + job: job3601 + - record: job:http_inprogress_requests:sum:3602 + expr: vector(1) + labels: + job: job3602 + - record: job:http_inprogress_requests:sum:3603 + expr: vector(1) + labels: + job: job3603 + - record: job:http_inprogress_requests:sum:3604 + expr: vector(1) + labels: + job: job3604 + - record: job:http_inprogress_requests:sum:3605 + expr: vector(1) + labels: + job: job3605 + - record: job:http_inprogress_requests:sum:3606 + expr: vector(1) + labels: + job: job3606 + - record: job:http_inprogress_requests:sum:3607 + expr: vector(1) + labels: + job: job3607 + - record: job:http_inprogress_requests:sum:3608 + expr: vector(1) + labels: + job: job3608 + - record: job:http_inprogress_requests:sum:3609 + expr: vector(1) + labels: + job: job3609 + - record: job:http_inprogress_requests:sum:3610 + expr: vector(1) + labels: + job: job3610 + - record: job:http_inprogress_requests:sum:3611 + expr: vector(1) + labels: + job: job3611 + - record: job:http_inprogress_requests:sum:3612 + expr: vector(1) + labels: + job: job3612 + - record: job:http_inprogress_requests:sum:3613 + expr: vector(1) + labels: + job: job3613 + - record: job:http_inprogress_requests:sum:3614 + expr: vector(1) + labels: + job: job3614 + - record: job:http_inprogress_requests:sum:3615 + expr: vector(1) + labels: + job: job3615 + - record: job:http_inprogress_requests:sum:3616 + expr: vector(1) + labels: + job: job3616 + - record: job:http_inprogress_requests:sum:3617 + expr: vector(1) + labels: + job: job3617 + - record: job:http_inprogress_requests:sum:3618 + expr: vector(1) + labels: + job: job3618 + - record: job:http_inprogress_requests:sum:3619 + expr: vector(1) + labels: + job: job3619 + - record: job:http_inprogress_requests:sum:3620 + expr: vector(1) + labels: + job: job3620 + - record: job:http_inprogress_requests:sum:3621 + expr: vector(1) + labels: + job: job3621 + - record: job:http_inprogress_requests:sum:3622 + expr: vector(1) + labels: + job: job3622 + - record: job:http_inprogress_requests:sum:3623 + expr: vector(1) + labels: + job: job3623 + - record: job:http_inprogress_requests:sum:3624 + expr: vector(1) + labels: + job: job3624 + - record: job:http_inprogress_requests:sum:3625 + expr: vector(1) + labels: + job: job3625 + - record: job:http_inprogress_requests:sum:3626 + expr: vector(1) + labels: + job: job3626 + - record: job:http_inprogress_requests:sum:3627 + expr: vector(1) + labels: + job: job3627 + - record: job:http_inprogress_requests:sum:3628 + expr: vector(1) + labels: + job: job3628 + - record: job:http_inprogress_requests:sum:3629 + expr: vector(1) + labels: + job: job3629 + - record: job:http_inprogress_requests:sum:3630 + expr: vector(1) + labels: + job: job3630 + - record: job:http_inprogress_requests:sum:3631 + expr: vector(1) + labels: + job: job3631 + - record: job:http_inprogress_requests:sum:3632 + expr: vector(1) + labels: + job: job3632 + - record: job:http_inprogress_requests:sum:3633 + expr: vector(1) + labels: + job: job3633 + - record: job:http_inprogress_requests:sum:3634 + expr: vector(1) + labels: + job: job3634 + - record: job:http_inprogress_requests:sum:3635 + expr: vector(1) + labels: + job: job3635 + - record: job:http_inprogress_requests:sum:3636 + expr: vector(1) + labels: + job: job3636 + - record: job:http_inprogress_requests:sum:3637 + expr: vector(1) + labels: + job: job3637 + - record: job:http_inprogress_requests:sum:3638 + expr: vector(1) + labels: + job: job3638 + - record: job:http_inprogress_requests:sum:3639 + expr: vector(1) + labels: + job: job3639 + - record: job:http_inprogress_requests:sum:3640 + expr: vector(1) + labels: + job: job3640 + - record: job:http_inprogress_requests:sum:3641 + expr: vector(1) + labels: + job: job3641 + - record: job:http_inprogress_requests:sum:3642 + expr: vector(1) + labels: + job: job3642 + - record: job:http_inprogress_requests:sum:3643 + expr: vector(1) + labels: + job: job3643 + - record: job:http_inprogress_requests:sum:3644 + expr: vector(1) + labels: + job: job3644 + - record: job:http_inprogress_requests:sum:3645 + expr: vector(1) + labels: + job: job3645 + - record: job:http_inprogress_requests:sum:3646 + expr: vector(1) + labels: + job: job3646 + - record: job:http_inprogress_requests:sum:3647 + expr: vector(1) + labels: + job: job3647 + - record: job:http_inprogress_requests:sum:3648 + expr: vector(1) + labels: + job: job3648 + - record: job:http_inprogress_requests:sum:3649 + expr: vector(1) + labels: + job: job3649 + - record: job:http_inprogress_requests:sum:3650 + expr: vector(1) + labels: + job: job3650 + - record: job:http_inprogress_requests:sum:3651 + expr: vector(1) + labels: + job: job3651 + - record: job:http_inprogress_requests:sum:3652 + expr: vector(1) + labels: + job: job3652 + - record: job:http_inprogress_requests:sum:3653 + expr: vector(1) + labels: + job: job3653 + - record: job:http_inprogress_requests:sum:3654 + expr: vector(1) + labels: + job: job3654 + - record: job:http_inprogress_requests:sum:3655 + expr: vector(1) + labels: + job: job3655 + - record: job:http_inprogress_requests:sum:3656 + expr: vector(1) + labels: + job: job3656 + - record: job:http_inprogress_requests:sum:3657 + expr: vector(1) + labels: + job: job3657 + - record: job:http_inprogress_requests:sum:3658 + expr: vector(1) + labels: + job: job3658 + - record: job:http_inprogress_requests:sum:3659 + expr: vector(1) + labels: + job: job3659 + - record: job:http_inprogress_requests:sum:3660 + expr: vector(1) + labels: + job: job3660 + - record: job:http_inprogress_requests:sum:3661 + expr: vector(1) + labels: + job: job3661 + - record: job:http_inprogress_requests:sum:3662 + expr: vector(1) + labels: + job: job3662 + - record: job:http_inprogress_requests:sum:3663 + expr: vector(1) + labels: + job: job3663 + - record: job:http_inprogress_requests:sum:3664 + expr: vector(1) + labels: + job: job3664 + - record: job:http_inprogress_requests:sum:3665 + expr: vector(1) + labels: + job: job3665 + - record: job:http_inprogress_requests:sum:3666 + expr: vector(1) + labels: + job: job3666 + - record: job:http_inprogress_requests:sum:3667 + expr: vector(1) + labels: + job: job3667 + - record: job:http_inprogress_requests:sum:3668 + expr: vector(1) + labels: + job: job3668 + - record: job:http_inprogress_requests:sum:3669 + expr: vector(1) + labels: + job: job3669 + - record: job:http_inprogress_requests:sum:3670 + expr: vector(1) + labels: + job: job3670 + - record: job:http_inprogress_requests:sum:3671 + expr: vector(1) + labels: + job: job3671 + - record: job:http_inprogress_requests:sum:3672 + expr: vector(1) + labels: + job: job3672 + - record: job:http_inprogress_requests:sum:3673 + expr: vector(1) + labels: + job: job3673 + - record: job:http_inprogress_requests:sum:3674 + expr: vector(1) + labels: + job: job3674 + - record: job:http_inprogress_requests:sum:3675 + expr: vector(1) + labels: + job: job3675 + - record: job:http_inprogress_requests:sum:3676 + expr: vector(1) + labels: + job: job3676 + - record: job:http_inprogress_requests:sum:3677 + expr: vector(1) + labels: + job: job3677 + - record: job:http_inprogress_requests:sum:3678 + expr: vector(1) + labels: + job: job3678 + - record: job:http_inprogress_requests:sum:3679 + expr: vector(1) + labels: + job: job3679 + - record: job:http_inprogress_requests:sum:3680 + expr: vector(1) + labels: + job: job3680 + - record: job:http_inprogress_requests:sum:3681 + expr: vector(1) + labels: + job: job3681 + - record: job:http_inprogress_requests:sum:3682 + expr: vector(1) + labels: + job: job3682 + - record: job:http_inprogress_requests:sum:3683 + expr: vector(1) + labels: + job: job3683 + - record: job:http_inprogress_requests:sum:3684 + expr: vector(1) + labels: + job: job3684 + - record: job:http_inprogress_requests:sum:3685 + expr: vector(1) + labels: + job: job3685 + - record: job:http_inprogress_requests:sum:3686 + expr: vector(1) + labels: + job: job3686 + - record: job:http_inprogress_requests:sum:3687 + expr: vector(1) + labels: + job: job3687 + - record: job:http_inprogress_requests:sum:3688 + expr: vector(1) + labels: + job: job3688 + - record: job:http_inprogress_requests:sum:3689 + expr: vector(1) + labels: + job: job3689 + - record: job:http_inprogress_requests:sum:3690 + expr: vector(1) + labels: + job: job3690 + - record: job:http_inprogress_requests:sum:3691 + expr: vector(1) + labels: + job: job3691 + - record: job:http_inprogress_requests:sum:3692 + expr: vector(1) + labels: + job: job3692 + - record: job:http_inprogress_requests:sum:3693 + expr: vector(1) + labels: + job: job3693 + - record: job:http_inprogress_requests:sum:3694 + expr: vector(1) + labels: + job: job3694 + - record: job:http_inprogress_requests:sum:3695 + expr: vector(1) + labels: + job: job3695 + - record: job:http_inprogress_requests:sum:3696 + expr: vector(1) + labels: + job: job3696 + - record: job:http_inprogress_requests:sum:3697 + expr: vector(1) + labels: + job: job3697 + - record: job:http_inprogress_requests:sum:3698 + expr: vector(1) + labels: + job: job3698 + - record: job:http_inprogress_requests:sum:3699 + expr: vector(1) + labels: + job: job3699 + - record: job:http_inprogress_requests:sum:3700 + expr: vector(1) + labels: + job: job3700 + - record: job:http_inprogress_requests:sum:3701 + expr: vector(1) + labels: + job: job3701 + - record: job:http_inprogress_requests:sum:3702 + expr: vector(1) + labels: + job: job3702 + - record: job:http_inprogress_requests:sum:3703 + expr: vector(1) + labels: + job: job3703 + - record: job:http_inprogress_requests:sum:3704 + expr: vector(1) + labels: + job: job3704 + - record: job:http_inprogress_requests:sum:3705 + expr: vector(1) + labels: + job: job3705 + - record: job:http_inprogress_requests:sum:3706 + expr: vector(1) + labels: + job: job3706 + - record: job:http_inprogress_requests:sum:3707 + expr: vector(1) + labels: + job: job3707 + - record: job:http_inprogress_requests:sum:3708 + expr: vector(1) + labels: + job: job3708 + - record: job:http_inprogress_requests:sum:3709 + expr: vector(1) + labels: + job: job3709 + - record: job:http_inprogress_requests:sum:3710 + expr: vector(1) + labels: + job: job3710 + - record: job:http_inprogress_requests:sum:3711 + expr: vector(1) + labels: + job: job3711 + - record: job:http_inprogress_requests:sum:3712 + expr: vector(1) + labels: + job: job3712 + - record: job:http_inprogress_requests:sum:3713 + expr: vector(1) + labels: + job: job3713 + - record: job:http_inprogress_requests:sum:3714 + expr: vector(1) + labels: + job: job3714 + - record: job:http_inprogress_requests:sum:3715 + expr: vector(1) + labels: + job: job3715 + - record: job:http_inprogress_requests:sum:3716 + expr: vector(1) + labels: + job: job3716 + - record: job:http_inprogress_requests:sum:3717 + expr: vector(1) + labels: + job: job3717 + - record: job:http_inprogress_requests:sum:3718 + expr: vector(1) + labels: + job: job3718 + - record: job:http_inprogress_requests:sum:3719 + expr: vector(1) + labels: + job: job3719 + - record: job:http_inprogress_requests:sum:3720 + expr: vector(1) + labels: + job: job3720 + - record: job:http_inprogress_requests:sum:3721 + expr: vector(1) + labels: + job: job3721 + - record: job:http_inprogress_requests:sum:3722 + expr: vector(1) + labels: + job: job3722 + - record: job:http_inprogress_requests:sum:3723 + expr: vector(1) + labels: + job: job3723 + - record: job:http_inprogress_requests:sum:3724 + expr: vector(1) + labels: + job: job3724 + - record: job:http_inprogress_requests:sum:3725 + expr: vector(1) + labels: + job: job3725 + - record: job:http_inprogress_requests:sum:3726 + expr: vector(1) + labels: + job: job3726 + - record: job:http_inprogress_requests:sum:3727 + expr: vector(1) + labels: + job: job3727 + - record: job:http_inprogress_requests:sum:3728 + expr: vector(1) + labels: + job: job3728 + - record: job:http_inprogress_requests:sum:3729 + expr: vector(1) + labels: + job: job3729 + - record: job:http_inprogress_requests:sum:3730 + expr: vector(1) + labels: + job: job3730 + - record: job:http_inprogress_requests:sum:3731 + expr: vector(1) + labels: + job: job3731 + - record: job:http_inprogress_requests:sum:3732 + expr: vector(1) + labels: + job: job3732 + - record: job:http_inprogress_requests:sum:3733 + expr: vector(1) + labels: + job: job3733 + - record: job:http_inprogress_requests:sum:3734 + expr: vector(1) + labels: + job: job3734 + - record: job:http_inprogress_requests:sum:3735 + expr: vector(1) + labels: + job: job3735 + - record: job:http_inprogress_requests:sum:3736 + expr: vector(1) + labels: + job: job3736 + - record: job:http_inprogress_requests:sum:3737 + expr: vector(1) + labels: + job: job3737 + - record: job:http_inprogress_requests:sum:3738 + expr: vector(1) + labels: + job: job3738 + - record: job:http_inprogress_requests:sum:3739 + expr: vector(1) + labels: + job: job3739 + - record: job:http_inprogress_requests:sum:3740 + expr: vector(1) + labels: + job: job3740 + - record: job:http_inprogress_requests:sum:3741 + expr: vector(1) + labels: + job: job3741 + - record: job:http_inprogress_requests:sum:3742 + expr: vector(1) + labels: + job: job3742 + - record: job:http_inprogress_requests:sum:3743 + expr: vector(1) + labels: + job: job3743 + - record: job:http_inprogress_requests:sum:3744 + expr: vector(1) + labels: + job: job3744 + - record: job:http_inprogress_requests:sum:3745 + expr: vector(1) + labels: + job: job3745 + - record: job:http_inprogress_requests:sum:3746 + expr: vector(1) + labels: + job: job3746 + - record: job:http_inprogress_requests:sum:3747 + expr: vector(1) + labels: + job: job3747 + - record: job:http_inprogress_requests:sum:3748 + expr: vector(1) + labels: + job: job3748 + - record: job:http_inprogress_requests:sum:3749 + expr: vector(1) + labels: + job: job3749 + - record: job:http_inprogress_requests:sum:3750 + expr: vector(1) + labels: + job: job3750 + - record: job:http_inprogress_requests:sum:3751 + expr: vector(1) + labels: + job: job3751 + - record: job:http_inprogress_requests:sum:3752 + expr: vector(1) + labels: + job: job3752 + - record: job:http_inprogress_requests:sum:3753 + expr: vector(1) + labels: + job: job3753 + - record: job:http_inprogress_requests:sum:3754 + expr: vector(1) + labels: + job: job3754 + - record: job:http_inprogress_requests:sum:3755 + expr: vector(1) + labels: + job: job3755 + - record: job:http_inprogress_requests:sum:3756 + expr: vector(1) + labels: + job: job3756 + - record: job:http_inprogress_requests:sum:3757 + expr: vector(1) + labels: + job: job3757 + - record: job:http_inprogress_requests:sum:3758 + expr: vector(1) + labels: + job: job3758 + - record: job:http_inprogress_requests:sum:3759 + expr: vector(1) + labels: + job: job3759 + - record: job:http_inprogress_requests:sum:3760 + expr: vector(1) + labels: + job: job3760 + - record: job:http_inprogress_requests:sum:3761 + expr: vector(1) + labels: + job: job3761 + - record: job:http_inprogress_requests:sum:3762 + expr: vector(1) + labels: + job: job3762 + - record: job:http_inprogress_requests:sum:3763 + expr: vector(1) + labels: + job: job3763 + - record: job:http_inprogress_requests:sum:3764 + expr: vector(1) + labels: + job: job3764 + - record: job:http_inprogress_requests:sum:3765 + expr: vector(1) + labels: + job: job3765 + - record: job:http_inprogress_requests:sum:3766 + expr: vector(1) + labels: + job: job3766 + - record: job:http_inprogress_requests:sum:3767 + expr: vector(1) + labels: + job: job3767 + - record: job:http_inprogress_requests:sum:3768 + expr: vector(1) + labels: + job: job3768 + - record: job:http_inprogress_requests:sum:3769 + expr: vector(1) + labels: + job: job3769 + - record: job:http_inprogress_requests:sum:3770 + expr: vector(1) + labels: + job: job3770 + - record: job:http_inprogress_requests:sum:3771 + expr: vector(1) + labels: + job: job3771 + - record: job:http_inprogress_requests:sum:3772 + expr: vector(1) + labels: + job: job3772 + - record: job:http_inprogress_requests:sum:3773 + expr: vector(1) + labels: + job: job3773 + - record: job:http_inprogress_requests:sum:3774 + expr: vector(1) + labels: + job: job3774 + - record: job:http_inprogress_requests:sum:3775 + expr: vector(1) + labels: + job: job3775 + - record: job:http_inprogress_requests:sum:3776 + expr: vector(1) + labels: + job: job3776 + - record: job:http_inprogress_requests:sum:3777 + expr: vector(1) + labels: + job: job3777 + - record: job:http_inprogress_requests:sum:3778 + expr: vector(1) + labels: + job: job3778 + - record: job:http_inprogress_requests:sum:3779 + expr: vector(1) + labels: + job: job3779 + - record: job:http_inprogress_requests:sum:3780 + expr: vector(1) + labels: + job: job3780 + - record: job:http_inprogress_requests:sum:3781 + expr: vector(1) + labels: + job: job3781 + - record: job:http_inprogress_requests:sum:3782 + expr: vector(1) + labels: + job: job3782 + - record: job:http_inprogress_requests:sum:3783 + expr: vector(1) + labels: + job: job3783 + - record: job:http_inprogress_requests:sum:3784 + expr: vector(1) + labels: + job: job3784 + - record: job:http_inprogress_requests:sum:3785 + expr: vector(1) + labels: + job: job3785 + - record: job:http_inprogress_requests:sum:3786 + expr: vector(1) + labels: + job: job3786 + - record: job:http_inprogress_requests:sum:3787 + expr: vector(1) + labels: + job: job3787 + - record: job:http_inprogress_requests:sum:3788 + expr: vector(1) + labels: + job: job3788 + - record: job:http_inprogress_requests:sum:3789 + expr: vector(1) + labels: + job: job3789 + - record: job:http_inprogress_requests:sum:3790 + expr: vector(1) + labels: + job: job3790 + - record: job:http_inprogress_requests:sum:3791 + expr: vector(1) + labels: + job: job3791 + - record: job:http_inprogress_requests:sum:3792 + expr: vector(1) + labels: + job: job3792 + - record: job:http_inprogress_requests:sum:3793 + expr: vector(1) + labels: + job: job3793 + - record: job:http_inprogress_requests:sum:3794 + expr: vector(1) + labels: + job: job3794 + - record: job:http_inprogress_requests:sum:3795 + expr: vector(1) + labels: + job: job3795 + - record: job:http_inprogress_requests:sum:3796 + expr: vector(1) + labels: + job: job3796 + - record: job:http_inprogress_requests:sum:3797 + expr: vector(1) + labels: + job: job3797 + - record: job:http_inprogress_requests:sum:3798 + expr: vector(1) + labels: + job: job3798 + - record: job:http_inprogress_requests:sum:3799 + expr: vector(1) + labels: + job: job3799 + - record: job:http_inprogress_requests:sum:3800 + expr: vector(1) + labels: + job: job3800 + - record: job:http_inprogress_requests:sum:3801 + expr: vector(1) + labels: + job: job3801 + - record: job:http_inprogress_requests:sum:3802 + expr: vector(1) + labels: + job: job3802 + - record: job:http_inprogress_requests:sum:3803 + expr: vector(1) + labels: + job: job3803 + - record: job:http_inprogress_requests:sum:3804 + expr: vector(1) + labels: + job: job3804 + - record: job:http_inprogress_requests:sum:3805 + expr: vector(1) + labels: + job: job3805 + - record: job:http_inprogress_requests:sum:3806 + expr: vector(1) + labels: + job: job3806 + - record: job:http_inprogress_requests:sum:3807 + expr: vector(1) + labels: + job: job3807 + - record: job:http_inprogress_requests:sum:3808 + expr: vector(1) + labels: + job: job3808 + - record: job:http_inprogress_requests:sum:3809 + expr: vector(1) + labels: + job: job3809 + - record: job:http_inprogress_requests:sum:3810 + expr: vector(1) + labels: + job: job3810 + - record: job:http_inprogress_requests:sum:3811 + expr: vector(1) + labels: + job: job3811 + - record: job:http_inprogress_requests:sum:3812 + expr: vector(1) + labels: + job: job3812 + - record: job:http_inprogress_requests:sum:3813 + expr: vector(1) + labels: + job: job3813 + - record: job:http_inprogress_requests:sum:3814 + expr: vector(1) + labels: + job: job3814 + - record: job:http_inprogress_requests:sum:3815 + expr: vector(1) + labels: + job: job3815 + - record: job:http_inprogress_requests:sum:3816 + expr: vector(1) + labels: + job: job3816 + - record: job:http_inprogress_requests:sum:3817 + expr: vector(1) + labels: + job: job3817 + - record: job:http_inprogress_requests:sum:3818 + expr: vector(1) + labels: + job: job3818 + - record: job:http_inprogress_requests:sum:3819 + expr: vector(1) + labels: + job: job3819 + - record: job:http_inprogress_requests:sum:3820 + expr: vector(1) + labels: + job: job3820 + - record: job:http_inprogress_requests:sum:3821 + expr: vector(1) + labels: + job: job3821 + - record: job:http_inprogress_requests:sum:3822 + expr: vector(1) + labels: + job: job3822 + - record: job:http_inprogress_requests:sum:3823 + expr: vector(1) + labels: + job: job3823 + - record: job:http_inprogress_requests:sum:3824 + expr: vector(1) + labels: + job: job3824 + - record: job:http_inprogress_requests:sum:3825 + expr: vector(1) + labels: + job: job3825 + - record: job:http_inprogress_requests:sum:3826 + expr: vector(1) + labels: + job: job3826 + - record: job:http_inprogress_requests:sum:3827 + expr: vector(1) + labels: + job: job3827 + - record: job:http_inprogress_requests:sum:3828 + expr: vector(1) + labels: + job: job3828 + - record: job:http_inprogress_requests:sum:3829 + expr: vector(1) + labels: + job: job3829 + - record: job:http_inprogress_requests:sum:3830 + expr: vector(1) + labels: + job: job3830 + - record: job:http_inprogress_requests:sum:3831 + expr: vector(1) + labels: + job: job3831 + - record: job:http_inprogress_requests:sum:3832 + expr: vector(1) + labels: + job: job3832 + - record: job:http_inprogress_requests:sum:3833 + expr: vector(1) + labels: + job: job3833 + - record: job:http_inprogress_requests:sum:3834 + expr: vector(1) + labels: + job: job3834 + - record: job:http_inprogress_requests:sum:3835 + expr: vector(1) + labels: + job: job3835 + - record: job:http_inprogress_requests:sum:3836 + expr: vector(1) + labels: + job: job3836 + - record: job:http_inprogress_requests:sum:3837 + expr: vector(1) + labels: + job: job3837 + - record: job:http_inprogress_requests:sum:3838 + expr: vector(1) + labels: + job: job3838 + - record: job:http_inprogress_requests:sum:3839 + expr: vector(1) + labels: + job: job3839 + - record: job:http_inprogress_requests:sum:3840 + expr: vector(1) + labels: + job: job3840 + - record: job:http_inprogress_requests:sum:3841 + expr: vector(1) + labels: + job: job3841 + - record: job:http_inprogress_requests:sum:3842 + expr: vector(1) + labels: + job: job3842 + - record: job:http_inprogress_requests:sum:3843 + expr: vector(1) + labels: + job: job3843 + - record: job:http_inprogress_requests:sum:3844 + expr: vector(1) + labels: + job: job3844 + - record: job:http_inprogress_requests:sum:3845 + expr: vector(1) + labels: + job: job3845 + - record: job:http_inprogress_requests:sum:3846 + expr: vector(1) + labels: + job: job3846 + - record: job:http_inprogress_requests:sum:3847 + expr: vector(1) + labels: + job: job3847 + - record: job:http_inprogress_requests:sum:3848 + expr: vector(1) + labels: + job: job3848 + - record: job:http_inprogress_requests:sum:3849 + expr: vector(1) + labels: + job: job3849 + - record: job:http_inprogress_requests:sum:3850 + expr: vector(1) + labels: + job: job3850 + - record: job:http_inprogress_requests:sum:3851 + expr: vector(1) + labels: + job: job3851 + - record: job:http_inprogress_requests:sum:3852 + expr: vector(1) + labels: + job: job3852 + - record: job:http_inprogress_requests:sum:3853 + expr: vector(1) + labels: + job: job3853 + - record: job:http_inprogress_requests:sum:3854 + expr: vector(1) + labels: + job: job3854 + - record: job:http_inprogress_requests:sum:3855 + expr: vector(1) + labels: + job: job3855 + - record: job:http_inprogress_requests:sum:3856 + expr: vector(1) + labels: + job: job3856 + - record: job:http_inprogress_requests:sum:3857 + expr: vector(1) + labels: + job: job3857 + - record: job:http_inprogress_requests:sum:3858 + expr: vector(1) + labels: + job: job3858 + - record: job:http_inprogress_requests:sum:3859 + expr: vector(1) + labels: + job: job3859 + - record: job:http_inprogress_requests:sum:3860 + expr: vector(1) + labels: + job: job3860 + - record: job:http_inprogress_requests:sum:3861 + expr: vector(1) + labels: + job: job3861 + - record: job:http_inprogress_requests:sum:3862 + expr: vector(1) + labels: + job: job3862 + - record: job:http_inprogress_requests:sum:3863 + expr: vector(1) + labels: + job: job3863 + - record: job:http_inprogress_requests:sum:3864 + expr: vector(1) + labels: + job: job3864 + - record: job:http_inprogress_requests:sum:3865 + expr: vector(1) + labels: + job: job3865 + - record: job:http_inprogress_requests:sum:3866 + expr: vector(1) + labels: + job: job3866 + - record: job:http_inprogress_requests:sum:3867 + expr: vector(1) + labels: + job: job3867 + - record: job:http_inprogress_requests:sum:3868 + expr: vector(1) + labels: + job: job3868 + - record: job:http_inprogress_requests:sum:3869 + expr: vector(1) + labels: + job: job3869 + - record: job:http_inprogress_requests:sum:3870 + expr: vector(1) + labels: + job: job3870 + - record: job:http_inprogress_requests:sum:3871 + expr: vector(1) + labels: + job: job3871 + - record: job:http_inprogress_requests:sum:3872 + expr: vector(1) + labels: + job: job3872 + - record: job:http_inprogress_requests:sum:3873 + expr: vector(1) + labels: + job: job3873 + - record: job:http_inprogress_requests:sum:3874 + expr: vector(1) + labels: + job: job3874 + - record: job:http_inprogress_requests:sum:3875 + expr: vector(1) + labels: + job: job3875 + - record: job:http_inprogress_requests:sum:3876 + expr: vector(1) + labels: + job: job3876 + - record: job:http_inprogress_requests:sum:3877 + expr: vector(1) + labels: + job: job3877 + - record: job:http_inprogress_requests:sum:3878 + expr: vector(1) + labels: + job: job3878 + - record: job:http_inprogress_requests:sum:3879 + expr: vector(1) + labels: + job: job3879 + - record: job:http_inprogress_requests:sum:3880 + expr: vector(1) + labels: + job: job3880 + - record: job:http_inprogress_requests:sum:3881 + expr: vector(1) + labels: + job: job3881 + - record: job:http_inprogress_requests:sum:3882 + expr: vector(1) + labels: + job: job3882 + - record: job:http_inprogress_requests:sum:3883 + expr: vector(1) + labels: + job: job3883 + - record: job:http_inprogress_requests:sum:3884 + expr: vector(1) + labels: + job: job3884 + - record: job:http_inprogress_requests:sum:3885 + expr: vector(1) + labels: + job: job3885 + - record: job:http_inprogress_requests:sum:3886 + expr: vector(1) + labels: + job: job3886 + - record: job:http_inprogress_requests:sum:3887 + expr: vector(1) + labels: + job: job3887 + - record: job:http_inprogress_requests:sum:3888 + expr: vector(1) + labels: + job: job3888 + - record: job:http_inprogress_requests:sum:3889 + expr: vector(1) + labels: + job: job3889 + - record: job:http_inprogress_requests:sum:3890 + expr: vector(1) + labels: + job: job3890 + - record: job:http_inprogress_requests:sum:3891 + expr: vector(1) + labels: + job: job3891 + - record: job:http_inprogress_requests:sum:3892 + expr: vector(1) + labels: + job: job3892 + - record: job:http_inprogress_requests:sum:3893 + expr: vector(1) + labels: + job: job3893 + - record: job:http_inprogress_requests:sum:3894 + expr: vector(1) + labels: + job: job3894 + - record: job:http_inprogress_requests:sum:3895 + expr: vector(1) + labels: + job: job3895 + - record: job:http_inprogress_requests:sum:3896 + expr: vector(1) + labels: + job: job3896 + - record: job:http_inprogress_requests:sum:3897 + expr: vector(1) + labels: + job: job3897 + - record: job:http_inprogress_requests:sum:3898 + expr: vector(1) + labels: + job: job3898 + - record: job:http_inprogress_requests:sum:3899 + expr: vector(1) + labels: + job: job3899 + - record: job:http_inprogress_requests:sum:3900 + expr: vector(1) + labels: + job: job3900 + - record: job:http_inprogress_requests:sum:3901 + expr: vector(1) + labels: + job: job3901 + - record: job:http_inprogress_requests:sum:3902 + expr: vector(1) + labels: + job: job3902 + - record: job:http_inprogress_requests:sum:3903 + expr: vector(1) + labels: + job: job3903 + - record: job:http_inprogress_requests:sum:3904 + expr: vector(1) + labels: + job: job3904 + - record: job:http_inprogress_requests:sum:3905 + expr: vector(1) + labels: + job: job3905 + - record: job:http_inprogress_requests:sum:3906 + expr: vector(1) + labels: + job: job3906 + - record: job:http_inprogress_requests:sum:3907 + expr: vector(1) + labels: + job: job3907 + - record: job:http_inprogress_requests:sum:3908 + expr: vector(1) + labels: + job: job3908 + - record: job:http_inprogress_requests:sum:3909 + expr: vector(1) + labels: + job: job3909 + - record: job:http_inprogress_requests:sum:3910 + expr: vector(1) + labels: + job: job3910 + - record: job:http_inprogress_requests:sum:3911 + expr: vector(1) + labels: + job: job3911 + - record: job:http_inprogress_requests:sum:3912 + expr: vector(1) + labels: + job: job3912 + - record: job:http_inprogress_requests:sum:3913 + expr: vector(1) + labels: + job: job3913 + - record: job:http_inprogress_requests:sum:3914 + expr: vector(1) + labels: + job: job3914 + - record: job:http_inprogress_requests:sum:3915 + expr: vector(1) + labels: + job: job3915 + - record: job:http_inprogress_requests:sum:3916 + expr: vector(1) + labels: + job: job3916 + - record: job:http_inprogress_requests:sum:3917 + expr: vector(1) + labels: + job: job3917 + - record: job:http_inprogress_requests:sum:3918 + expr: vector(1) + labels: + job: job3918 + - record: job:http_inprogress_requests:sum:3919 + expr: vector(1) + labels: + job: job3919 + - record: job:http_inprogress_requests:sum:3920 + expr: vector(1) + labels: + job: job3920 + - record: job:http_inprogress_requests:sum:3921 + expr: vector(1) + labels: + job: job3921 + - record: job:http_inprogress_requests:sum:3922 + expr: vector(1) + labels: + job: job3922 + - record: job:http_inprogress_requests:sum:3923 + expr: vector(1) + labels: + job: job3923 + - record: job:http_inprogress_requests:sum:3924 + expr: vector(1) + labels: + job: job3924 + - record: job:http_inprogress_requests:sum:3925 + expr: vector(1) + labels: + job: job3925 + - record: job:http_inprogress_requests:sum:3926 + expr: vector(1) + labels: + job: job3926 + - record: job:http_inprogress_requests:sum:3927 + expr: vector(1) + labels: + job: job3927 + - record: job:http_inprogress_requests:sum:3928 + expr: vector(1) + labels: + job: job3928 + - record: job:http_inprogress_requests:sum:3929 + expr: vector(1) + labels: + job: job3929 + - record: job:http_inprogress_requests:sum:3930 + expr: vector(1) + labels: + job: job3930 + - record: job:http_inprogress_requests:sum:3931 + expr: vector(1) + labels: + job: job3931 + - record: job:http_inprogress_requests:sum:3932 + expr: vector(1) + labels: + job: job3932 + - record: job:http_inprogress_requests:sum:3933 + expr: vector(1) + labels: + job: job3933 + - record: job:http_inprogress_requests:sum:3934 + expr: vector(1) + labels: + job: job3934 + - record: job:http_inprogress_requests:sum:3935 + expr: vector(1) + labels: + job: job3935 + - record: job:http_inprogress_requests:sum:3936 + expr: vector(1) + labels: + job: job3936 + - record: job:http_inprogress_requests:sum:3937 + expr: vector(1) + labels: + job: job3937 + - record: job:http_inprogress_requests:sum:3938 + expr: vector(1) + labels: + job: job3938 + - record: job:http_inprogress_requests:sum:3939 + expr: vector(1) + labels: + job: job3939 + - record: job:http_inprogress_requests:sum:3940 + expr: vector(1) + labels: + job: job3940 + - record: job:http_inprogress_requests:sum:3941 + expr: vector(1) + labels: + job: job3941 + - record: job:http_inprogress_requests:sum:3942 + expr: vector(1) + labels: + job: job3942 + - record: job:http_inprogress_requests:sum:3943 + expr: vector(1) + labels: + job: job3943 + - record: job:http_inprogress_requests:sum:3944 + expr: vector(1) + labels: + job: job3944 + - record: job:http_inprogress_requests:sum:3945 + expr: vector(1) + labels: + job: job3945 + - record: job:http_inprogress_requests:sum:3946 + expr: vector(1) + labels: + job: job3946 + - record: job:http_inprogress_requests:sum:3947 + expr: vector(1) + labels: + job: job3947 + - record: job:http_inprogress_requests:sum:3948 + expr: vector(1) + labels: + job: job3948 + - record: job:http_inprogress_requests:sum:3949 + expr: vector(1) + labels: + job: job3949 + - record: job:http_inprogress_requests:sum:3950 + expr: vector(1) + labels: + job: job3950 + - record: job:http_inprogress_requests:sum:3951 + expr: vector(1) + labels: + job: job3951 + - record: job:http_inprogress_requests:sum:3952 + expr: vector(1) + labels: + job: job3952 + - record: job:http_inprogress_requests:sum:3953 + expr: vector(1) + labels: + job: job3953 + - record: job:http_inprogress_requests:sum:3954 + expr: vector(1) + labels: + job: job3954 + - record: job:http_inprogress_requests:sum:3955 + expr: vector(1) + labels: + job: job3955 + - record: job:http_inprogress_requests:sum:3956 + expr: vector(1) + labels: + job: job3956 + - record: job:http_inprogress_requests:sum:3957 + expr: vector(1) + labels: + job: job3957 + - record: job:http_inprogress_requests:sum:3958 + expr: vector(1) + labels: + job: job3958 + - record: job:http_inprogress_requests:sum:3959 + expr: vector(1) + labels: + job: job3959 + - record: job:http_inprogress_requests:sum:3960 + expr: vector(1) + labels: + job: job3960 + - record: job:http_inprogress_requests:sum:3961 + expr: vector(1) + labels: + job: job3961 + - record: job:http_inprogress_requests:sum:3962 + expr: vector(1) + labels: + job: job3962 + - record: job:http_inprogress_requests:sum:3963 + expr: vector(1) + labels: + job: job3963 + - record: job:http_inprogress_requests:sum:3964 + expr: vector(1) + labels: + job: job3964 + - record: job:http_inprogress_requests:sum:3965 + expr: vector(1) + labels: + job: job3965 + - record: job:http_inprogress_requests:sum:3966 + expr: vector(1) + labels: + job: job3966 + - record: job:http_inprogress_requests:sum:3967 + expr: vector(1) + labels: + job: job3967 + - record: job:http_inprogress_requests:sum:3968 + expr: vector(1) + labels: + job: job3968 + - record: job:http_inprogress_requests:sum:3969 + expr: vector(1) + labels: + job: job3969 + - record: job:http_inprogress_requests:sum:3970 + expr: vector(1) + labels: + job: job3970 + - record: job:http_inprogress_requests:sum:3971 + expr: vector(1) + labels: + job: job3971 + - record: job:http_inprogress_requests:sum:3972 + expr: vector(1) + labels: + job: job3972 + - record: job:http_inprogress_requests:sum:3973 + expr: vector(1) + labels: + job: job3973 + - record: job:http_inprogress_requests:sum:3974 + expr: vector(1) + labels: + job: job3974 + - record: job:http_inprogress_requests:sum:3975 + expr: vector(1) + labels: + job: job3975 + - record: job:http_inprogress_requests:sum:3976 + expr: vector(1) + labels: + job: job3976 + - record: job:http_inprogress_requests:sum:3977 + expr: vector(1) + labels: + job: job3977 + - record: job:http_inprogress_requests:sum:3978 + expr: vector(1) + labels: + job: job3978 + - record: job:http_inprogress_requests:sum:3979 + expr: vector(1) + labels: + job: job3979 + - record: job:http_inprogress_requests:sum:3980 + expr: vector(1) + labels: + job: job3980 + - record: job:http_inprogress_requests:sum:3981 + expr: vector(1) + labels: + job: job3981 + - record: job:http_inprogress_requests:sum:3982 + expr: vector(1) + labels: + job: job3982 + - record: job:http_inprogress_requests:sum:3983 + expr: vector(1) + labels: + job: job3983 + - record: job:http_inprogress_requests:sum:3984 + expr: vector(1) + labels: + job: job3984 + - record: job:http_inprogress_requests:sum:3985 + expr: vector(1) + labels: + job: job3985 + - record: job:http_inprogress_requests:sum:3986 + expr: vector(1) + labels: + job: job3986 + - record: job:http_inprogress_requests:sum:3987 + expr: vector(1) + labels: + job: job3987 + - record: job:http_inprogress_requests:sum:3988 + expr: vector(1) + labels: + job: job3988 + - record: job:http_inprogress_requests:sum:3989 + expr: vector(1) + labels: + job: job3989 + - record: job:http_inprogress_requests:sum:3990 + expr: vector(1) + labels: + job: job3990 + - record: job:http_inprogress_requests:sum:3991 + expr: vector(1) + labels: + job: job3991 + - record: job:http_inprogress_requests:sum:3992 + expr: vector(1) + labels: + job: job3992 + - record: job:http_inprogress_requests:sum:3993 + expr: vector(1) + labels: + job: job3993 + - record: job:http_inprogress_requests:sum:3994 + expr: vector(1) + labels: + job: job3994 + - record: job:http_inprogress_requests:sum:3995 + expr: vector(1) + labels: + job: job3995 + - record: job:http_inprogress_requests:sum:3996 + expr: vector(1) + labels: + job: job3996 + - record: job:http_inprogress_requests:sum:3997 + expr: vector(1) + labels: + job: job3997 + - record: job:http_inprogress_requests:sum:3998 + expr: vector(1) + labels: + job: job3998 + - record: job:http_inprogress_requests:sum:3999 + expr: vector(1) + labels: + job: job3999 + - record: job:http_inprogress_requests:sum:4000 + expr: vector(1) + labels: + job: job4000 + - record: job:http_inprogress_requests:sum:4001 + expr: vector(1) + labels: + job: job4001 + - record: job:http_inprogress_requests:sum:4002 + expr: vector(1) + labels: + job: job4002 + - record: job:http_inprogress_requests:sum:4003 + expr: vector(1) + labels: + job: job4003 + - record: job:http_inprogress_requests:sum:4004 + expr: vector(1) + labels: + job: job4004 + - record: job:http_inprogress_requests:sum:4005 + expr: vector(1) + labels: + job: job4005 + - record: job:http_inprogress_requests:sum:4006 + expr: vector(1) + labels: + job: job4006 + - record: job:http_inprogress_requests:sum:4007 + expr: vector(1) + labels: + job: job4007 + - record: job:http_inprogress_requests:sum:4008 + expr: vector(1) + labels: + job: job4008 + - record: job:http_inprogress_requests:sum:4009 + expr: vector(1) + labels: + job: job4009 + - record: job:http_inprogress_requests:sum:4010 + expr: vector(1) + labels: + job: job4010 + - record: job:http_inprogress_requests:sum:4011 + expr: vector(1) + labels: + job: job4011 + - record: job:http_inprogress_requests:sum:4012 + expr: vector(1) + labels: + job: job4012 + - record: job:http_inprogress_requests:sum:4013 + expr: vector(1) + labels: + job: job4013 + - record: job:http_inprogress_requests:sum:4014 + expr: vector(1) + labels: + job: job4014 + - record: job:http_inprogress_requests:sum:4015 + expr: vector(1) + labels: + job: job4015 + - record: job:http_inprogress_requests:sum:4016 + expr: vector(1) + labels: + job: job4016 + - record: job:http_inprogress_requests:sum:4017 + expr: vector(1) + labels: + job: job4017 + - record: job:http_inprogress_requests:sum:4018 + expr: vector(1) + labels: + job: job4018 + - record: job:http_inprogress_requests:sum:4019 + expr: vector(1) + labels: + job: job4019 + - record: job:http_inprogress_requests:sum:4020 + expr: vector(1) + labels: + job: job4020 + - record: job:http_inprogress_requests:sum:4021 + expr: vector(1) + labels: + job: job4021 + - record: job:http_inprogress_requests:sum:4022 + expr: vector(1) + labels: + job: job4022 + - record: job:http_inprogress_requests:sum:4023 + expr: vector(1) + labels: + job: job4023 + - record: job:http_inprogress_requests:sum:4024 + expr: vector(1) + labels: + job: job4024 + - record: job:http_inprogress_requests:sum:4025 + expr: vector(1) + labels: + job: job4025 + - record: job:http_inprogress_requests:sum:4026 + expr: vector(1) + labels: + job: job4026 + - record: job:http_inprogress_requests:sum:4027 + expr: vector(1) + labels: + job: job4027 + - record: job:http_inprogress_requests:sum:4028 + expr: vector(1) + labels: + job: job4028 + - record: job:http_inprogress_requests:sum:4029 + expr: vector(1) + labels: + job: job4029 + - record: job:http_inprogress_requests:sum:4030 + expr: vector(1) + labels: + job: job4030 + - record: job:http_inprogress_requests:sum:4031 + expr: vector(1) + labels: + job: job4031 + - record: job:http_inprogress_requests:sum:4032 + expr: vector(1) + labels: + job: job4032 + - record: job:http_inprogress_requests:sum:4033 + expr: vector(1) + labels: + job: job4033 + - record: job:http_inprogress_requests:sum:4034 + expr: vector(1) + labels: + job: job4034 + - record: job:http_inprogress_requests:sum:4035 + expr: vector(1) + labels: + job: job4035 + - record: job:http_inprogress_requests:sum:4036 + expr: vector(1) + labels: + job: job4036 + - record: job:http_inprogress_requests:sum:4037 + expr: vector(1) + labels: + job: job4037 + - record: job:http_inprogress_requests:sum:4038 + expr: vector(1) + labels: + job: job4038 + - record: job:http_inprogress_requests:sum:4039 + expr: vector(1) + labels: + job: job4039 + - record: job:http_inprogress_requests:sum:4040 + expr: vector(1) + labels: + job: job4040 + - record: job:http_inprogress_requests:sum:4041 + expr: vector(1) + labels: + job: job4041 + - record: job:http_inprogress_requests:sum:4042 + expr: vector(1) + labels: + job: job4042 + - record: job:http_inprogress_requests:sum:4043 + expr: vector(1) + labels: + job: job4043 + - record: job:http_inprogress_requests:sum:4044 + expr: vector(1) + labels: + job: job4044 + - record: job:http_inprogress_requests:sum:4045 + expr: vector(1) + labels: + job: job4045 + - record: job:http_inprogress_requests:sum:4046 + expr: vector(1) + labels: + job: job4046 + - record: job:http_inprogress_requests:sum:4047 + expr: vector(1) + labels: + job: job4047 + - record: job:http_inprogress_requests:sum:4048 + expr: vector(1) + labels: + job: job4048 + - record: job:http_inprogress_requests:sum:4049 + expr: vector(1) + labels: + job: job4049 + - record: job:http_inprogress_requests:sum:4050 + expr: vector(1) + labels: + job: job4050 + - record: job:http_inprogress_requests:sum:4051 + expr: vector(1) + labels: + job: job4051 + - record: job:http_inprogress_requests:sum:4052 + expr: vector(1) + labels: + job: job4052 + - record: job:http_inprogress_requests:sum:4053 + expr: vector(1) + labels: + job: job4053 + - record: job:http_inprogress_requests:sum:4054 + expr: vector(1) + labels: + job: job4054 + - record: job:http_inprogress_requests:sum:4055 + expr: vector(1) + labels: + job: job4055 + - record: job:http_inprogress_requests:sum:4056 + expr: vector(1) + labels: + job: job4056 + - record: job:http_inprogress_requests:sum:4057 + expr: vector(1) + labels: + job: job4057 + - record: job:http_inprogress_requests:sum:4058 + expr: vector(1) + labels: + job: job4058 + - record: job:http_inprogress_requests:sum:4059 + expr: vector(1) + labels: + job: job4059 + - record: job:http_inprogress_requests:sum:4060 + expr: vector(1) + labels: + job: job4060 + - record: job:http_inprogress_requests:sum:4061 + expr: vector(1) + labels: + job: job4061 + - record: job:http_inprogress_requests:sum:4062 + expr: vector(1) + labels: + job: job4062 + - record: job:http_inprogress_requests:sum:4063 + expr: vector(1) + labels: + job: job4063 + - record: job:http_inprogress_requests:sum:4064 + expr: vector(1) + labels: + job: job4064 + - record: job:http_inprogress_requests:sum:4065 + expr: vector(1) + labels: + job: job4065 + - record: job:http_inprogress_requests:sum:4066 + expr: vector(1) + labels: + job: job4066 + - record: job:http_inprogress_requests:sum:4067 + expr: vector(1) + labels: + job: job4067 + - record: job:http_inprogress_requests:sum:4068 + expr: vector(1) + labels: + job: job4068 + - record: job:http_inprogress_requests:sum:4069 + expr: vector(1) + labels: + job: job4069 + - record: job:http_inprogress_requests:sum:4070 + expr: vector(1) + labels: + job: job4070 + - record: job:http_inprogress_requests:sum:4071 + expr: vector(1) + labels: + job: job4071 + - record: job:http_inprogress_requests:sum:4072 + expr: vector(1) + labels: + job: job4072 + - record: job:http_inprogress_requests:sum:4073 + expr: vector(1) + labels: + job: job4073 + - record: job:http_inprogress_requests:sum:4074 + expr: vector(1) + labels: + job: job4074 + - record: job:http_inprogress_requests:sum:4075 + expr: vector(1) + labels: + job: job4075 + - record: job:http_inprogress_requests:sum:4076 + expr: vector(1) + labels: + job: job4076 + - record: job:http_inprogress_requests:sum:4077 + expr: vector(1) + labels: + job: job4077 + - record: job:http_inprogress_requests:sum:4078 + expr: vector(1) + labels: + job: job4078 + - record: job:http_inprogress_requests:sum:4079 + expr: vector(1) + labels: + job: job4079 + - record: job:http_inprogress_requests:sum:4080 + expr: vector(1) + labels: + job: job4080 + - record: job:http_inprogress_requests:sum:4081 + expr: vector(1) + labels: + job: job4081 + - record: job:http_inprogress_requests:sum:4082 + expr: vector(1) + labels: + job: job4082 + - record: job:http_inprogress_requests:sum:4083 + expr: vector(1) + labels: + job: job4083 + - record: job:http_inprogress_requests:sum:4084 + expr: vector(1) + labels: + job: job4084 + - record: job:http_inprogress_requests:sum:4085 + expr: vector(1) + labels: + job: job4085 + - record: job:http_inprogress_requests:sum:4086 + expr: vector(1) + labels: + job: job4086 + - record: job:http_inprogress_requests:sum:4087 + expr: vector(1) + labels: + job: job4087 + - record: job:http_inprogress_requests:sum:4088 + expr: vector(1) + labels: + job: job4088 + - record: job:http_inprogress_requests:sum:4089 + expr: vector(1) + labels: + job: job4089 + - record: job:http_inprogress_requests:sum:4090 + expr: vector(1) + labels: + job: job4090 + - record: job:http_inprogress_requests:sum:4091 + expr: vector(1) + labels: + job: job4091 + - record: job:http_inprogress_requests:sum:4092 + expr: vector(1) + labels: + job: job4092 + - record: job:http_inprogress_requests:sum:4093 + expr: vector(1) + labels: + job: job4093 + - record: job:http_inprogress_requests:sum:4094 + expr: vector(1) + labels: + job: job4094 + - record: job:http_inprogress_requests:sum:4095 + expr: vector(1) + labels: + job: job4095 + - record: job:http_inprogress_requests:sum:4096 + expr: vector(1) + labels: + job: job4096 + - record: job:http_inprogress_requests:sum:4097 + expr: vector(1) + labels: + job: job4097 + - record: job:http_inprogress_requests:sum:4098 + expr: vector(1) + labels: + job: job4098 + - record: job:http_inprogress_requests:sum:4099 + expr: vector(1) + labels: + job: job4099 + - record: job:http_inprogress_requests:sum:4100 + expr: vector(1) + labels: + job: job4100 + - record: job:http_inprogress_requests:sum:4101 + expr: vector(1) + labels: + job: job4101 + - record: job:http_inprogress_requests:sum:4102 + expr: vector(1) + labels: + job: job4102 + - record: job:http_inprogress_requests:sum:4103 + expr: vector(1) + labels: + job: job4103 + - record: job:http_inprogress_requests:sum:4104 + expr: vector(1) + labels: + job: job4104 + - record: job:http_inprogress_requests:sum:4105 + expr: vector(1) + labels: + job: job4105 + - record: job:http_inprogress_requests:sum:4106 + expr: vector(1) + labels: + job: job4106 + - record: job:http_inprogress_requests:sum:4107 + expr: vector(1) + labels: + job: job4107 + - record: job:http_inprogress_requests:sum:4108 + expr: vector(1) + labels: + job: job4108 + - record: job:http_inprogress_requests:sum:4109 + expr: vector(1) + labels: + job: job4109 + - record: job:http_inprogress_requests:sum:4110 + expr: vector(1) + labels: + job: job4110 + - record: job:http_inprogress_requests:sum:4111 + expr: vector(1) + labels: + job: job4111 + - record: job:http_inprogress_requests:sum:4112 + expr: vector(1) + labels: + job: job4112 + - record: job:http_inprogress_requests:sum:4113 + expr: vector(1) + labels: + job: job4113 + - record: job:http_inprogress_requests:sum:4114 + expr: vector(1) + labels: + job: job4114 + - record: job:http_inprogress_requests:sum:4115 + expr: vector(1) + labels: + job: job4115 + - record: job:http_inprogress_requests:sum:4116 + expr: vector(1) + labels: + job: job4116 + - record: job:http_inprogress_requests:sum:4117 + expr: vector(1) + labels: + job: job4117 + - record: job:http_inprogress_requests:sum:4118 + expr: vector(1) + labels: + job: job4118 + - record: job:http_inprogress_requests:sum:4119 + expr: vector(1) + labels: + job: job4119 + - record: job:http_inprogress_requests:sum:4120 + expr: vector(1) + labels: + job: job4120 + - record: job:http_inprogress_requests:sum:4121 + expr: vector(1) + labels: + job: job4121 + - record: job:http_inprogress_requests:sum:4122 + expr: vector(1) + labels: + job: job4122 + - record: job:http_inprogress_requests:sum:4123 + expr: vector(1) + labels: + job: job4123 + - record: job:http_inprogress_requests:sum:4124 + expr: vector(1) + labels: + job: job4124 + - record: job:http_inprogress_requests:sum:4125 + expr: vector(1) + labels: + job: job4125 + - record: job:http_inprogress_requests:sum:4126 + expr: vector(1) + labels: + job: job4126 + - record: job:http_inprogress_requests:sum:4127 + expr: vector(1) + labels: + job: job4127 + - record: job:http_inprogress_requests:sum:4128 + expr: vector(1) + labels: + job: job4128 + - record: job:http_inprogress_requests:sum:4129 + expr: vector(1) + labels: + job: job4129 + - record: job:http_inprogress_requests:sum:4130 + expr: vector(1) + labels: + job: job4130 + - record: job:http_inprogress_requests:sum:4131 + expr: vector(1) + labels: + job: job4131 + - record: job:http_inprogress_requests:sum:4132 + expr: vector(1) + labels: + job: job4132 + - record: job:http_inprogress_requests:sum:4133 + expr: vector(1) + labels: + job: job4133 + - record: job:http_inprogress_requests:sum:4134 + expr: vector(1) + labels: + job: job4134 + - record: job:http_inprogress_requests:sum:4135 + expr: vector(1) + labels: + job: job4135 + - record: job:http_inprogress_requests:sum:4136 + expr: vector(1) + labels: + job: job4136 + - record: job:http_inprogress_requests:sum:4137 + expr: vector(1) + labels: + job: job4137 + - record: job:http_inprogress_requests:sum:4138 + expr: vector(1) + labels: + job: job4138 + - record: job:http_inprogress_requests:sum:4139 + expr: vector(1) + labels: + job: job4139 + - record: job:http_inprogress_requests:sum:4140 + expr: vector(1) + labels: + job: job4140 + - record: job:http_inprogress_requests:sum:4141 + expr: vector(1) + labels: + job: job4141 + - record: job:http_inprogress_requests:sum:4142 + expr: vector(1) + labels: + job: job4142 + - record: job:http_inprogress_requests:sum:4143 + expr: vector(1) + labels: + job: job4143 + - record: job:http_inprogress_requests:sum:4144 + expr: vector(1) + labels: + job: job4144 + - record: job:http_inprogress_requests:sum:4145 + expr: vector(1) + labels: + job: job4145 + - record: job:http_inprogress_requests:sum:4146 + expr: vector(1) + labels: + job: job4146 + - record: job:http_inprogress_requests:sum:4147 + expr: vector(1) + labels: + job: job4147 + - record: job:http_inprogress_requests:sum:4148 + expr: vector(1) + labels: + job: job4148 + - record: job:http_inprogress_requests:sum:4149 + expr: vector(1) + labels: + job: job4149 + - record: job:http_inprogress_requests:sum:4150 + expr: vector(1) + labels: + job: job4150 + - record: job:http_inprogress_requests:sum:4151 + expr: vector(1) + labels: + job: job4151 + - record: job:http_inprogress_requests:sum:4152 + expr: vector(1) + labels: + job: job4152 + - record: job:http_inprogress_requests:sum:4153 + expr: vector(1) + labels: + job: job4153 + - record: job:http_inprogress_requests:sum:4154 + expr: vector(1) + labels: + job: job4154 + - record: job:http_inprogress_requests:sum:4155 + expr: vector(1) + labels: + job: job4155 + - record: job:http_inprogress_requests:sum:4156 + expr: vector(1) + labels: + job: job4156 + - record: job:http_inprogress_requests:sum:4157 + expr: vector(1) + labels: + job: job4157 + - record: job:http_inprogress_requests:sum:4158 + expr: vector(1) + labels: + job: job4158 + - record: job:http_inprogress_requests:sum:4159 + expr: vector(1) + labels: + job: job4159 + - record: job:http_inprogress_requests:sum:4160 + expr: vector(1) + labels: + job: job4160 + - record: job:http_inprogress_requests:sum:4161 + expr: vector(1) + labels: + job: job4161 + - record: job:http_inprogress_requests:sum:4162 + expr: vector(1) + labels: + job: job4162 + - record: job:http_inprogress_requests:sum:4163 + expr: vector(1) + labels: + job: job4163 + - record: job:http_inprogress_requests:sum:4164 + expr: vector(1) + labels: + job: job4164 + - record: job:http_inprogress_requests:sum:4165 + expr: vector(1) + labels: + job: job4165 + - record: job:http_inprogress_requests:sum:4166 + expr: vector(1) + labels: + job: job4166 + - record: job:http_inprogress_requests:sum:4167 + expr: vector(1) + labels: + job: job4167 + - record: job:http_inprogress_requests:sum:4168 + expr: vector(1) + labels: + job: job4168 + - record: job:http_inprogress_requests:sum:4169 + expr: vector(1) + labels: + job: job4169 + - record: job:http_inprogress_requests:sum:4170 + expr: vector(1) + labels: + job: job4170 + - record: job:http_inprogress_requests:sum:4171 + expr: vector(1) + labels: + job: job4171 + - record: job:http_inprogress_requests:sum:4172 + expr: vector(1) + labels: + job: job4172 + - record: job:http_inprogress_requests:sum:4173 + expr: vector(1) + labels: + job: job4173 + - record: job:http_inprogress_requests:sum:4174 + expr: vector(1) + labels: + job: job4174 + - record: job:http_inprogress_requests:sum:4175 + expr: vector(1) + labels: + job: job4175 + - record: job:http_inprogress_requests:sum:4176 + expr: vector(1) + labels: + job: job4176 + - record: job:http_inprogress_requests:sum:4177 + expr: vector(1) + labels: + job: job4177 + - record: job:http_inprogress_requests:sum:4178 + expr: vector(1) + labels: + job: job4178 + - record: job:http_inprogress_requests:sum:4179 + expr: vector(1) + labels: + job: job4179 + - record: job:http_inprogress_requests:sum:4180 + expr: vector(1) + labels: + job: job4180 + - record: job:http_inprogress_requests:sum:4181 + expr: vector(1) + labels: + job: job4181 + - record: job:http_inprogress_requests:sum:4182 + expr: vector(1) + labels: + job: job4182 + - record: job:http_inprogress_requests:sum:4183 + expr: vector(1) + labels: + job: job4183 + - record: job:http_inprogress_requests:sum:4184 + expr: vector(1) + labels: + job: job4184 + - record: job:http_inprogress_requests:sum:4185 + expr: vector(1) + labels: + job: job4185 + - record: job:http_inprogress_requests:sum:4186 + expr: vector(1) + labels: + job: job4186 + - record: job:http_inprogress_requests:sum:4187 + expr: vector(1) + labels: + job: job4187 + - record: job:http_inprogress_requests:sum:4188 + expr: vector(1) + labels: + job: job4188 + - record: job:http_inprogress_requests:sum:4189 + expr: vector(1) + labels: + job: job4189 + - record: job:http_inprogress_requests:sum:4190 + expr: vector(1) + labels: + job: job4190 + - record: job:http_inprogress_requests:sum:4191 + expr: vector(1) + labels: + job: job4191 + - record: job:http_inprogress_requests:sum:4192 + expr: vector(1) + labels: + job: job4192 + - record: job:http_inprogress_requests:sum:4193 + expr: vector(1) + labels: + job: job4193 + - record: job:http_inprogress_requests:sum:4194 + expr: vector(1) + labels: + job: job4194 + - record: job:http_inprogress_requests:sum:4195 + expr: vector(1) + labels: + job: job4195 + - record: job:http_inprogress_requests:sum:4196 + expr: vector(1) + labels: + job: job4196 + - record: job:http_inprogress_requests:sum:4197 + expr: vector(1) + labels: + job: job4197 + - record: job:http_inprogress_requests:sum:4198 + expr: vector(1) + labels: + job: job4198 + - record: job:http_inprogress_requests:sum:4199 + expr: vector(1) + labels: + job: job4199 + - record: job:http_inprogress_requests:sum:4200 + expr: vector(1) + labels: + job: job4200 + - record: job:http_inprogress_requests:sum:4201 + expr: vector(1) + labels: + job: job4201 + - record: job:http_inprogress_requests:sum:4202 + expr: vector(1) + labels: + job: job4202 + - record: job:http_inprogress_requests:sum:4203 + expr: vector(1) + labels: + job: job4203 + - record: job:http_inprogress_requests:sum:4204 + expr: vector(1) + labels: + job: job4204 + - record: job:http_inprogress_requests:sum:4205 + expr: vector(1) + labels: + job: job4205 + - record: job:http_inprogress_requests:sum:4206 + expr: vector(1) + labels: + job: job4206 + - record: job:http_inprogress_requests:sum:4207 + expr: vector(1) + labels: + job: job4207 + - record: job:http_inprogress_requests:sum:4208 + expr: vector(1) + labels: + job: job4208 + - record: job:http_inprogress_requests:sum:4209 + expr: vector(1) + labels: + job: job4209 + - record: job:http_inprogress_requests:sum:4210 + expr: vector(1) + labels: + job: job4210 + - record: job:http_inprogress_requests:sum:4211 + expr: vector(1) + labels: + job: job4211 + - record: job:http_inprogress_requests:sum:4212 + expr: vector(1) + labels: + job: job4212 + - record: job:http_inprogress_requests:sum:4213 + expr: vector(1) + labels: + job: job4213 + - record: job:http_inprogress_requests:sum:4214 + expr: vector(1) + labels: + job: job4214 + - record: job:http_inprogress_requests:sum:4215 + expr: vector(1) + labels: + job: job4215 + - record: job:http_inprogress_requests:sum:4216 + expr: vector(1) + labels: + job: job4216 + - record: job:http_inprogress_requests:sum:4217 + expr: vector(1) + labels: + job: job4217 + - record: job:http_inprogress_requests:sum:4218 + expr: vector(1) + labels: + job: job4218 + - record: job:http_inprogress_requests:sum:4219 + expr: vector(1) + labels: + job: job4219 + - record: job:http_inprogress_requests:sum:4220 + expr: vector(1) + labels: + job: job4220 + - record: job:http_inprogress_requests:sum:4221 + expr: vector(1) + labels: + job: job4221 + - record: job:http_inprogress_requests:sum:4222 + expr: vector(1) + labels: + job: job4222 + - record: job:http_inprogress_requests:sum:4223 + expr: vector(1) + labels: + job: job4223 + - record: job:http_inprogress_requests:sum:4224 + expr: vector(1) + labels: + job: job4224 + - record: job:http_inprogress_requests:sum:4225 + expr: vector(1) + labels: + job: job4225 + - record: job:http_inprogress_requests:sum:4226 + expr: vector(1) + labels: + job: job4226 + - record: job:http_inprogress_requests:sum:4227 + expr: vector(1) + labels: + job: job4227 + - record: job:http_inprogress_requests:sum:4228 + expr: vector(1) + labels: + job: job4228 + - record: job:http_inprogress_requests:sum:4229 + expr: vector(1) + labels: + job: job4229 + - record: job:http_inprogress_requests:sum:4230 + expr: vector(1) + labels: + job: job4230 + - record: job:http_inprogress_requests:sum:4231 + expr: vector(1) + labels: + job: job4231 + - record: job:http_inprogress_requests:sum:4232 + expr: vector(1) + labels: + job: job4232 + - record: job:http_inprogress_requests:sum:4233 + expr: vector(1) + labels: + job: job4233 + - record: job:http_inprogress_requests:sum:4234 + expr: vector(1) + labels: + job: job4234 + - record: job:http_inprogress_requests:sum:4235 + expr: vector(1) + labels: + job: job4235 + - record: job:http_inprogress_requests:sum:4236 + expr: vector(1) + labels: + job: job4236 + - record: job:http_inprogress_requests:sum:4237 + expr: vector(1) + labels: + job: job4237 + - record: job:http_inprogress_requests:sum:4238 + expr: vector(1) + labels: + job: job4238 + - record: job:http_inprogress_requests:sum:4239 + expr: vector(1) + labels: + job: job4239 + - record: job:http_inprogress_requests:sum:4240 + expr: vector(1) + labels: + job: job4240 + - record: job:http_inprogress_requests:sum:4241 + expr: vector(1) + labels: + job: job4241 + - record: job:http_inprogress_requests:sum:4242 + expr: vector(1) + labels: + job: job4242 + - record: job:http_inprogress_requests:sum:4243 + expr: vector(1) + labels: + job: job4243 + - record: job:http_inprogress_requests:sum:4244 + expr: vector(1) + labels: + job: job4244 + - record: job:http_inprogress_requests:sum:4245 + expr: vector(1) + labels: + job: job4245 + - record: job:http_inprogress_requests:sum:4246 + expr: vector(1) + labels: + job: job4246 + - record: job:http_inprogress_requests:sum:4247 + expr: vector(1) + labels: + job: job4247 + - record: job:http_inprogress_requests:sum:4248 + expr: vector(1) + labels: + job: job4248 + - record: job:http_inprogress_requests:sum:4249 + expr: vector(1) + labels: + job: job4249 + - record: job:http_inprogress_requests:sum:4250 + expr: vector(1) + labels: + job: job4250 + - record: job:http_inprogress_requests:sum:4251 + expr: vector(1) + labels: + job: job4251 + - record: job:http_inprogress_requests:sum:4252 + expr: vector(1) + labels: + job: job4252 + - record: job:http_inprogress_requests:sum:4253 + expr: vector(1) + labels: + job: job4253 + - record: job:http_inprogress_requests:sum:4254 + expr: vector(1) + labels: + job: job4254 + - record: job:http_inprogress_requests:sum:4255 + expr: vector(1) + labels: + job: job4255 + - record: job:http_inprogress_requests:sum:4256 + expr: vector(1) + labels: + job: job4256 + - record: job:http_inprogress_requests:sum:4257 + expr: vector(1) + labels: + job: job4257 + - record: job:http_inprogress_requests:sum:4258 + expr: vector(1) + labels: + job: job4258 + - record: job:http_inprogress_requests:sum:4259 + expr: vector(1) + labels: + job: job4259 + - record: job:http_inprogress_requests:sum:4260 + expr: vector(1) + labels: + job: job4260 + - record: job:http_inprogress_requests:sum:4261 + expr: vector(1) + labels: + job: job4261 + - record: job:http_inprogress_requests:sum:4262 + expr: vector(1) + labels: + job: job4262 + - record: job:http_inprogress_requests:sum:4263 + expr: vector(1) + labels: + job: job4263 + - record: job:http_inprogress_requests:sum:4264 + expr: vector(1) + labels: + job: job4264 + - record: job:http_inprogress_requests:sum:4265 + expr: vector(1) + labels: + job: job4265 + - record: job:http_inprogress_requests:sum:4266 + expr: vector(1) + labels: + job: job4266 + - record: job:http_inprogress_requests:sum:4267 + expr: vector(1) + labels: + job: job4267 + - record: job:http_inprogress_requests:sum:4268 + expr: vector(1) + labels: + job: job4268 + - record: job:http_inprogress_requests:sum:4269 + expr: vector(1) + labels: + job: job4269 + - record: job:http_inprogress_requests:sum:4270 + expr: vector(1) + labels: + job: job4270 + - record: job:http_inprogress_requests:sum:4271 + expr: vector(1) + labels: + job: job4271 + - record: job:http_inprogress_requests:sum:4272 + expr: vector(1) + labels: + job: job4272 + - record: job:http_inprogress_requests:sum:4273 + expr: vector(1) + labels: + job: job4273 + - record: job:http_inprogress_requests:sum:4274 + expr: vector(1) + labels: + job: job4274 + - record: job:http_inprogress_requests:sum:4275 + expr: vector(1) + labels: + job: job4275 + - record: job:http_inprogress_requests:sum:4276 + expr: vector(1) + labels: + job: job4276 + - record: job:http_inprogress_requests:sum:4277 + expr: vector(1) + labels: + job: job4277 + - record: job:http_inprogress_requests:sum:4278 + expr: vector(1) + labels: + job: job4278 + - record: job:http_inprogress_requests:sum:4279 + expr: vector(1) + labels: + job: job4279 + - record: job:http_inprogress_requests:sum:4280 + expr: vector(1) + labels: + job: job4280 + - record: job:http_inprogress_requests:sum:4281 + expr: vector(1) + labels: + job: job4281 + - record: job:http_inprogress_requests:sum:4282 + expr: vector(1) + labels: + job: job4282 + - record: job:http_inprogress_requests:sum:4283 + expr: vector(1) + labels: + job: job4283 + - record: job:http_inprogress_requests:sum:4284 + expr: vector(1) + labels: + job: job4284 + - record: job:http_inprogress_requests:sum:4285 + expr: vector(1) + labels: + job: job4285 + - record: job:http_inprogress_requests:sum:4286 + expr: vector(1) + labels: + job: job4286 + - record: job:http_inprogress_requests:sum:4287 + expr: vector(1) + labels: + job: job4287 + - record: job:http_inprogress_requests:sum:4288 + expr: vector(1) + labels: + job: job4288 + - record: job:http_inprogress_requests:sum:4289 + expr: vector(1) + labels: + job: job4289 + - record: job:http_inprogress_requests:sum:4290 + expr: vector(1) + labels: + job: job4290 + - record: job:http_inprogress_requests:sum:4291 + expr: vector(1) + labels: + job: job4291 + - record: job:http_inprogress_requests:sum:4292 + expr: vector(1) + labels: + job: job4292 + - record: job:http_inprogress_requests:sum:4293 + expr: vector(1) + labels: + job: job4293 + - record: job:http_inprogress_requests:sum:4294 + expr: vector(1) + labels: + job: job4294 + - record: job:http_inprogress_requests:sum:4295 + expr: vector(1) + labels: + job: job4295 + - record: job:http_inprogress_requests:sum:4296 + expr: vector(1) + labels: + job: job4296 + - record: job:http_inprogress_requests:sum:4297 + expr: vector(1) + labels: + job: job4297 + - record: job:http_inprogress_requests:sum:4298 + expr: vector(1) + labels: + job: job4298 + - record: job:http_inprogress_requests:sum:4299 + expr: vector(1) + labels: + job: job4299 + - record: job:http_inprogress_requests:sum:4300 + expr: vector(1) + labels: + job: job4300 + - record: job:http_inprogress_requests:sum:4301 + expr: vector(1) + labels: + job: job4301 + - record: job:http_inprogress_requests:sum:4302 + expr: vector(1) + labels: + job: job4302 + - record: job:http_inprogress_requests:sum:4303 + expr: vector(1) + labels: + job: job4303 + - record: job:http_inprogress_requests:sum:4304 + expr: vector(1) + labels: + job: job4304 + - record: job:http_inprogress_requests:sum:4305 + expr: vector(1) + labels: + job: job4305 + - record: job:http_inprogress_requests:sum:4306 + expr: vector(1) + labels: + job: job4306 + - record: job:http_inprogress_requests:sum:4307 + expr: vector(1) + labels: + job: job4307 + - record: job:http_inprogress_requests:sum:4308 + expr: vector(1) + labels: + job: job4308 + - record: job:http_inprogress_requests:sum:4309 + expr: vector(1) + labels: + job: job4309 + - record: job:http_inprogress_requests:sum:4310 + expr: vector(1) + labels: + job: job4310 + - record: job:http_inprogress_requests:sum:4311 + expr: vector(1) + labels: + job: job4311 + - record: job:http_inprogress_requests:sum:4312 + expr: vector(1) + labels: + job: job4312 + - record: job:http_inprogress_requests:sum:4313 + expr: vector(1) + labels: + job: job4313 + - record: job:http_inprogress_requests:sum:4314 + expr: vector(1) + labels: + job: job4314 + - record: job:http_inprogress_requests:sum:4315 + expr: vector(1) + labels: + job: job4315 + - record: job:http_inprogress_requests:sum:4316 + expr: vector(1) + labels: + job: job4316 + - record: job:http_inprogress_requests:sum:4317 + expr: vector(1) + labels: + job: job4317 + - record: job:http_inprogress_requests:sum:4318 + expr: vector(1) + labels: + job: job4318 + - record: job:http_inprogress_requests:sum:4319 + expr: vector(1) + labels: + job: job4319 + - record: job:http_inprogress_requests:sum:4320 + expr: vector(1) + labels: + job: job4320 + - record: job:http_inprogress_requests:sum:4321 + expr: vector(1) + labels: + job: job4321 + - record: job:http_inprogress_requests:sum:4322 + expr: vector(1) + labels: + job: job4322 + - record: job:http_inprogress_requests:sum:4323 + expr: vector(1) + labels: + job: job4323 + - record: job:http_inprogress_requests:sum:4324 + expr: vector(1) + labels: + job: job4324 + - record: job:http_inprogress_requests:sum:4325 + expr: vector(1) + labels: + job: job4325 + - record: job:http_inprogress_requests:sum:4326 + expr: vector(1) + labels: + job: job4326 + - record: job:http_inprogress_requests:sum:4327 + expr: vector(1) + labels: + job: job4327 + - record: job:http_inprogress_requests:sum:4328 + expr: vector(1) + labels: + job: job4328 + - record: job:http_inprogress_requests:sum:4329 + expr: vector(1) + labels: + job: job4329 + - record: job:http_inprogress_requests:sum:4330 + expr: vector(1) + labels: + job: job4330 + - record: job:http_inprogress_requests:sum:4331 + expr: vector(1) + labels: + job: job4331 + - record: job:http_inprogress_requests:sum:4332 + expr: vector(1) + labels: + job: job4332 + - record: job:http_inprogress_requests:sum:4333 + expr: vector(1) + labels: + job: job4333 + - record: job:http_inprogress_requests:sum:4334 + expr: vector(1) + labels: + job: job4334 + - record: job:http_inprogress_requests:sum:4335 + expr: vector(1) + labels: + job: job4335 + - record: job:http_inprogress_requests:sum:4336 + expr: vector(1) + labels: + job: job4336 + - record: job:http_inprogress_requests:sum:4337 + expr: vector(1) + labels: + job: job4337 + - record: job:http_inprogress_requests:sum:4338 + expr: vector(1) + labels: + job: job4338 + - record: job:http_inprogress_requests:sum:4339 + expr: vector(1) + labels: + job: job4339 + - record: job:http_inprogress_requests:sum:4340 + expr: vector(1) + labels: + job: job4340 + - record: job:http_inprogress_requests:sum:4341 + expr: vector(1) + labels: + job: job4341 + - record: job:http_inprogress_requests:sum:4342 + expr: vector(1) + labels: + job: job4342 + - record: job:http_inprogress_requests:sum:4343 + expr: vector(1) + labels: + job: job4343 + - record: job:http_inprogress_requests:sum:4344 + expr: vector(1) + labels: + job: job4344 + - record: job:http_inprogress_requests:sum:4345 + expr: vector(1) + labels: + job: job4345 + - record: job:http_inprogress_requests:sum:4346 + expr: vector(1) + labels: + job: job4346 + - record: job:http_inprogress_requests:sum:4347 + expr: vector(1) + labels: + job: job4347 + - record: job:http_inprogress_requests:sum:4348 + expr: vector(1) + labels: + job: job4348 + - record: job:http_inprogress_requests:sum:4349 + expr: vector(1) + labels: + job: job4349 + - record: job:http_inprogress_requests:sum:4350 + expr: vector(1) + labels: + job: job4350 + - record: job:http_inprogress_requests:sum:4351 + expr: vector(1) + labels: + job: job4351 + - record: job:http_inprogress_requests:sum:4352 + expr: vector(1) + labels: + job: job4352 + - record: job:http_inprogress_requests:sum:4353 + expr: vector(1) + labels: + job: job4353 + - record: job:http_inprogress_requests:sum:4354 + expr: vector(1) + labels: + job: job4354 + - record: job:http_inprogress_requests:sum:4355 + expr: vector(1) + labels: + job: job4355 + - record: job:http_inprogress_requests:sum:4356 + expr: vector(1) + labels: + job: job4356 + - record: job:http_inprogress_requests:sum:4357 + expr: vector(1) + labels: + job: job4357 + - record: job:http_inprogress_requests:sum:4358 + expr: vector(1) + labels: + job: job4358 + - record: job:http_inprogress_requests:sum:4359 + expr: vector(1) + labels: + job: job4359 + - record: job:http_inprogress_requests:sum:4360 + expr: vector(1) + labels: + job: job4360 + - record: job:http_inprogress_requests:sum:4361 + expr: vector(1) + labels: + job: job4361 + - record: job:http_inprogress_requests:sum:4362 + expr: vector(1) + labels: + job: job4362 + - record: job:http_inprogress_requests:sum:4363 + expr: vector(1) + labels: + job: job4363 + - record: job:http_inprogress_requests:sum:4364 + expr: vector(1) + labels: + job: job4364 + - record: job:http_inprogress_requests:sum:4365 + expr: vector(1) + labels: + job: job4365 + - record: job:http_inprogress_requests:sum:4366 + expr: vector(1) + labels: + job: job4366 + - record: job:http_inprogress_requests:sum:4367 + expr: vector(1) + labels: + job: job4367 + - record: job:http_inprogress_requests:sum:4368 + expr: vector(1) + labels: + job: job4368 + - record: job:http_inprogress_requests:sum:4369 + expr: vector(1) + labels: + job: job4369 + - record: job:http_inprogress_requests:sum:4370 + expr: vector(1) + labels: + job: job4370 + - record: job:http_inprogress_requests:sum:4371 + expr: vector(1) + labels: + job: job4371 + - record: job:http_inprogress_requests:sum:4372 + expr: vector(1) + labels: + job: job4372 + - record: job:http_inprogress_requests:sum:4373 + expr: vector(1) + labels: + job: job4373 + - record: job:http_inprogress_requests:sum:4374 + expr: vector(1) + labels: + job: job4374 + - record: job:http_inprogress_requests:sum:4375 + expr: vector(1) + labels: + job: job4375 + - record: job:http_inprogress_requests:sum:4376 + expr: vector(1) + labels: + job: job4376 + - record: job:http_inprogress_requests:sum:4377 + expr: vector(1) + labels: + job: job4377 + - record: job:http_inprogress_requests:sum:4378 + expr: vector(1) + labels: + job: job4378 + - record: job:http_inprogress_requests:sum:4379 + expr: vector(1) + labels: + job: job4379 + - record: job:http_inprogress_requests:sum:4380 + expr: vector(1) + labels: + job: job4380 + - record: job:http_inprogress_requests:sum:4381 + expr: vector(1) + labels: + job: job4381 + - record: job:http_inprogress_requests:sum:4382 + expr: vector(1) + labels: + job: job4382 + - record: job:http_inprogress_requests:sum:4383 + expr: vector(1) + labels: + job: job4383 + - record: job:http_inprogress_requests:sum:4384 + expr: vector(1) + labels: + job: job4384 + - record: job:http_inprogress_requests:sum:4385 + expr: vector(1) + labels: + job: job4385 + - record: job:http_inprogress_requests:sum:4386 + expr: vector(1) + labels: + job: job4386 + - record: job:http_inprogress_requests:sum:4387 + expr: vector(1) + labels: + job: job4387 + - record: job:http_inprogress_requests:sum:4388 + expr: vector(1) + labels: + job: job4388 + - record: job:http_inprogress_requests:sum:4389 + expr: vector(1) + labels: + job: job4389 + - record: job:http_inprogress_requests:sum:4390 + expr: vector(1) + labels: + job: job4390 + - record: job:http_inprogress_requests:sum:4391 + expr: vector(1) + labels: + job: job4391 + - record: job:http_inprogress_requests:sum:4392 + expr: vector(1) + labels: + job: job4392 + - record: job:http_inprogress_requests:sum:4393 + expr: vector(1) + labels: + job: job4393 + - record: job:http_inprogress_requests:sum:4394 + expr: vector(1) + labels: + job: job4394 + - record: job:http_inprogress_requests:sum:4395 + expr: vector(1) + labels: + job: job4395 + - record: job:http_inprogress_requests:sum:4396 + expr: vector(1) + labels: + job: job4396 + - record: job:http_inprogress_requests:sum:4397 + expr: vector(1) + labels: + job: job4397 + - record: job:http_inprogress_requests:sum:4398 + expr: vector(1) + labels: + job: job4398 + - record: job:http_inprogress_requests:sum:4399 + expr: vector(1) + labels: + job: job4399 + - record: job:http_inprogress_requests:sum:4400 + expr: vector(1) + labels: + job: job4400 + - record: job:http_inprogress_requests:sum:4401 + expr: vector(1) + labels: + job: job4401 + - record: job:http_inprogress_requests:sum:4402 + expr: vector(1) + labels: + job: job4402 + - record: job:http_inprogress_requests:sum:4403 + expr: vector(1) + labels: + job: job4403 + - record: job:http_inprogress_requests:sum:4404 + expr: vector(1) + labels: + job: job4404 + - record: job:http_inprogress_requests:sum:4405 + expr: vector(1) + labels: + job: job4405 + - record: job:http_inprogress_requests:sum:4406 + expr: vector(1) + labels: + job: job4406 + - record: job:http_inprogress_requests:sum:4407 + expr: vector(1) + labels: + job: job4407 + - record: job:http_inprogress_requests:sum:4408 + expr: vector(1) + labels: + job: job4408 + - record: job:http_inprogress_requests:sum:4409 + expr: vector(1) + labels: + job: job4409 + - record: job:http_inprogress_requests:sum:4410 + expr: vector(1) + labels: + job: job4410 + - record: job:http_inprogress_requests:sum:4411 + expr: vector(1) + labels: + job: job4411 + - record: job:http_inprogress_requests:sum:4412 + expr: vector(1) + labels: + job: job4412 + - record: job:http_inprogress_requests:sum:4413 + expr: vector(1) + labels: + job: job4413 + - record: job:http_inprogress_requests:sum:4414 + expr: vector(1) + labels: + job: job4414 + - record: job:http_inprogress_requests:sum:4415 + expr: vector(1) + labels: + job: job4415 + - record: job:http_inprogress_requests:sum:4416 + expr: vector(1) + labels: + job: job4416 + - record: job:http_inprogress_requests:sum:4417 + expr: vector(1) + labels: + job: job4417 + - record: job:http_inprogress_requests:sum:4418 + expr: vector(1) + labels: + job: job4418 + - record: job:http_inprogress_requests:sum:4419 + expr: vector(1) + labels: + job: job4419 + - record: job:http_inprogress_requests:sum:4420 + expr: vector(1) + labels: + job: job4420 + - record: job:http_inprogress_requests:sum:4421 + expr: vector(1) + labels: + job: job4421 + - record: job:http_inprogress_requests:sum:4422 + expr: vector(1) + labels: + job: job4422 + - record: job:http_inprogress_requests:sum:4423 + expr: vector(1) + labels: + job: job4423 + - record: job:http_inprogress_requests:sum:4424 + expr: vector(1) + labels: + job: job4424 + - record: job:http_inprogress_requests:sum:4425 + expr: vector(1) + labels: + job: job4425 + - record: job:http_inprogress_requests:sum:4426 + expr: vector(1) + labels: + job: job4426 + - record: job:http_inprogress_requests:sum:4427 + expr: vector(1) + labels: + job: job4427 + - record: job:http_inprogress_requests:sum:4428 + expr: vector(1) + labels: + job: job4428 + - record: job:http_inprogress_requests:sum:4429 + expr: vector(1) + labels: + job: job4429 + - record: job:http_inprogress_requests:sum:4430 + expr: vector(1) + labels: + job: job4430 + - record: job:http_inprogress_requests:sum:4431 + expr: vector(1) + labels: + job: job4431 + - record: job:http_inprogress_requests:sum:4432 + expr: vector(1) + labels: + job: job4432 + - record: job:http_inprogress_requests:sum:4433 + expr: vector(1) + labels: + job: job4433 + - record: job:http_inprogress_requests:sum:4434 + expr: vector(1) + labels: + job: job4434 + - record: job:http_inprogress_requests:sum:4435 + expr: vector(1) + labels: + job: job4435 + - record: job:http_inprogress_requests:sum:4436 + expr: vector(1) + labels: + job: job4436 + - record: job:http_inprogress_requests:sum:4437 + expr: vector(1) + labels: + job: job4437 + - record: job:http_inprogress_requests:sum:4438 + expr: vector(1) + labels: + job: job4438 + - record: job:http_inprogress_requests:sum:4439 + expr: vector(1) + labels: + job: job4439 + - record: job:http_inprogress_requests:sum:4440 + expr: vector(1) + labels: + job: job4440 + - record: job:http_inprogress_requests:sum:4441 + expr: vector(1) + labels: + job: job4441 + - record: job:http_inprogress_requests:sum:4442 + expr: vector(1) + labels: + job: job4442 + - record: job:http_inprogress_requests:sum:4443 + expr: vector(1) + labels: + job: job4443 + - record: job:http_inprogress_requests:sum:4444 + expr: vector(1) + labels: + job: job4444 + - record: job:http_inprogress_requests:sum:4445 + expr: vector(1) + labels: + job: job4445 + - record: job:http_inprogress_requests:sum:4446 + expr: vector(1) + labels: + job: job4446 + - record: job:http_inprogress_requests:sum:4447 + expr: vector(1) + labels: + job: job4447 + - record: job:http_inprogress_requests:sum:4448 + expr: vector(1) + labels: + job: job4448 + - record: job:http_inprogress_requests:sum:4449 + expr: vector(1) + labels: + job: job4449 + - record: job:http_inprogress_requests:sum:4450 + expr: vector(1) + labels: + job: job4450 + - record: job:http_inprogress_requests:sum:4451 + expr: vector(1) + labels: + job: job4451 + - record: job:http_inprogress_requests:sum:4452 + expr: vector(1) + labels: + job: job4452 + - record: job:http_inprogress_requests:sum:4453 + expr: vector(1) + labels: + job: job4453 + - record: job:http_inprogress_requests:sum:4454 + expr: vector(1) + labels: + job: job4454 + - record: job:http_inprogress_requests:sum:4455 + expr: vector(1) + labels: + job: job4455 + - record: job:http_inprogress_requests:sum:4456 + expr: vector(1) + labels: + job: job4456 + - record: job:http_inprogress_requests:sum:4457 + expr: vector(1) + labels: + job: job4457 + - record: job:http_inprogress_requests:sum:4458 + expr: vector(1) + labels: + job: job4458 + - record: job:http_inprogress_requests:sum:4459 + expr: vector(1) + labels: + job: job4459 + - record: job:http_inprogress_requests:sum:4460 + expr: vector(1) + labels: + job: job4460 + - record: job:http_inprogress_requests:sum:4461 + expr: vector(1) + labels: + job: job4461 + - record: job:http_inprogress_requests:sum:4462 + expr: vector(1) + labels: + job: job4462 + - record: job:http_inprogress_requests:sum:4463 + expr: vector(1) + labels: + job: job4463 + - record: job:http_inprogress_requests:sum:4464 + expr: vector(1) + labels: + job: job4464 + - record: job:http_inprogress_requests:sum:4465 + expr: vector(1) + labels: + job: job4465 + - record: job:http_inprogress_requests:sum:4466 + expr: vector(1) + labels: + job: job4466 + - record: job:http_inprogress_requests:sum:4467 + expr: vector(1) + labels: + job: job4467 + - record: job:http_inprogress_requests:sum:4468 + expr: vector(1) + labels: + job: job4468 + - record: job:http_inprogress_requests:sum:4469 + expr: vector(1) + labels: + job: job4469 + - record: job:http_inprogress_requests:sum:4470 + expr: vector(1) + labels: + job: job4470 + - record: job:http_inprogress_requests:sum:4471 + expr: vector(1) + labels: + job: job4471 + - record: job:http_inprogress_requests:sum:4472 + expr: vector(1) + labels: + job: job4472 + - record: job:http_inprogress_requests:sum:4473 + expr: vector(1) + labels: + job: job4473 + - record: job:http_inprogress_requests:sum:4474 + expr: vector(1) + labels: + job: job4474 + - record: job:http_inprogress_requests:sum:4475 + expr: vector(1) + labels: + job: job4475 + - record: job:http_inprogress_requests:sum:4476 + expr: vector(1) + labels: + job: job4476 + - record: job:http_inprogress_requests:sum:4477 + expr: vector(1) + labels: + job: job4477 + - record: job:http_inprogress_requests:sum:4478 + expr: vector(1) + labels: + job: job4478 + - record: job:http_inprogress_requests:sum:4479 + expr: vector(1) + labels: + job: job4479 + - record: job:http_inprogress_requests:sum:4480 + expr: vector(1) + labels: + job: job4480 + - record: job:http_inprogress_requests:sum:4481 + expr: vector(1) + labels: + job: job4481 + - record: job:http_inprogress_requests:sum:4482 + expr: vector(1) + labels: + job: job4482 + - record: job:http_inprogress_requests:sum:4483 + expr: vector(1) + labels: + job: job4483 + - record: job:http_inprogress_requests:sum:4484 + expr: vector(1) + labels: + job: job4484 + - record: job:http_inprogress_requests:sum:4485 + expr: vector(1) + labels: + job: job4485 + - record: job:http_inprogress_requests:sum:4486 + expr: vector(1) + labels: + job: job4486 + - record: job:http_inprogress_requests:sum:4487 + expr: vector(1) + labels: + job: job4487 + - record: job:http_inprogress_requests:sum:4488 + expr: vector(1) + labels: + job: job4488 + - record: job:http_inprogress_requests:sum:4489 + expr: vector(1) + labels: + job: job4489 + - record: job:http_inprogress_requests:sum:4490 + expr: vector(1) + labels: + job: job4490 + - record: job:http_inprogress_requests:sum:4491 + expr: vector(1) + labels: + job: job4491 + - record: job:http_inprogress_requests:sum:4492 + expr: vector(1) + labels: + job: job4492 + - record: job:http_inprogress_requests:sum:4493 + expr: vector(1) + labels: + job: job4493 + - record: job:http_inprogress_requests:sum:4494 + expr: vector(1) + labels: + job: job4494 + - record: job:http_inprogress_requests:sum:4495 + expr: vector(1) + labels: + job: job4495 + - record: job:http_inprogress_requests:sum:4496 + expr: vector(1) + labels: + job: job4496 + - record: job:http_inprogress_requests:sum:4497 + expr: vector(1) + labels: + job: job4497 + - record: job:http_inprogress_requests:sum:4498 + expr: vector(1) + labels: + job: job4498 + - record: job:http_inprogress_requests:sum:4499 + expr: vector(1) + labels: + job: job4499 + - record: job:http_inprogress_requests:sum:4500 + expr: vector(1) + labels: + job: job4500 + - record: job:http_inprogress_requests:sum:4501 + expr: vector(1) + labels: + job: job4501 + - record: job:http_inprogress_requests:sum:4502 + expr: vector(1) + labels: + job: job4502 + - record: job:http_inprogress_requests:sum:4503 + expr: vector(1) + labels: + job: job4503 + - record: job:http_inprogress_requests:sum:4504 + expr: vector(1) + labels: + job: job4504 + - record: job:http_inprogress_requests:sum:4505 + expr: vector(1) + labels: + job: job4505 + - record: job:http_inprogress_requests:sum:4506 + expr: vector(1) + labels: + job: job4506 + - record: job:http_inprogress_requests:sum:4507 + expr: vector(1) + labels: + job: job4507 + - record: job:http_inprogress_requests:sum:4508 + expr: vector(1) + labels: + job: job4508 + - record: job:http_inprogress_requests:sum:4509 + expr: vector(1) + labels: + job: job4509 + - record: job:http_inprogress_requests:sum:4510 + expr: vector(1) + labels: + job: job4510 + - record: job:http_inprogress_requests:sum:4511 + expr: vector(1) + labels: + job: job4511 + - record: job:http_inprogress_requests:sum:4512 + expr: vector(1) + labels: + job: job4512 + - record: job:http_inprogress_requests:sum:4513 + expr: vector(1) + labels: + job: job4513 + - record: job:http_inprogress_requests:sum:4514 + expr: vector(1) + labels: + job: job4514 + - record: job:http_inprogress_requests:sum:4515 + expr: vector(1) + labels: + job: job4515 + - record: job:http_inprogress_requests:sum:4516 + expr: vector(1) + labels: + job: job4516 + - record: job:http_inprogress_requests:sum:4517 + expr: vector(1) + labels: + job: job4517 + - record: job:http_inprogress_requests:sum:4518 + expr: vector(1) + labels: + job: job4518 + - record: job:http_inprogress_requests:sum:4519 + expr: vector(1) + labels: + job: job4519 + - record: job:http_inprogress_requests:sum:4520 + expr: vector(1) + labels: + job: job4520 + - record: job:http_inprogress_requests:sum:4521 + expr: vector(1) + labels: + job: job4521 + - record: job:http_inprogress_requests:sum:4522 + expr: vector(1) + labels: + job: job4522 + - record: job:http_inprogress_requests:sum:4523 + expr: vector(1) + labels: + job: job4523 + - record: job:http_inprogress_requests:sum:4524 + expr: vector(1) + labels: + job: job4524 + - record: job:http_inprogress_requests:sum:4525 + expr: vector(1) + labels: + job: job4525 + - record: job:http_inprogress_requests:sum:4526 + expr: vector(1) + labels: + job: job4526 + - record: job:http_inprogress_requests:sum:4527 + expr: vector(1) + labels: + job: job4527 + - record: job:http_inprogress_requests:sum:4528 + expr: vector(1) + labels: + job: job4528 + - record: job:http_inprogress_requests:sum:4529 + expr: vector(1) + labels: + job: job4529 + - record: job:http_inprogress_requests:sum:4530 + expr: vector(1) + labels: + job: job4530 + - record: job:http_inprogress_requests:sum:4531 + expr: vector(1) + labels: + job: job4531 + - record: job:http_inprogress_requests:sum:4532 + expr: vector(1) + labels: + job: job4532 + - record: job:http_inprogress_requests:sum:4533 + expr: vector(1) + labels: + job: job4533 + - record: job:http_inprogress_requests:sum:4534 + expr: vector(1) + labels: + job: job4534 + - record: job:http_inprogress_requests:sum:4535 + expr: vector(1) + labels: + job: job4535 + - record: job:http_inprogress_requests:sum:4536 + expr: vector(1) + labels: + job: job4536 + - record: job:http_inprogress_requests:sum:4537 + expr: vector(1) + labels: + job: job4537 + - record: job:http_inprogress_requests:sum:4538 + expr: vector(1) + labels: + job: job4538 + - record: job:http_inprogress_requests:sum:4539 + expr: vector(1) + labels: + job: job4539 + - record: job:http_inprogress_requests:sum:4540 + expr: vector(1) + labels: + job: job4540 + - record: job:http_inprogress_requests:sum:4541 + expr: vector(1) + labels: + job: job4541 + - record: job:http_inprogress_requests:sum:4542 + expr: vector(1) + labels: + job: job4542 + - record: job:http_inprogress_requests:sum:4543 + expr: vector(1) + labels: + job: job4543 + - record: job:http_inprogress_requests:sum:4544 + expr: vector(1) + labels: + job: job4544 + - record: job:http_inprogress_requests:sum:4545 + expr: vector(1) + labels: + job: job4545 + - record: job:http_inprogress_requests:sum:4546 + expr: vector(1) + labels: + job: job4546 + - record: job:http_inprogress_requests:sum:4547 + expr: vector(1) + labels: + job: job4547 + - record: job:http_inprogress_requests:sum:4548 + expr: vector(1) + labels: + job: job4548 + - record: job:http_inprogress_requests:sum:4549 + expr: vector(1) + labels: + job: job4549 + - record: job:http_inprogress_requests:sum:4550 + expr: vector(1) + labels: + job: job4550 + - record: job:http_inprogress_requests:sum:4551 + expr: vector(1) + labels: + job: job4551 + - record: job:http_inprogress_requests:sum:4552 + expr: vector(1) + labels: + job: job4552 + - record: job:http_inprogress_requests:sum:4553 + expr: vector(1) + labels: + job: job4553 + - record: job:http_inprogress_requests:sum:4554 + expr: vector(1) + labels: + job: job4554 + - record: job:http_inprogress_requests:sum:4555 + expr: vector(1) + labels: + job: job4555 + - record: job:http_inprogress_requests:sum:4556 + expr: vector(1) + labels: + job: job4556 + - record: job:http_inprogress_requests:sum:4557 + expr: vector(1) + labels: + job: job4557 + - record: job:http_inprogress_requests:sum:4558 + expr: vector(1) + labels: + job: job4558 + - record: job:http_inprogress_requests:sum:4559 + expr: vector(1) + labels: + job: job4559 + - record: job:http_inprogress_requests:sum:4560 + expr: vector(1) + labels: + job: job4560 + - record: job:http_inprogress_requests:sum:4561 + expr: vector(1) + labels: + job: job4561 + - record: job:http_inprogress_requests:sum:4562 + expr: vector(1) + labels: + job: job4562 + - record: job:http_inprogress_requests:sum:4563 + expr: vector(1) + labels: + job: job4563 + - record: job:http_inprogress_requests:sum:4564 + expr: vector(1) + labels: + job: job4564 + - record: job:http_inprogress_requests:sum:4565 + expr: vector(1) + labels: + job: job4565 + - record: job:http_inprogress_requests:sum:4566 + expr: vector(1) + labels: + job: job4566 + - record: job:http_inprogress_requests:sum:4567 + expr: vector(1) + labels: + job: job4567 + - record: job:http_inprogress_requests:sum:4568 + expr: vector(1) + labels: + job: job4568 + - record: job:http_inprogress_requests:sum:4569 + expr: vector(1) + labels: + job: job4569 + - record: job:http_inprogress_requests:sum:4570 + expr: vector(1) + labels: + job: job4570 + - record: job:http_inprogress_requests:sum:4571 + expr: vector(1) + labels: + job: job4571 + - record: job:http_inprogress_requests:sum:4572 + expr: vector(1) + labels: + job: job4572 + - record: job:http_inprogress_requests:sum:4573 + expr: vector(1) + labels: + job: job4573 + - record: job:http_inprogress_requests:sum:4574 + expr: vector(1) + labels: + job: job4574 + - record: job:http_inprogress_requests:sum:4575 + expr: vector(1) + labels: + job: job4575 + - record: job:http_inprogress_requests:sum:4576 + expr: vector(1) + labels: + job: job4576 + - record: job:http_inprogress_requests:sum:4577 + expr: vector(1) + labels: + job: job4577 + - record: job:http_inprogress_requests:sum:4578 + expr: vector(1) + labels: + job: job4578 + - record: job:http_inprogress_requests:sum:4579 + expr: vector(1) + labels: + job: job4579 + - record: job:http_inprogress_requests:sum:4580 + expr: vector(1) + labels: + job: job4580 + - record: job:http_inprogress_requests:sum:4581 + expr: vector(1) + labels: + job: job4581 + - record: job:http_inprogress_requests:sum:4582 + expr: vector(1) + labels: + job: job4582 + - record: job:http_inprogress_requests:sum:4583 + expr: vector(1) + labels: + job: job4583 + - record: job:http_inprogress_requests:sum:4584 + expr: vector(1) + labels: + job: job4584 + - record: job:http_inprogress_requests:sum:4585 + expr: vector(1) + labels: + job: job4585 + - record: job:http_inprogress_requests:sum:4586 + expr: vector(1) + labels: + job: job4586 + - record: job:http_inprogress_requests:sum:4587 + expr: vector(1) + labels: + job: job4587 + - record: job:http_inprogress_requests:sum:4588 + expr: vector(1) + labels: + job: job4588 + - record: job:http_inprogress_requests:sum:4589 + expr: vector(1) + labels: + job: job4589 + - record: job:http_inprogress_requests:sum:4590 + expr: vector(1) + labels: + job: job4590 + - record: job:http_inprogress_requests:sum:4591 + expr: vector(1) + labels: + job: job4591 + - record: job:http_inprogress_requests:sum:4592 + expr: vector(1) + labels: + job: job4592 + - record: job:http_inprogress_requests:sum:4593 + expr: vector(1) + labels: + job: job4593 + - record: job:http_inprogress_requests:sum:4594 + expr: vector(1) + labels: + job: job4594 + - record: job:http_inprogress_requests:sum:4595 + expr: vector(1) + labels: + job: job4595 + - record: job:http_inprogress_requests:sum:4596 + expr: vector(1) + labels: + job: job4596 + - record: job:http_inprogress_requests:sum:4597 + expr: vector(1) + labels: + job: job4597 + - record: job:http_inprogress_requests:sum:4598 + expr: vector(1) + labels: + job: job4598 + - record: job:http_inprogress_requests:sum:4599 + expr: vector(1) + labels: + job: job4599 + - record: job:http_inprogress_requests:sum:4600 + expr: vector(1) + labels: + job: job4600 + - record: job:http_inprogress_requests:sum:4601 + expr: vector(1) + labels: + job: job4601 + - record: job:http_inprogress_requests:sum:4602 + expr: vector(1) + labels: + job: job4602 + - record: job:http_inprogress_requests:sum:4603 + expr: vector(1) + labels: + job: job4603 + - record: job:http_inprogress_requests:sum:4604 + expr: vector(1) + labels: + job: job4604 + - record: job:http_inprogress_requests:sum:4605 + expr: vector(1) + labels: + job: job4605 + - record: job:http_inprogress_requests:sum:4606 + expr: vector(1) + labels: + job: job4606 + - record: job:http_inprogress_requests:sum:4607 + expr: vector(1) + labels: + job: job4607 + - record: job:http_inprogress_requests:sum:4608 + expr: vector(1) + labels: + job: job4608 + - record: job:http_inprogress_requests:sum:4609 + expr: vector(1) + labels: + job: job4609 + - record: job:http_inprogress_requests:sum:4610 + expr: vector(1) + labels: + job: job4610 + - record: job:http_inprogress_requests:sum:4611 + expr: vector(1) + labels: + job: job4611 + - record: job:http_inprogress_requests:sum:4612 + expr: vector(1) + labels: + job: job4612 + - record: job:http_inprogress_requests:sum:4613 + expr: vector(1) + labels: + job: job4613 + - record: job:http_inprogress_requests:sum:4614 + expr: vector(1) + labels: + job: job4614 + - record: job:http_inprogress_requests:sum:4615 + expr: vector(1) + labels: + job: job4615 + - record: job:http_inprogress_requests:sum:4616 + expr: vector(1) + labels: + job: job4616 + - record: job:http_inprogress_requests:sum:4617 + expr: vector(1) + labels: + job: job4617 + - record: job:http_inprogress_requests:sum:4618 + expr: vector(1) + labels: + job: job4618 + - record: job:http_inprogress_requests:sum:4619 + expr: vector(1) + labels: + job: job4619 + - record: job:http_inprogress_requests:sum:4620 + expr: vector(1) + labels: + job: job4620 + - record: job:http_inprogress_requests:sum:4621 + expr: vector(1) + labels: + job: job4621 + - record: job:http_inprogress_requests:sum:4622 + expr: vector(1) + labels: + job: job4622 + - record: job:http_inprogress_requests:sum:4623 + expr: vector(1) + labels: + job: job4623 + - record: job:http_inprogress_requests:sum:4624 + expr: vector(1) + labels: + job: job4624 + - record: job:http_inprogress_requests:sum:4625 + expr: vector(1) + labels: + job: job4625 + - record: job:http_inprogress_requests:sum:4626 + expr: vector(1) + labels: + job: job4626 + - record: job:http_inprogress_requests:sum:4627 + expr: vector(1) + labels: + job: job4627 + - record: job:http_inprogress_requests:sum:4628 + expr: vector(1) + labels: + job: job4628 + - record: job:http_inprogress_requests:sum:4629 + expr: vector(1) + labels: + job: job4629 + - record: job:http_inprogress_requests:sum:4630 + expr: vector(1) + labels: + job: job4630 + - record: job:http_inprogress_requests:sum:4631 + expr: vector(1) + labels: + job: job4631 + - record: job:http_inprogress_requests:sum:4632 + expr: vector(1) + labels: + job: job4632 + - record: job:http_inprogress_requests:sum:4633 + expr: vector(1) + labels: + job: job4633 + - record: job:http_inprogress_requests:sum:4634 + expr: vector(1) + labels: + job: job4634 + - record: job:http_inprogress_requests:sum:4635 + expr: vector(1) + labels: + job: job4635 + - record: job:http_inprogress_requests:sum:4636 + expr: vector(1) + labels: + job: job4636 + - record: job:http_inprogress_requests:sum:4637 + expr: vector(1) + labels: + job: job4637 + - record: job:http_inprogress_requests:sum:4638 + expr: vector(1) + labels: + job: job4638 + - record: job:http_inprogress_requests:sum:4639 + expr: vector(1) + labels: + job: job4639 + - record: job:http_inprogress_requests:sum:4640 + expr: vector(1) + labels: + job: job4640 + - record: job:http_inprogress_requests:sum:4641 + expr: vector(1) + labels: + job: job4641 + - record: job:http_inprogress_requests:sum:4642 + expr: vector(1) + labels: + job: job4642 + - record: job:http_inprogress_requests:sum:4643 + expr: vector(1) + labels: + job: job4643 + - record: job:http_inprogress_requests:sum:4644 + expr: vector(1) + labels: + job: job4644 + - record: job:http_inprogress_requests:sum:4645 + expr: vector(1) + labels: + job: job4645 + - record: job:http_inprogress_requests:sum:4646 + expr: vector(1) + labels: + job: job4646 + - record: job:http_inprogress_requests:sum:4647 + expr: vector(1) + labels: + job: job4647 + - record: job:http_inprogress_requests:sum:4648 + expr: vector(1) + labels: + job: job4648 + - record: job:http_inprogress_requests:sum:4649 + expr: vector(1) + labels: + job: job4649 + - record: job:http_inprogress_requests:sum:4650 + expr: vector(1) + labels: + job: job4650 + - record: job:http_inprogress_requests:sum:4651 + expr: vector(1) + labels: + job: job4651 + - record: job:http_inprogress_requests:sum:4652 + expr: vector(1) + labels: + job: job4652 + - record: job:http_inprogress_requests:sum:4653 + expr: vector(1) + labels: + job: job4653 + - record: job:http_inprogress_requests:sum:4654 + expr: vector(1) + labels: + job: job4654 + - record: job:http_inprogress_requests:sum:4655 + expr: vector(1) + labels: + job: job4655 + - record: job:http_inprogress_requests:sum:4656 + expr: vector(1) + labels: + job: job4656 + - record: job:http_inprogress_requests:sum:4657 + expr: vector(1) + labels: + job: job4657 + - record: job:http_inprogress_requests:sum:4658 + expr: vector(1) + labels: + job: job4658 + - record: job:http_inprogress_requests:sum:4659 + expr: vector(1) + labels: + job: job4659 + - record: job:http_inprogress_requests:sum:4660 + expr: vector(1) + labels: + job: job4660 + - record: job:http_inprogress_requests:sum:4661 + expr: vector(1) + labels: + job: job4661 + - record: job:http_inprogress_requests:sum:4662 + expr: vector(1) + labels: + job: job4662 + - record: job:http_inprogress_requests:sum:4663 + expr: vector(1) + labels: + job: job4663 + - record: job:http_inprogress_requests:sum:4664 + expr: vector(1) + labels: + job: job4664 + - record: job:http_inprogress_requests:sum:4665 + expr: vector(1) + labels: + job: job4665 + - record: job:http_inprogress_requests:sum:4666 + expr: vector(1) + labels: + job: job4666 + - record: job:http_inprogress_requests:sum:4667 + expr: vector(1) + labels: + job: job4667 + - record: job:http_inprogress_requests:sum:4668 + expr: vector(1) + labels: + job: job4668 + - record: job:http_inprogress_requests:sum:4669 + expr: vector(1) + labels: + job: job4669 + - record: job:http_inprogress_requests:sum:4670 + expr: vector(1) + labels: + job: job4670 + - record: job:http_inprogress_requests:sum:4671 + expr: vector(1) + labels: + job: job4671 + - record: job:http_inprogress_requests:sum:4672 + expr: vector(1) + labels: + job: job4672 + - record: job:http_inprogress_requests:sum:4673 + expr: vector(1) + labels: + job: job4673 + - record: job:http_inprogress_requests:sum:4674 + expr: vector(1) + labels: + job: job4674 + - record: job:http_inprogress_requests:sum:4675 + expr: vector(1) + labels: + job: job4675 + - record: job:http_inprogress_requests:sum:4676 + expr: vector(1) + labels: + job: job4676 + - record: job:http_inprogress_requests:sum:4677 + expr: vector(1) + labels: + job: job4677 + - record: job:http_inprogress_requests:sum:4678 + expr: vector(1) + labels: + job: job4678 + - record: job:http_inprogress_requests:sum:4679 + expr: vector(1) + labels: + job: job4679 + - record: job:http_inprogress_requests:sum:4680 + expr: vector(1) + labels: + job: job4680 + - record: job:http_inprogress_requests:sum:4681 + expr: vector(1) + labels: + job: job4681 + - record: job:http_inprogress_requests:sum:4682 + expr: vector(1) + labels: + job: job4682 + - record: job:http_inprogress_requests:sum:4683 + expr: vector(1) + labels: + job: job4683 + - record: job:http_inprogress_requests:sum:4684 + expr: vector(1) + labels: + job: job4684 + - record: job:http_inprogress_requests:sum:4685 + expr: vector(1) + labels: + job: job4685 + - record: job:http_inprogress_requests:sum:4686 + expr: vector(1) + labels: + job: job4686 + - record: job:http_inprogress_requests:sum:4687 + expr: vector(1) + labels: + job: job4687 + - record: job:http_inprogress_requests:sum:4688 + expr: vector(1) + labels: + job: job4688 + - record: job:http_inprogress_requests:sum:4689 + expr: vector(1) + labels: + job: job4689 + - record: job:http_inprogress_requests:sum:4690 + expr: vector(1) + labels: + job: job4690 + - record: job:http_inprogress_requests:sum:4691 + expr: vector(1) + labels: + job: job4691 + - record: job:http_inprogress_requests:sum:4692 + expr: vector(1) + labels: + job: job4692 + - record: job:http_inprogress_requests:sum:4693 + expr: vector(1) + labels: + job: job4693 + - record: job:http_inprogress_requests:sum:4694 + expr: vector(1) + labels: + job: job4694 + - record: job:http_inprogress_requests:sum:4695 + expr: vector(1) + labels: + job: job4695 + - record: job:http_inprogress_requests:sum:4696 + expr: vector(1) + labels: + job: job4696 + - record: job:http_inprogress_requests:sum:4697 + expr: vector(1) + labels: + job: job4697 + - record: job:http_inprogress_requests:sum:4698 + expr: vector(1) + labels: + job: job4698 + - record: job:http_inprogress_requests:sum:4699 + expr: vector(1) + labels: + job: job4699 + - record: job:http_inprogress_requests:sum:4700 + expr: vector(1) + labels: + job: job4700 + - record: job:http_inprogress_requests:sum:4701 + expr: vector(1) + labels: + job: job4701 + - record: job:http_inprogress_requests:sum:4702 + expr: vector(1) + labels: + job: job4702 + - record: job:http_inprogress_requests:sum:4703 + expr: vector(1) + labels: + job: job4703 + - record: job:http_inprogress_requests:sum:4704 + expr: vector(1) + labels: + job: job4704 + - record: job:http_inprogress_requests:sum:4705 + expr: vector(1) + labels: + job: job4705 + - record: job:http_inprogress_requests:sum:4706 + expr: vector(1) + labels: + job: job4706 + - record: job:http_inprogress_requests:sum:4707 + expr: vector(1) + labels: + job: job4707 + - record: job:http_inprogress_requests:sum:4708 + expr: vector(1) + labels: + job: job4708 + - record: job:http_inprogress_requests:sum:4709 + expr: vector(1) + labels: + job: job4709 + - record: job:http_inprogress_requests:sum:4710 + expr: vector(1) + labels: + job: job4710 + - record: job:http_inprogress_requests:sum:4711 + expr: vector(1) + labels: + job: job4711 + - record: job:http_inprogress_requests:sum:4712 + expr: vector(1) + labels: + job: job4712 + - record: job:http_inprogress_requests:sum:4713 + expr: vector(1) + labels: + job: job4713 + - record: job:http_inprogress_requests:sum:4714 + expr: vector(1) + labels: + job: job4714 + - record: job:http_inprogress_requests:sum:4715 + expr: vector(1) + labels: + job: job4715 + - record: job:http_inprogress_requests:sum:4716 + expr: vector(1) + labels: + job: job4716 + - record: job:http_inprogress_requests:sum:4717 + expr: vector(1) + labels: + job: job4717 + - record: job:http_inprogress_requests:sum:4718 + expr: vector(1) + labels: + job: job4718 + - record: job:http_inprogress_requests:sum:4719 + expr: vector(1) + labels: + job: job4719 + - record: job:http_inprogress_requests:sum:4720 + expr: vector(1) + labels: + job: job4720 + - record: job:http_inprogress_requests:sum:4721 + expr: vector(1) + labels: + job: job4721 + - record: job:http_inprogress_requests:sum:4722 + expr: vector(1) + labels: + job: job4722 + - record: job:http_inprogress_requests:sum:4723 + expr: vector(1) + labels: + job: job4723 + - record: job:http_inprogress_requests:sum:4724 + expr: vector(1) + labels: + job: job4724 + - record: job:http_inprogress_requests:sum:4725 + expr: vector(1) + labels: + job: job4725 + - record: job:http_inprogress_requests:sum:4726 + expr: vector(1) + labels: + job: job4726 + - record: job:http_inprogress_requests:sum:4727 + expr: vector(1) + labels: + job: job4727 + - record: job:http_inprogress_requests:sum:4728 + expr: vector(1) + labels: + job: job4728 + - record: job:http_inprogress_requests:sum:4729 + expr: vector(1) + labels: + job: job4729 + - record: job:http_inprogress_requests:sum:4730 + expr: vector(1) + labels: + job: job4730 + - record: job:http_inprogress_requests:sum:4731 + expr: vector(1) + labels: + job: job4731 + - record: job:http_inprogress_requests:sum:4732 + expr: vector(1) + labels: + job: job4732 + - record: job:http_inprogress_requests:sum:4733 + expr: vector(1) + labels: + job: job4733 + - record: job:http_inprogress_requests:sum:4734 + expr: vector(1) + labels: + job: job4734 + - record: job:http_inprogress_requests:sum:4735 + expr: vector(1) + labels: + job: job4735 + - record: job:http_inprogress_requests:sum:4736 + expr: vector(1) + labels: + job: job4736 + - record: job:http_inprogress_requests:sum:4737 + expr: vector(1) + labels: + job: job4737 + - record: job:http_inprogress_requests:sum:4738 + expr: vector(1) + labels: + job: job4738 + - record: job:http_inprogress_requests:sum:4739 + expr: vector(1) + labels: + job: job4739 + - record: job:http_inprogress_requests:sum:4740 + expr: vector(1) + labels: + job: job4740 + - record: job:http_inprogress_requests:sum:4741 + expr: vector(1) + labels: + job: job4741 + - record: job:http_inprogress_requests:sum:4742 + expr: vector(1) + labels: + job: job4742 + - record: job:http_inprogress_requests:sum:4743 + expr: vector(1) + labels: + job: job4743 + - record: job:http_inprogress_requests:sum:4744 + expr: vector(1) + labels: + job: job4744 + - record: job:http_inprogress_requests:sum:4745 + expr: vector(1) + labels: + job: job4745 + - record: job:http_inprogress_requests:sum:4746 + expr: vector(1) + labels: + job: job4746 + - record: job:http_inprogress_requests:sum:4747 + expr: vector(1) + labels: + job: job4747 + - record: job:http_inprogress_requests:sum:4748 + expr: vector(1) + labels: + job: job4748 + - record: job:http_inprogress_requests:sum:4749 + expr: vector(1) + labels: + job: job4749 + - record: job:http_inprogress_requests:sum:4750 + expr: vector(1) + labels: + job: job4750 + - record: job:http_inprogress_requests:sum:4751 + expr: vector(1) + labels: + job: job4751 + - record: job:http_inprogress_requests:sum:4752 + expr: vector(1) + labels: + job: job4752 + - record: job:http_inprogress_requests:sum:4753 + expr: vector(1) + labels: + job: job4753 + - record: job:http_inprogress_requests:sum:4754 + expr: vector(1) + labels: + job: job4754 + - record: job:http_inprogress_requests:sum:4755 + expr: vector(1) + labels: + job: job4755 + - record: job:http_inprogress_requests:sum:4756 + expr: vector(1) + labels: + job: job4756 + - record: job:http_inprogress_requests:sum:4757 + expr: vector(1) + labels: + job: job4757 + - record: job:http_inprogress_requests:sum:4758 + expr: vector(1) + labels: + job: job4758 + - record: job:http_inprogress_requests:sum:4759 + expr: vector(1) + labels: + job: job4759 + - record: job:http_inprogress_requests:sum:4760 + expr: vector(1) + labels: + job: job4760 + - record: job:http_inprogress_requests:sum:4761 + expr: vector(1) + labels: + job: job4761 + - record: job:http_inprogress_requests:sum:4762 + expr: vector(1) + labels: + job: job4762 + - record: job:http_inprogress_requests:sum:4763 + expr: vector(1) + labels: + job: job4763 + - record: job:http_inprogress_requests:sum:4764 + expr: vector(1) + labels: + job: job4764 + - record: job:http_inprogress_requests:sum:4765 + expr: vector(1) + labels: + job: job4765 + - record: job:http_inprogress_requests:sum:4766 + expr: vector(1) + labels: + job: job4766 + - record: job:http_inprogress_requests:sum:4767 + expr: vector(1) + labels: + job: job4767 + - record: job:http_inprogress_requests:sum:4768 + expr: vector(1) + labels: + job: job4768 + - record: job:http_inprogress_requests:sum:4769 + expr: vector(1) + labels: + job: job4769 + - record: job:http_inprogress_requests:sum:4770 + expr: vector(1) + labels: + job: job4770 + - record: job:http_inprogress_requests:sum:4771 + expr: vector(1) + labels: + job: job4771 + - record: job:http_inprogress_requests:sum:4772 + expr: vector(1) + labels: + job: job4772 + - record: job:http_inprogress_requests:sum:4773 + expr: vector(1) + labels: + job: job4773 + - record: job:http_inprogress_requests:sum:4774 + expr: vector(1) + labels: + job: job4774 + - record: job:http_inprogress_requests:sum:4775 + expr: vector(1) + labels: + job: job4775 + - record: job:http_inprogress_requests:sum:4776 + expr: vector(1) + labels: + job: job4776 + - record: job:http_inprogress_requests:sum:4777 + expr: vector(1) + labels: + job: job4777 + - record: job:http_inprogress_requests:sum:4778 + expr: vector(1) + labels: + job: job4778 + - record: job:http_inprogress_requests:sum:4779 + expr: vector(1) + labels: + job: job4779 + - record: job:http_inprogress_requests:sum:4780 + expr: vector(1) + labels: + job: job4780 + - record: job:http_inprogress_requests:sum:4781 + expr: vector(1) + labels: + job: job4781 + - record: job:http_inprogress_requests:sum:4782 + expr: vector(1) + labels: + job: job4782 + - record: job:http_inprogress_requests:sum:4783 + expr: vector(1) + labels: + job: job4783 + - record: job:http_inprogress_requests:sum:4784 + expr: vector(1) + labels: + job: job4784 + - record: job:http_inprogress_requests:sum:4785 + expr: vector(1) + labels: + job: job4785 + - record: job:http_inprogress_requests:sum:4786 + expr: vector(1) + labels: + job: job4786 + - record: job:http_inprogress_requests:sum:4787 + expr: vector(1) + labels: + job: job4787 + - record: job:http_inprogress_requests:sum:4788 + expr: vector(1) + labels: + job: job4788 + - record: job:http_inprogress_requests:sum:4789 + expr: vector(1) + labels: + job: job4789 + - record: job:http_inprogress_requests:sum:4790 + expr: vector(1) + labels: + job: job4790 + - record: job:http_inprogress_requests:sum:4791 + expr: vector(1) + labels: + job: job4791 + - record: job:http_inprogress_requests:sum:4792 + expr: vector(1) + labels: + job: job4792 + - record: job:http_inprogress_requests:sum:4793 + expr: vector(1) + labels: + job: job4793 + - record: job:http_inprogress_requests:sum:4794 + expr: vector(1) + labels: + job: job4794 + - record: job:http_inprogress_requests:sum:4795 + expr: vector(1) + labels: + job: job4795 + - record: job:http_inprogress_requests:sum:4796 + expr: vector(1) + labels: + job: job4796 + - record: job:http_inprogress_requests:sum:4797 + expr: vector(1) + labels: + job: job4797 + - record: job:http_inprogress_requests:sum:4798 + expr: vector(1) + labels: + job: job4798 + - record: job:http_inprogress_requests:sum:4799 + expr: vector(1) + labels: + job: job4799 + - record: job:http_inprogress_requests:sum:4800 + expr: vector(1) + labels: + job: job4800 + - record: job:http_inprogress_requests:sum:4801 + expr: vector(1) + labels: + job: job4801 + - record: job:http_inprogress_requests:sum:4802 + expr: vector(1) + labels: + job: job4802 + - record: job:http_inprogress_requests:sum:4803 + expr: vector(1) + labels: + job: job4803 + - record: job:http_inprogress_requests:sum:4804 + expr: vector(1) + labels: + job: job4804 + - record: job:http_inprogress_requests:sum:4805 + expr: vector(1) + labels: + job: job4805 + - record: job:http_inprogress_requests:sum:4806 + expr: vector(1) + labels: + job: job4806 + - record: job:http_inprogress_requests:sum:4807 + expr: vector(1) + labels: + job: job4807 + - record: job:http_inprogress_requests:sum:4808 + expr: vector(1) + labels: + job: job4808 + - record: job:http_inprogress_requests:sum:4809 + expr: vector(1) + labels: + job: job4809 + - record: job:http_inprogress_requests:sum:4810 + expr: vector(1) + labels: + job: job4810 + - record: job:http_inprogress_requests:sum:4811 + expr: vector(1) + labels: + job: job4811 + - record: job:http_inprogress_requests:sum:4812 + expr: vector(1) + labels: + job: job4812 + - record: job:http_inprogress_requests:sum:4813 + expr: vector(1) + labels: + job: job4813 + - record: job:http_inprogress_requests:sum:4814 + expr: vector(1) + labels: + job: job4814 + - record: job:http_inprogress_requests:sum:4815 + expr: vector(1) + labels: + job: job4815 + - record: job:http_inprogress_requests:sum:4816 + expr: vector(1) + labels: + job: job4816 + - record: job:http_inprogress_requests:sum:4817 + expr: vector(1) + labels: + job: job4817 + - record: job:http_inprogress_requests:sum:4818 + expr: vector(1) + labels: + job: job4818 + - record: job:http_inprogress_requests:sum:4819 + expr: vector(1) + labels: + job: job4819 + - record: job:http_inprogress_requests:sum:4820 + expr: vector(1) + labels: + job: job4820 + - record: job:http_inprogress_requests:sum:4821 + expr: vector(1) + labels: + job: job4821 + - record: job:http_inprogress_requests:sum:4822 + expr: vector(1) + labels: + job: job4822 + - record: job:http_inprogress_requests:sum:4823 + expr: vector(1) + labels: + job: job4823 + - record: job:http_inprogress_requests:sum:4824 + expr: vector(1) + labels: + job: job4824 + - record: job:http_inprogress_requests:sum:4825 + expr: vector(1) + labels: + job: job4825 + - record: job:http_inprogress_requests:sum:4826 + expr: vector(1) + labels: + job: job4826 + - record: job:http_inprogress_requests:sum:4827 + expr: vector(1) + labels: + job: job4827 + - record: job:http_inprogress_requests:sum:4828 + expr: vector(1) + labels: + job: job4828 + - record: job:http_inprogress_requests:sum:4829 + expr: vector(1) + labels: + job: job4829 + - record: job:http_inprogress_requests:sum:4830 + expr: vector(1) + labels: + job: job4830 + - record: job:http_inprogress_requests:sum:4831 + expr: vector(1) + labels: + job: job4831 + - record: job:http_inprogress_requests:sum:4832 + expr: vector(1) + labels: + job: job4832 + - record: job:http_inprogress_requests:sum:4833 + expr: vector(1) + labels: + job: job4833 + - record: job:http_inprogress_requests:sum:4834 + expr: vector(1) + labels: + job: job4834 + - record: job:http_inprogress_requests:sum:4835 + expr: vector(1) + labels: + job: job4835 + - record: job:http_inprogress_requests:sum:4836 + expr: vector(1) + labels: + job: job4836 + - record: job:http_inprogress_requests:sum:4837 + expr: vector(1) + labels: + job: job4837 + - record: job:http_inprogress_requests:sum:4838 + expr: vector(1) + labels: + job: job4838 + - record: job:http_inprogress_requests:sum:4839 + expr: vector(1) + labels: + job: job4839 + - record: job:http_inprogress_requests:sum:4840 + expr: vector(1) + labels: + job: job4840 + - record: job:http_inprogress_requests:sum:4841 + expr: vector(1) + labels: + job: job4841 + - record: job:http_inprogress_requests:sum:4842 + expr: vector(1) + labels: + job: job4842 + - record: job:http_inprogress_requests:sum:4843 + expr: vector(1) + labels: + job: job4843 + - record: job:http_inprogress_requests:sum:4844 + expr: vector(1) + labels: + job: job4844 + - record: job:http_inprogress_requests:sum:4845 + expr: vector(1) + labels: + job: job4845 + - record: job:http_inprogress_requests:sum:4846 + expr: vector(1) + labels: + job: job4846 + - record: job:http_inprogress_requests:sum:4847 + expr: vector(1) + labels: + job: job4847 + - record: job:http_inprogress_requests:sum:4848 + expr: vector(1) + labels: + job: job4848 + - record: job:http_inprogress_requests:sum:4849 + expr: vector(1) + labels: + job: job4849 + - record: job:http_inprogress_requests:sum:4850 + expr: vector(1) + labels: + job: job4850 + - record: job:http_inprogress_requests:sum:4851 + expr: vector(1) + labels: + job: job4851 + - record: job:http_inprogress_requests:sum:4852 + expr: vector(1) + labels: + job: job4852 + - record: job:http_inprogress_requests:sum:4853 + expr: vector(1) + labels: + job: job4853 + - record: job:http_inprogress_requests:sum:4854 + expr: vector(1) + labels: + job: job4854 + - record: job:http_inprogress_requests:sum:4855 + expr: vector(1) + labels: + job: job4855 + - record: job:http_inprogress_requests:sum:4856 + expr: vector(1) + labels: + job: job4856 + - record: job:http_inprogress_requests:sum:4857 + expr: vector(1) + labels: + job: job4857 + - record: job:http_inprogress_requests:sum:4858 + expr: vector(1) + labels: + job: job4858 + - record: job:http_inprogress_requests:sum:4859 + expr: vector(1) + labels: + job: job4859 + - record: job:http_inprogress_requests:sum:4860 + expr: vector(1) + labels: + job: job4860 + - record: job:http_inprogress_requests:sum:4861 + expr: vector(1) + labels: + job: job4861 + - record: job:http_inprogress_requests:sum:4862 + expr: vector(1) + labels: + job: job4862 + - record: job:http_inprogress_requests:sum:4863 + expr: vector(1) + labels: + job: job4863 + - record: job:http_inprogress_requests:sum:4864 + expr: vector(1) + labels: + job: job4864 + - record: job:http_inprogress_requests:sum:4865 + expr: vector(1) + labels: + job: job4865 + - record: job:http_inprogress_requests:sum:4866 + expr: vector(1) + labels: + job: job4866 + - record: job:http_inprogress_requests:sum:4867 + expr: vector(1) + labels: + job: job4867 + - record: job:http_inprogress_requests:sum:4868 + expr: vector(1) + labels: + job: job4868 + - record: job:http_inprogress_requests:sum:4869 + expr: vector(1) + labels: + job: job4869 + - record: job:http_inprogress_requests:sum:4870 + expr: vector(1) + labels: + job: job4870 + - record: job:http_inprogress_requests:sum:4871 + expr: vector(1) + labels: + job: job4871 + - record: job:http_inprogress_requests:sum:4872 + expr: vector(1) + labels: + job: job4872 + - record: job:http_inprogress_requests:sum:4873 + expr: vector(1) + labels: + job: job4873 + - record: job:http_inprogress_requests:sum:4874 + expr: vector(1) + labels: + job: job4874 + - record: job:http_inprogress_requests:sum:4875 + expr: vector(1) + labels: + job: job4875 + - record: job:http_inprogress_requests:sum:4876 + expr: vector(1) + labels: + job: job4876 + - record: job:http_inprogress_requests:sum:4877 + expr: vector(1) + labels: + job: job4877 + - record: job:http_inprogress_requests:sum:4878 + expr: vector(1) + labels: + job: job4878 + - record: job:http_inprogress_requests:sum:4879 + expr: vector(1) + labels: + job: job4879 + - record: job:http_inprogress_requests:sum:4880 + expr: vector(1) + labels: + job: job4880 + - record: job:http_inprogress_requests:sum:4881 + expr: vector(1) + labels: + job: job4881 + - record: job:http_inprogress_requests:sum:4882 + expr: vector(1) + labels: + job: job4882 + - record: job:http_inprogress_requests:sum:4883 + expr: vector(1) + labels: + job: job4883 + - record: job:http_inprogress_requests:sum:4884 + expr: vector(1) + labels: + job: job4884 + - record: job:http_inprogress_requests:sum:4885 + expr: vector(1) + labels: + job: job4885 + - record: job:http_inprogress_requests:sum:4886 + expr: vector(1) + labels: + job: job4886 + - record: job:http_inprogress_requests:sum:4887 + expr: vector(1) + labels: + job: job4887 + - record: job:http_inprogress_requests:sum:4888 + expr: vector(1) + labels: + job: job4888 + - record: job:http_inprogress_requests:sum:4889 + expr: vector(1) + labels: + job: job4889 + - record: job:http_inprogress_requests:sum:4890 + expr: vector(1) + labels: + job: job4890 + - record: job:http_inprogress_requests:sum:4891 + expr: vector(1) + labels: + job: job4891 + - record: job:http_inprogress_requests:sum:4892 + expr: vector(1) + labels: + job: job4892 + - record: job:http_inprogress_requests:sum:4893 + expr: vector(1) + labels: + job: job4893 + - record: job:http_inprogress_requests:sum:4894 + expr: vector(1) + labels: + job: job4894 + - record: job:http_inprogress_requests:sum:4895 + expr: vector(1) + labels: + job: job4895 + - record: job:http_inprogress_requests:sum:4896 + expr: vector(1) + labels: + job: job4896 + - record: job:http_inprogress_requests:sum:4897 + expr: vector(1) + labels: + job: job4897 + - record: job:http_inprogress_requests:sum:4898 + expr: vector(1) + labels: + job: job4898 + - record: job:http_inprogress_requests:sum:4899 + expr: vector(1) + labels: + job: job4899 + - record: job:http_inprogress_requests:sum:4900 + expr: vector(1) + labels: + job: job4900 + - record: job:http_inprogress_requests:sum:4901 + expr: vector(1) + labels: + job: job4901 + - record: job:http_inprogress_requests:sum:4902 + expr: vector(1) + labels: + job: job4902 + - record: job:http_inprogress_requests:sum:4903 + expr: vector(1) + labels: + job: job4903 + - record: job:http_inprogress_requests:sum:4904 + expr: vector(1) + labels: + job: job4904 + - record: job:http_inprogress_requests:sum:4905 + expr: vector(1) + labels: + job: job4905 + - record: job:http_inprogress_requests:sum:4906 + expr: vector(1) + labels: + job: job4906 + - record: job:http_inprogress_requests:sum:4907 + expr: vector(1) + labels: + job: job4907 + - record: job:http_inprogress_requests:sum:4908 + expr: vector(1) + labels: + job: job4908 + - record: job:http_inprogress_requests:sum:4909 + expr: vector(1) + labels: + job: job4909 + - record: job:http_inprogress_requests:sum:4910 + expr: vector(1) + labels: + job: job4910 + - record: job:http_inprogress_requests:sum:4911 + expr: vector(1) + labels: + job: job4911 + - record: job:http_inprogress_requests:sum:4912 + expr: vector(1) + labels: + job: job4912 + - record: job:http_inprogress_requests:sum:4913 + expr: vector(1) + labels: + job: job4913 + - record: job:http_inprogress_requests:sum:4914 + expr: vector(1) + labels: + job: job4914 + - record: job:http_inprogress_requests:sum:4915 + expr: vector(1) + labels: + job: job4915 + - record: job:http_inprogress_requests:sum:4916 + expr: vector(1) + labels: + job: job4916 + - record: job:http_inprogress_requests:sum:4917 + expr: vector(1) + labels: + job: job4917 + - record: job:http_inprogress_requests:sum:4918 + expr: vector(1) + labels: + job: job4918 + - record: job:http_inprogress_requests:sum:4919 + expr: vector(1) + labels: + job: job4919 + - record: job:http_inprogress_requests:sum:4920 + expr: vector(1) + labels: + job: job4920 + - record: job:http_inprogress_requests:sum:4921 + expr: vector(1) + labels: + job: job4921 + - record: job:http_inprogress_requests:sum:4922 + expr: vector(1) + labels: + job: job4922 + - record: job:http_inprogress_requests:sum:4923 + expr: vector(1) + labels: + job: job4923 + - record: job:http_inprogress_requests:sum:4924 + expr: vector(1) + labels: + job: job4924 + - record: job:http_inprogress_requests:sum:4925 + expr: vector(1) + labels: + job: job4925 + - record: job:http_inprogress_requests:sum:4926 + expr: vector(1) + labels: + job: job4926 + - record: job:http_inprogress_requests:sum:4927 + expr: vector(1) + labels: + job: job4927 + - record: job:http_inprogress_requests:sum:4928 + expr: vector(1) + labels: + job: job4928 + - record: job:http_inprogress_requests:sum:4929 + expr: vector(1) + labels: + job: job4929 + - record: job:http_inprogress_requests:sum:4930 + expr: vector(1) + labels: + job: job4930 + - record: job:http_inprogress_requests:sum:4931 + expr: vector(1) + labels: + job: job4931 + - record: job:http_inprogress_requests:sum:4932 + expr: vector(1) + labels: + job: job4932 + - record: job:http_inprogress_requests:sum:4933 + expr: vector(1) + labels: + job: job4933 + - record: job:http_inprogress_requests:sum:4934 + expr: vector(1) + labels: + job: job4934 + - record: job:http_inprogress_requests:sum:4935 + expr: vector(1) + labels: + job: job4935 + - record: job:http_inprogress_requests:sum:4936 + expr: vector(1) + labels: + job: job4936 + - record: job:http_inprogress_requests:sum:4937 + expr: vector(1) + labels: + job: job4937 + - record: job:http_inprogress_requests:sum:4938 + expr: vector(1) + labels: + job: job4938 + - record: job:http_inprogress_requests:sum:4939 + expr: vector(1) + labels: + job: job4939 + - record: job:http_inprogress_requests:sum:4940 + expr: vector(1) + labels: + job: job4940 + - record: job:http_inprogress_requests:sum:4941 + expr: vector(1) + labels: + job: job4941 + - record: job:http_inprogress_requests:sum:4942 + expr: vector(1) + labels: + job: job4942 + - record: job:http_inprogress_requests:sum:4943 + expr: vector(1) + labels: + job: job4943 + - record: job:http_inprogress_requests:sum:4944 + expr: vector(1) + labels: + job: job4944 + - record: job:http_inprogress_requests:sum:4945 + expr: vector(1) + labels: + job: job4945 + - record: job:http_inprogress_requests:sum:4946 + expr: vector(1) + labels: + job: job4946 + - record: job:http_inprogress_requests:sum:4947 + expr: vector(1) + labels: + job: job4947 + - record: job:http_inprogress_requests:sum:4948 + expr: vector(1) + labels: + job: job4948 + - record: job:http_inprogress_requests:sum:4949 + expr: vector(1) + labels: + job: job4949 + - record: job:http_inprogress_requests:sum:4950 + expr: vector(1) + labels: + job: job4950 + - record: job:http_inprogress_requests:sum:4951 + expr: vector(1) + labels: + job: job4951 + - record: job:http_inprogress_requests:sum:4952 + expr: vector(1) + labels: + job: job4952 + - record: job:http_inprogress_requests:sum:4953 + expr: vector(1) + labels: + job: job4953 + - record: job:http_inprogress_requests:sum:4954 + expr: vector(1) + labels: + job: job4954 + - record: job:http_inprogress_requests:sum:4955 + expr: vector(1) + labels: + job: job4955 + - record: job:http_inprogress_requests:sum:4956 + expr: vector(1) + labels: + job: job4956 + - record: job:http_inprogress_requests:sum:4957 + expr: vector(1) + labels: + job: job4957 + - record: job:http_inprogress_requests:sum:4958 + expr: vector(1) + labels: + job: job4958 + - record: job:http_inprogress_requests:sum:4959 + expr: vector(1) + labels: + job: job4959 + - record: job:http_inprogress_requests:sum:4960 + expr: vector(1) + labels: + job: job4960 + - record: job:http_inprogress_requests:sum:4961 + expr: vector(1) + labels: + job: job4961 + - record: job:http_inprogress_requests:sum:4962 + expr: vector(1) + labels: + job: job4962 + - record: job:http_inprogress_requests:sum:4963 + expr: vector(1) + labels: + job: job4963 + - record: job:http_inprogress_requests:sum:4964 + expr: vector(1) + labels: + job: job4964 + - record: job:http_inprogress_requests:sum:4965 + expr: vector(1) + labels: + job: job4965 + - record: job:http_inprogress_requests:sum:4966 + expr: vector(1) + labels: + job: job4966 + - record: job:http_inprogress_requests:sum:4967 + expr: vector(1) + labels: + job: job4967 + - record: job:http_inprogress_requests:sum:4968 + expr: vector(1) + labels: + job: job4968 + - record: job:http_inprogress_requests:sum:4969 + expr: vector(1) + labels: + job: job4969 + - record: job:http_inprogress_requests:sum:4970 + expr: vector(1) + labels: + job: job4970 + - record: job:http_inprogress_requests:sum:4971 + expr: vector(1) + labels: + job: job4971 + - record: job:http_inprogress_requests:sum:4972 + expr: vector(1) + labels: + job: job4972 + - record: job:http_inprogress_requests:sum:4973 + expr: vector(1) + labels: + job: job4973 + - record: job:http_inprogress_requests:sum:4974 + expr: vector(1) + labels: + job: job4974 + - record: job:http_inprogress_requests:sum:4975 + expr: vector(1) + labels: + job: job4975 + - record: job:http_inprogress_requests:sum:4976 + expr: vector(1) + labels: + job: job4976 + - record: job:http_inprogress_requests:sum:4977 + expr: vector(1) + labels: + job: job4977 + - record: job:http_inprogress_requests:sum:4978 + expr: vector(1) + labels: + job: job4978 + - record: job:http_inprogress_requests:sum:4979 + expr: vector(1) + labels: + job: job4979 + - record: job:http_inprogress_requests:sum:4980 + expr: vector(1) + labels: + job: job4980 + - record: job:http_inprogress_requests:sum:4981 + expr: vector(1) + labels: + job: job4981 + - record: job:http_inprogress_requests:sum:4982 + expr: vector(1) + labels: + job: job4982 + - record: job:http_inprogress_requests:sum:4983 + expr: vector(1) + labels: + job: job4983 + - record: job:http_inprogress_requests:sum:4984 + expr: vector(1) + labels: + job: job4984 + - record: job:http_inprogress_requests:sum:4985 + expr: vector(1) + labels: + job: job4985 + - record: job:http_inprogress_requests:sum:4986 + expr: vector(1) + labels: + job: job4986 + - record: job:http_inprogress_requests:sum:4987 + expr: vector(1) + labels: + job: job4987 + - record: job:http_inprogress_requests:sum:4988 + expr: vector(1) + labels: + job: job4988 + - record: job:http_inprogress_requests:sum:4989 + expr: vector(1) + labels: + job: job4989 + - record: job:http_inprogress_requests:sum:4990 + expr: vector(1) + labels: + job: job4990 + - record: job:http_inprogress_requests:sum:4991 + expr: vector(1) + labels: + job: job4991 + - record: job:http_inprogress_requests:sum:4992 + expr: vector(1) + labels: + job: job4992 + - record: job:http_inprogress_requests:sum:4993 + expr: vector(1) + labels: + job: job4993 + - record: job:http_inprogress_requests:sum:4994 + expr: vector(1) + labels: + job: job4994 + - record: job:http_inprogress_requests:sum:4995 + expr: vector(1) + labels: + job: job4995 + - record: job:http_inprogress_requests:sum:4996 + expr: vector(1) + labels: + job: job4996 + - record: job:http_inprogress_requests:sum:4997 + expr: vector(1) + labels: + job: job4997 + - record: job:http_inprogress_requests:sum:4998 + expr: vector(1) + labels: + job: job4998 + - record: job:http_inprogress_requests:sum:4999 + expr: vector(1) + labels: + job: job4999 + - record: job:http_inprogress_requests:sum:5000 + expr: vector(1) + labels: + job: job5000 + - record: job:http_inprogress_requests:sum:5001 + expr: vector(1) + labels: + job: job5001 + - record: job:http_inprogress_requests:sum:5002 + expr: vector(1) + labels: + job: job5002 + - record: job:http_inprogress_requests:sum:5003 + expr: vector(1) + labels: + job: job5003 + - record: job:http_inprogress_requests:sum:5004 + expr: vector(1) + labels: + job: job5004 + - record: job:http_inprogress_requests:sum:5005 + expr: vector(1) + labels: + job: job5005 + - record: job:http_inprogress_requests:sum:5006 + expr: vector(1) + labels: + job: job5006 + - record: job:http_inprogress_requests:sum:5007 + expr: vector(1) + labels: + job: job5007 + - record: job:http_inprogress_requests:sum:5008 + expr: vector(1) + labels: + job: job5008 + - record: job:http_inprogress_requests:sum:5009 + expr: vector(1) + labels: + job: job5009 + - record: job:http_inprogress_requests:sum:5010 + expr: vector(1) + labels: + job: job5010 + - record: job:http_inprogress_requests:sum:5011 + expr: vector(1) + labels: + job: job5011 + - record: job:http_inprogress_requests:sum:5012 + expr: vector(1) + labels: + job: job5012 + - record: job:http_inprogress_requests:sum:5013 + expr: vector(1) + labels: + job: job5013 + - record: job:http_inprogress_requests:sum:5014 + expr: vector(1) + labels: + job: job5014 + - record: job:http_inprogress_requests:sum:5015 + expr: vector(1) + labels: + job: job5015 + - record: job:http_inprogress_requests:sum:5016 + expr: vector(1) + labels: + job: job5016 + - record: job:http_inprogress_requests:sum:5017 + expr: vector(1) + labels: + job: job5017 + - record: job:http_inprogress_requests:sum:5018 + expr: vector(1) + labels: + job: job5018 + - record: job:http_inprogress_requests:sum:5019 + expr: vector(1) + labels: + job: job5019 + - record: job:http_inprogress_requests:sum:5020 + expr: vector(1) + labels: + job: job5020 + - record: job:http_inprogress_requests:sum:5021 + expr: vector(1) + labels: + job: job5021 + - record: job:http_inprogress_requests:sum:5022 + expr: vector(1) + labels: + job: job5022 + - record: job:http_inprogress_requests:sum:5023 + expr: vector(1) + labels: + job: job5023 + - record: job:http_inprogress_requests:sum:5024 + expr: vector(1) + labels: + job: job5024 + - record: job:http_inprogress_requests:sum:5025 + expr: vector(1) + labels: + job: job5025 + - record: job:http_inprogress_requests:sum:5026 + expr: vector(1) + labels: + job: job5026 + - record: job:http_inprogress_requests:sum:5027 + expr: vector(1) + labels: + job: job5027 + - record: job:http_inprogress_requests:sum:5028 + expr: vector(1) + labels: + job: job5028 + - record: job:http_inprogress_requests:sum:5029 + expr: vector(1) + labels: + job: job5029 + - record: job:http_inprogress_requests:sum:5030 + expr: vector(1) + labels: + job: job5030 + - record: job:http_inprogress_requests:sum:5031 + expr: vector(1) + labels: + job: job5031 + - record: job:http_inprogress_requests:sum:5032 + expr: vector(1) + labels: + job: job5032 + - record: job:http_inprogress_requests:sum:5033 + expr: vector(1) + labels: + job: job5033 + - record: job:http_inprogress_requests:sum:5034 + expr: vector(1) + labels: + job: job5034 + - record: job:http_inprogress_requests:sum:5035 + expr: vector(1) + labels: + job: job5035 + - record: job:http_inprogress_requests:sum:5036 + expr: vector(1) + labels: + job: job5036 + - record: job:http_inprogress_requests:sum:5037 + expr: vector(1) + labels: + job: job5037 + - record: job:http_inprogress_requests:sum:5038 + expr: vector(1) + labels: + job: job5038 + - record: job:http_inprogress_requests:sum:5039 + expr: vector(1) + labels: + job: job5039 + - record: job:http_inprogress_requests:sum:5040 + expr: vector(1) + labels: + job: job5040 + - record: job:http_inprogress_requests:sum:5041 + expr: vector(1) + labels: + job: job5041 + - record: job:http_inprogress_requests:sum:5042 + expr: vector(1) + labels: + job: job5042 + - record: job:http_inprogress_requests:sum:5043 + expr: vector(1) + labels: + job: job5043 + - record: job:http_inprogress_requests:sum:5044 + expr: vector(1) + labels: + job: job5044 + - record: job:http_inprogress_requests:sum:5045 + expr: vector(1) + labels: + job: job5045 + - record: job:http_inprogress_requests:sum:5046 + expr: vector(1) + labels: + job: job5046 + - record: job:http_inprogress_requests:sum:5047 + expr: vector(1) + labels: + job: job5047 + - record: job:http_inprogress_requests:sum:5048 + expr: vector(1) + labels: + job: job5048 + - record: job:http_inprogress_requests:sum:5049 + expr: vector(1) + labels: + job: job5049 + - record: job:http_inprogress_requests:sum:5050 + expr: vector(1) + labels: + job: job5050 + - record: job:http_inprogress_requests:sum:5051 + expr: vector(1) + labels: + job: job5051 + - record: job:http_inprogress_requests:sum:5052 + expr: vector(1) + labels: + job: job5052 + - record: job:http_inprogress_requests:sum:5053 + expr: vector(1) + labels: + job: job5053 + - record: job:http_inprogress_requests:sum:5054 + expr: vector(1) + labels: + job: job5054 + - record: job:http_inprogress_requests:sum:5055 + expr: vector(1) + labels: + job: job5055 + - record: job:http_inprogress_requests:sum:5056 + expr: vector(1) + labels: + job: job5056 + - record: job:http_inprogress_requests:sum:5057 + expr: vector(1) + labels: + job: job5057 + - record: job:http_inprogress_requests:sum:5058 + expr: vector(1) + labels: + job: job5058 + - record: job:http_inprogress_requests:sum:5059 + expr: vector(1) + labels: + job: job5059 + - record: job:http_inprogress_requests:sum:5060 + expr: vector(1) + labels: + job: job5060 + - record: job:http_inprogress_requests:sum:5061 + expr: vector(1) + labels: + job: job5061 + - record: job:http_inprogress_requests:sum:5062 + expr: vector(1) + labels: + job: job5062 + - record: job:http_inprogress_requests:sum:5063 + expr: vector(1) + labels: + job: job5063 + - record: job:http_inprogress_requests:sum:5064 + expr: vector(1) + labels: + job: job5064 + - record: job:http_inprogress_requests:sum:5065 + expr: vector(1) + labels: + job: job5065 + - record: job:http_inprogress_requests:sum:5066 + expr: vector(1) + labels: + job: job5066 + - record: job:http_inprogress_requests:sum:5067 + expr: vector(1) + labels: + job: job5067 + - record: job:http_inprogress_requests:sum:5068 + expr: vector(1) + labels: + job: job5068 + - record: job:http_inprogress_requests:sum:5069 + expr: vector(1) + labels: + job: job5069 + - record: job:http_inprogress_requests:sum:5070 + expr: vector(1) + labels: + job: job5070 + - record: job:http_inprogress_requests:sum:5071 + expr: vector(1) + labels: + job: job5071 + - record: job:http_inprogress_requests:sum:5072 + expr: vector(1) + labels: + job: job5072 + - record: job:http_inprogress_requests:sum:5073 + expr: vector(1) + labels: + job: job5073 + - record: job:http_inprogress_requests:sum:5074 + expr: vector(1) + labels: + job: job5074 + - record: job:http_inprogress_requests:sum:5075 + expr: vector(1) + labels: + job: job5075 + - record: job:http_inprogress_requests:sum:5076 + expr: vector(1) + labels: + job: job5076 + - record: job:http_inprogress_requests:sum:5077 + expr: vector(1) + labels: + job: job5077 + - record: job:http_inprogress_requests:sum:5078 + expr: vector(1) + labels: + job: job5078 + - record: job:http_inprogress_requests:sum:5079 + expr: vector(1) + labels: + job: job5079 + - record: job:http_inprogress_requests:sum:5080 + expr: vector(1) + labels: + job: job5080 + - record: job:http_inprogress_requests:sum:5081 + expr: vector(1) + labels: + job: job5081 + - record: job:http_inprogress_requests:sum:5082 + expr: vector(1) + labels: + job: job5082 + - record: job:http_inprogress_requests:sum:5083 + expr: vector(1) + labels: + job: job5083 + - record: job:http_inprogress_requests:sum:5084 + expr: vector(1) + labels: + job: job5084 + - record: job:http_inprogress_requests:sum:5085 + expr: vector(1) + labels: + job: job5085 + - record: job:http_inprogress_requests:sum:5086 + expr: vector(1) + labels: + job: job5086 + - record: job:http_inprogress_requests:sum:5087 + expr: vector(1) + labels: + job: job5087 + - record: job:http_inprogress_requests:sum:5088 + expr: vector(1) + labels: + job: job5088 + - record: job:http_inprogress_requests:sum:5089 + expr: vector(1) + labels: + job: job5089 + - record: job:http_inprogress_requests:sum:5090 + expr: vector(1) + labels: + job: job5090 + - record: job:http_inprogress_requests:sum:5091 + expr: vector(1) + labels: + job: job5091 + - record: job:http_inprogress_requests:sum:5092 + expr: vector(1) + labels: + job: job5092 + - record: job:http_inprogress_requests:sum:5093 + expr: vector(1) + labels: + job: job5093 + - record: job:http_inprogress_requests:sum:5094 + expr: vector(1) + labels: + job: job5094 + - record: job:http_inprogress_requests:sum:5095 + expr: vector(1) + labels: + job: job5095 + - record: job:http_inprogress_requests:sum:5096 + expr: vector(1) + labels: + job: job5096 + - record: job:http_inprogress_requests:sum:5097 + expr: vector(1) + labels: + job: job5097 + - record: job:http_inprogress_requests:sum:5098 + expr: vector(1) + labels: + job: job5098 + - record: job:http_inprogress_requests:sum:5099 + expr: vector(1) + labels: + job: job5099 + - record: job:http_inprogress_requests:sum:5100 + expr: vector(1) + labels: + job: job5100 + - record: job:http_inprogress_requests:sum:5101 + expr: vector(1) + labels: + job: job5101 + - record: job:http_inprogress_requests:sum:5102 + expr: vector(1) + labels: + job: job5102 + - record: job:http_inprogress_requests:sum:5103 + expr: vector(1) + labels: + job: job5103 + - record: job:http_inprogress_requests:sum:5104 + expr: vector(1) + labels: + job: job5104 + - record: job:http_inprogress_requests:sum:5105 + expr: vector(1) + labels: + job: job5105 + - record: job:http_inprogress_requests:sum:5106 + expr: vector(1) + labels: + job: job5106 + - record: job:http_inprogress_requests:sum:5107 + expr: vector(1) + labels: + job: job5107 + - record: job:http_inprogress_requests:sum:5108 + expr: vector(1) + labels: + job: job5108 + - record: job:http_inprogress_requests:sum:5109 + expr: vector(1) + labels: + job: job5109 + - record: job:http_inprogress_requests:sum:5110 + expr: vector(1) + labels: + job: job5110 + - record: job:http_inprogress_requests:sum:5111 + expr: vector(1) + labels: + job: job5111 + - record: job:http_inprogress_requests:sum:5112 + expr: vector(1) + labels: + job: job5112 + - record: job:http_inprogress_requests:sum:5113 + expr: vector(1) + labels: + job: job5113 + - record: job:http_inprogress_requests:sum:5114 + expr: vector(1) + labels: + job: job5114 + - record: job:http_inprogress_requests:sum:5115 + expr: vector(1) + labels: + job: job5115 + - record: job:http_inprogress_requests:sum:5116 + expr: vector(1) + labels: + job: job5116 + - record: job:http_inprogress_requests:sum:5117 + expr: vector(1) + labels: + job: job5117 + - record: job:http_inprogress_requests:sum:5118 + expr: vector(1) + labels: + job: job5118 + - record: job:http_inprogress_requests:sum:5119 + expr: vector(1) + labels: + job: job5119 + - record: job:http_inprogress_requests:sum:5120 + expr: vector(1) + labels: + job: job5120 + - record: job:http_inprogress_requests:sum:5121 + expr: vector(1) + labels: + job: job5121 + - record: job:http_inprogress_requests:sum:5122 + expr: vector(1) + labels: + job: job5122 + - record: job:http_inprogress_requests:sum:5123 + expr: vector(1) + labels: + job: job5123 + - record: job:http_inprogress_requests:sum:5124 + expr: vector(1) + labels: + job: job5124 + - record: job:http_inprogress_requests:sum:5125 + expr: vector(1) + labels: + job: job5125 + - record: job:http_inprogress_requests:sum:5126 + expr: vector(1) + labels: + job: job5126 + - record: job:http_inprogress_requests:sum:5127 + expr: vector(1) + labels: + job: job5127 + - record: job:http_inprogress_requests:sum:5128 + expr: vector(1) + labels: + job: job5128 + - record: job:http_inprogress_requests:sum:5129 + expr: vector(1) + labels: + job: job5129 + - record: job:http_inprogress_requests:sum:5130 + expr: vector(1) + labels: + job: job5130 + - record: job:http_inprogress_requests:sum:5131 + expr: vector(1) + labels: + job: job5131 + - record: job:http_inprogress_requests:sum:5132 + expr: vector(1) + labels: + job: job5132 + - record: job:http_inprogress_requests:sum:5133 + expr: vector(1) + labels: + job: job5133 + - record: job:http_inprogress_requests:sum:5134 + expr: vector(1) + labels: + job: job5134 + - record: job:http_inprogress_requests:sum:5135 + expr: vector(1) + labels: + job: job5135 + - record: job:http_inprogress_requests:sum:5136 + expr: vector(1) + labels: + job: job5136 + - record: job:http_inprogress_requests:sum:5137 + expr: vector(1) + labels: + job: job5137 + - record: job:http_inprogress_requests:sum:5138 + expr: vector(1) + labels: + job: job5138 + - record: job:http_inprogress_requests:sum:5139 + expr: vector(1) + labels: + job: job5139 + - record: job:http_inprogress_requests:sum:5140 + expr: vector(1) + labels: + job: job5140 + - record: job:http_inprogress_requests:sum:5141 + expr: vector(1) + labels: + job: job5141 + - record: job:http_inprogress_requests:sum:5142 + expr: vector(1) + labels: + job: job5142 + - record: job:http_inprogress_requests:sum:5143 + expr: vector(1) + labels: + job: job5143 + - record: job:http_inprogress_requests:sum:5144 + expr: vector(1) + labels: + job: job5144 + - record: job:http_inprogress_requests:sum:5145 + expr: vector(1) + labels: + job: job5145 + - record: job:http_inprogress_requests:sum:5146 + expr: vector(1) + labels: + job: job5146 + - record: job:http_inprogress_requests:sum:5147 + expr: vector(1) + labels: + job: job5147 + - record: job:http_inprogress_requests:sum:5148 + expr: vector(1) + labels: + job: job5148 + - record: job:http_inprogress_requests:sum:5149 + expr: vector(1) + labels: + job: job5149 + - record: job:http_inprogress_requests:sum:5150 + expr: vector(1) + labels: + job: job5150 + - record: job:http_inprogress_requests:sum:5151 + expr: vector(1) + labels: + job: job5151 + - record: job:http_inprogress_requests:sum:5152 + expr: vector(1) + labels: + job: job5152 + - record: job:http_inprogress_requests:sum:5153 + expr: vector(1) + labels: + job: job5153 + - record: job:http_inprogress_requests:sum:5154 + expr: vector(1) + labels: + job: job5154 + - record: job:http_inprogress_requests:sum:5155 + expr: vector(1) + labels: + job: job5155 + - record: job:http_inprogress_requests:sum:5156 + expr: vector(1) + labels: + job: job5156 + - record: job:http_inprogress_requests:sum:5157 + expr: vector(1) + labels: + job: job5157 + - record: job:http_inprogress_requests:sum:5158 + expr: vector(1) + labels: + job: job5158 + - record: job:http_inprogress_requests:sum:5159 + expr: vector(1) + labels: + job: job5159 + - record: job:http_inprogress_requests:sum:5160 + expr: vector(1) + labels: + job: job5160 + - record: job:http_inprogress_requests:sum:5161 + expr: vector(1) + labels: + job: job5161 + - record: job:http_inprogress_requests:sum:5162 + expr: vector(1) + labels: + job: job5162 + - record: job:http_inprogress_requests:sum:5163 + expr: vector(1) + labels: + job: job5163 + - record: job:http_inprogress_requests:sum:5164 + expr: vector(1) + labels: + job: job5164 + - record: job:http_inprogress_requests:sum:5165 + expr: vector(1) + labels: + job: job5165 + - record: job:http_inprogress_requests:sum:5166 + expr: vector(1) + labels: + job: job5166 + - record: job:http_inprogress_requests:sum:5167 + expr: vector(1) + labels: + job: job5167 + - record: job:http_inprogress_requests:sum:5168 + expr: vector(1) + labels: + job: job5168 + - record: job:http_inprogress_requests:sum:5169 + expr: vector(1) + labels: + job: job5169 + - record: job:http_inprogress_requests:sum:5170 + expr: vector(1) + labels: + job: job5170 + - record: job:http_inprogress_requests:sum:5171 + expr: vector(1) + labels: + job: job5171 + - record: job:http_inprogress_requests:sum:5172 + expr: vector(1) + labels: + job: job5172 + - record: job:http_inprogress_requests:sum:5173 + expr: vector(1) + labels: + job: job5173 + - record: job:http_inprogress_requests:sum:5174 + expr: vector(1) + labels: + job: job5174 + - record: job:http_inprogress_requests:sum:5175 + expr: vector(1) + labels: + job: job5175 + - record: job:http_inprogress_requests:sum:5176 + expr: vector(1) + labels: + job: job5176 + - record: job:http_inprogress_requests:sum:5177 + expr: vector(1) + labels: + job: job5177 + - record: job:http_inprogress_requests:sum:5178 + expr: vector(1) + labels: + job: job5178 + - record: job:http_inprogress_requests:sum:5179 + expr: vector(1) + labels: + job: job5179 + - record: job:http_inprogress_requests:sum:5180 + expr: vector(1) + labels: + job: job5180 + - record: job:http_inprogress_requests:sum:5181 + expr: vector(1) + labels: + job: job5181 + - record: job:http_inprogress_requests:sum:5182 + expr: vector(1) + labels: + job: job5182 + - record: job:http_inprogress_requests:sum:5183 + expr: vector(1) + labels: + job: job5183 + - record: job:http_inprogress_requests:sum:5184 + expr: vector(1) + labels: + job: job5184 + - record: job:http_inprogress_requests:sum:5185 + expr: vector(1) + labels: + job: job5185 + - record: job:http_inprogress_requests:sum:5186 + expr: vector(1) + labels: + job: job5186 + - record: job:http_inprogress_requests:sum:5187 + expr: vector(1) + labels: + job: job5187 + - record: job:http_inprogress_requests:sum:5188 + expr: vector(1) + labels: + job: job5188 + - record: job:http_inprogress_requests:sum:5189 + expr: vector(1) + labels: + job: job5189 + - record: job:http_inprogress_requests:sum:5190 + expr: vector(1) + labels: + job: job5190 + - record: job:http_inprogress_requests:sum:5191 + expr: vector(1) + labels: + job: job5191 + - record: job:http_inprogress_requests:sum:5192 + expr: vector(1) + labels: + job: job5192 + - record: job:http_inprogress_requests:sum:5193 + expr: vector(1) + labels: + job: job5193 + - record: job:http_inprogress_requests:sum:5194 + expr: vector(1) + labels: + job: job5194 + - record: job:http_inprogress_requests:sum:5195 + expr: vector(1) + labels: + job: job5195 + - record: job:http_inprogress_requests:sum:5196 + expr: vector(1) + labels: + job: job5196 + - record: job:http_inprogress_requests:sum:5197 + expr: vector(1) + labels: + job: job5197 + - record: job:http_inprogress_requests:sum:5198 + expr: vector(1) + labels: + job: job5198 + - record: job:http_inprogress_requests:sum:5199 + expr: vector(1) + labels: + job: job5199 + - record: job:http_inprogress_requests:sum:5200 + expr: vector(1) + labels: + job: job5200 + - record: job:http_inprogress_requests:sum:5201 + expr: vector(1) + labels: + job: job5201 + - record: job:http_inprogress_requests:sum:5202 + expr: vector(1) + labels: + job: job5202 + - record: job:http_inprogress_requests:sum:5203 + expr: vector(1) + labels: + job: job5203 + - record: job:http_inprogress_requests:sum:5204 + expr: vector(1) + labels: + job: job5204 + - record: job:http_inprogress_requests:sum:5205 + expr: vector(1) + labels: + job: job5205 + - record: job:http_inprogress_requests:sum:5206 + expr: vector(1) + labels: + job: job5206 + - record: job:http_inprogress_requests:sum:5207 + expr: vector(1) + labels: + job: job5207 + - record: job:http_inprogress_requests:sum:5208 + expr: vector(1) + labels: + job: job5208 + - record: job:http_inprogress_requests:sum:5209 + expr: vector(1) + labels: + job: job5209 + - record: job:http_inprogress_requests:sum:5210 + expr: vector(1) + labels: + job: job5210 + - record: job:http_inprogress_requests:sum:5211 + expr: vector(1) + labels: + job: job5211 + - record: job:http_inprogress_requests:sum:5212 + expr: vector(1) + labels: + job: job5212 + - record: job:http_inprogress_requests:sum:5213 + expr: vector(1) + labels: + job: job5213 + - record: job:http_inprogress_requests:sum:5214 + expr: vector(1) + labels: + job: job5214 + - record: job:http_inprogress_requests:sum:5215 + expr: vector(1) + labels: + job: job5215 + - record: job:http_inprogress_requests:sum:5216 + expr: vector(1) + labels: + job: job5216 + - record: job:http_inprogress_requests:sum:5217 + expr: vector(1) + labels: + job: job5217 + - record: job:http_inprogress_requests:sum:5218 + expr: vector(1) + labels: + job: job5218 + - record: job:http_inprogress_requests:sum:5219 + expr: vector(1) + labels: + job: job5219 + - record: job:http_inprogress_requests:sum:5220 + expr: vector(1) + labels: + job: job5220 + - record: job:http_inprogress_requests:sum:5221 + expr: vector(1) + labels: + job: job5221 + - record: job:http_inprogress_requests:sum:5222 + expr: vector(1) + labels: + job: job5222 + - record: job:http_inprogress_requests:sum:5223 + expr: vector(1) + labels: + job: job5223 + - record: job:http_inprogress_requests:sum:5224 + expr: vector(1) + labels: + job: job5224 + - record: job:http_inprogress_requests:sum:5225 + expr: vector(1) + labels: + job: job5225 + - record: job:http_inprogress_requests:sum:5226 + expr: vector(1) + labels: + job: job5226 + - record: job:http_inprogress_requests:sum:5227 + expr: vector(1) + labels: + job: job5227 + - record: job:http_inprogress_requests:sum:5228 + expr: vector(1) + labels: + job: job5228 + - record: job:http_inprogress_requests:sum:5229 + expr: vector(1) + labels: + job: job5229 + - record: job:http_inprogress_requests:sum:5230 + expr: vector(1) + labels: + job: job5230 + - record: job:http_inprogress_requests:sum:5231 + expr: vector(1) + labels: + job: job5231 + - record: job:http_inprogress_requests:sum:5232 + expr: vector(1) + labels: + job: job5232 + - record: job:http_inprogress_requests:sum:5233 + expr: vector(1) + labels: + job: job5233 + - record: job:http_inprogress_requests:sum:5234 + expr: vector(1) + labels: + job: job5234 + - record: job:http_inprogress_requests:sum:5235 + expr: vector(1) + labels: + job: job5235 + - record: job:http_inprogress_requests:sum:5236 + expr: vector(1) + labels: + job: job5236 + - record: job:http_inprogress_requests:sum:5237 + expr: vector(1) + labels: + job: job5237 + - record: job:http_inprogress_requests:sum:5238 + expr: vector(1) + labels: + job: job5238 + - record: job:http_inprogress_requests:sum:5239 + expr: vector(1) + labels: + job: job5239 + - record: job:http_inprogress_requests:sum:5240 + expr: vector(1) + labels: + job: job5240 + - record: job:http_inprogress_requests:sum:5241 + expr: vector(1) + labels: + job: job5241 + - record: job:http_inprogress_requests:sum:5242 + expr: vector(1) + labels: + job: job5242 + - record: job:http_inprogress_requests:sum:5243 + expr: vector(1) + labels: + job: job5243 + - record: job:http_inprogress_requests:sum:5244 + expr: vector(1) + labels: + job: job5244 + - record: job:http_inprogress_requests:sum:5245 + expr: vector(1) + labels: + job: job5245 + - record: job:http_inprogress_requests:sum:5246 + expr: vector(1) + labels: + job: job5246 + - record: job:http_inprogress_requests:sum:5247 + expr: vector(1) + labels: + job: job5247 + - record: job:http_inprogress_requests:sum:5248 + expr: vector(1) + labels: + job: job5248 + - record: job:http_inprogress_requests:sum:5249 + expr: vector(1) + labels: + job: job5249 + - record: job:http_inprogress_requests:sum:5250 + expr: vector(1) + labels: + job: job5250 + - record: job:http_inprogress_requests:sum:5251 + expr: vector(1) + labels: + job: job5251 + - record: job:http_inprogress_requests:sum:5252 + expr: vector(1) + labels: + job: job5252 + - record: job:http_inprogress_requests:sum:5253 + expr: vector(1) + labels: + job: job5253 + - record: job:http_inprogress_requests:sum:5254 + expr: vector(1) + labels: + job: job5254 + - record: job:http_inprogress_requests:sum:5255 + expr: vector(1) + labels: + job: job5255 + - record: job:http_inprogress_requests:sum:5256 + expr: vector(1) + labels: + job: job5256 + - record: job:http_inprogress_requests:sum:5257 + expr: vector(1) + labels: + job: job5257 + - record: job:http_inprogress_requests:sum:5258 + expr: vector(1) + labels: + job: job5258 + - record: job:http_inprogress_requests:sum:5259 + expr: vector(1) + labels: + job: job5259 + - record: job:http_inprogress_requests:sum:5260 + expr: vector(1) + labels: + job: job5260 + - record: job:http_inprogress_requests:sum:5261 + expr: vector(1) + labels: + job: job5261 + - record: job:http_inprogress_requests:sum:5262 + expr: vector(1) + labels: + job: job5262 + - record: job:http_inprogress_requests:sum:5263 + expr: vector(1) + labels: + job: job5263 + - record: job:http_inprogress_requests:sum:5264 + expr: vector(1) + labels: + job: job5264 + - record: job:http_inprogress_requests:sum:5265 + expr: vector(1) + labels: + job: job5265 + - record: job:http_inprogress_requests:sum:5266 + expr: vector(1) + labels: + job: job5266 + - record: job:http_inprogress_requests:sum:5267 + expr: vector(1) + labels: + job: job5267 + - record: job:http_inprogress_requests:sum:5268 + expr: vector(1) + labels: + job: job5268 + - record: job:http_inprogress_requests:sum:5269 + expr: vector(1) + labels: + job: job5269 + - record: job:http_inprogress_requests:sum:5270 + expr: vector(1) + labels: + job: job5270 + - record: job:http_inprogress_requests:sum:5271 + expr: vector(1) + labels: + job: job5271 + - record: job:http_inprogress_requests:sum:5272 + expr: vector(1) + labels: + job: job5272 + - record: job:http_inprogress_requests:sum:5273 + expr: vector(1) + labels: + job: job5273 + - record: job:http_inprogress_requests:sum:5274 + expr: vector(1) + labels: + job: job5274 + - record: job:http_inprogress_requests:sum:5275 + expr: vector(1) + labels: + job: job5275 + - record: job:http_inprogress_requests:sum:5276 + expr: vector(1) + labels: + job: job5276 + - record: job:http_inprogress_requests:sum:5277 + expr: vector(1) + labels: + job: job5277 + - record: job:http_inprogress_requests:sum:5278 + expr: vector(1) + labels: + job: job5278 + - record: job:http_inprogress_requests:sum:5279 + expr: vector(1) + labels: + job: job5279 + - record: job:http_inprogress_requests:sum:5280 + expr: vector(1) + labels: + job: job5280 + - record: job:http_inprogress_requests:sum:5281 + expr: vector(1) + labels: + job: job5281 + - record: job:http_inprogress_requests:sum:5282 + expr: vector(1) + labels: + job: job5282 + - record: job:http_inprogress_requests:sum:5283 + expr: vector(1) + labels: + job: job5283 + - record: job:http_inprogress_requests:sum:5284 + expr: vector(1) + labels: + job: job5284 + - record: job:http_inprogress_requests:sum:5285 + expr: vector(1) + labels: + job: job5285 + - record: job:http_inprogress_requests:sum:5286 + expr: vector(1) + labels: + job: job5286 + - record: job:http_inprogress_requests:sum:5287 + expr: vector(1) + labels: + job: job5287 + - record: job:http_inprogress_requests:sum:5288 + expr: vector(1) + labels: + job: job5288 + - record: job:http_inprogress_requests:sum:5289 + expr: vector(1) + labels: + job: job5289 + - record: job:http_inprogress_requests:sum:5290 + expr: vector(1) + labels: + job: job5290 + - record: job:http_inprogress_requests:sum:5291 + expr: vector(1) + labels: + job: job5291 + - record: job:http_inprogress_requests:sum:5292 + expr: vector(1) + labels: + job: job5292 + - record: job:http_inprogress_requests:sum:5293 + expr: vector(1) + labels: + job: job5293 + - record: job:http_inprogress_requests:sum:5294 + expr: vector(1) + labels: + job: job5294 + - record: job:http_inprogress_requests:sum:5295 + expr: vector(1) + labels: + job: job5295 + - record: job:http_inprogress_requests:sum:5296 + expr: vector(1) + labels: + job: job5296 + - record: job:http_inprogress_requests:sum:5297 + expr: vector(1) + labels: + job: job5297 + - record: job:http_inprogress_requests:sum:5298 + expr: vector(1) + labels: + job: job5298 + - record: job:http_inprogress_requests:sum:5299 + expr: vector(1) + labels: + job: job5299 + - record: job:http_inprogress_requests:sum:5300 + expr: vector(1) + labels: + job: job5300 + - record: job:http_inprogress_requests:sum:5301 + expr: vector(1) + labels: + job: job5301 + - record: job:http_inprogress_requests:sum:5302 + expr: vector(1) + labels: + job: job5302 + - record: job:http_inprogress_requests:sum:5303 + expr: vector(1) + labels: + job: job5303 + - record: job:http_inprogress_requests:sum:5304 + expr: vector(1) + labels: + job: job5304 + - record: job:http_inprogress_requests:sum:5305 + expr: vector(1) + labels: + job: job5305 + - record: job:http_inprogress_requests:sum:5306 + expr: vector(1) + labels: + job: job5306 + - record: job:http_inprogress_requests:sum:5307 + expr: vector(1) + labels: + job: job5307 + - record: job:http_inprogress_requests:sum:5308 + expr: vector(1) + labels: + job: job5308 + - record: job:http_inprogress_requests:sum:5309 + expr: vector(1) + labels: + job: job5309 + - record: job:http_inprogress_requests:sum:5310 + expr: vector(1) + labels: + job: job5310 + - record: job:http_inprogress_requests:sum:5311 + expr: vector(1) + labels: + job: job5311 + - record: job:http_inprogress_requests:sum:5312 + expr: vector(1) + labels: + job: job5312 + - record: job:http_inprogress_requests:sum:5313 + expr: vector(1) + labels: + job: job5313 + - record: job:http_inprogress_requests:sum:5314 + expr: vector(1) + labels: + job: job5314 + - record: job:http_inprogress_requests:sum:5315 + expr: vector(1) + labels: + job: job5315 + - record: job:http_inprogress_requests:sum:5316 + expr: vector(1) + labels: + job: job5316 + - record: job:http_inprogress_requests:sum:5317 + expr: vector(1) + labels: + job: job5317 + - record: job:http_inprogress_requests:sum:5318 + expr: vector(1) + labels: + job: job5318 + - record: job:http_inprogress_requests:sum:5319 + expr: vector(1) + labels: + job: job5319 + - record: job:http_inprogress_requests:sum:5320 + expr: vector(1) + labels: + job: job5320 + - record: job:http_inprogress_requests:sum:5321 + expr: vector(1) + labels: + job: job5321 + - record: job:http_inprogress_requests:sum:5322 + expr: vector(1) + labels: + job: job5322 + - record: job:http_inprogress_requests:sum:5323 + expr: vector(1) + labels: + job: job5323 + - record: job:http_inprogress_requests:sum:5324 + expr: vector(1) + labels: + job: job5324 + - record: job:http_inprogress_requests:sum:5325 + expr: vector(1) + labels: + job: job5325 + - record: job:http_inprogress_requests:sum:5326 + expr: vector(1) + labels: + job: job5326 + - record: job:http_inprogress_requests:sum:5327 + expr: vector(1) + labels: + job: job5327 + - record: job:http_inprogress_requests:sum:5328 + expr: vector(1) + labels: + job: job5328 + - record: job:http_inprogress_requests:sum:5329 + expr: vector(1) + labels: + job: job5329 + - record: job:http_inprogress_requests:sum:5330 + expr: vector(1) + labels: + job: job5330 + - record: job:http_inprogress_requests:sum:5331 + expr: vector(1) + labels: + job: job5331 + - record: job:http_inprogress_requests:sum:5332 + expr: vector(1) + labels: + job: job5332 + - record: job:http_inprogress_requests:sum:5333 + expr: vector(1) + labels: + job: job5333 + - record: job:http_inprogress_requests:sum:5334 + expr: vector(1) + labels: + job: job5334 + - record: job:http_inprogress_requests:sum:5335 + expr: vector(1) + labels: + job: job5335 + - record: job:http_inprogress_requests:sum:5336 + expr: vector(1) + labels: + job: job5336 + - record: job:http_inprogress_requests:sum:5337 + expr: vector(1) + labels: + job: job5337 + - record: job:http_inprogress_requests:sum:5338 + expr: vector(1) + labels: + job: job5338 + - record: job:http_inprogress_requests:sum:5339 + expr: vector(1) + labels: + job: job5339 + - record: job:http_inprogress_requests:sum:5340 + expr: vector(1) + labels: + job: job5340 + - record: job:http_inprogress_requests:sum:5341 + expr: vector(1) + labels: + job: job5341 + - record: job:http_inprogress_requests:sum:5342 + expr: vector(1) + labels: + job: job5342 + - record: job:http_inprogress_requests:sum:5343 + expr: vector(1) + labels: + job: job5343 + - record: job:http_inprogress_requests:sum:5344 + expr: vector(1) + labels: + job: job5344 + - record: job:http_inprogress_requests:sum:5345 + expr: vector(1) + labels: + job: job5345 + - record: job:http_inprogress_requests:sum:5346 + expr: vector(1) + labels: + job: job5346 + - record: job:http_inprogress_requests:sum:5347 + expr: vector(1) + labels: + job: job5347 + - record: job:http_inprogress_requests:sum:5348 + expr: vector(1) + labels: + job: job5348 + - record: job:http_inprogress_requests:sum:5349 + expr: vector(1) + labels: + job: job5349 + - record: job:http_inprogress_requests:sum:5350 + expr: vector(1) + labels: + job: job5350 + - record: job:http_inprogress_requests:sum:5351 + expr: vector(1) + labels: + job: job5351 + - record: job:http_inprogress_requests:sum:5352 + expr: vector(1) + labels: + job: job5352 + - record: job:http_inprogress_requests:sum:5353 + expr: vector(1) + labels: + job: job5353 + - record: job:http_inprogress_requests:sum:5354 + expr: vector(1) + labels: + job: job5354 + - record: job:http_inprogress_requests:sum:5355 + expr: vector(1) + labels: + job: job5355 + - record: job:http_inprogress_requests:sum:5356 + expr: vector(1) + labels: + job: job5356 + - record: job:http_inprogress_requests:sum:5357 + expr: vector(1) + labels: + job: job5357 + - record: job:http_inprogress_requests:sum:5358 + expr: vector(1) + labels: + job: job5358 + - record: job:http_inprogress_requests:sum:5359 + expr: vector(1) + labels: + job: job5359 + - record: job:http_inprogress_requests:sum:5360 + expr: vector(1) + labels: + job: job5360 + - record: job:http_inprogress_requests:sum:5361 + expr: vector(1) + labels: + job: job5361 + - record: job:http_inprogress_requests:sum:5362 + expr: vector(1) + labels: + job: job5362 + - record: job:http_inprogress_requests:sum:5363 + expr: vector(1) + labels: + job: job5363 + - record: job:http_inprogress_requests:sum:5364 + expr: vector(1) + labels: + job: job5364 + - record: job:http_inprogress_requests:sum:5365 + expr: vector(1) + labels: + job: job5365 + - record: job:http_inprogress_requests:sum:5366 + expr: vector(1) + labels: + job: job5366 + - record: job:http_inprogress_requests:sum:5367 + expr: vector(1) + labels: + job: job5367 + - record: job:http_inprogress_requests:sum:5368 + expr: vector(1) + labels: + job: job5368 + - record: job:http_inprogress_requests:sum:5369 + expr: vector(1) + labels: + job: job5369 + - record: job:http_inprogress_requests:sum:5370 + expr: vector(1) + labels: + job: job5370 + - record: job:http_inprogress_requests:sum:5371 + expr: vector(1) + labels: + job: job5371 + - record: job:http_inprogress_requests:sum:5372 + expr: vector(1) + labels: + job: job5372 + - record: job:http_inprogress_requests:sum:5373 + expr: vector(1) + labels: + job: job5373 + - record: job:http_inprogress_requests:sum:5374 + expr: vector(1) + labels: + job: job5374 + - record: job:http_inprogress_requests:sum:5375 + expr: vector(1) + labels: + job: job5375 + - record: job:http_inprogress_requests:sum:5376 + expr: vector(1) + labels: + job: job5376 + - record: job:http_inprogress_requests:sum:5377 + expr: vector(1) + labels: + job: job5377 + - record: job:http_inprogress_requests:sum:5378 + expr: vector(1) + labels: + job: job5378 + - record: job:http_inprogress_requests:sum:5379 + expr: vector(1) + labels: + job: job5379 + - record: job:http_inprogress_requests:sum:5380 + expr: vector(1) + labels: + job: job5380 + - record: job:http_inprogress_requests:sum:5381 + expr: vector(1) + labels: + job: job5381 + - record: job:http_inprogress_requests:sum:5382 + expr: vector(1) + labels: + job: job5382 + - record: job:http_inprogress_requests:sum:5383 + expr: vector(1) + labels: + job: job5383 + - record: job:http_inprogress_requests:sum:5384 + expr: vector(1) + labels: + job: job5384 + - record: job:http_inprogress_requests:sum:5385 + expr: vector(1) + labels: + job: job5385 + - record: job:http_inprogress_requests:sum:5386 + expr: vector(1) + labels: + job: job5386 + - record: job:http_inprogress_requests:sum:5387 + expr: vector(1) + labels: + job: job5387 + - record: job:http_inprogress_requests:sum:5388 + expr: vector(1) + labels: + job: job5388 + - record: job:http_inprogress_requests:sum:5389 + expr: vector(1) + labels: + job: job5389 + - record: job:http_inprogress_requests:sum:5390 + expr: vector(1) + labels: + job: job5390 + - record: job:http_inprogress_requests:sum:5391 + expr: vector(1) + labels: + job: job5391 + - record: job:http_inprogress_requests:sum:5392 + expr: vector(1) + labels: + job: job5392 + - record: job:http_inprogress_requests:sum:5393 + expr: vector(1) + labels: + job: job5393 + - record: job:http_inprogress_requests:sum:5394 + expr: vector(1) + labels: + job: job5394 + - record: job:http_inprogress_requests:sum:5395 + expr: vector(1) + labels: + job: job5395 + - record: job:http_inprogress_requests:sum:5396 + expr: vector(1) + labels: + job: job5396 + - record: job:http_inprogress_requests:sum:5397 + expr: vector(1) + labels: + job: job5397 + - record: job:http_inprogress_requests:sum:5398 + expr: vector(1) + labels: + job: job5398 + - record: job:http_inprogress_requests:sum:5399 + expr: vector(1) + labels: + job: job5399 + - record: job:http_inprogress_requests:sum:5400 + expr: vector(1) + labels: + job: job5400 + - record: job:http_inprogress_requests:sum:5401 + expr: vector(1) + labels: + job: job5401 + - record: job:http_inprogress_requests:sum:5402 + expr: vector(1) + labels: + job: job5402 + - record: job:http_inprogress_requests:sum:5403 + expr: vector(1) + labels: + job: job5403 + - record: job:http_inprogress_requests:sum:5404 + expr: vector(1) + labels: + job: job5404 + - record: job:http_inprogress_requests:sum:5405 + expr: vector(1) + labels: + job: job5405 + - record: job:http_inprogress_requests:sum:5406 + expr: vector(1) + labels: + job: job5406 + - record: job:http_inprogress_requests:sum:5407 + expr: vector(1) + labels: + job: job5407 + - record: job:http_inprogress_requests:sum:5408 + expr: vector(1) + labels: + job: job5408 + - record: job:http_inprogress_requests:sum:5409 + expr: vector(1) + labels: + job: job5409 + - record: job:http_inprogress_requests:sum:5410 + expr: vector(1) + labels: + job: job5410 + - record: job:http_inprogress_requests:sum:5411 + expr: vector(1) + labels: + job: job5411 + - record: job:http_inprogress_requests:sum:5412 + expr: vector(1) + labels: + job: job5412 + - record: job:http_inprogress_requests:sum:5413 + expr: vector(1) + labels: + job: job5413 + - record: job:http_inprogress_requests:sum:5414 + expr: vector(1) + labels: + job: job5414 + - record: job:http_inprogress_requests:sum:5415 + expr: vector(1) + labels: + job: job5415 + - record: job:http_inprogress_requests:sum:5416 + expr: vector(1) + labels: + job: job5416 + - record: job:http_inprogress_requests:sum:5417 + expr: vector(1) + labels: + job: job5417 + - record: job:http_inprogress_requests:sum:5418 + expr: vector(1) + labels: + job: job5418 + - record: job:http_inprogress_requests:sum:5419 + expr: vector(1) + labels: + job: job5419 + - record: job:http_inprogress_requests:sum:5420 + expr: vector(1) + labels: + job: job5420 + - record: job:http_inprogress_requests:sum:5421 + expr: vector(1) + labels: + job: job5421 + - record: job:http_inprogress_requests:sum:5422 + expr: vector(1) + labels: + job: job5422 + - record: job:http_inprogress_requests:sum:5423 + expr: vector(1) + labels: + job: job5423 + - record: job:http_inprogress_requests:sum:5424 + expr: vector(1) + labels: + job: job5424 + - record: job:http_inprogress_requests:sum:5425 + expr: vector(1) + labels: + job: job5425 + - record: job:http_inprogress_requests:sum:5426 + expr: vector(1) + labels: + job: job5426 + - record: job:http_inprogress_requests:sum:5427 + expr: vector(1) + labels: + job: job5427 + - record: job:http_inprogress_requests:sum:5428 + expr: vector(1) + labels: + job: job5428 + - record: job:http_inprogress_requests:sum:5429 + expr: vector(1) + labels: + job: job5429 + - record: job:http_inprogress_requests:sum:5430 + expr: vector(1) + labels: + job: job5430 + - record: job:http_inprogress_requests:sum:5431 + expr: vector(1) + labels: + job: job5431 + - record: job:http_inprogress_requests:sum:5432 + expr: vector(1) + labels: + job: job5432 + - record: job:http_inprogress_requests:sum:5433 + expr: vector(1) + labels: + job: job5433 + - record: job:http_inprogress_requests:sum:5434 + expr: vector(1) + labels: + job: job5434 + - record: job:http_inprogress_requests:sum:5435 + expr: vector(1) + labels: + job: job5435 + - record: job:http_inprogress_requests:sum:5436 + expr: vector(1) + labels: + job: job5436 + - record: job:http_inprogress_requests:sum:5437 + expr: vector(1) + labels: + job: job5437 + - record: job:http_inprogress_requests:sum:5438 + expr: vector(1) + labels: + job: job5438 + - record: job:http_inprogress_requests:sum:5439 + expr: vector(1) + labels: + job: job5439 + - record: job:http_inprogress_requests:sum:5440 + expr: vector(1) + labels: + job: job5440 + - record: job:http_inprogress_requests:sum:5441 + expr: vector(1) + labels: + job: job5441 + - record: job:http_inprogress_requests:sum:5442 + expr: vector(1) + labels: + job: job5442 + - record: job:http_inprogress_requests:sum:5443 + expr: vector(1) + labels: + job: job5443 + - record: job:http_inprogress_requests:sum:5444 + expr: vector(1) + labels: + job: job5444 + - record: job:http_inprogress_requests:sum:5445 + expr: vector(1) + labels: + job: job5445 + - record: job:http_inprogress_requests:sum:5446 + expr: vector(1) + labels: + job: job5446 + - record: job:http_inprogress_requests:sum:5447 + expr: vector(1) + labels: + job: job5447 + - record: job:http_inprogress_requests:sum:5448 + expr: vector(1) + labels: + job: job5448 + - record: job:http_inprogress_requests:sum:5449 + expr: vector(1) + labels: + job: job5449 + - record: job:http_inprogress_requests:sum:5450 + expr: vector(1) + labels: + job: job5450 + - record: job:http_inprogress_requests:sum:5451 + expr: vector(1) + labels: + job: job5451 + - record: job:http_inprogress_requests:sum:5452 + expr: vector(1) + labels: + job: job5452 + - record: job:http_inprogress_requests:sum:5453 + expr: vector(1) + labels: + job: job5453 + - record: job:http_inprogress_requests:sum:5454 + expr: vector(1) + labels: + job: job5454 + - record: job:http_inprogress_requests:sum:5455 + expr: vector(1) + labels: + job: job5455 + - record: job:http_inprogress_requests:sum:5456 + expr: vector(1) + labels: + job: job5456 + - record: job:http_inprogress_requests:sum:5457 + expr: vector(1) + labels: + job: job5457 + - record: job:http_inprogress_requests:sum:5458 + expr: vector(1) + labels: + job: job5458 + - record: job:http_inprogress_requests:sum:5459 + expr: vector(1) + labels: + job: job5459 + - record: job:http_inprogress_requests:sum:5460 + expr: vector(1) + labels: + job: job5460 + - record: job:http_inprogress_requests:sum:5461 + expr: vector(1) + labels: + job: job5461 + - record: job:http_inprogress_requests:sum:5462 + expr: vector(1) + labels: + job: job5462 + - record: job:http_inprogress_requests:sum:5463 + expr: vector(1) + labels: + job: job5463 + - record: job:http_inprogress_requests:sum:5464 + expr: vector(1) + labels: + job: job5464 + - record: job:http_inprogress_requests:sum:5465 + expr: vector(1) + labels: + job: job5465 + - record: job:http_inprogress_requests:sum:5466 + expr: vector(1) + labels: + job: job5466 + - record: job:http_inprogress_requests:sum:5467 + expr: vector(1) + labels: + job: job5467 + - record: job:http_inprogress_requests:sum:5468 + expr: vector(1) + labels: + job: job5468 + - record: job:http_inprogress_requests:sum:5469 + expr: vector(1) + labels: + job: job5469 + - record: job:http_inprogress_requests:sum:5470 + expr: vector(1) + labels: + job: job5470 + - record: job:http_inprogress_requests:sum:5471 + expr: vector(1) + labels: + job: job5471 + - record: job:http_inprogress_requests:sum:5472 + expr: vector(1) + labels: + job: job5472 + - record: job:http_inprogress_requests:sum:5473 + expr: vector(1) + labels: + job: job5473 + - record: job:http_inprogress_requests:sum:5474 + expr: vector(1) + labels: + job: job5474 + - record: job:http_inprogress_requests:sum:5475 + expr: vector(1) + labels: + job: job5475 + - record: job:http_inprogress_requests:sum:5476 + expr: vector(1) + labels: + job: job5476 + - record: job:http_inprogress_requests:sum:5477 + expr: vector(1) + labels: + job: job5477 + - record: job:http_inprogress_requests:sum:5478 + expr: vector(1) + labels: + job: job5478 + - record: job:http_inprogress_requests:sum:5479 + expr: vector(1) + labels: + job: job5479 + - record: job:http_inprogress_requests:sum:5480 + expr: vector(1) + labels: + job: job5480 + - record: job:http_inprogress_requests:sum:5481 + expr: vector(1) + labels: + job: job5481 + - record: job:http_inprogress_requests:sum:5482 + expr: vector(1) + labels: + job: job5482 + - record: job:http_inprogress_requests:sum:5483 + expr: vector(1) + labels: + job: job5483 + - record: job:http_inprogress_requests:sum:5484 + expr: vector(1) + labels: + job: job5484 + - record: job:http_inprogress_requests:sum:5485 + expr: vector(1) + labels: + job: job5485 + - record: job:http_inprogress_requests:sum:5486 + expr: vector(1) + labels: + job: job5486 + - record: job:http_inprogress_requests:sum:5487 + expr: vector(1) + labels: + job: job5487 + - record: job:http_inprogress_requests:sum:5488 + expr: vector(1) + labels: + job: job5488 + - record: job:http_inprogress_requests:sum:5489 + expr: vector(1) + labels: + job: job5489 + - record: job:http_inprogress_requests:sum:5490 + expr: vector(1) + labels: + job: job5490 + - record: job:http_inprogress_requests:sum:5491 + expr: vector(1) + labels: + job: job5491 + - record: job:http_inprogress_requests:sum:5492 + expr: vector(1) + labels: + job: job5492 + - record: job:http_inprogress_requests:sum:5493 + expr: vector(1) + labels: + job: job5493 + - record: job:http_inprogress_requests:sum:5494 + expr: vector(1) + labels: + job: job5494 + - record: job:http_inprogress_requests:sum:5495 + expr: vector(1) + labels: + job: job5495 + - record: job:http_inprogress_requests:sum:5496 + expr: vector(1) + labels: + job: job5496 + - record: job:http_inprogress_requests:sum:5497 + expr: vector(1) + labels: + job: job5497 + - record: job:http_inprogress_requests:sum:5498 + expr: vector(1) + labels: + job: job5498 + - record: job:http_inprogress_requests:sum:5499 + expr: vector(1) + labels: + job: job5499 + - record: job:http_inprogress_requests:sum:5500 + expr: vector(1) + labels: + job: job5500 + - record: job:http_inprogress_requests:sum:5501 + expr: vector(1) + labels: + job: job5501 + - record: job:http_inprogress_requests:sum:5502 + expr: vector(1) + labels: + job: job5502 + - record: job:http_inprogress_requests:sum:5503 + expr: vector(1) + labels: + job: job5503 + - record: job:http_inprogress_requests:sum:5504 + expr: vector(1) + labels: + job: job5504 + - record: job:http_inprogress_requests:sum:5505 + expr: vector(1) + labels: + job: job5505 + - record: job:http_inprogress_requests:sum:5506 + expr: vector(1) + labels: + job: job5506 + - record: job:http_inprogress_requests:sum:5507 + expr: vector(1) + labels: + job: job5507 + - record: job:http_inprogress_requests:sum:5508 + expr: vector(1) + labels: + job: job5508 + - record: job:http_inprogress_requests:sum:5509 + expr: vector(1) + labels: + job: job5509 + - record: job:http_inprogress_requests:sum:5510 + expr: vector(1) + labels: + job: job5510 + - record: job:http_inprogress_requests:sum:5511 + expr: vector(1) + labels: + job: job5511 + - record: job:http_inprogress_requests:sum:5512 + expr: vector(1) + labels: + job: job5512 + - record: job:http_inprogress_requests:sum:5513 + expr: vector(1) + labels: + job: job5513 + - record: job:http_inprogress_requests:sum:5514 + expr: vector(1) + labels: + job: job5514 + - record: job:http_inprogress_requests:sum:5515 + expr: vector(1) + labels: + job: job5515 + - record: job:http_inprogress_requests:sum:5516 + expr: vector(1) + labels: + job: job5516 + - record: job:http_inprogress_requests:sum:5517 + expr: vector(1) + labels: + job: job5517 + - record: job:http_inprogress_requests:sum:5518 + expr: vector(1) + labels: + job: job5518 + - record: job:http_inprogress_requests:sum:5519 + expr: vector(1) + labels: + job: job5519 + - record: job:http_inprogress_requests:sum:5520 + expr: vector(1) + labels: + job: job5520 + - record: job:http_inprogress_requests:sum:5521 + expr: vector(1) + labels: + job: job5521 + - record: job:http_inprogress_requests:sum:5522 + expr: vector(1) + labels: + job: job5522 + - record: job:http_inprogress_requests:sum:5523 + expr: vector(1) + labels: + job: job5523 + - record: job:http_inprogress_requests:sum:5524 + expr: vector(1) + labels: + job: job5524 + - record: job:http_inprogress_requests:sum:5525 + expr: vector(1) + labels: + job: job5525 + - record: job:http_inprogress_requests:sum:5526 + expr: vector(1) + labels: + job: job5526 + - record: job:http_inprogress_requests:sum:5527 + expr: vector(1) + labels: + job: job5527 + - record: job:http_inprogress_requests:sum:5528 + expr: vector(1) + labels: + job: job5528 + - record: job:http_inprogress_requests:sum:5529 + expr: vector(1) + labels: + job: job5529 + - record: job:http_inprogress_requests:sum:5530 + expr: vector(1) + labels: + job: job5530 + - record: job:http_inprogress_requests:sum:5531 + expr: vector(1) + labels: + job: job5531 + - record: job:http_inprogress_requests:sum:5532 + expr: vector(1) + labels: + job: job5532 + - record: job:http_inprogress_requests:sum:5533 + expr: vector(1) + labels: + job: job5533 + - record: job:http_inprogress_requests:sum:5534 + expr: vector(1) + labels: + job: job5534 + - record: job:http_inprogress_requests:sum:5535 + expr: vector(1) + labels: + job: job5535 + - record: job:http_inprogress_requests:sum:5536 + expr: vector(1) + labels: + job: job5536 + - record: job:http_inprogress_requests:sum:5537 + expr: vector(1) + labels: + job: job5537 + - record: job:http_inprogress_requests:sum:5538 + expr: vector(1) + labels: + job: job5538 + - record: job:http_inprogress_requests:sum:5539 + expr: vector(1) + labels: + job: job5539 + - record: job:http_inprogress_requests:sum:5540 + expr: vector(1) + labels: + job: job5540 + - record: job:http_inprogress_requests:sum:5541 + expr: vector(1) + labels: + job: job5541 + - record: job:http_inprogress_requests:sum:5542 + expr: vector(1) + labels: + job: job5542 + - record: job:http_inprogress_requests:sum:5543 + expr: vector(1) + labels: + job: job5543 + - record: job:http_inprogress_requests:sum:5544 + expr: vector(1) + labels: + job: job5544 + - record: job:http_inprogress_requests:sum:5545 + expr: vector(1) + labels: + job: job5545 + - record: job:http_inprogress_requests:sum:5546 + expr: vector(1) + labels: + job: job5546 + - record: job:http_inprogress_requests:sum:5547 + expr: vector(1) + labels: + job: job5547 + - record: job:http_inprogress_requests:sum:5548 + expr: vector(1) + labels: + job: job5548 + - record: job:http_inprogress_requests:sum:5549 + expr: vector(1) + labels: + job: job5549 + - record: job:http_inprogress_requests:sum:5550 + expr: vector(1) + labels: + job: job5550 + - record: job:http_inprogress_requests:sum:5551 + expr: vector(1) + labels: + job: job5551 + - record: job:http_inprogress_requests:sum:5552 + expr: vector(1) + labels: + job: job5552 + - record: job:http_inprogress_requests:sum:5553 + expr: vector(1) + labels: + job: job5553 + - record: job:http_inprogress_requests:sum:5554 + expr: vector(1) + labels: + job: job5554 + - record: job:http_inprogress_requests:sum:5555 + expr: vector(1) + labels: + job: job5555 + - record: job:http_inprogress_requests:sum:5556 + expr: vector(1) + labels: + job: job5556 + - record: job:http_inprogress_requests:sum:5557 + expr: vector(1) + labels: + job: job5557 + - record: job:http_inprogress_requests:sum:5558 + expr: vector(1) + labels: + job: job5558 + - record: job:http_inprogress_requests:sum:5559 + expr: vector(1) + labels: + job: job5559 + - record: job:http_inprogress_requests:sum:5560 + expr: vector(1) + labels: + job: job5560 + - record: job:http_inprogress_requests:sum:5561 + expr: vector(1) + labels: + job: job5561 + - record: job:http_inprogress_requests:sum:5562 + expr: vector(1) + labels: + job: job5562 + - record: job:http_inprogress_requests:sum:5563 + expr: vector(1) + labels: + job: job5563 + - record: job:http_inprogress_requests:sum:5564 + expr: vector(1) + labels: + job: job5564 + - record: job:http_inprogress_requests:sum:5565 + expr: vector(1) + labels: + job: job5565 + - record: job:http_inprogress_requests:sum:5566 + expr: vector(1) + labels: + job: job5566 + - record: job:http_inprogress_requests:sum:5567 + expr: vector(1) + labels: + job: job5567 + - record: job:http_inprogress_requests:sum:5568 + expr: vector(1) + labels: + job: job5568 + - record: job:http_inprogress_requests:sum:5569 + expr: vector(1) + labels: + job: job5569 + - record: job:http_inprogress_requests:sum:5570 + expr: vector(1) + labels: + job: job5570 + - record: job:http_inprogress_requests:sum:5571 + expr: vector(1) + labels: + job: job5571 + - record: job:http_inprogress_requests:sum:5572 + expr: vector(1) + labels: + job: job5572 + - record: job:http_inprogress_requests:sum:5573 + expr: vector(1) + labels: + job: job5573 + - record: job:http_inprogress_requests:sum:5574 + expr: vector(1) + labels: + job: job5574 + - record: job:http_inprogress_requests:sum:5575 + expr: vector(1) + labels: + job: job5575 + - record: job:http_inprogress_requests:sum:5576 + expr: vector(1) + labels: + job: job5576 + - record: job:http_inprogress_requests:sum:5577 + expr: vector(1) + labels: + job: job5577 + - record: job:http_inprogress_requests:sum:5578 + expr: vector(1) + labels: + job: job5578 + - record: job:http_inprogress_requests:sum:5579 + expr: vector(1) + labels: + job: job5579 + - record: job:http_inprogress_requests:sum:5580 + expr: vector(1) + labels: + job: job5580 + - record: job:http_inprogress_requests:sum:5581 + expr: vector(1) + labels: + job: job5581 + - record: job:http_inprogress_requests:sum:5582 + expr: vector(1) + labels: + job: job5582 + - record: job:http_inprogress_requests:sum:5583 + expr: vector(1) + labels: + job: job5583 + - record: job:http_inprogress_requests:sum:5584 + expr: vector(1) + labels: + job: job5584 + - record: job:http_inprogress_requests:sum:5585 + expr: vector(1) + labels: + job: job5585 + - record: job:http_inprogress_requests:sum:5586 + expr: vector(1) + labels: + job: job5586 + - record: job:http_inprogress_requests:sum:5587 + expr: vector(1) + labels: + job: job5587 + - record: job:http_inprogress_requests:sum:5588 + expr: vector(1) + labels: + job: job5588 + - record: job:http_inprogress_requests:sum:5589 + expr: vector(1) + labels: + job: job5589 + - record: job:http_inprogress_requests:sum:5590 + expr: vector(1) + labels: + job: job5590 + - record: job:http_inprogress_requests:sum:5591 + expr: vector(1) + labels: + job: job5591 + - record: job:http_inprogress_requests:sum:5592 + expr: vector(1) + labels: + job: job5592 + - record: job:http_inprogress_requests:sum:5593 + expr: vector(1) + labels: + job: job5593 + - record: job:http_inprogress_requests:sum:5594 + expr: vector(1) + labels: + job: job5594 + - record: job:http_inprogress_requests:sum:5595 + expr: vector(1) + labels: + job: job5595 + - record: job:http_inprogress_requests:sum:5596 + expr: vector(1) + labels: + job: job5596 + - record: job:http_inprogress_requests:sum:5597 + expr: vector(1) + labels: + job: job5597 + - record: job:http_inprogress_requests:sum:5598 + expr: vector(1) + labels: + job: job5598 + - record: job:http_inprogress_requests:sum:5599 + expr: vector(1) + labels: + job: job5599 + - record: job:http_inprogress_requests:sum:5600 + expr: vector(1) + labels: + job: job5600 + - record: job:http_inprogress_requests:sum:5601 + expr: vector(1) + labels: + job: job5601 + - record: job:http_inprogress_requests:sum:5602 + expr: vector(1) + labels: + job: job5602 + - record: job:http_inprogress_requests:sum:5603 + expr: vector(1) + labels: + job: job5603 + - record: job:http_inprogress_requests:sum:5604 + expr: vector(1) + labels: + job: job5604 + - record: job:http_inprogress_requests:sum:5605 + expr: vector(1) + labels: + job: job5605 + - record: job:http_inprogress_requests:sum:5606 + expr: vector(1) + labels: + job: job5606 + - record: job:http_inprogress_requests:sum:5607 + expr: vector(1) + labels: + job: job5607 + - record: job:http_inprogress_requests:sum:5608 + expr: vector(1) + labels: + job: job5608 + - record: job:http_inprogress_requests:sum:5609 + expr: vector(1) + labels: + job: job5609 + - record: job:http_inprogress_requests:sum:5610 + expr: vector(1) + labels: + job: job5610 + - record: job:http_inprogress_requests:sum:5611 + expr: vector(1) + labels: + job: job5611 + - record: job:http_inprogress_requests:sum:5612 + expr: vector(1) + labels: + job: job5612 + - record: job:http_inprogress_requests:sum:5613 + expr: vector(1) + labels: + job: job5613 + - record: job:http_inprogress_requests:sum:5614 + expr: vector(1) + labels: + job: job5614 + - record: job:http_inprogress_requests:sum:5615 + expr: vector(1) + labels: + job: job5615 + - record: job:http_inprogress_requests:sum:5616 + expr: vector(1) + labels: + job: job5616 + - record: job:http_inprogress_requests:sum:5617 + expr: vector(1) + labels: + job: job5617 + - record: job:http_inprogress_requests:sum:5618 + expr: vector(1) + labels: + job: job5618 + - record: job:http_inprogress_requests:sum:5619 + expr: vector(1) + labels: + job: job5619 + - record: job:http_inprogress_requests:sum:5620 + expr: vector(1) + labels: + job: job5620 + - record: job:http_inprogress_requests:sum:5621 + expr: vector(1) + labels: + job: job5621 + - record: job:http_inprogress_requests:sum:5622 + expr: vector(1) + labels: + job: job5622 + - record: job:http_inprogress_requests:sum:5623 + expr: vector(1) + labels: + job: job5623 + - record: job:http_inprogress_requests:sum:5624 + expr: vector(1) + labels: + job: job5624 + - record: job:http_inprogress_requests:sum:5625 + expr: vector(1) + labels: + job: job5625 + - record: job:http_inprogress_requests:sum:5626 + expr: vector(1) + labels: + job: job5626 + - record: job:http_inprogress_requests:sum:5627 + expr: vector(1) + labels: + job: job5627 + - record: job:http_inprogress_requests:sum:5628 + expr: vector(1) + labels: + job: job5628 + - record: job:http_inprogress_requests:sum:5629 + expr: vector(1) + labels: + job: job5629 + - record: job:http_inprogress_requests:sum:5630 + expr: vector(1) + labels: + job: job5630 + - record: job:http_inprogress_requests:sum:5631 + expr: vector(1) + labels: + job: job5631 + - record: job:http_inprogress_requests:sum:5632 + expr: vector(1) + labels: + job: job5632 + - record: job:http_inprogress_requests:sum:5633 + expr: vector(1) + labels: + job: job5633 + - record: job:http_inprogress_requests:sum:5634 + expr: vector(1) + labels: + job: job5634 + - record: job:http_inprogress_requests:sum:5635 + expr: vector(1) + labels: + job: job5635 + - record: job:http_inprogress_requests:sum:5636 + expr: vector(1) + labels: + job: job5636 + - record: job:http_inprogress_requests:sum:5637 + expr: vector(1) + labels: + job: job5637 + - record: job:http_inprogress_requests:sum:5638 + expr: vector(1) + labels: + job: job5638 + - record: job:http_inprogress_requests:sum:5639 + expr: vector(1) + labels: + job: job5639 + - record: job:http_inprogress_requests:sum:5640 + expr: vector(1) + labels: + job: job5640 + - record: job:http_inprogress_requests:sum:5641 + expr: vector(1) + labels: + job: job5641 + - record: job:http_inprogress_requests:sum:5642 + expr: vector(1) + labels: + job: job5642 + - record: job:http_inprogress_requests:sum:5643 + expr: vector(1) + labels: + job: job5643 + - record: job:http_inprogress_requests:sum:5644 + expr: vector(1) + labels: + job: job5644 + - record: job:http_inprogress_requests:sum:5645 + expr: vector(1) + labels: + job: job5645 + - record: job:http_inprogress_requests:sum:5646 + expr: vector(1) + labels: + job: job5646 + - record: job:http_inprogress_requests:sum:5647 + expr: vector(1) + labels: + job: job5647 + - record: job:http_inprogress_requests:sum:5648 + expr: vector(1) + labels: + job: job5648 + - record: job:http_inprogress_requests:sum:5649 + expr: vector(1) + labels: + job: job5649 + - record: job:http_inprogress_requests:sum:5650 + expr: vector(1) + labels: + job: job5650 + - record: job:http_inprogress_requests:sum:5651 + expr: vector(1) + labels: + job: job5651 + - record: job:http_inprogress_requests:sum:5652 + expr: vector(1) + labels: + job: job5652 + - record: job:http_inprogress_requests:sum:5653 + expr: vector(1) + labels: + job: job5653 + - record: job:http_inprogress_requests:sum:5654 + expr: vector(1) + labels: + job: job5654 + - record: job:http_inprogress_requests:sum:5655 + expr: vector(1) + labels: + job: job5655 + - record: job:http_inprogress_requests:sum:5656 + expr: vector(1) + labels: + job: job5656 + - record: job:http_inprogress_requests:sum:5657 + expr: vector(1) + labels: + job: job5657 + - record: job:http_inprogress_requests:sum:5658 + expr: vector(1) + labels: + job: job5658 + - record: job:http_inprogress_requests:sum:5659 + expr: vector(1) + labels: + job: job5659 + - record: job:http_inprogress_requests:sum:5660 + expr: vector(1) + labels: + job: job5660 + - record: job:http_inprogress_requests:sum:5661 + expr: vector(1) + labels: + job: job5661 + - record: job:http_inprogress_requests:sum:5662 + expr: vector(1) + labels: + job: job5662 + - record: job:http_inprogress_requests:sum:5663 + expr: vector(1) + labels: + job: job5663 + - record: job:http_inprogress_requests:sum:5664 + expr: vector(1) + labels: + job: job5664 + - record: job:http_inprogress_requests:sum:5665 + expr: vector(1) + labels: + job: job5665 + - record: job:http_inprogress_requests:sum:5666 + expr: vector(1) + labels: + job: job5666 + - record: job:http_inprogress_requests:sum:5667 + expr: vector(1) + labels: + job: job5667 + - record: job:http_inprogress_requests:sum:5668 + expr: vector(1) + labels: + job: job5668 + - record: job:http_inprogress_requests:sum:5669 + expr: vector(1) + labels: + job: job5669 + - record: job:http_inprogress_requests:sum:5670 + expr: vector(1) + labels: + job: job5670 + - record: job:http_inprogress_requests:sum:5671 + expr: vector(1) + labels: + job: job5671 + - record: job:http_inprogress_requests:sum:5672 + expr: vector(1) + labels: + job: job5672 + - record: job:http_inprogress_requests:sum:5673 + expr: vector(1) + labels: + job: job5673 + - record: job:http_inprogress_requests:sum:5674 + expr: vector(1) + labels: + job: job5674 + - record: job:http_inprogress_requests:sum:5675 + expr: vector(1) + labels: + job: job5675 + - record: job:http_inprogress_requests:sum:5676 + expr: vector(1) + labels: + job: job5676 + - record: job:http_inprogress_requests:sum:5677 + expr: vector(1) + labels: + job: job5677 + - record: job:http_inprogress_requests:sum:5678 + expr: vector(1) + labels: + job: job5678 + - record: job:http_inprogress_requests:sum:5679 + expr: vector(1) + labels: + job: job5679 + - record: job:http_inprogress_requests:sum:5680 + expr: vector(1) + labels: + job: job5680 + - record: job:http_inprogress_requests:sum:5681 + expr: vector(1) + labels: + job: job5681 + - record: job:http_inprogress_requests:sum:5682 + expr: vector(1) + labels: + job: job5682 + - record: job:http_inprogress_requests:sum:5683 + expr: vector(1) + labels: + job: job5683 + - record: job:http_inprogress_requests:sum:5684 + expr: vector(1) + labels: + job: job5684 + - record: job:http_inprogress_requests:sum:5685 + expr: vector(1) + labels: + job: job5685 + - record: job:http_inprogress_requests:sum:5686 + expr: vector(1) + labels: + job: job5686 + - record: job:http_inprogress_requests:sum:5687 + expr: vector(1) + labels: + job: job5687 + - record: job:http_inprogress_requests:sum:5688 + expr: vector(1) + labels: + job: job5688 + - record: job:http_inprogress_requests:sum:5689 + expr: vector(1) + labels: + job: job5689 + - record: job:http_inprogress_requests:sum:5690 + expr: vector(1) + labels: + job: job5690 + - record: job:http_inprogress_requests:sum:5691 + expr: vector(1) + labels: + job: job5691 + - record: job:http_inprogress_requests:sum:5692 + expr: vector(1) + labels: + job: job5692 + - record: job:http_inprogress_requests:sum:5693 + expr: vector(1) + labels: + job: job5693 + - record: job:http_inprogress_requests:sum:5694 + expr: vector(1) + labels: + job: job5694 + - record: job:http_inprogress_requests:sum:5695 + expr: vector(1) + labels: + job: job5695 + - record: job:http_inprogress_requests:sum:5696 + expr: vector(1) + labels: + job: job5696 + - record: job:http_inprogress_requests:sum:5697 + expr: vector(1) + labels: + job: job5697 + - record: job:http_inprogress_requests:sum:5698 + expr: vector(1) + labels: + job: job5698 + - record: job:http_inprogress_requests:sum:5699 + expr: vector(1) + labels: + job: job5699 + - record: job:http_inprogress_requests:sum:5700 + expr: vector(1) + labels: + job: job5700 + - record: job:http_inprogress_requests:sum:5701 + expr: vector(1) + labels: + job: job5701 + - record: job:http_inprogress_requests:sum:5702 + expr: vector(1) + labels: + job: job5702 + - record: job:http_inprogress_requests:sum:5703 + expr: vector(1) + labels: + job: job5703 + - record: job:http_inprogress_requests:sum:5704 + expr: vector(1) + labels: + job: job5704 + - record: job:http_inprogress_requests:sum:5705 + expr: vector(1) + labels: + job: job5705 + - record: job:http_inprogress_requests:sum:5706 + expr: vector(1) + labels: + job: job5706 + - record: job:http_inprogress_requests:sum:5707 + expr: vector(1) + labels: + job: job5707 + - record: job:http_inprogress_requests:sum:5708 + expr: vector(1) + labels: + job: job5708 + - record: job:http_inprogress_requests:sum:5709 + expr: vector(1) + labels: + job: job5709 + - record: job:http_inprogress_requests:sum:5710 + expr: vector(1) + labels: + job: job5710 + - record: job:http_inprogress_requests:sum:5711 + expr: vector(1) + labels: + job: job5711 + - record: job:http_inprogress_requests:sum:5712 + expr: vector(1) + labels: + job: job5712 + - record: job:http_inprogress_requests:sum:5713 + expr: vector(1) + labels: + job: job5713 + - record: job:http_inprogress_requests:sum:5714 + expr: vector(1) + labels: + job: job5714 + - record: job:http_inprogress_requests:sum:5715 + expr: vector(1) + labels: + job: job5715 + - record: job:http_inprogress_requests:sum:5716 + expr: vector(1) + labels: + job: job5716 + - record: job:http_inprogress_requests:sum:5717 + expr: vector(1) + labels: + job: job5717 + - record: job:http_inprogress_requests:sum:5718 + expr: vector(1) + labels: + job: job5718 + - record: job:http_inprogress_requests:sum:5719 + expr: vector(1) + labels: + job: job5719 + - record: job:http_inprogress_requests:sum:5720 + expr: vector(1) + labels: + job: job5720 + - record: job:http_inprogress_requests:sum:5721 + expr: vector(1) + labels: + job: job5721 + - record: job:http_inprogress_requests:sum:5722 + expr: vector(1) + labels: + job: job5722 + - record: job:http_inprogress_requests:sum:5723 + expr: vector(1) + labels: + job: job5723 + - record: job:http_inprogress_requests:sum:5724 + expr: vector(1) + labels: + job: job5724 + - record: job:http_inprogress_requests:sum:5725 + expr: vector(1) + labels: + job: job5725 + - record: job:http_inprogress_requests:sum:5726 + expr: vector(1) + labels: + job: job5726 + - record: job:http_inprogress_requests:sum:5727 + expr: vector(1) + labels: + job: job5727 + - record: job:http_inprogress_requests:sum:5728 + expr: vector(1) + labels: + job: job5728 + - record: job:http_inprogress_requests:sum:5729 + expr: vector(1) + labels: + job: job5729 + - record: job:http_inprogress_requests:sum:5730 + expr: vector(1) + labels: + job: job5730 + - record: job:http_inprogress_requests:sum:5731 + expr: vector(1) + labels: + job: job5731 + - record: job:http_inprogress_requests:sum:5732 + expr: vector(1) + labels: + job: job5732 + - record: job:http_inprogress_requests:sum:5733 + expr: vector(1) + labels: + job: job5733 + - record: job:http_inprogress_requests:sum:5734 + expr: vector(1) + labels: + job: job5734 + - record: job:http_inprogress_requests:sum:5735 + expr: vector(1) + labels: + job: job5735 + - record: job:http_inprogress_requests:sum:5736 + expr: vector(1) + labels: + job: job5736 + - record: job:http_inprogress_requests:sum:5737 + expr: vector(1) + labels: + job: job5737 + - record: job:http_inprogress_requests:sum:5738 + expr: vector(1) + labels: + job: job5738 + - record: job:http_inprogress_requests:sum:5739 + expr: vector(1) + labels: + job: job5739 + - record: job:http_inprogress_requests:sum:5740 + expr: vector(1) + labels: + job: job5740 + - record: job:http_inprogress_requests:sum:5741 + expr: vector(1) + labels: + job: job5741 + - record: job:http_inprogress_requests:sum:5742 + expr: vector(1) + labels: + job: job5742 + - record: job:http_inprogress_requests:sum:5743 + expr: vector(1) + labels: + job: job5743 + - record: job:http_inprogress_requests:sum:5744 + expr: vector(1) + labels: + job: job5744 + - record: job:http_inprogress_requests:sum:5745 + expr: vector(1) + labels: + job: job5745 + - record: job:http_inprogress_requests:sum:5746 + expr: vector(1) + labels: + job: job5746 + - record: job:http_inprogress_requests:sum:5747 + expr: vector(1) + labels: + job: job5747 + - record: job:http_inprogress_requests:sum:5748 + expr: vector(1) + labels: + job: job5748 + - record: job:http_inprogress_requests:sum:5749 + expr: vector(1) + labels: + job: job5749 + - record: job:http_inprogress_requests:sum:5750 + expr: vector(1) + labels: + job: job5750 + - record: job:http_inprogress_requests:sum:5751 + expr: vector(1) + labels: + job: job5751 + - record: job:http_inprogress_requests:sum:5752 + expr: vector(1) + labels: + job: job5752 + - record: job:http_inprogress_requests:sum:5753 + expr: vector(1) + labels: + job: job5753 + - record: job:http_inprogress_requests:sum:5754 + expr: vector(1) + labels: + job: job5754 + - record: job:http_inprogress_requests:sum:5755 + expr: vector(1) + labels: + job: job5755 + - record: job:http_inprogress_requests:sum:5756 + expr: vector(1) + labels: + job: job5756 + - record: job:http_inprogress_requests:sum:5757 + expr: vector(1) + labels: + job: job5757 + - record: job:http_inprogress_requests:sum:5758 + expr: vector(1) + labels: + job: job5758 + - record: job:http_inprogress_requests:sum:5759 + expr: vector(1) + labels: + job: job5759 + - record: job:http_inprogress_requests:sum:5760 + expr: vector(1) + labels: + job: job5760 + - record: job:http_inprogress_requests:sum:5761 + expr: vector(1) + labels: + job: job5761 + - record: job:http_inprogress_requests:sum:5762 + expr: vector(1) + labels: + job: job5762 + - record: job:http_inprogress_requests:sum:5763 + expr: vector(1) + labels: + job: job5763 + - record: job:http_inprogress_requests:sum:5764 + expr: vector(1) + labels: + job: job5764 + - record: job:http_inprogress_requests:sum:5765 + expr: vector(1) + labels: + job: job5765 + - record: job:http_inprogress_requests:sum:5766 + expr: vector(1) + labels: + job: job5766 + - record: job:http_inprogress_requests:sum:5767 + expr: vector(1) + labels: + job: job5767 + - record: job:http_inprogress_requests:sum:5768 + expr: vector(1) + labels: + job: job5768 + - record: job:http_inprogress_requests:sum:5769 + expr: vector(1) + labels: + job: job5769 + - record: job:http_inprogress_requests:sum:5770 + expr: vector(1) + labels: + job: job5770 + - record: job:http_inprogress_requests:sum:5771 + expr: vector(1) + labels: + job: job5771 + - record: job:http_inprogress_requests:sum:5772 + expr: vector(1) + labels: + job: job5772 + - record: job:http_inprogress_requests:sum:5773 + expr: vector(1) + labels: + job: job5773 + - record: job:http_inprogress_requests:sum:5774 + expr: vector(1) + labels: + job: job5774 + - record: job:http_inprogress_requests:sum:5775 + expr: vector(1) + labels: + job: job5775 + - record: job:http_inprogress_requests:sum:5776 + expr: vector(1) + labels: + job: job5776 + - record: job:http_inprogress_requests:sum:5777 + expr: vector(1) + labels: + job: job5777 + - record: job:http_inprogress_requests:sum:5778 + expr: vector(1) + labels: + job: job5778 + - record: job:http_inprogress_requests:sum:5779 + expr: vector(1) + labels: + job: job5779 + - record: job:http_inprogress_requests:sum:5780 + expr: vector(1) + labels: + job: job5780 + - record: job:http_inprogress_requests:sum:5781 + expr: vector(1) + labels: + job: job5781 + - record: job:http_inprogress_requests:sum:5782 + expr: vector(1) + labels: + job: job5782 + - record: job:http_inprogress_requests:sum:5783 + expr: vector(1) + labels: + job: job5783 + - record: job:http_inprogress_requests:sum:5784 + expr: vector(1) + labels: + job: job5784 + - record: job:http_inprogress_requests:sum:5785 + expr: vector(1) + labels: + job: job5785 + - record: job:http_inprogress_requests:sum:5786 + expr: vector(1) + labels: + job: job5786 + - record: job:http_inprogress_requests:sum:5787 + expr: vector(1) + labels: + job: job5787 + - record: job:http_inprogress_requests:sum:5788 + expr: vector(1) + labels: + job: job5788 + - record: job:http_inprogress_requests:sum:5789 + expr: vector(1) + labels: + job: job5789 + - record: job:http_inprogress_requests:sum:5790 + expr: vector(1) + labels: + job: job5790 + - record: job:http_inprogress_requests:sum:5791 + expr: vector(1) + labels: + job: job5791 + - record: job:http_inprogress_requests:sum:5792 + expr: vector(1) + labels: + job: job5792 + - record: job:http_inprogress_requests:sum:5793 + expr: vector(1) + labels: + job: job5793 + - record: job:http_inprogress_requests:sum:5794 + expr: vector(1) + labels: + job: job5794 + - record: job:http_inprogress_requests:sum:5795 + expr: vector(1) + labels: + job: job5795 + - record: job:http_inprogress_requests:sum:5796 + expr: vector(1) + labels: + job: job5796 + - record: job:http_inprogress_requests:sum:5797 + expr: vector(1) + labels: + job: job5797 + - record: job:http_inprogress_requests:sum:5798 + expr: vector(1) + labels: + job: job5798 + - record: job:http_inprogress_requests:sum:5799 + expr: vector(1) + labels: + job: job5799 + - record: job:http_inprogress_requests:sum:5800 + expr: vector(1) + labels: + job: job5800 + - record: job:http_inprogress_requests:sum:5801 + expr: vector(1) + labels: + job: job5801 + - record: job:http_inprogress_requests:sum:5802 + expr: vector(1) + labels: + job: job5802 + - record: job:http_inprogress_requests:sum:5803 + expr: vector(1) + labels: + job: job5803 + - record: job:http_inprogress_requests:sum:5804 + expr: vector(1) + labels: + job: job5804 + - record: job:http_inprogress_requests:sum:5805 + expr: vector(1) + labels: + job: job5805 + - record: job:http_inprogress_requests:sum:5806 + expr: vector(1) + labels: + job: job5806 + - record: job:http_inprogress_requests:sum:5807 + expr: vector(1) + labels: + job: job5807 + - record: job:http_inprogress_requests:sum:5808 + expr: vector(1) + labels: + job: job5808 + - record: job:http_inprogress_requests:sum:5809 + expr: vector(1) + labels: + job: job5809 + - record: job:http_inprogress_requests:sum:5810 + expr: vector(1) + labels: + job: job5810 + - record: job:http_inprogress_requests:sum:5811 + expr: vector(1) + labels: + job: job5811 + - record: job:http_inprogress_requests:sum:5812 + expr: vector(1) + labels: + job: job5812 + - record: job:http_inprogress_requests:sum:5813 + expr: vector(1) + labels: + job: job5813 + - record: job:http_inprogress_requests:sum:5814 + expr: vector(1) + labels: + job: job5814 + - record: job:http_inprogress_requests:sum:5815 + expr: vector(1) + labels: + job: job5815 + - record: job:http_inprogress_requests:sum:5816 + expr: vector(1) + labels: + job: job5816 + - record: job:http_inprogress_requests:sum:5817 + expr: vector(1) + labels: + job: job5817 + - record: job:http_inprogress_requests:sum:5818 + expr: vector(1) + labels: + job: job5818 + - record: job:http_inprogress_requests:sum:5819 + expr: vector(1) + labels: + job: job5819 + - record: job:http_inprogress_requests:sum:5820 + expr: vector(1) + labels: + job: job5820 + - record: job:http_inprogress_requests:sum:5821 + expr: vector(1) + labels: + job: job5821 + - record: job:http_inprogress_requests:sum:5822 + expr: vector(1) + labels: + job: job5822 + - record: job:http_inprogress_requests:sum:5823 + expr: vector(1) + labels: + job: job5823 + - record: job:http_inprogress_requests:sum:5824 + expr: vector(1) + labels: + job: job5824 + - record: job:http_inprogress_requests:sum:5825 + expr: vector(1) + labels: + job: job5825 + - record: job:http_inprogress_requests:sum:5826 + expr: vector(1) + labels: + job: job5826 + - record: job:http_inprogress_requests:sum:5827 + expr: vector(1) + labels: + job: job5827 + - record: job:http_inprogress_requests:sum:5828 + expr: vector(1) + labels: + job: job5828 + - record: job:http_inprogress_requests:sum:5829 + expr: vector(1) + labels: + job: job5829 + - record: job:http_inprogress_requests:sum:5830 + expr: vector(1) + labels: + job: job5830 + - record: job:http_inprogress_requests:sum:5831 + expr: vector(1) + labels: + job: job5831 + - record: job:http_inprogress_requests:sum:5832 + expr: vector(1) + labels: + job: job5832 + - record: job:http_inprogress_requests:sum:5833 + expr: vector(1) + labels: + job: job5833 + - record: job:http_inprogress_requests:sum:5834 + expr: vector(1) + labels: + job: job5834 + - record: job:http_inprogress_requests:sum:5835 + expr: vector(1) + labels: + job: job5835 + - record: job:http_inprogress_requests:sum:5836 + expr: vector(1) + labels: + job: job5836 + - record: job:http_inprogress_requests:sum:5837 + expr: vector(1) + labels: + job: job5837 + - record: job:http_inprogress_requests:sum:5838 + expr: vector(1) + labels: + job: job5838 + - record: job:http_inprogress_requests:sum:5839 + expr: vector(1) + labels: + job: job5839 + - record: job:http_inprogress_requests:sum:5840 + expr: vector(1) + labels: + job: job5840 + - record: job:http_inprogress_requests:sum:5841 + expr: vector(1) + labels: + job: job5841 + - record: job:http_inprogress_requests:sum:5842 + expr: vector(1) + labels: + job: job5842 + - record: job:http_inprogress_requests:sum:5843 + expr: vector(1) + labels: + job: job5843 + - record: job:http_inprogress_requests:sum:5844 + expr: vector(1) + labels: + job: job5844 + - record: job:http_inprogress_requests:sum:5845 + expr: vector(1) + labels: + job: job5845 + - record: job:http_inprogress_requests:sum:5846 + expr: vector(1) + labels: + job: job5846 + - record: job:http_inprogress_requests:sum:5847 + expr: vector(1) + labels: + job: job5847 + - record: job:http_inprogress_requests:sum:5848 + expr: vector(1) + labels: + job: job5848 + - record: job:http_inprogress_requests:sum:5849 + expr: vector(1) + labels: + job: job5849 + - record: job:http_inprogress_requests:sum:5850 + expr: vector(1) + labels: + job: job5850 + - record: job:http_inprogress_requests:sum:5851 + expr: vector(1) + labels: + job: job5851 + - record: job:http_inprogress_requests:sum:5852 + expr: vector(1) + labels: + job: job5852 + - record: job:http_inprogress_requests:sum:5853 + expr: vector(1) + labels: + job: job5853 + - record: job:http_inprogress_requests:sum:5854 + expr: vector(1) + labels: + job: job5854 + - record: job:http_inprogress_requests:sum:5855 + expr: vector(1) + labels: + job: job5855 + - record: job:http_inprogress_requests:sum:5856 + expr: vector(1) + labels: + job: job5856 + - record: job:http_inprogress_requests:sum:5857 + expr: vector(1) + labels: + job: job5857 + - record: job:http_inprogress_requests:sum:5858 + expr: vector(1) + labels: + job: job5858 + - record: job:http_inprogress_requests:sum:5859 + expr: vector(1) + labels: + job: job5859 + - record: job:http_inprogress_requests:sum:5860 + expr: vector(1) + labels: + job: job5860 + - record: job:http_inprogress_requests:sum:5861 + expr: vector(1) + labels: + job: job5861 + - record: job:http_inprogress_requests:sum:5862 + expr: vector(1) + labels: + job: job5862 + - record: job:http_inprogress_requests:sum:5863 + expr: vector(1) + labels: + job: job5863 + - record: job:http_inprogress_requests:sum:5864 + expr: vector(1) + labels: + job: job5864 + - record: job:http_inprogress_requests:sum:5865 + expr: vector(1) + labels: + job: job5865 + - record: job:http_inprogress_requests:sum:5866 + expr: vector(1) + labels: + job: job5866 + - record: job:http_inprogress_requests:sum:5867 + expr: vector(1) + labels: + job: job5867 + - record: job:http_inprogress_requests:sum:5868 + expr: vector(1) + labels: + job: job5868 + - record: job:http_inprogress_requests:sum:5869 + expr: vector(1) + labels: + job: job5869 + - record: job:http_inprogress_requests:sum:5870 + expr: vector(1) + labels: + job: job5870 + - record: job:http_inprogress_requests:sum:5871 + expr: vector(1) + labels: + job: job5871 + - record: job:http_inprogress_requests:sum:5872 + expr: vector(1) + labels: + job: job5872 + - record: job:http_inprogress_requests:sum:5873 + expr: vector(1) + labels: + job: job5873 + - record: job:http_inprogress_requests:sum:5874 + expr: vector(1) + labels: + job: job5874 + - record: job:http_inprogress_requests:sum:5875 + expr: vector(1) + labels: + job: job5875 + - record: job:http_inprogress_requests:sum:5876 + expr: vector(1) + labels: + job: job5876 + - record: job:http_inprogress_requests:sum:5877 + expr: vector(1) + labels: + job: job5877 + - record: job:http_inprogress_requests:sum:5878 + expr: vector(1) + labels: + job: job5878 + - record: job:http_inprogress_requests:sum:5879 + expr: vector(1) + labels: + job: job5879 + - record: job:http_inprogress_requests:sum:5880 + expr: vector(1) + labels: + job: job5880 + - record: job:http_inprogress_requests:sum:5881 + expr: vector(1) + labels: + job: job5881 + - record: job:http_inprogress_requests:sum:5882 + expr: vector(1) + labels: + job: job5882 + - record: job:http_inprogress_requests:sum:5883 + expr: vector(1) + labels: + job: job5883 + - record: job:http_inprogress_requests:sum:5884 + expr: vector(1) + labels: + job: job5884 + - record: job:http_inprogress_requests:sum:5885 + expr: vector(1) + labels: + job: job5885 + - record: job:http_inprogress_requests:sum:5886 + expr: vector(1) + labels: + job: job5886 + - record: job:http_inprogress_requests:sum:5887 + expr: vector(1) + labels: + job: job5887 + - record: job:http_inprogress_requests:sum:5888 + expr: vector(1) + labels: + job: job5888 + - record: job:http_inprogress_requests:sum:5889 + expr: vector(1) + labels: + job: job5889 + - record: job:http_inprogress_requests:sum:5890 + expr: vector(1) + labels: + job: job5890 + - record: job:http_inprogress_requests:sum:5891 + expr: vector(1) + labels: + job: job5891 + - record: job:http_inprogress_requests:sum:5892 + expr: vector(1) + labels: + job: job5892 + - record: job:http_inprogress_requests:sum:5893 + expr: vector(1) + labels: + job: job5893 + - record: job:http_inprogress_requests:sum:5894 + expr: vector(1) + labels: + job: job5894 + - record: job:http_inprogress_requests:sum:5895 + expr: vector(1) + labels: + job: job5895 + - record: job:http_inprogress_requests:sum:5896 + expr: vector(1) + labels: + job: job5896 + - record: job:http_inprogress_requests:sum:5897 + expr: vector(1) + labels: + job: job5897 + - record: job:http_inprogress_requests:sum:5898 + expr: vector(1) + labels: + job: job5898 + - record: job:http_inprogress_requests:sum:5899 + expr: vector(1) + labels: + job: job5899 + - record: job:http_inprogress_requests:sum:5900 + expr: vector(1) + labels: + job: job5900 + - record: job:http_inprogress_requests:sum:5901 + expr: vector(1) + labels: + job: job5901 + - record: job:http_inprogress_requests:sum:5902 + expr: vector(1) + labels: + job: job5902 + - record: job:http_inprogress_requests:sum:5903 + expr: vector(1) + labels: + job: job5903 + - record: job:http_inprogress_requests:sum:5904 + expr: vector(1) + labels: + job: job5904 + - record: job:http_inprogress_requests:sum:5905 + expr: vector(1) + labels: + job: job5905 + - record: job:http_inprogress_requests:sum:5906 + expr: vector(1) + labels: + job: job5906 + - record: job:http_inprogress_requests:sum:5907 + expr: vector(1) + labels: + job: job5907 + - record: job:http_inprogress_requests:sum:5908 + expr: vector(1) + labels: + job: job5908 + - record: job:http_inprogress_requests:sum:5909 + expr: vector(1) + labels: + job: job5909 + - record: job:http_inprogress_requests:sum:5910 + expr: vector(1) + labels: + job: job5910 + - record: job:http_inprogress_requests:sum:5911 + expr: vector(1) + labels: + job: job5911 + - record: job:http_inprogress_requests:sum:5912 + expr: vector(1) + labels: + job: job5912 + - record: job:http_inprogress_requests:sum:5913 + expr: vector(1) + labels: + job: job5913 + - record: job:http_inprogress_requests:sum:5914 + expr: vector(1) + labels: + job: job5914 + - record: job:http_inprogress_requests:sum:5915 + expr: vector(1) + labels: + job: job5915 + - record: job:http_inprogress_requests:sum:5916 + expr: vector(1) + labels: + job: job5916 + - record: job:http_inprogress_requests:sum:5917 + expr: vector(1) + labels: + job: job5917 + - record: job:http_inprogress_requests:sum:5918 + expr: vector(1) + labels: + job: job5918 + - record: job:http_inprogress_requests:sum:5919 + expr: vector(1) + labels: + job: job5919 + - record: job:http_inprogress_requests:sum:5920 + expr: vector(1) + labels: + job: job5920 + - record: job:http_inprogress_requests:sum:5921 + expr: vector(1) + labels: + job: job5921 + - record: job:http_inprogress_requests:sum:5922 + expr: vector(1) + labels: + job: job5922 + - record: job:http_inprogress_requests:sum:5923 + expr: vector(1) + labels: + job: job5923 + - record: job:http_inprogress_requests:sum:5924 + expr: vector(1) + labels: + job: job5924 + - record: job:http_inprogress_requests:sum:5925 + expr: vector(1) + labels: + job: job5925 + - record: job:http_inprogress_requests:sum:5926 + expr: vector(1) + labels: + job: job5926 + - record: job:http_inprogress_requests:sum:5927 + expr: vector(1) + labels: + job: job5927 + - record: job:http_inprogress_requests:sum:5928 + expr: vector(1) + labels: + job: job5928 + - record: job:http_inprogress_requests:sum:5929 + expr: vector(1) + labels: + job: job5929 + - record: job:http_inprogress_requests:sum:5930 + expr: vector(1) + labels: + job: job5930 + - record: job:http_inprogress_requests:sum:5931 + expr: vector(1) + labels: + job: job5931 + - record: job:http_inprogress_requests:sum:5932 + expr: vector(1) + labels: + job: job5932 + - record: job:http_inprogress_requests:sum:5933 + expr: vector(1) + labels: + job: job5933 + - record: job:http_inprogress_requests:sum:5934 + expr: vector(1) + labels: + job: job5934 + - record: job:http_inprogress_requests:sum:5935 + expr: vector(1) + labels: + job: job5935 + - record: job:http_inprogress_requests:sum:5936 + expr: vector(1) + labels: + job: job5936 + - record: job:http_inprogress_requests:sum:5937 + expr: vector(1) + labels: + job: job5937 + - record: job:http_inprogress_requests:sum:5938 + expr: vector(1) + labels: + job: job5938 + - record: job:http_inprogress_requests:sum:5939 + expr: vector(1) + labels: + job: job5939 + - record: job:http_inprogress_requests:sum:5940 + expr: vector(1) + labels: + job: job5940 + - record: job:http_inprogress_requests:sum:5941 + expr: vector(1) + labels: + job: job5941 + - record: job:http_inprogress_requests:sum:5942 + expr: vector(1) + labels: + job: job5942 + - record: job:http_inprogress_requests:sum:5943 + expr: vector(1) + labels: + job: job5943 + - record: job:http_inprogress_requests:sum:5944 + expr: vector(1) + labels: + job: job5944 + - record: job:http_inprogress_requests:sum:5945 + expr: vector(1) + labels: + job: job5945 + - record: job:http_inprogress_requests:sum:5946 + expr: vector(1) + labels: + job: job5946 + - record: job:http_inprogress_requests:sum:5947 + expr: vector(1) + labels: + job: job5947 + - record: job:http_inprogress_requests:sum:5948 + expr: vector(1) + labels: + job: job5948 + - record: job:http_inprogress_requests:sum:5949 + expr: vector(1) + labels: + job: job5949 + - record: job:http_inprogress_requests:sum:5950 + expr: vector(1) + labels: + job: job5950 + - record: job:http_inprogress_requests:sum:5951 + expr: vector(1) + labels: + job: job5951 + - record: job:http_inprogress_requests:sum:5952 + expr: vector(1) + labels: + job: job5952 + - record: job:http_inprogress_requests:sum:5953 + expr: vector(1) + labels: + job: job5953 + - record: job:http_inprogress_requests:sum:5954 + expr: vector(1) + labels: + job: job5954 + - record: job:http_inprogress_requests:sum:5955 + expr: vector(1) + labels: + job: job5955 + - record: job:http_inprogress_requests:sum:5956 + expr: vector(1) + labels: + job: job5956 + - record: job:http_inprogress_requests:sum:5957 + expr: vector(1) + labels: + job: job5957 + - record: job:http_inprogress_requests:sum:5958 + expr: vector(1) + labels: + job: job5958 + - record: job:http_inprogress_requests:sum:5959 + expr: vector(1) + labels: + job: job5959 + - record: job:http_inprogress_requests:sum:5960 + expr: vector(1) + labels: + job: job5960 + - record: job:http_inprogress_requests:sum:5961 + expr: vector(1) + labels: + job: job5961 + - record: job:http_inprogress_requests:sum:5962 + expr: vector(1) + labels: + job: job5962 + - record: job:http_inprogress_requests:sum:5963 + expr: vector(1) + labels: + job: job5963 + - record: job:http_inprogress_requests:sum:5964 + expr: vector(1) + labels: + job: job5964 + - record: job:http_inprogress_requests:sum:5965 + expr: vector(1) + labels: + job: job5965 + - record: job:http_inprogress_requests:sum:5966 + expr: vector(1) + labels: + job: job5966 + - record: job:http_inprogress_requests:sum:5967 + expr: vector(1) + labels: + job: job5967 + - record: job:http_inprogress_requests:sum:5968 + expr: vector(1) + labels: + job: job5968 + - record: job:http_inprogress_requests:sum:5969 + expr: vector(1) + labels: + job: job5969 + - record: job:http_inprogress_requests:sum:5970 + expr: vector(1) + labels: + job: job5970 + - record: job:http_inprogress_requests:sum:5971 + expr: vector(1) + labels: + job: job5971 + - record: job:http_inprogress_requests:sum:5972 + expr: vector(1) + labels: + job: job5972 + - record: job:http_inprogress_requests:sum:5973 + expr: vector(1) + labels: + job: job5973 + - record: job:http_inprogress_requests:sum:5974 + expr: vector(1) + labels: + job: job5974 + - record: job:http_inprogress_requests:sum:5975 + expr: vector(1) + labels: + job: job5975 + - record: job:http_inprogress_requests:sum:5976 + expr: vector(1) + labels: + job: job5976 + - record: job:http_inprogress_requests:sum:5977 + expr: vector(1) + labels: + job: job5977 + - record: job:http_inprogress_requests:sum:5978 + expr: vector(1) + labels: + job: job5978 + - record: job:http_inprogress_requests:sum:5979 + expr: vector(1) + labels: + job: job5979 + - record: job:http_inprogress_requests:sum:5980 + expr: vector(1) + labels: + job: job5980 + - record: job:http_inprogress_requests:sum:5981 + expr: vector(1) + labels: + job: job5981 + - record: job:http_inprogress_requests:sum:5982 + expr: vector(1) + labels: + job: job5982 + - record: job:http_inprogress_requests:sum:5983 + expr: vector(1) + labels: + job: job5983 + - record: job:http_inprogress_requests:sum:5984 + expr: vector(1) + labels: + job: job5984 + - record: job:http_inprogress_requests:sum:5985 + expr: vector(1) + labels: + job: job5985 + - record: job:http_inprogress_requests:sum:5986 + expr: vector(1) + labels: + job: job5986 + - record: job:http_inprogress_requests:sum:5987 + expr: vector(1) + labels: + job: job5987 + - record: job:http_inprogress_requests:sum:5988 + expr: vector(1) + labels: + job: job5988 + - record: job:http_inprogress_requests:sum:5989 + expr: vector(1) + labels: + job: job5989 + - record: job:http_inprogress_requests:sum:5990 + expr: vector(1) + labels: + job: job5990 + - record: job:http_inprogress_requests:sum:5991 + expr: vector(1) + labels: + job: job5991 + - record: job:http_inprogress_requests:sum:5992 + expr: vector(1) + labels: + job: job5992 + - record: job:http_inprogress_requests:sum:5993 + expr: vector(1) + labels: + job: job5993 + - record: job:http_inprogress_requests:sum:5994 + expr: vector(1) + labels: + job: job5994 + - record: job:http_inprogress_requests:sum:5995 + expr: vector(1) + labels: + job: job5995 + - record: job:http_inprogress_requests:sum:5996 + expr: vector(1) + labels: + job: job5996 + - record: job:http_inprogress_requests:sum:5997 + expr: vector(1) + labels: + job: job5997 + - record: job:http_inprogress_requests:sum:5998 + expr: vector(1) + labels: + job: job5998 + - record: job:http_inprogress_requests:sum:5999 + expr: vector(1) + labels: + job: job5999 + - record: job:http_inprogress_requests:sum:6000 + expr: vector(1) + labels: + job: job6000 + - record: job:http_inprogress_requests:sum:6001 + expr: vector(1) + labels: + job: job6001 + - record: job:http_inprogress_requests:sum:6002 + expr: vector(1) + labels: + job: job6002 + - record: job:http_inprogress_requests:sum:6003 + expr: vector(1) + labels: + job: job6003 + - record: job:http_inprogress_requests:sum:6004 + expr: vector(1) + labels: + job: job6004 + - record: job:http_inprogress_requests:sum:6005 + expr: vector(1) + labels: + job: job6005 + - record: job:http_inprogress_requests:sum:6006 + expr: vector(1) + labels: + job: job6006 + - record: job:http_inprogress_requests:sum:6007 + expr: vector(1) + labels: + job: job6007 + - record: job:http_inprogress_requests:sum:6008 + expr: vector(1) + labels: + job: job6008 + - record: job:http_inprogress_requests:sum:6009 + expr: vector(1) + labels: + job: job6009 + - record: job:http_inprogress_requests:sum:6010 + expr: vector(1) + labels: + job: job6010 + - record: job:http_inprogress_requests:sum:6011 + expr: vector(1) + labels: + job: job6011 + - record: job:http_inprogress_requests:sum:6012 + expr: vector(1) + labels: + job: job6012 + - record: job:http_inprogress_requests:sum:6013 + expr: vector(1) + labels: + job: job6013 + - record: job:http_inprogress_requests:sum:6014 + expr: vector(1) + labels: + job: job6014 + - record: job:http_inprogress_requests:sum:6015 + expr: vector(1) + labels: + job: job6015 + - record: job:http_inprogress_requests:sum:6016 + expr: vector(1) + labels: + job: job6016 + - record: job:http_inprogress_requests:sum:6017 + expr: vector(1) + labels: + job: job6017 + - record: job:http_inprogress_requests:sum:6018 + expr: vector(1) + labels: + job: job6018 + - record: job:http_inprogress_requests:sum:6019 + expr: vector(1) + labels: + job: job6019 + - record: job:http_inprogress_requests:sum:6020 + expr: vector(1) + labels: + job: job6020 + - record: job:http_inprogress_requests:sum:6021 + expr: vector(1) + labels: + job: job6021 + - record: job:http_inprogress_requests:sum:6022 + expr: vector(1) + labels: + job: job6022 + - record: job:http_inprogress_requests:sum:6023 + expr: vector(1) + labels: + job: job6023 + - record: job:http_inprogress_requests:sum:6024 + expr: vector(1) + labels: + job: job6024 + - record: job:http_inprogress_requests:sum:6025 + expr: vector(1) + labels: + job: job6025 + - record: job:http_inprogress_requests:sum:6026 + expr: vector(1) + labels: + job: job6026 + - record: job:http_inprogress_requests:sum:6027 + expr: vector(1) + labels: + job: job6027 + - record: job:http_inprogress_requests:sum:6028 + expr: vector(1) + labels: + job: job6028 + - record: job:http_inprogress_requests:sum:6029 + expr: vector(1) + labels: + job: job6029 + - record: job:http_inprogress_requests:sum:6030 + expr: vector(1) + labels: + job: job6030 + - record: job:http_inprogress_requests:sum:6031 + expr: vector(1) + labels: + job: job6031 + - record: job:http_inprogress_requests:sum:6032 + expr: vector(1) + labels: + job: job6032 + - record: job:http_inprogress_requests:sum:6033 + expr: vector(1) + labels: + job: job6033 + - record: job:http_inprogress_requests:sum:6034 + expr: vector(1) + labels: + job: job6034 + - record: job:http_inprogress_requests:sum:6035 + expr: vector(1) + labels: + job: job6035 + - record: job:http_inprogress_requests:sum:6036 + expr: vector(1) + labels: + job: job6036 + - record: job:http_inprogress_requests:sum:6037 + expr: vector(1) + labels: + job: job6037 + - record: job:http_inprogress_requests:sum:6038 + expr: vector(1) + labels: + job: job6038 + - record: job:http_inprogress_requests:sum:6039 + expr: vector(1) + labels: + job: job6039 + - record: job:http_inprogress_requests:sum:6040 + expr: vector(1) + labels: + job: job6040 + - record: job:http_inprogress_requests:sum:6041 + expr: vector(1) + labels: + job: job6041 + - record: job:http_inprogress_requests:sum:6042 + expr: vector(1) + labels: + job: job6042 + - record: job:http_inprogress_requests:sum:6043 + expr: vector(1) + labels: + job: job6043 + - record: job:http_inprogress_requests:sum:6044 + expr: vector(1) + labels: + job: job6044 + - record: job:http_inprogress_requests:sum:6045 + expr: vector(1) + labels: + job: job6045 + - record: job:http_inprogress_requests:sum:6046 + expr: vector(1) + labels: + job: job6046 + - record: job:http_inprogress_requests:sum:6047 + expr: vector(1) + labels: + job: job6047 + - record: job:http_inprogress_requests:sum:6048 + expr: vector(1) + labels: + job: job6048 + - record: job:http_inprogress_requests:sum:6049 + expr: vector(1) + labels: + job: job6049 + - record: job:http_inprogress_requests:sum:6050 + expr: vector(1) + labels: + job: job6050 + - record: job:http_inprogress_requests:sum:6051 + expr: vector(1) + labels: + job: job6051 + - record: job:http_inprogress_requests:sum:6052 + expr: vector(1) + labels: + job: job6052 + - record: job:http_inprogress_requests:sum:6053 + expr: vector(1) + labels: + job: job6053 + - record: job:http_inprogress_requests:sum:6054 + expr: vector(1) + labels: + job: job6054 + - record: job:http_inprogress_requests:sum:6055 + expr: vector(1) + labels: + job: job6055 + - record: job:http_inprogress_requests:sum:6056 + expr: vector(1) + labels: + job: job6056 + - record: job:http_inprogress_requests:sum:6057 + expr: vector(1) + labels: + job: job6057 + - record: job:http_inprogress_requests:sum:6058 + expr: vector(1) + labels: + job: job6058 + - record: job:http_inprogress_requests:sum:6059 + expr: vector(1) + labels: + job: job6059 + - record: job:http_inprogress_requests:sum:6060 + expr: vector(1) + labels: + job: job6060 + - record: job:http_inprogress_requests:sum:6061 + expr: vector(1) + labels: + job: job6061 + - record: job:http_inprogress_requests:sum:6062 + expr: vector(1) + labels: + job: job6062 + - record: job:http_inprogress_requests:sum:6063 + expr: vector(1) + labels: + job: job6063 + - record: job:http_inprogress_requests:sum:6064 + expr: vector(1) + labels: + job: job6064 + - record: job:http_inprogress_requests:sum:6065 + expr: vector(1) + labels: + job: job6065 + - record: job:http_inprogress_requests:sum:6066 + expr: vector(1) + labels: + job: job6066 + - record: job:http_inprogress_requests:sum:6067 + expr: vector(1) + labels: + job: job6067 + - record: job:http_inprogress_requests:sum:6068 + expr: vector(1) + labels: + job: job6068 + - record: job:http_inprogress_requests:sum:6069 + expr: vector(1) + labels: + job: job6069 + - record: job:http_inprogress_requests:sum:6070 + expr: vector(1) + labels: + job: job6070 + - record: job:http_inprogress_requests:sum:6071 + expr: vector(1) + labels: + job: job6071 + - record: job:http_inprogress_requests:sum:6072 + expr: vector(1) + labels: + job: job6072 + - record: job:http_inprogress_requests:sum:6073 + expr: vector(1) + labels: + job: job6073 + - record: job:http_inprogress_requests:sum:6074 + expr: vector(1) + labels: + job: job6074 + - record: job:http_inprogress_requests:sum:6075 + expr: vector(1) + labels: + job: job6075 + - record: job:http_inprogress_requests:sum:6076 + expr: vector(1) + labels: + job: job6076 + - record: job:http_inprogress_requests:sum:6077 + expr: vector(1) + labels: + job: job6077 + - record: job:http_inprogress_requests:sum:6078 + expr: vector(1) + labels: + job: job6078 + - record: job:http_inprogress_requests:sum:6079 + expr: vector(1) + labels: + job: job6079 + - record: job:http_inprogress_requests:sum:6080 + expr: vector(1) + labels: + job: job6080 + - record: job:http_inprogress_requests:sum:6081 + expr: vector(1) + labels: + job: job6081 + - record: job:http_inprogress_requests:sum:6082 + expr: vector(1) + labels: + job: job6082 + - record: job:http_inprogress_requests:sum:6083 + expr: vector(1) + labels: + job: job6083 + - record: job:http_inprogress_requests:sum:6084 + expr: vector(1) + labels: + job: job6084 + - record: job:http_inprogress_requests:sum:6085 + expr: vector(1) + labels: + job: job6085 + - record: job:http_inprogress_requests:sum:6086 + expr: vector(1) + labels: + job: job6086 + - record: job:http_inprogress_requests:sum:6087 + expr: vector(1) + labels: + job: job6087 + - record: job:http_inprogress_requests:sum:6088 + expr: vector(1) + labels: + job: job6088 + - record: job:http_inprogress_requests:sum:6089 + expr: vector(1) + labels: + job: job6089 + - record: job:http_inprogress_requests:sum:6090 + expr: vector(1) + labels: + job: job6090 + - record: job:http_inprogress_requests:sum:6091 + expr: vector(1) + labels: + job: job6091 + - record: job:http_inprogress_requests:sum:6092 + expr: vector(1) + labels: + job: job6092 + - record: job:http_inprogress_requests:sum:6093 + expr: vector(1) + labels: + job: job6093 + - record: job:http_inprogress_requests:sum:6094 + expr: vector(1) + labels: + job: job6094 + - record: job:http_inprogress_requests:sum:6095 + expr: vector(1) + labels: + job: job6095 + - record: job:http_inprogress_requests:sum:6096 + expr: vector(1) + labels: + job: job6096 + - record: job:http_inprogress_requests:sum:6097 + expr: vector(1) + labels: + job: job6097 + - record: job:http_inprogress_requests:sum:6098 + expr: vector(1) + labels: + job: job6098 + - record: job:http_inprogress_requests:sum:6099 + expr: vector(1) + labels: + job: job6099 + - record: job:http_inprogress_requests:sum:6100 + expr: vector(1) + labels: + job: job6100 + - record: job:http_inprogress_requests:sum:6101 + expr: vector(1) + labels: + job: job6101 + - record: job:http_inprogress_requests:sum:6102 + expr: vector(1) + labels: + job: job6102 + - record: job:http_inprogress_requests:sum:6103 + expr: vector(1) + labels: + job: job6103 + - record: job:http_inprogress_requests:sum:6104 + expr: vector(1) + labels: + job: job6104 + - record: job:http_inprogress_requests:sum:6105 + expr: vector(1) + labels: + job: job6105 + - record: job:http_inprogress_requests:sum:6106 + expr: vector(1) + labels: + job: job6106 + - record: job:http_inprogress_requests:sum:6107 + expr: vector(1) + labels: + job: job6107 + - record: job:http_inprogress_requests:sum:6108 + expr: vector(1) + labels: + job: job6108 + - record: job:http_inprogress_requests:sum:6109 + expr: vector(1) + labels: + job: job6109 + - record: job:http_inprogress_requests:sum:6110 + expr: vector(1) + labels: + job: job6110 + - record: job:http_inprogress_requests:sum:6111 + expr: vector(1) + labels: + job: job6111 + - record: job:http_inprogress_requests:sum:6112 + expr: vector(1) + labels: + job: job6112 + - record: job:http_inprogress_requests:sum:6113 + expr: vector(1) + labels: + job: job6113 + - record: job:http_inprogress_requests:sum:6114 + expr: vector(1) + labels: + job: job6114 + - record: job:http_inprogress_requests:sum:6115 + expr: vector(1) + labels: + job: job6115 + - record: job:http_inprogress_requests:sum:6116 + expr: vector(1) + labels: + job: job6116 + - record: job:http_inprogress_requests:sum:6117 + expr: vector(1) + labels: + job: job6117 + - record: job:http_inprogress_requests:sum:6118 + expr: vector(1) + labels: + job: job6118 + - record: job:http_inprogress_requests:sum:6119 + expr: vector(1) + labels: + job: job6119 + - record: job:http_inprogress_requests:sum:6120 + expr: vector(1) + labels: + job: job6120 + - record: job:http_inprogress_requests:sum:6121 + expr: vector(1) + labels: + job: job6121 + - record: job:http_inprogress_requests:sum:6122 + expr: vector(1) + labels: + job: job6122 + - record: job:http_inprogress_requests:sum:6123 + expr: vector(1) + labels: + job: job6123 + - record: job:http_inprogress_requests:sum:6124 + expr: vector(1) + labels: + job: job6124 + - record: job:http_inprogress_requests:sum:6125 + expr: vector(1) + labels: + job: job6125 + - record: job:http_inprogress_requests:sum:6126 + expr: vector(1) + labels: + job: job6126 + - record: job:http_inprogress_requests:sum:6127 + expr: vector(1) + labels: + job: job6127 + - record: job:http_inprogress_requests:sum:6128 + expr: vector(1) + labels: + job: job6128 + - record: job:http_inprogress_requests:sum:6129 + expr: vector(1) + labels: + job: job6129 + - record: job:http_inprogress_requests:sum:6130 + expr: vector(1) + labels: + job: job6130 + - record: job:http_inprogress_requests:sum:6131 + expr: vector(1) + labels: + job: job6131 + - record: job:http_inprogress_requests:sum:6132 + expr: vector(1) + labels: + job: job6132 + - record: job:http_inprogress_requests:sum:6133 + expr: vector(1) + labels: + job: job6133 + - record: job:http_inprogress_requests:sum:6134 + expr: vector(1) + labels: + job: job6134 + - record: job:http_inprogress_requests:sum:6135 + expr: vector(1) + labels: + job: job6135 + - record: job:http_inprogress_requests:sum:6136 + expr: vector(1) + labels: + job: job6136 + - record: job:http_inprogress_requests:sum:6137 + expr: vector(1) + labels: + job: job6137 + - record: job:http_inprogress_requests:sum:6138 + expr: vector(1) + labels: + job: job6138 + - record: job:http_inprogress_requests:sum:6139 + expr: vector(1) + labels: + job: job6139 + - record: job:http_inprogress_requests:sum:6140 + expr: vector(1) + labels: + job: job6140 + - record: job:http_inprogress_requests:sum:6141 + expr: vector(1) + labels: + job: job6141 + - record: job:http_inprogress_requests:sum:6142 + expr: vector(1) + labels: + job: job6142 + - record: job:http_inprogress_requests:sum:6143 + expr: vector(1) + labels: + job: job6143 + - record: job:http_inprogress_requests:sum:6144 + expr: vector(1) + labels: + job: job6144 + - record: job:http_inprogress_requests:sum:6145 + expr: vector(1) + labels: + job: job6145 + - record: job:http_inprogress_requests:sum:6146 + expr: vector(1) + labels: + job: job6146 + - record: job:http_inprogress_requests:sum:6147 + expr: vector(1) + labels: + job: job6147 + - record: job:http_inprogress_requests:sum:6148 + expr: vector(1) + labels: + job: job6148 + - record: job:http_inprogress_requests:sum:6149 + expr: vector(1) + labels: + job: job6149 + - record: job:http_inprogress_requests:sum:6150 + expr: vector(1) + labels: + job: job6150 + - record: job:http_inprogress_requests:sum:6151 + expr: vector(1) + labels: + job: job6151 + - record: job:http_inprogress_requests:sum:6152 + expr: vector(1) + labels: + job: job6152 + - record: job:http_inprogress_requests:sum:6153 + expr: vector(1) + labels: + job: job6153 + - record: job:http_inprogress_requests:sum:6154 + expr: vector(1) + labels: + job: job6154 + - record: job:http_inprogress_requests:sum:6155 + expr: vector(1) + labels: + job: job6155 + - record: job:http_inprogress_requests:sum:6156 + expr: vector(1) + labels: + job: job6156 + - record: job:http_inprogress_requests:sum:6157 + expr: vector(1) + labels: + job: job6157 + - record: job:http_inprogress_requests:sum:6158 + expr: vector(1) + labels: + job: job6158 + - record: job:http_inprogress_requests:sum:6159 + expr: vector(1) + labels: + job: job6159 + - record: job:http_inprogress_requests:sum:6160 + expr: vector(1) + labels: + job: job6160 + - record: job:http_inprogress_requests:sum:6161 + expr: vector(1) + labels: + job: job6161 + - record: job:http_inprogress_requests:sum:6162 + expr: vector(1) + labels: + job: job6162 + - record: job:http_inprogress_requests:sum:6163 + expr: vector(1) + labels: + job: job6163 + - record: job:http_inprogress_requests:sum:6164 + expr: vector(1) + labels: + job: job6164 + - record: job:http_inprogress_requests:sum:6165 + expr: vector(1) + labels: + job: job6165 + - record: job:http_inprogress_requests:sum:6166 + expr: vector(1) + labels: + job: job6166 + - record: job:http_inprogress_requests:sum:6167 + expr: vector(1) + labels: + job: job6167 + - record: job:http_inprogress_requests:sum:6168 + expr: vector(1) + labels: + job: job6168 + - record: job:http_inprogress_requests:sum:6169 + expr: vector(1) + labels: + job: job6169 + - record: job:http_inprogress_requests:sum:6170 + expr: vector(1) + labels: + job: job6170 + - record: job:http_inprogress_requests:sum:6171 + expr: vector(1) + labels: + job: job6171 + - record: job:http_inprogress_requests:sum:6172 + expr: vector(1) + labels: + job: job6172 + - record: job:http_inprogress_requests:sum:6173 + expr: vector(1) + labels: + job: job6173 + - record: job:http_inprogress_requests:sum:6174 + expr: vector(1) + labels: + job: job6174 + - record: job:http_inprogress_requests:sum:6175 + expr: vector(1) + labels: + job: job6175 + - record: job:http_inprogress_requests:sum:6176 + expr: vector(1) + labels: + job: job6176 + - record: job:http_inprogress_requests:sum:6177 + expr: vector(1) + labels: + job: job6177 + - record: job:http_inprogress_requests:sum:6178 + expr: vector(1) + labels: + job: job6178 + - record: job:http_inprogress_requests:sum:6179 + expr: vector(1) + labels: + job: job6179 + - record: job:http_inprogress_requests:sum:6180 + expr: vector(1) + labels: + job: job6180 + - record: job:http_inprogress_requests:sum:6181 + expr: vector(1) + labels: + job: job6181 + - record: job:http_inprogress_requests:sum:6182 + expr: vector(1) + labels: + job: job6182 + - record: job:http_inprogress_requests:sum:6183 + expr: vector(1) + labels: + job: job6183 + - record: job:http_inprogress_requests:sum:6184 + expr: vector(1) + labels: + job: job6184 + - record: job:http_inprogress_requests:sum:6185 + expr: vector(1) + labels: + job: job6185 + - record: job:http_inprogress_requests:sum:6186 + expr: vector(1) + labels: + job: job6186 + - record: job:http_inprogress_requests:sum:6187 + expr: vector(1) + labels: + job: job6187 + - record: job:http_inprogress_requests:sum:6188 + expr: vector(1) + labels: + job: job6188 + - record: job:http_inprogress_requests:sum:6189 + expr: vector(1) + labels: + job: job6189 + - record: job:http_inprogress_requests:sum:6190 + expr: vector(1) + labels: + job: job6190 + - record: job:http_inprogress_requests:sum:6191 + expr: vector(1) + labels: + job: job6191 + - record: job:http_inprogress_requests:sum:6192 + expr: vector(1) + labels: + job: job6192 + - record: job:http_inprogress_requests:sum:6193 + expr: vector(1) + labels: + job: job6193 + - record: job:http_inprogress_requests:sum:6194 + expr: vector(1) + labels: + job: job6194 + - record: job:http_inprogress_requests:sum:6195 + expr: vector(1) + labels: + job: job6195 + - record: job:http_inprogress_requests:sum:6196 + expr: vector(1) + labels: + job: job6196 + - record: job:http_inprogress_requests:sum:6197 + expr: vector(1) + labels: + job: job6197 + - record: job:http_inprogress_requests:sum:6198 + expr: vector(1) + labels: + job: job6198 + - record: job:http_inprogress_requests:sum:6199 + expr: vector(1) + labels: + job: job6199 + - record: job:http_inprogress_requests:sum:6200 + expr: vector(1) + labels: + job: job6200 + - record: job:http_inprogress_requests:sum:6201 + expr: vector(1) + labels: + job: job6201 + - record: job:http_inprogress_requests:sum:6202 + expr: vector(1) + labels: + job: job6202 + - record: job:http_inprogress_requests:sum:6203 + expr: vector(1) + labels: + job: job6203 + - record: job:http_inprogress_requests:sum:6204 + expr: vector(1) + labels: + job: job6204 + - record: job:http_inprogress_requests:sum:6205 + expr: vector(1) + labels: + job: job6205 + - record: job:http_inprogress_requests:sum:6206 + expr: vector(1) + labels: + job: job6206 + - record: job:http_inprogress_requests:sum:6207 + expr: vector(1) + labels: + job: job6207 + - record: job:http_inprogress_requests:sum:6208 + expr: vector(1) + labels: + job: job6208 + - record: job:http_inprogress_requests:sum:6209 + expr: vector(1) + labels: + job: job6209 + - record: job:http_inprogress_requests:sum:6210 + expr: vector(1) + labels: + job: job6210 + - record: job:http_inprogress_requests:sum:6211 + expr: vector(1) + labels: + job: job6211 + - record: job:http_inprogress_requests:sum:6212 + expr: vector(1) + labels: + job: job6212 + - record: job:http_inprogress_requests:sum:6213 + expr: vector(1) + labels: + job: job6213 + - record: job:http_inprogress_requests:sum:6214 + expr: vector(1) + labels: + job: job6214 + - record: job:http_inprogress_requests:sum:6215 + expr: vector(1) + labels: + job: job6215 + - record: job:http_inprogress_requests:sum:6216 + expr: vector(1) + labels: + job: job6216 + - record: job:http_inprogress_requests:sum:6217 + expr: vector(1) + labels: + job: job6217 + - record: job:http_inprogress_requests:sum:6218 + expr: vector(1) + labels: + job: job6218 + - record: job:http_inprogress_requests:sum:6219 + expr: vector(1) + labels: + job: job6219 + - record: job:http_inprogress_requests:sum:6220 + expr: vector(1) + labels: + job: job6220 + - record: job:http_inprogress_requests:sum:6221 + expr: vector(1) + labels: + job: job6221 + - record: job:http_inprogress_requests:sum:6222 + expr: vector(1) + labels: + job: job6222 + - record: job:http_inprogress_requests:sum:6223 + expr: vector(1) + labels: + job: job6223 + - record: job:http_inprogress_requests:sum:6224 + expr: vector(1) + labels: + job: job6224 + - record: job:http_inprogress_requests:sum:6225 + expr: vector(1) + labels: + job: job6225 + - record: job:http_inprogress_requests:sum:6226 + expr: vector(1) + labels: + job: job6226 + - record: job:http_inprogress_requests:sum:6227 + expr: vector(1) + labels: + job: job6227 + - record: job:http_inprogress_requests:sum:6228 + expr: vector(1) + labels: + job: job6228 + - record: job:http_inprogress_requests:sum:6229 + expr: vector(1) + labels: + job: job6229 + - record: job:http_inprogress_requests:sum:6230 + expr: vector(1) + labels: + job: job6230 + - record: job:http_inprogress_requests:sum:6231 + expr: vector(1) + labels: + job: job6231 + - record: job:http_inprogress_requests:sum:6232 + expr: vector(1) + labels: + job: job6232 + - record: job:http_inprogress_requests:sum:6233 + expr: vector(1) + labels: + job: job6233 + - record: job:http_inprogress_requests:sum:6234 + expr: vector(1) + labels: + job: job6234 + - record: job:http_inprogress_requests:sum:6235 + expr: vector(1) + labels: + job: job6235 + - record: job:http_inprogress_requests:sum:6236 + expr: vector(1) + labels: + job: job6236 + - record: job:http_inprogress_requests:sum:6237 + expr: vector(1) + labels: + job: job6237 + - record: job:http_inprogress_requests:sum:6238 + expr: vector(1) + labels: + job: job6238 + - record: job:http_inprogress_requests:sum:6239 + expr: vector(1) + labels: + job: job6239 + - record: job:http_inprogress_requests:sum:6240 + expr: vector(1) + labels: + job: job6240 + - record: job:http_inprogress_requests:sum:6241 + expr: vector(1) + labels: + job: job6241 + - record: job:http_inprogress_requests:sum:6242 + expr: vector(1) + labels: + job: job6242 + - record: job:http_inprogress_requests:sum:6243 + expr: vector(1) + labels: + job: job6243 + - record: job:http_inprogress_requests:sum:6244 + expr: vector(1) + labels: + job: job6244 + - record: job:http_inprogress_requests:sum:6245 + expr: vector(1) + labels: + job: job6245 + - record: job:http_inprogress_requests:sum:6246 + expr: vector(1) + labels: + job: job6246 + - record: job:http_inprogress_requests:sum:6247 + expr: vector(1) + labels: + job: job6247 + - record: job:http_inprogress_requests:sum:6248 + expr: vector(1) + labels: + job: job6248 + - record: job:http_inprogress_requests:sum:6249 + expr: vector(1) + labels: + job: job6249 + - record: job:http_inprogress_requests:sum:6250 + expr: vector(1) + labels: + job: job6250 + - record: job:http_inprogress_requests:sum:6251 + expr: vector(1) + labels: + job: job6251 + - record: job:http_inprogress_requests:sum:6252 + expr: vector(1) + labels: + job: job6252 + - record: job:http_inprogress_requests:sum:6253 + expr: vector(1) + labels: + job: job6253 + - record: job:http_inprogress_requests:sum:6254 + expr: vector(1) + labels: + job: job6254 + - record: job:http_inprogress_requests:sum:6255 + expr: vector(1) + labels: + job: job6255 + - record: job:http_inprogress_requests:sum:6256 + expr: vector(1) + labels: + job: job6256 + - record: job:http_inprogress_requests:sum:6257 + expr: vector(1) + labels: + job: job6257 + - record: job:http_inprogress_requests:sum:6258 + expr: vector(1) + labels: + job: job6258 + - record: job:http_inprogress_requests:sum:6259 + expr: vector(1) + labels: + job: job6259 + - record: job:http_inprogress_requests:sum:6260 + expr: vector(1) + labels: + job: job6260 + - record: job:http_inprogress_requests:sum:6261 + expr: vector(1) + labels: + job: job6261 + - record: job:http_inprogress_requests:sum:6262 + expr: vector(1) + labels: + job: job6262 + - record: job:http_inprogress_requests:sum:6263 + expr: vector(1) + labels: + job: job6263 + - record: job:http_inprogress_requests:sum:6264 + expr: vector(1) + labels: + job: job6264 + - record: job:http_inprogress_requests:sum:6265 + expr: vector(1) + labels: + job: job6265 + - record: job:http_inprogress_requests:sum:6266 + expr: vector(1) + labels: + job: job6266 + - record: job:http_inprogress_requests:sum:6267 + expr: vector(1) + labels: + job: job6267 + - record: job:http_inprogress_requests:sum:6268 + expr: vector(1) + labels: + job: job6268 + - record: job:http_inprogress_requests:sum:6269 + expr: vector(1) + labels: + job: job6269 + - record: job:http_inprogress_requests:sum:6270 + expr: vector(1) + labels: + job: job6270 + - record: job:http_inprogress_requests:sum:6271 + expr: vector(1) + labels: + job: job6271 + - record: job:http_inprogress_requests:sum:6272 + expr: vector(1) + labels: + job: job6272 + - record: job:http_inprogress_requests:sum:6273 + expr: vector(1) + labels: + job: job6273 + - record: job:http_inprogress_requests:sum:6274 + expr: vector(1) + labels: + job: job6274 + - record: job:http_inprogress_requests:sum:6275 + expr: vector(1) + labels: + job: job6275 + - record: job:http_inprogress_requests:sum:6276 + expr: vector(1) + labels: + job: job6276 + - record: job:http_inprogress_requests:sum:6277 + expr: vector(1) + labels: + job: job6277 + - record: job:http_inprogress_requests:sum:6278 + expr: vector(1) + labels: + job: job6278 + - record: job:http_inprogress_requests:sum:6279 + expr: vector(1) + labels: + job: job6279 + - record: job:http_inprogress_requests:sum:6280 + expr: vector(1) + labels: + job: job6280 + - record: job:http_inprogress_requests:sum:6281 + expr: vector(1) + labels: + job: job6281 + - record: job:http_inprogress_requests:sum:6282 + expr: vector(1) + labels: + job: job6282 + - record: job:http_inprogress_requests:sum:6283 + expr: vector(1) + labels: + job: job6283 + - record: job:http_inprogress_requests:sum:6284 + expr: vector(1) + labels: + job: job6284 + - record: job:http_inprogress_requests:sum:6285 + expr: vector(1) + labels: + job: job6285 + - record: job:http_inprogress_requests:sum:6286 + expr: vector(1) + labels: + job: job6286 + - record: job:http_inprogress_requests:sum:6287 + expr: vector(1) + labels: + job: job6287 + - record: job:http_inprogress_requests:sum:6288 + expr: vector(1) + labels: + job: job6288 + - record: job:http_inprogress_requests:sum:6289 + expr: vector(1) + labels: + job: job6289 + - record: job:http_inprogress_requests:sum:6290 + expr: vector(1) + labels: + job: job6290 + - record: job:http_inprogress_requests:sum:6291 + expr: vector(1) + labels: + job: job6291 + - record: job:http_inprogress_requests:sum:6292 + expr: vector(1) + labels: + job: job6292 + - record: job:http_inprogress_requests:sum:6293 + expr: vector(1) + labels: + job: job6293 + - record: job:http_inprogress_requests:sum:6294 + expr: vector(1) + labels: + job: job6294 + - record: job:http_inprogress_requests:sum:6295 + expr: vector(1) + labels: + job: job6295 + - record: job:http_inprogress_requests:sum:6296 + expr: vector(1) + labels: + job: job6296 + - record: job:http_inprogress_requests:sum:6297 + expr: vector(1) + labels: + job: job6297 + - record: job:http_inprogress_requests:sum:6298 + expr: vector(1) + labels: + job: job6298 + - record: job:http_inprogress_requests:sum:6299 + expr: vector(1) + labels: + job: job6299 + - record: job:http_inprogress_requests:sum:6300 + expr: vector(1) + labels: + job: job6300 + - record: job:http_inprogress_requests:sum:6301 + expr: vector(1) + labels: + job: job6301 + - record: job:http_inprogress_requests:sum:6302 + expr: vector(1) + labels: + job: job6302 + - record: job:http_inprogress_requests:sum:6303 + expr: vector(1) + labels: + job: job6303 + - record: job:http_inprogress_requests:sum:6304 + expr: vector(1) + labels: + job: job6304 + - record: job:http_inprogress_requests:sum:6305 + expr: vector(1) + labels: + job: job6305 + - record: job:http_inprogress_requests:sum:6306 + expr: vector(1) + labels: + job: job6306 + - record: job:http_inprogress_requests:sum:6307 + expr: vector(1) + labels: + job: job6307 + - record: job:http_inprogress_requests:sum:6308 + expr: vector(1) + labels: + job: job6308 + - record: job:http_inprogress_requests:sum:6309 + expr: vector(1) + labels: + job: job6309 + - record: job:http_inprogress_requests:sum:6310 + expr: vector(1) + labels: + job: job6310 + - record: job:http_inprogress_requests:sum:6311 + expr: vector(1) + labels: + job: job6311 + - record: job:http_inprogress_requests:sum:6312 + expr: vector(1) + labels: + job: job6312 + - record: job:http_inprogress_requests:sum:6313 + expr: vector(1) + labels: + job: job6313 + - record: job:http_inprogress_requests:sum:6314 + expr: vector(1) + labels: + job: job6314 + - record: job:http_inprogress_requests:sum:6315 + expr: vector(1) + labels: + job: job6315 + - record: job:http_inprogress_requests:sum:6316 + expr: vector(1) + labels: + job: job6316 + - record: job:http_inprogress_requests:sum:6317 + expr: vector(1) + labels: + job: job6317 + - record: job:http_inprogress_requests:sum:6318 + expr: vector(1) + labels: + job: job6318 + - record: job:http_inprogress_requests:sum:6319 + expr: vector(1) + labels: + job: job6319 + - record: job:http_inprogress_requests:sum:6320 + expr: vector(1) + labels: + job: job6320 + - record: job:http_inprogress_requests:sum:6321 + expr: vector(1) + labels: + job: job6321 + - record: job:http_inprogress_requests:sum:6322 + expr: vector(1) + labels: + job: job6322 + - record: job:http_inprogress_requests:sum:6323 + expr: vector(1) + labels: + job: job6323 + - record: job:http_inprogress_requests:sum:6324 + expr: vector(1) + labels: + job: job6324 + - record: job:http_inprogress_requests:sum:6325 + expr: vector(1) + labels: + job: job6325 + - record: job:http_inprogress_requests:sum:6326 + expr: vector(1) + labels: + job: job6326 + - record: job:http_inprogress_requests:sum:6327 + expr: vector(1) + labels: + job: job6327 + - record: job:http_inprogress_requests:sum:6328 + expr: vector(1) + labels: + job: job6328 + - record: job:http_inprogress_requests:sum:6329 + expr: vector(1) + labels: + job: job6329 + - record: job:http_inprogress_requests:sum:6330 + expr: vector(1) + labels: + job: job6330 + - record: job:http_inprogress_requests:sum:6331 + expr: vector(1) + labels: + job: job6331 + - record: job:http_inprogress_requests:sum:6332 + expr: vector(1) + labels: + job: job6332 + - record: job:http_inprogress_requests:sum:6333 + expr: vector(1) + labels: + job: job6333 + - record: job:http_inprogress_requests:sum:6334 + expr: vector(1) + labels: + job: job6334 + - record: job:http_inprogress_requests:sum:6335 + expr: vector(1) + labels: + job: job6335 + - record: job:http_inprogress_requests:sum:6336 + expr: vector(1) + labels: + job: job6336 + - record: job:http_inprogress_requests:sum:6337 + expr: vector(1) + labels: + job: job6337 + - record: job:http_inprogress_requests:sum:6338 + expr: vector(1) + labels: + job: job6338 + - record: job:http_inprogress_requests:sum:6339 + expr: vector(1) + labels: + job: job6339 + - record: job:http_inprogress_requests:sum:6340 + expr: vector(1) + labels: + job: job6340 + - record: job:http_inprogress_requests:sum:6341 + expr: vector(1) + labels: + job: job6341 + - record: job:http_inprogress_requests:sum:6342 + expr: vector(1) + labels: + job: job6342 + - record: job:http_inprogress_requests:sum:6343 + expr: vector(1) + labels: + job: job6343 + - record: job:http_inprogress_requests:sum:6344 + expr: vector(1) + labels: + job: job6344 + - record: job:http_inprogress_requests:sum:6345 + expr: vector(1) + labels: + job: job6345 + - record: job:http_inprogress_requests:sum:6346 + expr: vector(1) + labels: + job: job6346 + - record: job:http_inprogress_requests:sum:6347 + expr: vector(1) + labels: + job: job6347 + - record: job:http_inprogress_requests:sum:6348 + expr: vector(1) + labels: + job: job6348 + - record: job:http_inprogress_requests:sum:6349 + expr: vector(1) + labels: + job: job6349 + - record: job:http_inprogress_requests:sum:6350 + expr: vector(1) + labels: + job: job6350 + - record: job:http_inprogress_requests:sum:6351 + expr: vector(1) + labels: + job: job6351 + - record: job:http_inprogress_requests:sum:6352 + expr: vector(1) + labels: + job: job6352 + - record: job:http_inprogress_requests:sum:6353 + expr: vector(1) + labels: + job: job6353 + - record: job:http_inprogress_requests:sum:6354 + expr: vector(1) + labels: + job: job6354 + - record: job:http_inprogress_requests:sum:6355 + expr: vector(1) + labels: + job: job6355 + - record: job:http_inprogress_requests:sum:6356 + expr: vector(1) + labels: + job: job6356 + - record: job:http_inprogress_requests:sum:6357 + expr: vector(1) + labels: + job: job6357 + - record: job:http_inprogress_requests:sum:6358 + expr: vector(1) + labels: + job: job6358 + - record: job:http_inprogress_requests:sum:6359 + expr: vector(1) + labels: + job: job6359 + - record: job:http_inprogress_requests:sum:6360 + expr: vector(1) + labels: + job: job6360 + - record: job:http_inprogress_requests:sum:6361 + expr: vector(1) + labels: + job: job6361 + - record: job:http_inprogress_requests:sum:6362 + expr: vector(1) + labels: + job: job6362 + - record: job:http_inprogress_requests:sum:6363 + expr: vector(1) + labels: + job: job6363 + - record: job:http_inprogress_requests:sum:6364 + expr: vector(1) + labels: + job: job6364 + - record: job:http_inprogress_requests:sum:6365 + expr: vector(1) + labels: + job: job6365 + - record: job:http_inprogress_requests:sum:6366 + expr: vector(1) + labels: + job: job6366 + - record: job:http_inprogress_requests:sum:6367 + expr: vector(1) + labels: + job: job6367 + - record: job:http_inprogress_requests:sum:6368 + expr: vector(1) + labels: + job: job6368 + - record: job:http_inprogress_requests:sum:6369 + expr: vector(1) + labels: + job: job6369 + - record: job:http_inprogress_requests:sum:6370 + expr: vector(1) + labels: + job: job6370 + - record: job:http_inprogress_requests:sum:6371 + expr: vector(1) + labels: + job: job6371 + - record: job:http_inprogress_requests:sum:6372 + expr: vector(1) + labels: + job: job6372 + - record: job:http_inprogress_requests:sum:6373 + expr: vector(1) + labels: + job: job6373 + - record: job:http_inprogress_requests:sum:6374 + expr: vector(1) + labels: + job: job6374 + - record: job:http_inprogress_requests:sum:6375 + expr: vector(1) + labels: + job: job6375 + - record: job:http_inprogress_requests:sum:6376 + expr: vector(1) + labels: + job: job6376 + - record: job:http_inprogress_requests:sum:6377 + expr: vector(1) + labels: + job: job6377 + - record: job:http_inprogress_requests:sum:6378 + expr: vector(1) + labels: + job: job6378 + - record: job:http_inprogress_requests:sum:6379 + expr: vector(1) + labels: + job: job6379 + - record: job:http_inprogress_requests:sum:6380 + expr: vector(1) + labels: + job: job6380 + - record: job:http_inprogress_requests:sum:6381 + expr: vector(1) + labels: + job: job6381 + - record: job:http_inprogress_requests:sum:6382 + expr: vector(1) + labels: + job: job6382 + - record: job:http_inprogress_requests:sum:6383 + expr: vector(1) + labels: + job: job6383 + - record: job:http_inprogress_requests:sum:6384 + expr: vector(1) + labels: + job: job6384 + - record: job:http_inprogress_requests:sum:6385 + expr: vector(1) + labels: + job: job6385 + - record: job:http_inprogress_requests:sum:6386 + expr: vector(1) + labels: + job: job6386 + - record: job:http_inprogress_requests:sum:6387 + expr: vector(1) + labels: + job: job6387 + - record: job:http_inprogress_requests:sum:6388 + expr: vector(1) + labels: + job: job6388 + - record: job:http_inprogress_requests:sum:6389 + expr: vector(1) + labels: + job: job6389 + - record: job:http_inprogress_requests:sum:6390 + expr: vector(1) + labels: + job: job6390 + - record: job:http_inprogress_requests:sum:6391 + expr: vector(1) + labels: + job: job6391 + - record: job:http_inprogress_requests:sum:6392 + expr: vector(1) + labels: + job: job6392 + - record: job:http_inprogress_requests:sum:6393 + expr: vector(1) + labels: + job: job6393 + - record: job:http_inprogress_requests:sum:6394 + expr: vector(1) + labels: + job: job6394 + - record: job:http_inprogress_requests:sum:6395 + expr: vector(1) + labels: + job: job6395 + - record: job:http_inprogress_requests:sum:6396 + expr: vector(1) + labels: + job: job6396 + - record: job:http_inprogress_requests:sum:6397 + expr: vector(1) + labels: + job: job6397 + - record: job:http_inprogress_requests:sum:6398 + expr: vector(1) + labels: + job: job6398 + - record: job:http_inprogress_requests:sum:6399 + expr: vector(1) + labels: + job: job6399 + - record: job:http_inprogress_requests:sum:6400 + expr: vector(1) + labels: + job: job6400 + - record: job:http_inprogress_requests:sum:6401 + expr: vector(1) + labels: + job: job6401 + - record: job:http_inprogress_requests:sum:6402 + expr: vector(1) + labels: + job: job6402 + - record: job:http_inprogress_requests:sum:6403 + expr: vector(1) + labels: + job: job6403 + - record: job:http_inprogress_requests:sum:6404 + expr: vector(1) + labels: + job: job6404 + - record: job:http_inprogress_requests:sum:6405 + expr: vector(1) + labels: + job: job6405 + - record: job:http_inprogress_requests:sum:6406 + expr: vector(1) + labels: + job: job6406 + - record: job:http_inprogress_requests:sum:6407 + expr: vector(1) + labels: + job: job6407 + - record: job:http_inprogress_requests:sum:6408 + expr: vector(1) + labels: + job: job6408 + - record: job:http_inprogress_requests:sum:6409 + expr: vector(1) + labels: + job: job6409 + - record: job:http_inprogress_requests:sum:6410 + expr: vector(1) + labels: + job: job6410 + - record: job:http_inprogress_requests:sum:6411 + expr: vector(1) + labels: + job: job6411 + - record: job:http_inprogress_requests:sum:6412 + expr: vector(1) + labels: + job: job6412 + - record: job:http_inprogress_requests:sum:6413 + expr: vector(1) + labels: + job: job6413 + - record: job:http_inprogress_requests:sum:6414 + expr: vector(1) + labels: + job: job6414 + - record: job:http_inprogress_requests:sum:6415 + expr: vector(1) + labels: + job: job6415 + - record: job:http_inprogress_requests:sum:6416 + expr: vector(1) + labels: + job: job6416 + - record: job:http_inprogress_requests:sum:6417 + expr: vector(1) + labels: + job: job6417 + - record: job:http_inprogress_requests:sum:6418 + expr: vector(1) + labels: + job: job6418 + - record: job:http_inprogress_requests:sum:6419 + expr: vector(1) + labels: + job: job6419 + - record: job:http_inprogress_requests:sum:6420 + expr: vector(1) + labels: + job: job6420 + - record: job:http_inprogress_requests:sum:6421 + expr: vector(1) + labels: + job: job6421 + - record: job:http_inprogress_requests:sum:6422 + expr: vector(1) + labels: + job: job6422 + - record: job:http_inprogress_requests:sum:6423 + expr: vector(1) + labels: + job: job6423 + - record: job:http_inprogress_requests:sum:6424 + expr: vector(1) + labels: + job: job6424 + - record: job:http_inprogress_requests:sum:6425 + expr: vector(1) + labels: + job: job6425 + - record: job:http_inprogress_requests:sum:6426 + expr: vector(1) + labels: + job: job6426 + - record: job:http_inprogress_requests:sum:6427 + expr: vector(1) + labels: + job: job6427 + - record: job:http_inprogress_requests:sum:6428 + expr: vector(1) + labels: + job: job6428 + - record: job:http_inprogress_requests:sum:6429 + expr: vector(1) + labels: + job: job6429 + - record: job:http_inprogress_requests:sum:6430 + expr: vector(1) + labels: + job: job6430 + - record: job:http_inprogress_requests:sum:6431 + expr: vector(1) + labels: + job: job6431 + - record: job:http_inprogress_requests:sum:6432 + expr: vector(1) + labels: + job: job6432 + - record: job:http_inprogress_requests:sum:6433 + expr: vector(1) + labels: + job: job6433 + - record: job:http_inprogress_requests:sum:6434 + expr: vector(1) + labels: + job: job6434 + - record: job:http_inprogress_requests:sum:6435 + expr: vector(1) + labels: + job: job6435 + - record: job:http_inprogress_requests:sum:6436 + expr: vector(1) + labels: + job: job6436 + - record: job:http_inprogress_requests:sum:6437 + expr: vector(1) + labels: + job: job6437 + - record: job:http_inprogress_requests:sum:6438 + expr: vector(1) + labels: + job: job6438 + - record: job:http_inprogress_requests:sum:6439 + expr: vector(1) + labels: + job: job6439 + - record: job:http_inprogress_requests:sum:6440 + expr: vector(1) + labels: + job: job6440 + - record: job:http_inprogress_requests:sum:6441 + expr: vector(1) + labels: + job: job6441 + - record: job:http_inprogress_requests:sum:6442 + expr: vector(1) + labels: + job: job6442 + - record: job:http_inprogress_requests:sum:6443 + expr: vector(1) + labels: + job: job6443 + - record: job:http_inprogress_requests:sum:6444 + expr: vector(1) + labels: + job: job6444 + - record: job:http_inprogress_requests:sum:6445 + expr: vector(1) + labels: + job: job6445 + - record: job:http_inprogress_requests:sum:6446 + expr: vector(1) + labels: + job: job6446 + - record: job:http_inprogress_requests:sum:6447 + expr: vector(1) + labels: + job: job6447 + - record: job:http_inprogress_requests:sum:6448 + expr: vector(1) + labels: + job: job6448 + - record: job:http_inprogress_requests:sum:6449 + expr: vector(1) + labels: + job: job6449 + - record: job:http_inprogress_requests:sum:6450 + expr: vector(1) + labels: + job: job6450 + - record: job:http_inprogress_requests:sum:6451 + expr: vector(1) + labels: + job: job6451 + - record: job:http_inprogress_requests:sum:6452 + expr: vector(1) + labels: + job: job6452 + - record: job:http_inprogress_requests:sum:6453 + expr: vector(1) + labels: + job: job6453 + - record: job:http_inprogress_requests:sum:6454 + expr: vector(1) + labels: + job: job6454 + - record: job:http_inprogress_requests:sum:6455 + expr: vector(1) + labels: + job: job6455 + - record: job:http_inprogress_requests:sum:6456 + expr: vector(1) + labels: + job: job6456 + - record: job:http_inprogress_requests:sum:6457 + expr: vector(1) + labels: + job: job6457 + - record: job:http_inprogress_requests:sum:6458 + expr: vector(1) + labels: + job: job6458 + - record: job:http_inprogress_requests:sum:6459 + expr: vector(1) + labels: + job: job6459 + - record: job:http_inprogress_requests:sum:6460 + expr: vector(1) + labels: + job: job6460 + - record: job:http_inprogress_requests:sum:6461 + expr: vector(1) + labels: + job: job6461 + - record: job:http_inprogress_requests:sum:6462 + expr: vector(1) + labels: + job: job6462 + - record: job:http_inprogress_requests:sum:6463 + expr: vector(1) + labels: + job: job6463 + - record: job:http_inprogress_requests:sum:6464 + expr: vector(1) + labels: + job: job6464 + - record: job:http_inprogress_requests:sum:6465 + expr: vector(1) + labels: + job: job6465 + - record: job:http_inprogress_requests:sum:6466 + expr: vector(1) + labels: + job: job6466 + - record: job:http_inprogress_requests:sum:6467 + expr: vector(1) + labels: + job: job6467 + - record: job:http_inprogress_requests:sum:6468 + expr: vector(1) + labels: + job: job6468 + - record: job:http_inprogress_requests:sum:6469 + expr: vector(1) + labels: + job: job6469 + - record: job:http_inprogress_requests:sum:6470 + expr: vector(1) + labels: + job: job6470 + - record: job:http_inprogress_requests:sum:6471 + expr: vector(1) + labels: + job: job6471 + - record: job:http_inprogress_requests:sum:6472 + expr: vector(1) + labels: + job: job6472 + - record: job:http_inprogress_requests:sum:6473 + expr: vector(1) + labels: + job: job6473 + - record: job:http_inprogress_requests:sum:6474 + expr: vector(1) + labels: + job: job6474 + - record: job:http_inprogress_requests:sum:6475 + expr: vector(1) + labels: + job: job6475 + - record: job:http_inprogress_requests:sum:6476 + expr: vector(1) + labels: + job: job6476 + - record: job:http_inprogress_requests:sum:6477 + expr: vector(1) + labels: + job: job6477 + - record: job:http_inprogress_requests:sum:6478 + expr: vector(1) + labels: + job: job6478 + - record: job:http_inprogress_requests:sum:6479 + expr: vector(1) + labels: + job: job6479 + - record: job:http_inprogress_requests:sum:6480 + expr: vector(1) + labels: + job: job6480 + - record: job:http_inprogress_requests:sum:6481 + expr: vector(1) + labels: + job: job6481 + - record: job:http_inprogress_requests:sum:6482 + expr: vector(1) + labels: + job: job6482 + - record: job:http_inprogress_requests:sum:6483 + expr: vector(1) + labels: + job: job6483 + - record: job:http_inprogress_requests:sum:6484 + expr: vector(1) + labels: + job: job6484 + - record: job:http_inprogress_requests:sum:6485 + expr: vector(1) + labels: + job: job6485 + - record: job:http_inprogress_requests:sum:6486 + expr: vector(1) + labels: + job: job6486 + - record: job:http_inprogress_requests:sum:6487 + expr: vector(1) + labels: + job: job6487 + - record: job:http_inprogress_requests:sum:6488 + expr: vector(1) + labels: + job: job6488 + - record: job:http_inprogress_requests:sum:6489 + expr: vector(1) + labels: + job: job6489 + - record: job:http_inprogress_requests:sum:6490 + expr: vector(1) + labels: + job: job6490 + - record: job:http_inprogress_requests:sum:6491 + expr: vector(1) + labels: + job: job6491 + - record: job:http_inprogress_requests:sum:6492 + expr: vector(1) + labels: + job: job6492 + - record: job:http_inprogress_requests:sum:6493 + expr: vector(1) + labels: + job: job6493 + - record: job:http_inprogress_requests:sum:6494 + expr: vector(1) + labels: + job: job6494 + - record: job:http_inprogress_requests:sum:6495 + expr: vector(1) + labels: + job: job6495 + - record: job:http_inprogress_requests:sum:6496 + expr: vector(1) + labels: + job: job6496 + - record: job:http_inprogress_requests:sum:6497 + expr: vector(1) + labels: + job: job6497 + - record: job:http_inprogress_requests:sum:6498 + expr: vector(1) + labels: + job: job6498 + - record: job:http_inprogress_requests:sum:6499 + expr: vector(1) + labels: + job: job6499 + - record: job:http_inprogress_requests:sum:6500 + expr: vector(1) + labels: + job: job6500 + - record: job:http_inprogress_requests:sum:6501 + expr: vector(1) + labels: + job: job6501 + - record: job:http_inprogress_requests:sum:6502 + expr: vector(1) + labels: + job: job6502 + - record: job:http_inprogress_requests:sum:6503 + expr: vector(1) + labels: + job: job6503 + - record: job:http_inprogress_requests:sum:6504 + expr: vector(1) + labels: + job: job6504 + - record: job:http_inprogress_requests:sum:6505 + expr: vector(1) + labels: + job: job6505 + - record: job:http_inprogress_requests:sum:6506 + expr: vector(1) + labels: + job: job6506 + - record: job:http_inprogress_requests:sum:6507 + expr: vector(1) + labels: + job: job6507 + - record: job:http_inprogress_requests:sum:6508 + expr: vector(1) + labels: + job: job6508 + - record: job:http_inprogress_requests:sum:6509 + expr: vector(1) + labels: + job: job6509 + - record: job:http_inprogress_requests:sum:6510 + expr: vector(1) + labels: + job: job6510 + - record: job:http_inprogress_requests:sum:6511 + expr: vector(1) + labels: + job: job6511 + - record: job:http_inprogress_requests:sum:6512 + expr: vector(1) + labels: + job: job6512 + - record: job:http_inprogress_requests:sum:6513 + expr: vector(1) + labels: + job: job6513 + - record: job:http_inprogress_requests:sum:6514 + expr: vector(1) + labels: + job: job6514 + - record: job:http_inprogress_requests:sum:6515 + expr: vector(1) + labels: + job: job6515 + - record: job:http_inprogress_requests:sum:6516 + expr: vector(1) + labels: + job: job6516 + - record: job:http_inprogress_requests:sum:6517 + expr: vector(1) + labels: + job: job6517 + - record: job:http_inprogress_requests:sum:6518 + expr: vector(1) + labels: + job: job6518 + - record: job:http_inprogress_requests:sum:6519 + expr: vector(1) + labels: + job: job6519 + - record: job:http_inprogress_requests:sum:6520 + expr: vector(1) + labels: + job: job6520 + - record: job:http_inprogress_requests:sum:6521 + expr: vector(1) + labels: + job: job6521 + - record: job:http_inprogress_requests:sum:6522 + expr: vector(1) + labels: + job: job6522 + - record: job:http_inprogress_requests:sum:6523 + expr: vector(1) + labels: + job: job6523 + - record: job:http_inprogress_requests:sum:6524 + expr: vector(1) + labels: + job: job6524 + - record: job:http_inprogress_requests:sum:6525 + expr: vector(1) + labels: + job: job6525 + - record: job:http_inprogress_requests:sum:6526 + expr: vector(1) + labels: + job: job6526 + - record: job:http_inprogress_requests:sum:6527 + expr: vector(1) + labels: + job: job6527 + - record: job:http_inprogress_requests:sum:6528 + expr: vector(1) + labels: + job: job6528 + - record: job:http_inprogress_requests:sum:6529 + expr: vector(1) + labels: + job: job6529 + - record: job:http_inprogress_requests:sum:6530 + expr: vector(1) + labels: + job: job6530 + - record: job:http_inprogress_requests:sum:6531 + expr: vector(1) + labels: + job: job6531 + - record: job:http_inprogress_requests:sum:6532 + expr: vector(1) + labels: + job: job6532 + - record: job:http_inprogress_requests:sum:6533 + expr: vector(1) + labels: + job: job6533 + - record: job:http_inprogress_requests:sum:6534 + expr: vector(1) + labels: + job: job6534 + - record: job:http_inprogress_requests:sum:6535 + expr: vector(1) + labels: + job: job6535 + - record: job:http_inprogress_requests:sum:6536 + expr: vector(1) + labels: + job: job6536 + - record: job:http_inprogress_requests:sum:6537 + expr: vector(1) + labels: + job: job6537 + - record: job:http_inprogress_requests:sum:6538 + expr: vector(1) + labels: + job: job6538 + - record: job:http_inprogress_requests:sum:6539 + expr: vector(1) + labels: + job: job6539 + - record: job:http_inprogress_requests:sum:6540 + expr: vector(1) + labels: + job: job6540 + - record: job:http_inprogress_requests:sum:6541 + expr: vector(1) + labels: + job: job6541 + - record: job:http_inprogress_requests:sum:6542 + expr: vector(1) + labels: + job: job6542 + - record: job:http_inprogress_requests:sum:6543 + expr: vector(1) + labels: + job: job6543 + - record: job:http_inprogress_requests:sum:6544 + expr: vector(1) + labels: + job: job6544 + - record: job:http_inprogress_requests:sum:6545 + expr: vector(1) + labels: + job: job6545 + - record: job:http_inprogress_requests:sum:6546 + expr: vector(1) + labels: + job: job6546 + - record: job:http_inprogress_requests:sum:6547 + expr: vector(1) + labels: + job: job6547 + - record: job:http_inprogress_requests:sum:6548 + expr: vector(1) + labels: + job: job6548 + - record: job:http_inprogress_requests:sum:6549 + expr: vector(1) + labels: + job: job6549 + - record: job:http_inprogress_requests:sum:6550 + expr: vector(1) + labels: + job: job6550 + - record: job:http_inprogress_requests:sum:6551 + expr: vector(1) + labels: + job: job6551 + - record: job:http_inprogress_requests:sum:6552 + expr: vector(1) + labels: + job: job6552 + - record: job:http_inprogress_requests:sum:6553 + expr: vector(1) + labels: + job: job6553 + - record: job:http_inprogress_requests:sum:6554 + expr: vector(1) + labels: + job: job6554 + - record: job:http_inprogress_requests:sum:6555 + expr: vector(1) + labels: + job: job6555 + - record: job:http_inprogress_requests:sum:6556 + expr: vector(1) + labels: + job: job6556 + - record: job:http_inprogress_requests:sum:6557 + expr: vector(1) + labels: + job: job6557 + - record: job:http_inprogress_requests:sum:6558 + expr: vector(1) + labels: + job: job6558 + - record: job:http_inprogress_requests:sum:6559 + expr: vector(1) + labels: + job: job6559 + - record: job:http_inprogress_requests:sum:6560 + expr: vector(1) + labels: + job: job6560 + - record: job:http_inprogress_requests:sum:6561 + expr: vector(1) + labels: + job: job6561 + - record: job:http_inprogress_requests:sum:6562 + expr: vector(1) + labels: + job: job6562 + - record: job:http_inprogress_requests:sum:6563 + expr: vector(1) + labels: + job: job6563 + - record: job:http_inprogress_requests:sum:6564 + expr: vector(1) + labels: + job: job6564 + - record: job:http_inprogress_requests:sum:6565 + expr: vector(1) + labels: + job: job6565 + - record: job:http_inprogress_requests:sum:6566 + expr: vector(1) + labels: + job: job6566 + - record: job:http_inprogress_requests:sum:6567 + expr: vector(1) + labels: + job: job6567 + - record: job:http_inprogress_requests:sum:6568 + expr: vector(1) + labels: + job: job6568 + - record: job:http_inprogress_requests:sum:6569 + expr: vector(1) + labels: + job: job6569 + - record: job:http_inprogress_requests:sum:6570 + expr: vector(1) + labels: + job: job6570 + - record: job:http_inprogress_requests:sum:6571 + expr: vector(1) + labels: + job: job6571 + - record: job:http_inprogress_requests:sum:6572 + expr: vector(1) + labels: + job: job6572 + - record: job:http_inprogress_requests:sum:6573 + expr: vector(1) + labels: + job: job6573 + - record: job:http_inprogress_requests:sum:6574 + expr: vector(1) + labels: + job: job6574 + - record: job:http_inprogress_requests:sum:6575 + expr: vector(1) + labels: + job: job6575 + - record: job:http_inprogress_requests:sum:6576 + expr: vector(1) + labels: + job: job6576 + - record: job:http_inprogress_requests:sum:6577 + expr: vector(1) + labels: + job: job6577 + - record: job:http_inprogress_requests:sum:6578 + expr: vector(1) + labels: + job: job6578 + - record: job:http_inprogress_requests:sum:6579 + expr: vector(1) + labels: + job: job6579 + - record: job:http_inprogress_requests:sum:6580 + expr: vector(1) + labels: + job: job6580 + - record: job:http_inprogress_requests:sum:6581 + expr: vector(1) + labels: + job: job6581 + - record: job:http_inprogress_requests:sum:6582 + expr: vector(1) + labels: + job: job6582 + - record: job:http_inprogress_requests:sum:6583 + expr: vector(1) + labels: + job: job6583 + - record: job:http_inprogress_requests:sum:6584 + expr: vector(1) + labels: + job: job6584 + - record: job:http_inprogress_requests:sum:6585 + expr: vector(1) + labels: + job: job6585 + - record: job:http_inprogress_requests:sum:6586 + expr: vector(1) + labels: + job: job6586 + - record: job:http_inprogress_requests:sum:6587 + expr: vector(1) + labels: + job: job6587 + - record: job:http_inprogress_requests:sum:6588 + expr: vector(1) + labels: + job: job6588 + - record: job:http_inprogress_requests:sum:6589 + expr: vector(1) + labels: + job: job6589 + - record: job:http_inprogress_requests:sum:6590 + expr: vector(1) + labels: + job: job6590 + - record: job:http_inprogress_requests:sum:6591 + expr: vector(1) + labels: + job: job6591 + - record: job:http_inprogress_requests:sum:6592 + expr: vector(1) + labels: + job: job6592 + - record: job:http_inprogress_requests:sum:6593 + expr: vector(1) + labels: + job: job6593 + - record: job:http_inprogress_requests:sum:6594 + expr: vector(1) + labels: + job: job6594 + - record: job:http_inprogress_requests:sum:6595 + expr: vector(1) + labels: + job: job6595 + - record: job:http_inprogress_requests:sum:6596 + expr: vector(1) + labels: + job: job6596 + - record: job:http_inprogress_requests:sum:6597 + expr: vector(1) + labels: + job: job6597 + - record: job:http_inprogress_requests:sum:6598 + expr: vector(1) + labels: + job: job6598 + - record: job:http_inprogress_requests:sum:6599 + expr: vector(1) + labels: + job: job6599 + - record: job:http_inprogress_requests:sum:6600 + expr: vector(1) + labels: + job: job6600 + - record: job:http_inprogress_requests:sum:6601 + expr: vector(1) + labels: + job: job6601 + - record: job:http_inprogress_requests:sum:6602 + expr: vector(1) + labels: + job: job6602 + - record: job:http_inprogress_requests:sum:6603 + expr: vector(1) + labels: + job: job6603 + - record: job:http_inprogress_requests:sum:6604 + expr: vector(1) + labels: + job: job6604 + - record: job:http_inprogress_requests:sum:6605 + expr: vector(1) + labels: + job: job6605 + - record: job:http_inprogress_requests:sum:6606 + expr: vector(1) + labels: + job: job6606 + - record: job:http_inprogress_requests:sum:6607 + expr: vector(1) + labels: + job: job6607 + - record: job:http_inprogress_requests:sum:6608 + expr: vector(1) + labels: + job: job6608 + - record: job:http_inprogress_requests:sum:6609 + expr: vector(1) + labels: + job: job6609 + - record: job:http_inprogress_requests:sum:6610 + expr: vector(1) + labels: + job: job6610 + - record: job:http_inprogress_requests:sum:6611 + expr: vector(1) + labels: + job: job6611 + - record: job:http_inprogress_requests:sum:6612 + expr: vector(1) + labels: + job: job6612 + - record: job:http_inprogress_requests:sum:6613 + expr: vector(1) + labels: + job: job6613 + - record: job:http_inprogress_requests:sum:6614 + expr: vector(1) + labels: + job: job6614 + - record: job:http_inprogress_requests:sum:6615 + expr: vector(1) + labels: + job: job6615 + - record: job:http_inprogress_requests:sum:6616 + expr: vector(1) + labels: + job: job6616 + - record: job:http_inprogress_requests:sum:6617 + expr: vector(1) + labels: + job: job6617 + - record: job:http_inprogress_requests:sum:6618 + expr: vector(1) + labels: + job: job6618 + - record: job:http_inprogress_requests:sum:6619 + expr: vector(1) + labels: + job: job6619 + - record: job:http_inprogress_requests:sum:6620 + expr: vector(1) + labels: + job: job6620 + - record: job:http_inprogress_requests:sum:6621 + expr: vector(1) + labels: + job: job6621 + - record: job:http_inprogress_requests:sum:6622 + expr: vector(1) + labels: + job: job6622 + - record: job:http_inprogress_requests:sum:6623 + expr: vector(1) + labels: + job: job6623 + - record: job:http_inprogress_requests:sum:6624 + expr: vector(1) + labels: + job: job6624 + - record: job:http_inprogress_requests:sum:6625 + expr: vector(1) + labels: + job: job6625 + - record: job:http_inprogress_requests:sum:6626 + expr: vector(1) + labels: + job: job6626 + - record: job:http_inprogress_requests:sum:6627 + expr: vector(1) + labels: + job: job6627 + - record: job:http_inprogress_requests:sum:6628 + expr: vector(1) + labels: + job: job6628 + - record: job:http_inprogress_requests:sum:6629 + expr: vector(1) + labels: + job: job6629 + - record: job:http_inprogress_requests:sum:6630 + expr: vector(1) + labels: + job: job6630 + - record: job:http_inprogress_requests:sum:6631 + expr: vector(1) + labels: + job: job6631 + - record: job:http_inprogress_requests:sum:6632 + expr: vector(1) + labels: + job: job6632 + - record: job:http_inprogress_requests:sum:6633 + expr: vector(1) + labels: + job: job6633 + - record: job:http_inprogress_requests:sum:6634 + expr: vector(1) + labels: + job: job6634 + - record: job:http_inprogress_requests:sum:6635 + expr: vector(1) + labels: + job: job6635 + - record: job:http_inprogress_requests:sum:6636 + expr: vector(1) + labels: + job: job6636 + - record: job:http_inprogress_requests:sum:6637 + expr: vector(1) + labels: + job: job6637 + - record: job:http_inprogress_requests:sum:6638 + expr: vector(1) + labels: + job: job6638 + - record: job:http_inprogress_requests:sum:6639 + expr: vector(1) + labels: + job: job6639 + - record: job:http_inprogress_requests:sum:6640 + expr: vector(1) + labels: + job: job6640 + - record: job:http_inprogress_requests:sum:6641 + expr: vector(1) + labels: + job: job6641 + - record: job:http_inprogress_requests:sum:6642 + expr: vector(1) + labels: + job: job6642 + - record: job:http_inprogress_requests:sum:6643 + expr: vector(1) + labels: + job: job6643 + - record: job:http_inprogress_requests:sum:6644 + expr: vector(1) + labels: + job: job6644 + - record: job:http_inprogress_requests:sum:6645 + expr: vector(1) + labels: + job: job6645 + - record: job:http_inprogress_requests:sum:6646 + expr: vector(1) + labels: + job: job6646 + - record: job:http_inprogress_requests:sum:6647 + expr: vector(1) + labels: + job: job6647 + - record: job:http_inprogress_requests:sum:6648 + expr: vector(1) + labels: + job: job6648 + - record: job:http_inprogress_requests:sum:6649 + expr: vector(1) + labels: + job: job6649 + - record: job:http_inprogress_requests:sum:6650 + expr: vector(1) + labels: + job: job6650 + - record: job:http_inprogress_requests:sum:6651 + expr: vector(1) + labels: + job: job6651 + - record: job:http_inprogress_requests:sum:6652 + expr: vector(1) + labels: + job: job6652 + - record: job:http_inprogress_requests:sum:6653 + expr: vector(1) + labels: + job: job6653 + - record: job:http_inprogress_requests:sum:6654 + expr: vector(1) + labels: + job: job6654 + - record: job:http_inprogress_requests:sum:6655 + expr: vector(1) + labels: + job: job6655 + - record: job:http_inprogress_requests:sum:6656 + expr: vector(1) + labels: + job: job6656 + - record: job:http_inprogress_requests:sum:6657 + expr: vector(1) + labels: + job: job6657 + - record: job:http_inprogress_requests:sum:6658 + expr: vector(1) + labels: + job: job6658 + - record: job:http_inprogress_requests:sum:6659 + expr: vector(1) + labels: + job: job6659 + - record: job:http_inprogress_requests:sum:6660 + expr: vector(1) + labels: + job: job6660 + - record: job:http_inprogress_requests:sum:6661 + expr: vector(1) + labels: + job: job6661 + - record: job:http_inprogress_requests:sum:6662 + expr: vector(1) + labels: + job: job6662 + - record: job:http_inprogress_requests:sum:6663 + expr: vector(1) + labels: + job: job6663 + - record: job:http_inprogress_requests:sum:6664 + expr: vector(1) + labels: + job: job6664 + - record: job:http_inprogress_requests:sum:6665 + expr: vector(1) + labels: + job: job6665 + - record: job:http_inprogress_requests:sum:6666 + expr: vector(1) + labels: + job: job6666 + - record: job:http_inprogress_requests:sum:6667 + expr: vector(1) + labels: + job: job6667 + - record: job:http_inprogress_requests:sum:6668 + expr: vector(1) + labels: + job: job6668 + - record: job:http_inprogress_requests:sum:6669 + expr: vector(1) + labels: + job: job6669 + - record: job:http_inprogress_requests:sum:6670 + expr: vector(1) + labels: + job: job6670 + - record: job:http_inprogress_requests:sum:6671 + expr: vector(1) + labels: + job: job6671 + - record: job:http_inprogress_requests:sum:6672 + expr: vector(1) + labels: + job: job6672 + - record: job:http_inprogress_requests:sum:6673 + expr: vector(1) + labels: + job: job6673 + - record: job:http_inprogress_requests:sum:6674 + expr: vector(1) + labels: + job: job6674 + - record: job:http_inprogress_requests:sum:6675 + expr: vector(1) + labels: + job: job6675 + - record: job:http_inprogress_requests:sum:6676 + expr: vector(1) + labels: + job: job6676 + - record: job:http_inprogress_requests:sum:6677 + expr: vector(1) + labels: + job: job6677 + - record: job:http_inprogress_requests:sum:6678 + expr: vector(1) + labels: + job: job6678 + - record: job:http_inprogress_requests:sum:6679 + expr: vector(1) + labels: + job: job6679 + - record: job:http_inprogress_requests:sum:6680 + expr: vector(1) + labels: + job: job6680 + - record: job:http_inprogress_requests:sum:6681 + expr: vector(1) + labels: + job: job6681 + - record: job:http_inprogress_requests:sum:6682 + expr: vector(1) + labels: + job: job6682 + - record: job:http_inprogress_requests:sum:6683 + expr: vector(1) + labels: + job: job6683 + - record: job:http_inprogress_requests:sum:6684 + expr: vector(1) + labels: + job: job6684 + - record: job:http_inprogress_requests:sum:6685 + expr: vector(1) + labels: + job: job6685 + - record: job:http_inprogress_requests:sum:6686 + expr: vector(1) + labels: + job: job6686 + - record: job:http_inprogress_requests:sum:6687 + expr: vector(1) + labels: + job: job6687 + - record: job:http_inprogress_requests:sum:6688 + expr: vector(1) + labels: + job: job6688 + - record: job:http_inprogress_requests:sum:6689 + expr: vector(1) + labels: + job: job6689 + - record: job:http_inprogress_requests:sum:6690 + expr: vector(1) + labels: + job: job6690 + - record: job:http_inprogress_requests:sum:6691 + expr: vector(1) + labels: + job: job6691 + - record: job:http_inprogress_requests:sum:6692 + expr: vector(1) + labels: + job: job6692 + - record: job:http_inprogress_requests:sum:6693 + expr: vector(1) + labels: + job: job6693 + - record: job:http_inprogress_requests:sum:6694 + expr: vector(1) + labels: + job: job6694 + - record: job:http_inprogress_requests:sum:6695 + expr: vector(1) + labels: + job: job6695 + - record: job:http_inprogress_requests:sum:6696 + expr: vector(1) + labels: + job: job6696 + - record: job:http_inprogress_requests:sum:6697 + expr: vector(1) + labels: + job: job6697 + - record: job:http_inprogress_requests:sum:6698 + expr: vector(1) + labels: + job: job6698 + - record: job:http_inprogress_requests:sum:6699 + expr: vector(1) + labels: + job: job6699 + - record: job:http_inprogress_requests:sum:6700 + expr: vector(1) + labels: + job: job6700 + - record: job:http_inprogress_requests:sum:6701 + expr: vector(1) + labels: + job: job6701 + - record: job:http_inprogress_requests:sum:6702 + expr: vector(1) + labels: + job: job6702 + - record: job:http_inprogress_requests:sum:6703 + expr: vector(1) + labels: + job: job6703 + - record: job:http_inprogress_requests:sum:6704 + expr: vector(1) + labels: + job: job6704 + - record: job:http_inprogress_requests:sum:6705 + expr: vector(1) + labels: + job: job6705 + - record: job:http_inprogress_requests:sum:6706 + expr: vector(1) + labels: + job: job6706 + - record: job:http_inprogress_requests:sum:6707 + expr: vector(1) + labels: + job: job6707 + - record: job:http_inprogress_requests:sum:6708 + expr: vector(1) + labels: + job: job6708 + - record: job:http_inprogress_requests:sum:6709 + expr: vector(1) + labels: + job: job6709 + - record: job:http_inprogress_requests:sum:6710 + expr: vector(1) + labels: + job: job6710 + - record: job:http_inprogress_requests:sum:6711 + expr: vector(1) + labels: + job: job6711 + - record: job:http_inprogress_requests:sum:6712 + expr: vector(1) + labels: + job: job6712 + - record: job:http_inprogress_requests:sum:6713 + expr: vector(1) + labels: + job: job6713 + - record: job:http_inprogress_requests:sum:6714 + expr: vector(1) + labels: + job: job6714 + - record: job:http_inprogress_requests:sum:6715 + expr: vector(1) + labels: + job: job6715 + - record: job:http_inprogress_requests:sum:6716 + expr: vector(1) + labels: + job: job6716 + - record: job:http_inprogress_requests:sum:6717 + expr: vector(1) + labels: + job: job6717 + - record: job:http_inprogress_requests:sum:6718 + expr: vector(1) + labels: + job: job6718 + - record: job:http_inprogress_requests:sum:6719 + expr: vector(1) + labels: + job: job6719 + - record: job:http_inprogress_requests:sum:6720 + expr: vector(1) + labels: + job: job6720 + - record: job:http_inprogress_requests:sum:6721 + expr: vector(1) + labels: + job: job6721 + - record: job:http_inprogress_requests:sum:6722 + expr: vector(1) + labels: + job: job6722 + - record: job:http_inprogress_requests:sum:6723 + expr: vector(1) + labels: + job: job6723 + - record: job:http_inprogress_requests:sum:6724 + expr: vector(1) + labels: + job: job6724 + - record: job:http_inprogress_requests:sum:6725 + expr: vector(1) + labels: + job: job6725 + - record: job:http_inprogress_requests:sum:6726 + expr: vector(1) + labels: + job: job6726 + - record: job:http_inprogress_requests:sum:6727 + expr: vector(1) + labels: + job: job6727 + - record: job:http_inprogress_requests:sum:6728 + expr: vector(1) + labels: + job: job6728 + - record: job:http_inprogress_requests:sum:6729 + expr: vector(1) + labels: + job: job6729 + - record: job:http_inprogress_requests:sum:6730 + expr: vector(1) + labels: + job: job6730 + - record: job:http_inprogress_requests:sum:6731 + expr: vector(1) + labels: + job: job6731 + - record: job:http_inprogress_requests:sum:6732 + expr: vector(1) + labels: + job: job6732 + - record: job:http_inprogress_requests:sum:6733 + expr: vector(1) + labels: + job: job6733 + - record: job:http_inprogress_requests:sum:6734 + expr: vector(1) + labels: + job: job6734 + - record: job:http_inprogress_requests:sum:6735 + expr: vector(1) + labels: + job: job6735 + - record: job:http_inprogress_requests:sum:6736 + expr: vector(1) + labels: + job: job6736 + - record: job:http_inprogress_requests:sum:6737 + expr: vector(1) + labels: + job: job6737 + - record: job:http_inprogress_requests:sum:6738 + expr: vector(1) + labels: + job: job6738 + - record: job:http_inprogress_requests:sum:6739 + expr: vector(1) + labels: + job: job6739 + - record: job:http_inprogress_requests:sum:6740 + expr: vector(1) + labels: + job: job6740 + - record: job:http_inprogress_requests:sum:6741 + expr: vector(1) + labels: + job: job6741 + - record: job:http_inprogress_requests:sum:6742 + expr: vector(1) + labels: + job: job6742 + - record: job:http_inprogress_requests:sum:6743 + expr: vector(1) + labels: + job: job6743 + - record: job:http_inprogress_requests:sum:6744 + expr: vector(1) + labels: + job: job6744 + - record: job:http_inprogress_requests:sum:6745 + expr: vector(1) + labels: + job: job6745 + - record: job:http_inprogress_requests:sum:6746 + expr: vector(1) + labels: + job: job6746 + - record: job:http_inprogress_requests:sum:6747 + expr: vector(1) + labels: + job: job6747 + - record: job:http_inprogress_requests:sum:6748 + expr: vector(1) + labels: + job: job6748 + - record: job:http_inprogress_requests:sum:6749 + expr: vector(1) + labels: + job: job6749 + - record: job:http_inprogress_requests:sum:6750 + expr: vector(1) + labels: + job: job6750 + - record: job:http_inprogress_requests:sum:6751 + expr: vector(1) + labels: + job: job6751 + - record: job:http_inprogress_requests:sum:6752 + expr: vector(1) + labels: + job: job6752 + - record: job:http_inprogress_requests:sum:6753 + expr: vector(1) + labels: + job: job6753 + - record: job:http_inprogress_requests:sum:6754 + expr: vector(1) + labels: + job: job6754 + - record: job:http_inprogress_requests:sum:6755 + expr: vector(1) + labels: + job: job6755 + - record: job:http_inprogress_requests:sum:6756 + expr: vector(1) + labels: + job: job6756 + - record: job:http_inprogress_requests:sum:6757 + expr: vector(1) + labels: + job: job6757 + - record: job:http_inprogress_requests:sum:6758 + expr: vector(1) + labels: + job: job6758 + - record: job:http_inprogress_requests:sum:6759 + expr: vector(1) + labels: + job: job6759 + - record: job:http_inprogress_requests:sum:6760 + expr: vector(1) + labels: + job: job6760 + - record: job:http_inprogress_requests:sum:6761 + expr: vector(1) + labels: + job: job6761 + - record: job:http_inprogress_requests:sum:6762 + expr: vector(1) + labels: + job: job6762 + - record: job:http_inprogress_requests:sum:6763 + expr: vector(1) + labels: + job: job6763 + - record: job:http_inprogress_requests:sum:6764 + expr: vector(1) + labels: + job: job6764 + - record: job:http_inprogress_requests:sum:6765 + expr: vector(1) + labels: + job: job6765 + - record: job:http_inprogress_requests:sum:6766 + expr: vector(1) + labels: + job: job6766 + - record: job:http_inprogress_requests:sum:6767 + expr: vector(1) + labels: + job: job6767 + - record: job:http_inprogress_requests:sum:6768 + expr: vector(1) + labels: + job: job6768 + - record: job:http_inprogress_requests:sum:6769 + expr: vector(1) + labels: + job: job6769 + - record: job:http_inprogress_requests:sum:6770 + expr: vector(1) + labels: + job: job6770 + - record: job:http_inprogress_requests:sum:6771 + expr: vector(1) + labels: + job: job6771 + - record: job:http_inprogress_requests:sum:6772 + expr: vector(1) + labels: + job: job6772 + - record: job:http_inprogress_requests:sum:6773 + expr: vector(1) + labels: + job: job6773 + - record: job:http_inprogress_requests:sum:6774 + expr: vector(1) + labels: + job: job6774 + - record: job:http_inprogress_requests:sum:6775 + expr: vector(1) + labels: + job: job6775 + - record: job:http_inprogress_requests:sum:6776 + expr: vector(1) + labels: + job: job6776 + - record: job:http_inprogress_requests:sum:6777 + expr: vector(1) + labels: + job: job6777 + - record: job:http_inprogress_requests:sum:6778 + expr: vector(1) + labels: + job: job6778 + - record: job:http_inprogress_requests:sum:6779 + expr: vector(1) + labels: + job: job6779 + - record: job:http_inprogress_requests:sum:6780 + expr: vector(1) + labels: + job: job6780 + - record: job:http_inprogress_requests:sum:6781 + expr: vector(1) + labels: + job: job6781 + - record: job:http_inprogress_requests:sum:6782 + expr: vector(1) + labels: + job: job6782 + - record: job:http_inprogress_requests:sum:6783 + expr: vector(1) + labels: + job: job6783 + - record: job:http_inprogress_requests:sum:6784 + expr: vector(1) + labels: + job: job6784 + - record: job:http_inprogress_requests:sum:6785 + expr: vector(1) + labels: + job: job6785 + - record: job:http_inprogress_requests:sum:6786 + expr: vector(1) + labels: + job: job6786 + - record: job:http_inprogress_requests:sum:6787 + expr: vector(1) + labels: + job: job6787 + - record: job:http_inprogress_requests:sum:6788 + expr: vector(1) + labels: + job: job6788 + - record: job:http_inprogress_requests:sum:6789 + expr: vector(1) + labels: + job: job6789 + - record: job:http_inprogress_requests:sum:6790 + expr: vector(1) + labels: + job: job6790 + - record: job:http_inprogress_requests:sum:6791 + expr: vector(1) + labels: + job: job6791 + - record: job:http_inprogress_requests:sum:6792 + expr: vector(1) + labels: + job: job6792 + - record: job:http_inprogress_requests:sum:6793 + expr: vector(1) + labels: + job: job6793 + - record: job:http_inprogress_requests:sum:6794 + expr: vector(1) + labels: + job: job6794 + - record: job:http_inprogress_requests:sum:6795 + expr: vector(1) + labels: + job: job6795 + - record: job:http_inprogress_requests:sum:6796 + expr: vector(1) + labels: + job: job6796 + - record: job:http_inprogress_requests:sum:6797 + expr: vector(1) + labels: + job: job6797 + - record: job:http_inprogress_requests:sum:6798 + expr: vector(1) + labels: + job: job6798 + - record: job:http_inprogress_requests:sum:6799 + expr: vector(1) + labels: + job: job6799 + - record: job:http_inprogress_requests:sum:6800 + expr: vector(1) + labels: + job: job6800 + - record: job:http_inprogress_requests:sum:6801 + expr: vector(1) + labels: + job: job6801 + - record: job:http_inprogress_requests:sum:6802 + expr: vector(1) + labels: + job: job6802 + - record: job:http_inprogress_requests:sum:6803 + expr: vector(1) + labels: + job: job6803 + - record: job:http_inprogress_requests:sum:6804 + expr: vector(1) + labels: + job: job6804 + - record: job:http_inprogress_requests:sum:6805 + expr: vector(1) + labels: + job: job6805 + - record: job:http_inprogress_requests:sum:6806 + expr: vector(1) + labels: + job: job6806 + - record: job:http_inprogress_requests:sum:6807 + expr: vector(1) + labels: + job: job6807 + - record: job:http_inprogress_requests:sum:6808 + expr: vector(1) + labels: + job: job6808 + - record: job:http_inprogress_requests:sum:6809 + expr: vector(1) + labels: + job: job6809 + - record: job:http_inprogress_requests:sum:6810 + expr: vector(1) + labels: + job: job6810 + - record: job:http_inprogress_requests:sum:6811 + expr: vector(1) + labels: + job: job6811 + - record: job:http_inprogress_requests:sum:6812 + expr: vector(1) + labels: + job: job6812 + - record: job:http_inprogress_requests:sum:6813 + expr: vector(1) + labels: + job: job6813 + - record: job:http_inprogress_requests:sum:6814 + expr: vector(1) + labels: + job: job6814 + - record: job:http_inprogress_requests:sum:6815 + expr: vector(1) + labels: + job: job6815 + - record: job:http_inprogress_requests:sum:6816 + expr: vector(1) + labels: + job: job6816 + - record: job:http_inprogress_requests:sum:6817 + expr: vector(1) + labels: + job: job6817 + - record: job:http_inprogress_requests:sum:6818 + expr: vector(1) + labels: + job: job6818 + - record: job:http_inprogress_requests:sum:6819 + expr: vector(1) + labels: + job: job6819 + - record: job:http_inprogress_requests:sum:6820 + expr: vector(1) + labels: + job: job6820 + - record: job:http_inprogress_requests:sum:6821 + expr: vector(1) + labels: + job: job6821 + - record: job:http_inprogress_requests:sum:6822 + expr: vector(1) + labels: + job: job6822 + - record: job:http_inprogress_requests:sum:6823 + expr: vector(1) + labels: + job: job6823 + - record: job:http_inprogress_requests:sum:6824 + expr: vector(1) + labels: + job: job6824 + - record: job:http_inprogress_requests:sum:6825 + expr: vector(1) + labels: + job: job6825 + - record: job:http_inprogress_requests:sum:6826 + expr: vector(1) + labels: + job: job6826 + - record: job:http_inprogress_requests:sum:6827 + expr: vector(1) + labels: + job: job6827 + - record: job:http_inprogress_requests:sum:6828 + expr: vector(1) + labels: + job: job6828 + - record: job:http_inprogress_requests:sum:6829 + expr: vector(1) + labels: + job: job6829 + - record: job:http_inprogress_requests:sum:6830 + expr: vector(1) + labels: + job: job6830 + - record: job:http_inprogress_requests:sum:6831 + expr: vector(1) + labels: + job: job6831 + - record: job:http_inprogress_requests:sum:6832 + expr: vector(1) + labels: + job: job6832 + - record: job:http_inprogress_requests:sum:6833 + expr: vector(1) + labels: + job: job6833 + - record: job:http_inprogress_requests:sum:6834 + expr: vector(1) + labels: + job: job6834 + - record: job:http_inprogress_requests:sum:6835 + expr: vector(1) + labels: + job: job6835 + - record: job:http_inprogress_requests:sum:6836 + expr: vector(1) + labels: + job: job6836 + - record: job:http_inprogress_requests:sum:6837 + expr: vector(1) + labels: + job: job6837 + - record: job:http_inprogress_requests:sum:6838 + expr: vector(1) + labels: + job: job6838 + - record: job:http_inprogress_requests:sum:6839 + expr: vector(1) + labels: + job: job6839 + - record: job:http_inprogress_requests:sum:6840 + expr: vector(1) + labels: + job: job6840 + - record: job:http_inprogress_requests:sum:6841 + expr: vector(1) + labels: + job: job6841 + - record: job:http_inprogress_requests:sum:6842 + expr: vector(1) + labels: + job: job6842 + - record: job:http_inprogress_requests:sum:6843 + expr: vector(1) + labels: + job: job6843 + - record: job:http_inprogress_requests:sum:6844 + expr: vector(1) + labels: + job: job6844 + - record: job:http_inprogress_requests:sum:6845 + expr: vector(1) + labels: + job: job6845 + - record: job:http_inprogress_requests:sum:6846 + expr: vector(1) + labels: + job: job6846 + - record: job:http_inprogress_requests:sum:6847 + expr: vector(1) + labels: + job: job6847 + - record: job:http_inprogress_requests:sum:6848 + expr: vector(1) + labels: + job: job6848 + - record: job:http_inprogress_requests:sum:6849 + expr: vector(1) + labels: + job: job6849 + - record: job:http_inprogress_requests:sum:6850 + expr: vector(1) + labels: + job: job6850 + - record: job:http_inprogress_requests:sum:6851 + expr: vector(1) + labels: + job: job6851 + - record: job:http_inprogress_requests:sum:6852 + expr: vector(1) + labels: + job: job6852 + - record: job:http_inprogress_requests:sum:6853 + expr: vector(1) + labels: + job: job6853 + - record: job:http_inprogress_requests:sum:6854 + expr: vector(1) + labels: + job: job6854 + - record: job:http_inprogress_requests:sum:6855 + expr: vector(1) + labels: + job: job6855 + - record: job:http_inprogress_requests:sum:6856 + expr: vector(1) + labels: + job: job6856 + - record: job:http_inprogress_requests:sum:6857 + expr: vector(1) + labels: + job: job6857 + - record: job:http_inprogress_requests:sum:6858 + expr: vector(1) + labels: + job: job6858 + - record: job:http_inprogress_requests:sum:6859 + expr: vector(1) + labels: + job: job6859 + - record: job:http_inprogress_requests:sum:6860 + expr: vector(1) + labels: + job: job6860 + - record: job:http_inprogress_requests:sum:6861 + expr: vector(1) + labels: + job: job6861 + - record: job:http_inprogress_requests:sum:6862 + expr: vector(1) + labels: + job: job6862 + - record: job:http_inprogress_requests:sum:6863 + expr: vector(1) + labels: + job: job6863 + - record: job:http_inprogress_requests:sum:6864 + expr: vector(1) + labels: + job: job6864 + - record: job:http_inprogress_requests:sum:6865 + expr: vector(1) + labels: + job: job6865 + - record: job:http_inprogress_requests:sum:6866 + expr: vector(1) + labels: + job: job6866 + - record: job:http_inprogress_requests:sum:6867 + expr: vector(1) + labels: + job: job6867 + - record: job:http_inprogress_requests:sum:6868 + expr: vector(1) + labels: + job: job6868 + - record: job:http_inprogress_requests:sum:6869 + expr: vector(1) + labels: + job: job6869 + - record: job:http_inprogress_requests:sum:6870 + expr: vector(1) + labels: + job: job6870 + - record: job:http_inprogress_requests:sum:6871 + expr: vector(1) + labels: + job: job6871 + - record: job:http_inprogress_requests:sum:6872 + expr: vector(1) + labels: + job: job6872 + - record: job:http_inprogress_requests:sum:6873 + expr: vector(1) + labels: + job: job6873 + - record: job:http_inprogress_requests:sum:6874 + expr: vector(1) + labels: + job: job6874 + - record: job:http_inprogress_requests:sum:6875 + expr: vector(1) + labels: + job: job6875 + - record: job:http_inprogress_requests:sum:6876 + expr: vector(1) + labels: + job: job6876 + - record: job:http_inprogress_requests:sum:6877 + expr: vector(1) + labels: + job: job6877 + - record: job:http_inprogress_requests:sum:6878 + expr: vector(1) + labels: + job: job6878 + - record: job:http_inprogress_requests:sum:6879 + expr: vector(1) + labels: + job: job6879 + - record: job:http_inprogress_requests:sum:6880 + expr: vector(1) + labels: + job: job6880 + - record: job:http_inprogress_requests:sum:6881 + expr: vector(1) + labels: + job: job6881 + - record: job:http_inprogress_requests:sum:6882 + expr: vector(1) + labels: + job: job6882 + - record: job:http_inprogress_requests:sum:6883 + expr: vector(1) + labels: + job: job6883 + - record: job:http_inprogress_requests:sum:6884 + expr: vector(1) + labels: + job: job6884 + - record: job:http_inprogress_requests:sum:6885 + expr: vector(1) + labels: + job: job6885 + - record: job:http_inprogress_requests:sum:6886 + expr: vector(1) + labels: + job: job6886 + - record: job:http_inprogress_requests:sum:6887 + expr: vector(1) + labels: + job: job6887 + - record: job:http_inprogress_requests:sum:6888 + expr: vector(1) + labels: + job: job6888 + - record: job:http_inprogress_requests:sum:6889 + expr: vector(1) + labels: + job: job6889 + - record: job:http_inprogress_requests:sum:6890 + expr: vector(1) + labels: + job: job6890 + - record: job:http_inprogress_requests:sum:6891 + expr: vector(1) + labels: + job: job6891 + - record: job:http_inprogress_requests:sum:6892 + expr: vector(1) + labels: + job: job6892 + - record: job:http_inprogress_requests:sum:6893 + expr: vector(1) + labels: + job: job6893 + - record: job:http_inprogress_requests:sum:6894 + expr: vector(1) + labels: + job: job6894 + - record: job:http_inprogress_requests:sum:6895 + expr: vector(1) + labels: + job: job6895 + - record: job:http_inprogress_requests:sum:6896 + expr: vector(1) + labels: + job: job6896 + - record: job:http_inprogress_requests:sum:6897 + expr: vector(1) + labels: + job: job6897 + - record: job:http_inprogress_requests:sum:6898 + expr: vector(1) + labels: + job: job6898 + - record: job:http_inprogress_requests:sum:6899 + expr: vector(1) + labels: + job: job6899 + - record: job:http_inprogress_requests:sum:6900 + expr: vector(1) + labels: + job: job6900 + - record: job:http_inprogress_requests:sum:6901 + expr: vector(1) + labels: + job: job6901 + - record: job:http_inprogress_requests:sum:6902 + expr: vector(1) + labels: + job: job6902 + - record: job:http_inprogress_requests:sum:6903 + expr: vector(1) + labels: + job: job6903 + - record: job:http_inprogress_requests:sum:6904 + expr: vector(1) + labels: + job: job6904 + - record: job:http_inprogress_requests:sum:6905 + expr: vector(1) + labels: + job: job6905 + - record: job:http_inprogress_requests:sum:6906 + expr: vector(1) + labels: + job: job6906 + - record: job:http_inprogress_requests:sum:6907 + expr: vector(1) + labels: + job: job6907 + - record: job:http_inprogress_requests:sum:6908 + expr: vector(1) + labels: + job: job6908 + - record: job:http_inprogress_requests:sum:6909 + expr: vector(1) + labels: + job: job6909 + - record: job:http_inprogress_requests:sum:6910 + expr: vector(1) + labels: + job: job6910 + - record: job:http_inprogress_requests:sum:6911 + expr: vector(1) + labels: + job: job6911 + - record: job:http_inprogress_requests:sum:6912 + expr: vector(1) + labels: + job: job6912 + - record: job:http_inprogress_requests:sum:6913 + expr: vector(1) + labels: + job: job6913 + - record: job:http_inprogress_requests:sum:6914 + expr: vector(1) + labels: + job: job6914 + - record: job:http_inprogress_requests:sum:6915 + expr: vector(1) + labels: + job: job6915 + - record: job:http_inprogress_requests:sum:6916 + expr: vector(1) + labels: + job: job6916 + - record: job:http_inprogress_requests:sum:6917 + expr: vector(1) + labels: + job: job6917 + - record: job:http_inprogress_requests:sum:6918 + expr: vector(1) + labels: + job: job6918 + - record: job:http_inprogress_requests:sum:6919 + expr: vector(1) + labels: + job: job6919 + - record: job:http_inprogress_requests:sum:6920 + expr: vector(1) + labels: + job: job6920 + - record: job:http_inprogress_requests:sum:6921 + expr: vector(1) + labels: + job: job6921 + - record: job:http_inprogress_requests:sum:6922 + expr: vector(1) + labels: + job: job6922 + - record: job:http_inprogress_requests:sum:6923 + expr: vector(1) + labels: + job: job6923 + - record: job:http_inprogress_requests:sum:6924 + expr: vector(1) + labels: + job: job6924 + - record: job:http_inprogress_requests:sum:6925 + expr: vector(1) + labels: + job: job6925 + - record: job:http_inprogress_requests:sum:6926 + expr: vector(1) + labels: + job: job6926 + - record: job:http_inprogress_requests:sum:6927 + expr: vector(1) + labels: + job: job6927 + - record: job:http_inprogress_requests:sum:6928 + expr: vector(1) + labels: + job: job6928 + - record: job:http_inprogress_requests:sum:6929 + expr: vector(1) + labels: + job: job6929 + - record: job:http_inprogress_requests:sum:6930 + expr: vector(1) + labels: + job: job6930 + - record: job:http_inprogress_requests:sum:6931 + expr: vector(1) + labels: + job: job6931 + - record: job:http_inprogress_requests:sum:6932 + expr: vector(1) + labels: + job: job6932 + - record: job:http_inprogress_requests:sum:6933 + expr: vector(1) + labels: + job: job6933 + - record: job:http_inprogress_requests:sum:6934 + expr: vector(1) + labels: + job: job6934 + - record: job:http_inprogress_requests:sum:6935 + expr: vector(1) + labels: + job: job6935 + - record: job:http_inprogress_requests:sum:6936 + expr: vector(1) + labels: + job: job6936 + - record: job:http_inprogress_requests:sum:6937 + expr: vector(1) + labels: + job: job6937 + - record: job:http_inprogress_requests:sum:6938 + expr: vector(1) + labels: + job: job6938 + - record: job:http_inprogress_requests:sum:6939 + expr: vector(1) + labels: + job: job6939 + - record: job:http_inprogress_requests:sum:6940 + expr: vector(1) + labels: + job: job6940 + - record: job:http_inprogress_requests:sum:6941 + expr: vector(1) + labels: + job: job6941 + - record: job:http_inprogress_requests:sum:6942 + expr: vector(1) + labels: + job: job6942 + - record: job:http_inprogress_requests:sum:6943 + expr: vector(1) + labels: + job: job6943 + - record: job:http_inprogress_requests:sum:6944 + expr: vector(1) + labels: + job: job6944 + - record: job:http_inprogress_requests:sum:6945 + expr: vector(1) + labels: + job: job6945 + - record: job:http_inprogress_requests:sum:6946 + expr: vector(1) + labels: + job: job6946 + - record: job:http_inprogress_requests:sum:6947 + expr: vector(1) + labels: + job: job6947 + - record: job:http_inprogress_requests:sum:6948 + expr: vector(1) + labels: + job: job6948 + - record: job:http_inprogress_requests:sum:6949 + expr: vector(1) + labels: + job: job6949 + - record: job:http_inprogress_requests:sum:6950 + expr: vector(1) + labels: + job: job6950 + - record: job:http_inprogress_requests:sum:6951 + expr: vector(1) + labels: + job: job6951 + - record: job:http_inprogress_requests:sum:6952 + expr: vector(1) + labels: + job: job6952 + - record: job:http_inprogress_requests:sum:6953 + expr: vector(1) + labels: + job: job6953 + - record: job:http_inprogress_requests:sum:6954 + expr: vector(1) + labels: + job: job6954 + - record: job:http_inprogress_requests:sum:6955 + expr: vector(1) + labels: + job: job6955 + - record: job:http_inprogress_requests:sum:6956 + expr: vector(1) + labels: + job: job6956 + - record: job:http_inprogress_requests:sum:6957 + expr: vector(1) + labels: + job: job6957 + - record: job:http_inprogress_requests:sum:6958 + expr: vector(1) + labels: + job: job6958 + - record: job:http_inprogress_requests:sum:6959 + expr: vector(1) + labels: + job: job6959 + - record: job:http_inprogress_requests:sum:6960 + expr: vector(1) + labels: + job: job6960 + - record: job:http_inprogress_requests:sum:6961 + expr: vector(1) + labels: + job: job6961 + - record: job:http_inprogress_requests:sum:6962 + expr: vector(1) + labels: + job: job6962 + - record: job:http_inprogress_requests:sum:6963 + expr: vector(1) + labels: + job: job6963 + - record: job:http_inprogress_requests:sum:6964 + expr: vector(1) + labels: + job: job6964 + - record: job:http_inprogress_requests:sum:6965 + expr: vector(1) + labels: + job: job6965 + - record: job:http_inprogress_requests:sum:6966 + expr: vector(1) + labels: + job: job6966 + - record: job:http_inprogress_requests:sum:6967 + expr: vector(1) + labels: + job: job6967 + - record: job:http_inprogress_requests:sum:6968 + expr: vector(1) + labels: + job: job6968 + - record: job:http_inprogress_requests:sum:6969 + expr: vector(1) + labels: + job: job6969 + - record: job:http_inprogress_requests:sum:6970 + expr: vector(1) + labels: + job: job6970 + - record: job:http_inprogress_requests:sum:6971 + expr: vector(1) + labels: + job: job6971 + - record: job:http_inprogress_requests:sum:6972 + expr: vector(1) + labels: + job: job6972 + - record: job:http_inprogress_requests:sum:6973 + expr: vector(1) + labels: + job: job6973 + - record: job:http_inprogress_requests:sum:6974 + expr: vector(1) + labels: + job: job6974 + - record: job:http_inprogress_requests:sum:6975 + expr: vector(1) + labels: + job: job6975 + - record: job:http_inprogress_requests:sum:6976 + expr: vector(1) + labels: + job: job6976 + - record: job:http_inprogress_requests:sum:6977 + expr: vector(1) + labels: + job: job6977 + - record: job:http_inprogress_requests:sum:6978 + expr: vector(1) + labels: + job: job6978 + - record: job:http_inprogress_requests:sum:6979 + expr: vector(1) + labels: + job: job6979 + - record: job:http_inprogress_requests:sum:6980 + expr: vector(1) + labels: + job: job6980 + - record: job:http_inprogress_requests:sum:6981 + expr: vector(1) + labels: + job: job6981 + - record: job:http_inprogress_requests:sum:6982 + expr: vector(1) + labels: + job: job6982 + - record: job:http_inprogress_requests:sum:6983 + expr: vector(1) + labels: + job: job6983 + - record: job:http_inprogress_requests:sum:6984 + expr: vector(1) + labels: + job: job6984 + - record: job:http_inprogress_requests:sum:6985 + expr: vector(1) + labels: + job: job6985 + - record: job:http_inprogress_requests:sum:6986 + expr: vector(1) + labels: + job: job6986 + - record: job:http_inprogress_requests:sum:6987 + expr: vector(1) + labels: + job: job6987 + - record: job:http_inprogress_requests:sum:6988 + expr: vector(1) + labels: + job: job6988 + - record: job:http_inprogress_requests:sum:6989 + expr: vector(1) + labels: + job: job6989 + - record: job:http_inprogress_requests:sum:6990 + expr: vector(1) + labels: + job: job6990 + - record: job:http_inprogress_requests:sum:6991 + expr: vector(1) + labels: + job: job6991 + - record: job:http_inprogress_requests:sum:6992 + expr: vector(1) + labels: + job: job6992 + - record: job:http_inprogress_requests:sum:6993 + expr: vector(1) + labels: + job: job6993 + - record: job:http_inprogress_requests:sum:6994 + expr: vector(1) + labels: + job: job6994 + - record: job:http_inprogress_requests:sum:6995 + expr: vector(1) + labels: + job: job6995 + - record: job:http_inprogress_requests:sum:6996 + expr: vector(1) + labels: + job: job6996 + - record: job:http_inprogress_requests:sum:6997 + expr: vector(1) + labels: + job: job6997 + - record: job:http_inprogress_requests:sum:6998 + expr: vector(1) + labels: + job: job6998 + - record: job:http_inprogress_requests:sum:6999 + expr: vector(1) + labels: + job: job6999 + - record: job:http_inprogress_requests:sum:7000 + expr: vector(1) + labels: + job: job7000 + - record: job:http_inprogress_requests:sum:7001 + expr: vector(1) + labels: + job: job7001 + - record: job:http_inprogress_requests:sum:7002 + expr: vector(1) + labels: + job: job7002 + - record: job:http_inprogress_requests:sum:7003 + expr: vector(1) + labels: + job: job7003 + - record: job:http_inprogress_requests:sum:7004 + expr: vector(1) + labels: + job: job7004 + - record: job:http_inprogress_requests:sum:7005 + expr: vector(1) + labels: + job: job7005 + - record: job:http_inprogress_requests:sum:7006 + expr: vector(1) + labels: + job: job7006 + - record: job:http_inprogress_requests:sum:7007 + expr: vector(1) + labels: + job: job7007 + - record: job:http_inprogress_requests:sum:7008 + expr: vector(1) + labels: + job: job7008 + - record: job:http_inprogress_requests:sum:7009 + expr: vector(1) + labels: + job: job7009 + - record: job:http_inprogress_requests:sum:7010 + expr: vector(1) + labels: + job: job7010 + - record: job:http_inprogress_requests:sum:7011 + expr: vector(1) + labels: + job: job7011 + - record: job:http_inprogress_requests:sum:7012 + expr: vector(1) + labels: + job: job7012 + - record: job:http_inprogress_requests:sum:7013 + expr: vector(1) + labels: + job: job7013 + - record: job:http_inprogress_requests:sum:7014 + expr: vector(1) + labels: + job: job7014 + - record: job:http_inprogress_requests:sum:7015 + expr: vector(1) + labels: + job: job7015 + - record: job:http_inprogress_requests:sum:7016 + expr: vector(1) + labels: + job: job7016 + - record: job:http_inprogress_requests:sum:7017 + expr: vector(1) + labels: + job: job7017 + - record: job:http_inprogress_requests:sum:7018 + expr: vector(1) + labels: + job: job7018 + - record: job:http_inprogress_requests:sum:7019 + expr: vector(1) + labels: + job: job7019 + - record: job:http_inprogress_requests:sum:7020 + expr: vector(1) + labels: + job: job7020 + - record: job:http_inprogress_requests:sum:7021 + expr: vector(1) + labels: + job: job7021 + - record: job:http_inprogress_requests:sum:7022 + expr: vector(1) + labels: + job: job7022 + - record: job:http_inprogress_requests:sum:7023 + expr: vector(1) + labels: + job: job7023 + - record: job:http_inprogress_requests:sum:7024 + expr: vector(1) + labels: + job: job7024 + - record: job:http_inprogress_requests:sum:7025 + expr: vector(1) + labels: + job: job7025 + - record: job:http_inprogress_requests:sum:7026 + expr: vector(1) + labels: + job: job7026 + - record: job:http_inprogress_requests:sum:7027 + expr: vector(1) + labels: + job: job7027 + - record: job:http_inprogress_requests:sum:7028 + expr: vector(1) + labels: + job: job7028 + - record: job:http_inprogress_requests:sum:7029 + expr: vector(1) + labels: + job: job7029 + - record: job:http_inprogress_requests:sum:7030 + expr: vector(1) + labels: + job: job7030 + - record: job:http_inprogress_requests:sum:7031 + expr: vector(1) + labels: + job: job7031 + - record: job:http_inprogress_requests:sum:7032 + expr: vector(1) + labels: + job: job7032 + - record: job:http_inprogress_requests:sum:7033 + expr: vector(1) + labels: + job: job7033 + - record: job:http_inprogress_requests:sum:7034 + expr: vector(1) + labels: + job: job7034 + - record: job:http_inprogress_requests:sum:7035 + expr: vector(1) + labels: + job: job7035 + - record: job:http_inprogress_requests:sum:7036 + expr: vector(1) + labels: + job: job7036 + - record: job:http_inprogress_requests:sum:7037 + expr: vector(1) + labels: + job: job7037 + - record: job:http_inprogress_requests:sum:7038 + expr: vector(1) + labels: + job: job7038 + - record: job:http_inprogress_requests:sum:7039 + expr: vector(1) + labels: + job: job7039 + - record: job:http_inprogress_requests:sum:7040 + expr: vector(1) + labels: + job: job7040 + - record: job:http_inprogress_requests:sum:7041 + expr: vector(1) + labels: + job: job7041 + - record: job:http_inprogress_requests:sum:7042 + expr: vector(1) + labels: + job: job7042 + - record: job:http_inprogress_requests:sum:7043 + expr: vector(1) + labels: + job: job7043 + - record: job:http_inprogress_requests:sum:7044 + expr: vector(1) + labels: + job: job7044 + - record: job:http_inprogress_requests:sum:7045 + expr: vector(1) + labels: + job: job7045 + - record: job:http_inprogress_requests:sum:7046 + expr: vector(1) + labels: + job: job7046 + - record: job:http_inprogress_requests:sum:7047 + expr: vector(1) + labels: + job: job7047 + - record: job:http_inprogress_requests:sum:7048 + expr: vector(1) + labels: + job: job7048 + - record: job:http_inprogress_requests:sum:7049 + expr: vector(1) + labels: + job: job7049 + - record: job:http_inprogress_requests:sum:7050 + expr: vector(1) + labels: + job: job7050 + - record: job:http_inprogress_requests:sum:7051 + expr: vector(1) + labels: + job: job7051 + - record: job:http_inprogress_requests:sum:7052 + expr: vector(1) + labels: + job: job7052 + - record: job:http_inprogress_requests:sum:7053 + expr: vector(1) + labels: + job: job7053 + - record: job:http_inprogress_requests:sum:7054 + expr: vector(1) + labels: + job: job7054 + - record: job:http_inprogress_requests:sum:7055 + expr: vector(1) + labels: + job: job7055 + - record: job:http_inprogress_requests:sum:7056 + expr: vector(1) + labels: + job: job7056 + - record: job:http_inprogress_requests:sum:7057 + expr: vector(1) + labels: + job: job7057 + - record: job:http_inprogress_requests:sum:7058 + expr: vector(1) + labels: + job: job7058 + - record: job:http_inprogress_requests:sum:7059 + expr: vector(1) + labels: + job: job7059 + - record: job:http_inprogress_requests:sum:7060 + expr: vector(1) + labels: + job: job7060 + - record: job:http_inprogress_requests:sum:7061 + expr: vector(1) + labels: + job: job7061 + - record: job:http_inprogress_requests:sum:7062 + expr: vector(1) + labels: + job: job7062 + - record: job:http_inprogress_requests:sum:7063 + expr: vector(1) + labels: + job: job7063 + - record: job:http_inprogress_requests:sum:7064 + expr: vector(1) + labels: + job: job7064 + - record: job:http_inprogress_requests:sum:7065 + expr: vector(1) + labels: + job: job7065 + - record: job:http_inprogress_requests:sum:7066 + expr: vector(1) + labels: + job: job7066 + - record: job:http_inprogress_requests:sum:7067 + expr: vector(1) + labels: + job: job7067 + - record: job:http_inprogress_requests:sum:7068 + expr: vector(1) + labels: + job: job7068 + - record: job:http_inprogress_requests:sum:7069 + expr: vector(1) + labels: + job: job7069 + - record: job:http_inprogress_requests:sum:7070 + expr: vector(1) + labels: + job: job7070 + - record: job:http_inprogress_requests:sum:7071 + expr: vector(1) + labels: + job: job7071 + - record: job:http_inprogress_requests:sum:7072 + expr: vector(1) + labels: + job: job7072 + - record: job:http_inprogress_requests:sum:7073 + expr: vector(1) + labels: + job: job7073 + - record: job:http_inprogress_requests:sum:7074 + expr: vector(1) + labels: + job: job7074 + - record: job:http_inprogress_requests:sum:7075 + expr: vector(1) + labels: + job: job7075 + - record: job:http_inprogress_requests:sum:7076 + expr: vector(1) + labels: + job: job7076 + - record: job:http_inprogress_requests:sum:7077 + expr: vector(1) + labels: + job: job7077 + - record: job:http_inprogress_requests:sum:7078 + expr: vector(1) + labels: + job: job7078 + - record: job:http_inprogress_requests:sum:7079 + expr: vector(1) + labels: + job: job7079 + - record: job:http_inprogress_requests:sum:7080 + expr: vector(1) + labels: + job: job7080 + - record: job:http_inprogress_requests:sum:7081 + expr: vector(1) + labels: + job: job7081 + - record: job:http_inprogress_requests:sum:7082 + expr: vector(1) + labels: + job: job7082 + - record: job:http_inprogress_requests:sum:7083 + expr: vector(1) + labels: + job: job7083 + - record: job:http_inprogress_requests:sum:7084 + expr: vector(1) + labels: + job: job7084 + - record: job:http_inprogress_requests:sum:7085 + expr: vector(1) + labels: + job: job7085 + - record: job:http_inprogress_requests:sum:7086 + expr: vector(1) + labels: + job: job7086 + - record: job:http_inprogress_requests:sum:7087 + expr: vector(1) + labels: + job: job7087 + - record: job:http_inprogress_requests:sum:7088 + expr: vector(1) + labels: + job: job7088 + - record: job:http_inprogress_requests:sum:7089 + expr: vector(1) + labels: + job: job7089 + - record: job:http_inprogress_requests:sum:7090 + expr: vector(1) + labels: + job: job7090 + - record: job:http_inprogress_requests:sum:7091 + expr: vector(1) + labels: + job: job7091 + - record: job:http_inprogress_requests:sum:7092 + expr: vector(1) + labels: + job: job7092 + - record: job:http_inprogress_requests:sum:7093 + expr: vector(1) + labels: + job: job7093 + - record: job:http_inprogress_requests:sum:7094 + expr: vector(1) + labels: + job: job7094 + - record: job:http_inprogress_requests:sum:7095 + expr: vector(1) + labels: + job: job7095 + - record: job:http_inprogress_requests:sum:7096 + expr: vector(1) + labels: + job: job7096 + - record: job:http_inprogress_requests:sum:7097 + expr: vector(1) + labels: + job: job7097 + - record: job:http_inprogress_requests:sum:7098 + expr: vector(1) + labels: + job: job7098 + - record: job:http_inprogress_requests:sum:7099 + expr: vector(1) + labels: + job: job7099 + - record: job:http_inprogress_requests:sum:7100 + expr: vector(1) + labels: + job: job7100 + - record: job:http_inprogress_requests:sum:7101 + expr: vector(1) + labels: + job: job7101 + - record: job:http_inprogress_requests:sum:7102 + expr: vector(1) + labels: + job: job7102 + - record: job:http_inprogress_requests:sum:7103 + expr: vector(1) + labels: + job: job7103 + - record: job:http_inprogress_requests:sum:7104 + expr: vector(1) + labels: + job: job7104 + - record: job:http_inprogress_requests:sum:7105 + expr: vector(1) + labels: + job: job7105 + - record: job:http_inprogress_requests:sum:7106 + expr: vector(1) + labels: + job: job7106 + - record: job:http_inprogress_requests:sum:7107 + expr: vector(1) + labels: + job: job7107 + - record: job:http_inprogress_requests:sum:7108 + expr: vector(1) + labels: + job: job7108 + - record: job:http_inprogress_requests:sum:7109 + expr: vector(1) + labels: + job: job7109 + - record: job:http_inprogress_requests:sum:7110 + expr: vector(1) + labels: + job: job7110 + - record: job:http_inprogress_requests:sum:7111 + expr: vector(1) + labels: + job: job7111 + - record: job:http_inprogress_requests:sum:7112 + expr: vector(1) + labels: + job: job7112 + - record: job:http_inprogress_requests:sum:7113 + expr: vector(1) + labels: + job: job7113 + - record: job:http_inprogress_requests:sum:7114 + expr: vector(1) + labels: + job: job7114 + - record: job:http_inprogress_requests:sum:7115 + expr: vector(1) + labels: + job: job7115 + - record: job:http_inprogress_requests:sum:7116 + expr: vector(1) + labels: + job: job7116 + - record: job:http_inprogress_requests:sum:7117 + expr: vector(1) + labels: + job: job7117 + - record: job:http_inprogress_requests:sum:7118 + expr: vector(1) + labels: + job: job7118 + - record: job:http_inprogress_requests:sum:7119 + expr: vector(1) + labels: + job: job7119 + - record: job:http_inprogress_requests:sum:7120 + expr: vector(1) + labels: + job: job7120 + - record: job:http_inprogress_requests:sum:7121 + expr: vector(1) + labels: + job: job7121 + - record: job:http_inprogress_requests:sum:7122 + expr: vector(1) + labels: + job: job7122 + - record: job:http_inprogress_requests:sum:7123 + expr: vector(1) + labels: + job: job7123 + - record: job:http_inprogress_requests:sum:7124 + expr: vector(1) + labels: + job: job7124 + - record: job:http_inprogress_requests:sum:7125 + expr: vector(1) + labels: + job: job7125 + - record: job:http_inprogress_requests:sum:7126 + expr: vector(1) + labels: + job: job7126 + - record: job:http_inprogress_requests:sum:7127 + expr: vector(1) + labels: + job: job7127 + - record: job:http_inprogress_requests:sum:7128 + expr: vector(1) + labels: + job: job7128 + - record: job:http_inprogress_requests:sum:7129 + expr: vector(1) + labels: + job: job7129 + - record: job:http_inprogress_requests:sum:7130 + expr: vector(1) + labels: + job: job7130 + - record: job:http_inprogress_requests:sum:7131 + expr: vector(1) + labels: + job: job7131 + - record: job:http_inprogress_requests:sum:7132 + expr: vector(1) + labels: + job: job7132 + - record: job:http_inprogress_requests:sum:7133 + expr: vector(1) + labels: + job: job7133 + - record: job:http_inprogress_requests:sum:7134 + expr: vector(1) + labels: + job: job7134 + - record: job:http_inprogress_requests:sum:7135 + expr: vector(1) + labels: + job: job7135 + - record: job:http_inprogress_requests:sum:7136 + expr: vector(1) + labels: + job: job7136 + - record: job:http_inprogress_requests:sum:7137 + expr: vector(1) + labels: + job: job7137 + - record: job:http_inprogress_requests:sum:7138 + expr: vector(1) + labels: + job: job7138 + - record: job:http_inprogress_requests:sum:7139 + expr: vector(1) + labels: + job: job7139 + - record: job:http_inprogress_requests:sum:7140 + expr: vector(1) + labels: + job: job7140 + - record: job:http_inprogress_requests:sum:7141 + expr: vector(1) + labels: + job: job7141 + - record: job:http_inprogress_requests:sum:7142 + expr: vector(1) + labels: + job: job7142 + - record: job:http_inprogress_requests:sum:7143 + expr: vector(1) + labels: + job: job7143 + - record: job:http_inprogress_requests:sum:7144 + expr: vector(1) + labels: + job: job7144 + - record: job:http_inprogress_requests:sum:7145 + expr: vector(1) + labels: + job: job7145 + - record: job:http_inprogress_requests:sum:7146 + expr: vector(1) + labels: + job: job7146 + - record: job:http_inprogress_requests:sum:7147 + expr: vector(1) + labels: + job: job7147 + - record: job:http_inprogress_requests:sum:7148 + expr: vector(1) + labels: + job: job7148 + - record: job:http_inprogress_requests:sum:7149 + expr: vector(1) + labels: + job: job7149 + - record: job:http_inprogress_requests:sum:7150 + expr: vector(1) + labels: + job: job7150 + - record: job:http_inprogress_requests:sum:7151 + expr: vector(1) + labels: + job: job7151 + - record: job:http_inprogress_requests:sum:7152 + expr: vector(1) + labels: + job: job7152 + - record: job:http_inprogress_requests:sum:7153 + expr: vector(1) + labels: + job: job7153 + - record: job:http_inprogress_requests:sum:7154 + expr: vector(1) + labels: + job: job7154 + - record: job:http_inprogress_requests:sum:7155 + expr: vector(1) + labels: + job: job7155 + - record: job:http_inprogress_requests:sum:7156 + expr: vector(1) + labels: + job: job7156 + - record: job:http_inprogress_requests:sum:7157 + expr: vector(1) + labels: + job: job7157 + - record: job:http_inprogress_requests:sum:7158 + expr: vector(1) + labels: + job: job7158 + - record: job:http_inprogress_requests:sum:7159 + expr: vector(1) + labels: + job: job7159 + - record: job:http_inprogress_requests:sum:7160 + expr: vector(1) + labels: + job: job7160 + - record: job:http_inprogress_requests:sum:7161 + expr: vector(1) + labels: + job: job7161 + - record: job:http_inprogress_requests:sum:7162 + expr: vector(1) + labels: + job: job7162 + - record: job:http_inprogress_requests:sum:7163 + expr: vector(1) + labels: + job: job7163 + - record: job:http_inprogress_requests:sum:7164 + expr: vector(1) + labels: + job: job7164 + - record: job:http_inprogress_requests:sum:7165 + expr: vector(1) + labels: + job: job7165 + - record: job:http_inprogress_requests:sum:7166 + expr: vector(1) + labels: + job: job7166 + - record: job:http_inprogress_requests:sum:7167 + expr: vector(1) + labels: + job: job7167 + - record: job:http_inprogress_requests:sum:7168 + expr: vector(1) + labels: + job: job7168 + - record: job:http_inprogress_requests:sum:7169 + expr: vector(1) + labels: + job: job7169 + - record: job:http_inprogress_requests:sum:7170 + expr: vector(1) + labels: + job: job7170 + - record: job:http_inprogress_requests:sum:7171 + expr: vector(1) + labels: + job: job7171 + - record: job:http_inprogress_requests:sum:7172 + expr: vector(1) + labels: + job: job7172 + - record: job:http_inprogress_requests:sum:7173 + expr: vector(1) + labels: + job: job7173 + - record: job:http_inprogress_requests:sum:7174 + expr: vector(1) + labels: + job: job7174 + - record: job:http_inprogress_requests:sum:7175 + expr: vector(1) + labels: + job: job7175 + - record: job:http_inprogress_requests:sum:7176 + expr: vector(1) + labels: + job: job7176 + - record: job:http_inprogress_requests:sum:7177 + expr: vector(1) + labels: + job: job7177 + - record: job:http_inprogress_requests:sum:7178 + expr: vector(1) + labels: + job: job7178 + - record: job:http_inprogress_requests:sum:7179 + expr: vector(1) + labels: + job: job7179 + - record: job:http_inprogress_requests:sum:7180 + expr: vector(1) + labels: + job: job7180 + - record: job:http_inprogress_requests:sum:7181 + expr: vector(1) + labels: + job: job7181 + - record: job:http_inprogress_requests:sum:7182 + expr: vector(1) + labels: + job: job7182 + - record: job:http_inprogress_requests:sum:7183 + expr: vector(1) + labels: + job: job7183 + - record: job:http_inprogress_requests:sum:7184 + expr: vector(1) + labels: + job: job7184 + - record: job:http_inprogress_requests:sum:7185 + expr: vector(1) + labels: + job: job7185 + - record: job:http_inprogress_requests:sum:7186 + expr: vector(1) + labels: + job: job7186 + - record: job:http_inprogress_requests:sum:7187 + expr: vector(1) + labels: + job: job7187 + - record: job:http_inprogress_requests:sum:7188 + expr: vector(1) + labels: + job: job7188 + - record: job:http_inprogress_requests:sum:7189 + expr: vector(1) + labels: + job: job7189 + - record: job:http_inprogress_requests:sum:7190 + expr: vector(1) + labels: + job: job7190 + - record: job:http_inprogress_requests:sum:7191 + expr: vector(1) + labels: + job: job7191 + - record: job:http_inprogress_requests:sum:7192 + expr: vector(1) + labels: + job: job7192 + - record: job:http_inprogress_requests:sum:7193 + expr: vector(1) + labels: + job: job7193 + - record: job:http_inprogress_requests:sum:7194 + expr: vector(1) + labels: + job: job7194 + - record: job:http_inprogress_requests:sum:7195 + expr: vector(1) + labels: + job: job7195 + - record: job:http_inprogress_requests:sum:7196 + expr: vector(1) + labels: + job: job7196 + - record: job:http_inprogress_requests:sum:7197 + expr: vector(1) + labels: + job: job7197 + - record: job:http_inprogress_requests:sum:7198 + expr: vector(1) + labels: + job: job7198 + - record: job:http_inprogress_requests:sum:7199 + expr: vector(1) + labels: + job: job7199 + - record: job:http_inprogress_requests:sum:7200 + expr: vector(1) + labels: + job: job7200 + - record: job:http_inprogress_requests:sum:7201 + expr: vector(1) + labels: + job: job7201 + - record: job:http_inprogress_requests:sum:7202 + expr: vector(1) + labels: + job: job7202 + - record: job:http_inprogress_requests:sum:7203 + expr: vector(1) + labels: + job: job7203 + - record: job:http_inprogress_requests:sum:7204 + expr: vector(1) + labels: + job: job7204 + - record: job:http_inprogress_requests:sum:7205 + expr: vector(1) + labels: + job: job7205 + - record: job:http_inprogress_requests:sum:7206 + expr: vector(1) + labels: + job: job7206 + - record: job:http_inprogress_requests:sum:7207 + expr: vector(1) + labels: + job: job7207 + - record: job:http_inprogress_requests:sum:7208 + expr: vector(1) + labels: + job: job7208 + - record: job:http_inprogress_requests:sum:7209 + expr: vector(1) + labels: + job: job7209 + - record: job:http_inprogress_requests:sum:7210 + expr: vector(1) + labels: + job: job7210 + - record: job:http_inprogress_requests:sum:7211 + expr: vector(1) + labels: + job: job7211 + - record: job:http_inprogress_requests:sum:7212 + expr: vector(1) + labels: + job: job7212 + - record: job:http_inprogress_requests:sum:7213 + expr: vector(1) + labels: + job: job7213 + - record: job:http_inprogress_requests:sum:7214 + expr: vector(1) + labels: + job: job7214 + - record: job:http_inprogress_requests:sum:7215 + expr: vector(1) + labels: + job: job7215 + - record: job:http_inprogress_requests:sum:7216 + expr: vector(1) + labels: + job: job7216 + - record: job:http_inprogress_requests:sum:7217 + expr: vector(1) + labels: + job: job7217 + - record: job:http_inprogress_requests:sum:7218 + expr: vector(1) + labels: + job: job7218 + - record: job:http_inprogress_requests:sum:7219 + expr: vector(1) + labels: + job: job7219 + - record: job:http_inprogress_requests:sum:7220 + expr: vector(1) + labels: + job: job7220 + - record: job:http_inprogress_requests:sum:7221 + expr: vector(1) + labels: + job: job7221 + - record: job:http_inprogress_requests:sum:7222 + expr: vector(1) + labels: + job: job7222 + - record: job:http_inprogress_requests:sum:7223 + expr: vector(1) + labels: + job: job7223 + - record: job:http_inprogress_requests:sum:7224 + expr: vector(1) + labels: + job: job7224 + - record: job:http_inprogress_requests:sum:7225 + expr: vector(1) + labels: + job: job7225 + - record: job:http_inprogress_requests:sum:7226 + expr: vector(1) + labels: + job: job7226 + - record: job:http_inprogress_requests:sum:7227 + expr: vector(1) + labels: + job: job7227 + - record: job:http_inprogress_requests:sum:7228 + expr: vector(1) + labels: + job: job7228 + - record: job:http_inprogress_requests:sum:7229 + expr: vector(1) + labels: + job: job7229 + - record: job:http_inprogress_requests:sum:7230 + expr: vector(1) + labels: + job: job7230 + - record: job:http_inprogress_requests:sum:7231 + expr: vector(1) + labels: + job: job7231 + - record: job:http_inprogress_requests:sum:7232 + expr: vector(1) + labels: + job: job7232 + - record: job:http_inprogress_requests:sum:7233 + expr: vector(1) + labels: + job: job7233 + - record: job:http_inprogress_requests:sum:7234 + expr: vector(1) + labels: + job: job7234 + - record: job:http_inprogress_requests:sum:7235 + expr: vector(1) + labels: + job: job7235 + - record: job:http_inprogress_requests:sum:7236 + expr: vector(1) + labels: + job: job7236 + - record: job:http_inprogress_requests:sum:7237 + expr: vector(1) + labels: + job: job7237 + - record: job:http_inprogress_requests:sum:7238 + expr: vector(1) + labels: + job: job7238 + - record: job:http_inprogress_requests:sum:7239 + expr: vector(1) + labels: + job: job7239 + - record: job:http_inprogress_requests:sum:7240 + expr: vector(1) + labels: + job: job7240 + - record: job:http_inprogress_requests:sum:7241 + expr: vector(1) + labels: + job: job7241 + - record: job:http_inprogress_requests:sum:7242 + expr: vector(1) + labels: + job: job7242 + - record: job:http_inprogress_requests:sum:7243 + expr: vector(1) + labels: + job: job7243 + - record: job:http_inprogress_requests:sum:7244 + expr: vector(1) + labels: + job: job7244 + - record: job:http_inprogress_requests:sum:7245 + expr: vector(1) + labels: + job: job7245 + - record: job:http_inprogress_requests:sum:7246 + expr: vector(1) + labels: + job: job7246 + - record: job:http_inprogress_requests:sum:7247 + expr: vector(1) + labels: + job: job7247 + - record: job:http_inprogress_requests:sum:7248 + expr: vector(1) + labels: + job: job7248 + - record: job:http_inprogress_requests:sum:7249 + expr: vector(1) + labels: + job: job7249 + - record: job:http_inprogress_requests:sum:7250 + expr: vector(1) + labels: + job: job7250 + - record: job:http_inprogress_requests:sum:7251 + expr: vector(1) + labels: + job: job7251 + - record: job:http_inprogress_requests:sum:7252 + expr: vector(1) + labels: + job: job7252 + - record: job:http_inprogress_requests:sum:7253 + expr: vector(1) + labels: + job: job7253 + - record: job:http_inprogress_requests:sum:7254 + expr: vector(1) + labels: + job: job7254 + - record: job:http_inprogress_requests:sum:7255 + expr: vector(1) + labels: + job: job7255 + - record: job:http_inprogress_requests:sum:7256 + expr: vector(1) + labels: + job: job7256 + - record: job:http_inprogress_requests:sum:7257 + expr: vector(1) + labels: + job: job7257 + - record: job:http_inprogress_requests:sum:7258 + expr: vector(1) + labels: + job: job7258 + - record: job:http_inprogress_requests:sum:7259 + expr: vector(1) + labels: + job: job7259 + - record: job:http_inprogress_requests:sum:7260 + expr: vector(1) + labels: + job: job7260 + - record: job:http_inprogress_requests:sum:7261 + expr: vector(1) + labels: + job: job7261 + - record: job:http_inprogress_requests:sum:7262 + expr: vector(1) + labels: + job: job7262 + - record: job:http_inprogress_requests:sum:7263 + expr: vector(1) + labels: + job: job7263 + - record: job:http_inprogress_requests:sum:7264 + expr: vector(1) + labels: + job: job7264 + - record: job:http_inprogress_requests:sum:7265 + expr: vector(1) + labels: + job: job7265 + - record: job:http_inprogress_requests:sum:7266 + expr: vector(1) + labels: + job: job7266 + - record: job:http_inprogress_requests:sum:7267 + expr: vector(1) + labels: + job: job7267 + - record: job:http_inprogress_requests:sum:7268 + expr: vector(1) + labels: + job: job7268 + - record: job:http_inprogress_requests:sum:7269 + expr: vector(1) + labels: + job: job7269 + - record: job:http_inprogress_requests:sum:7270 + expr: vector(1) + labels: + job: job7270 + - record: job:http_inprogress_requests:sum:7271 + expr: vector(1) + labels: + job: job7271 + - record: job:http_inprogress_requests:sum:7272 + expr: vector(1) + labels: + job: job7272 + - record: job:http_inprogress_requests:sum:7273 + expr: vector(1) + labels: + job: job7273 + - record: job:http_inprogress_requests:sum:7274 + expr: vector(1) + labels: + job: job7274 + - record: job:http_inprogress_requests:sum:7275 + expr: vector(1) + labels: + job: job7275 + - record: job:http_inprogress_requests:sum:7276 + expr: vector(1) + labels: + job: job7276 + - record: job:http_inprogress_requests:sum:7277 + expr: vector(1) + labels: + job: job7277 + - record: job:http_inprogress_requests:sum:7278 + expr: vector(1) + labels: + job: job7278 + - record: job:http_inprogress_requests:sum:7279 + expr: vector(1) + labels: + job: job7279 + - record: job:http_inprogress_requests:sum:7280 + expr: vector(1) + labels: + job: job7280 + - record: job:http_inprogress_requests:sum:7281 + expr: vector(1) + labels: + job: job7281 + - record: job:http_inprogress_requests:sum:7282 + expr: vector(1) + labels: + job: job7282 + - record: job:http_inprogress_requests:sum:7283 + expr: vector(1) + labels: + job: job7283 + - record: job:http_inprogress_requests:sum:7284 + expr: vector(1) + labels: + job: job7284 + - record: job:http_inprogress_requests:sum:7285 + expr: vector(1) + labels: + job: job7285 + - record: job:http_inprogress_requests:sum:7286 + expr: vector(1) + labels: + job: job7286 + - record: job:http_inprogress_requests:sum:7287 + expr: vector(1) + labels: + job: job7287 + - record: job:http_inprogress_requests:sum:7288 + expr: vector(1) + labels: + job: job7288 + - record: job:http_inprogress_requests:sum:7289 + expr: vector(1) + labels: + job: job7289 + - record: job:http_inprogress_requests:sum:7290 + expr: vector(1) + labels: + job: job7290 + - record: job:http_inprogress_requests:sum:7291 + expr: vector(1) + labels: + job: job7291 + - record: job:http_inprogress_requests:sum:7292 + expr: vector(1) + labels: + job: job7292 + - record: job:http_inprogress_requests:sum:7293 + expr: vector(1) + labels: + job: job7293 + - record: job:http_inprogress_requests:sum:7294 + expr: vector(1) + labels: + job: job7294 + - record: job:http_inprogress_requests:sum:7295 + expr: vector(1) + labels: + job: job7295 + - record: job:http_inprogress_requests:sum:7296 + expr: vector(1) + labels: + job: job7296 + - record: job:http_inprogress_requests:sum:7297 + expr: vector(1) + labels: + job: job7297 + - record: job:http_inprogress_requests:sum:7298 + expr: vector(1) + labels: + job: job7298 + - record: job:http_inprogress_requests:sum:7299 + expr: vector(1) + labels: + job: job7299 + - record: job:http_inprogress_requests:sum:7300 + expr: vector(1) + labels: + job: job7300 + - record: job:http_inprogress_requests:sum:7301 + expr: vector(1) + labels: + job: job7301 + - record: job:http_inprogress_requests:sum:7302 + expr: vector(1) + labels: + job: job7302 + - record: job:http_inprogress_requests:sum:7303 + expr: vector(1) + labels: + job: job7303 + - record: job:http_inprogress_requests:sum:7304 + expr: vector(1) + labels: + job: job7304 + - record: job:http_inprogress_requests:sum:7305 + expr: vector(1) + labels: + job: job7305 + - record: job:http_inprogress_requests:sum:7306 + expr: vector(1) + labels: + job: job7306 + - record: job:http_inprogress_requests:sum:7307 + expr: vector(1) + labels: + job: job7307 + - record: job:http_inprogress_requests:sum:7308 + expr: vector(1) + labels: + job: job7308 + - record: job:http_inprogress_requests:sum:7309 + expr: vector(1) + labels: + job: job7309 + - record: job:http_inprogress_requests:sum:7310 + expr: vector(1) + labels: + job: job7310 + - record: job:http_inprogress_requests:sum:7311 + expr: vector(1) + labels: + job: job7311 + - record: job:http_inprogress_requests:sum:7312 + expr: vector(1) + labels: + job: job7312 + - record: job:http_inprogress_requests:sum:7313 + expr: vector(1) + labels: + job: job7313 + - record: job:http_inprogress_requests:sum:7314 + expr: vector(1) + labels: + job: job7314 + - record: job:http_inprogress_requests:sum:7315 + expr: vector(1) + labels: + job: job7315 + - record: job:http_inprogress_requests:sum:7316 + expr: vector(1) + labels: + job: job7316 + - record: job:http_inprogress_requests:sum:7317 + expr: vector(1) + labels: + job: job7317 + - record: job:http_inprogress_requests:sum:7318 + expr: vector(1) + labels: + job: job7318 + - record: job:http_inprogress_requests:sum:7319 + expr: vector(1) + labels: + job: job7319 + - record: job:http_inprogress_requests:sum:7320 + expr: vector(1) + labels: + job: job7320 + - record: job:http_inprogress_requests:sum:7321 + expr: vector(1) + labels: + job: job7321 + - record: job:http_inprogress_requests:sum:7322 + expr: vector(1) + labels: + job: job7322 + - record: job:http_inprogress_requests:sum:7323 + expr: vector(1) + labels: + job: job7323 + - record: job:http_inprogress_requests:sum:7324 + expr: vector(1) + labels: + job: job7324 + - record: job:http_inprogress_requests:sum:7325 + expr: vector(1) + labels: + job: job7325 + - record: job:http_inprogress_requests:sum:7326 + expr: vector(1) + labels: + job: job7326 + - record: job:http_inprogress_requests:sum:7327 + expr: vector(1) + labels: + job: job7327 + - record: job:http_inprogress_requests:sum:7328 + expr: vector(1) + labels: + job: job7328 + - record: job:http_inprogress_requests:sum:7329 + expr: vector(1) + labels: + job: job7329 + - record: job:http_inprogress_requests:sum:7330 + expr: vector(1) + labels: + job: job7330 + - record: job:http_inprogress_requests:sum:7331 + expr: vector(1) + labels: + job: job7331 + - record: job:http_inprogress_requests:sum:7332 + expr: vector(1) + labels: + job: job7332 + - record: job:http_inprogress_requests:sum:7333 + expr: vector(1) + labels: + job: job7333 + - record: job:http_inprogress_requests:sum:7334 + expr: vector(1) + labels: + job: job7334 + - record: job:http_inprogress_requests:sum:7335 + expr: vector(1) + labels: + job: job7335 + - record: job:http_inprogress_requests:sum:7336 + expr: vector(1) + labels: + job: job7336 + - record: job:http_inprogress_requests:sum:7337 + expr: vector(1) + labels: + job: job7337 + - record: job:http_inprogress_requests:sum:7338 + expr: vector(1) + labels: + job: job7338 + - record: job:http_inprogress_requests:sum:7339 + expr: vector(1) + labels: + job: job7339 + - record: job:http_inprogress_requests:sum:7340 + expr: vector(1) + labels: + job: job7340 + - record: job:http_inprogress_requests:sum:7341 + expr: vector(1) + labels: + job: job7341 + - record: job:http_inprogress_requests:sum:7342 + expr: vector(1) + labels: + job: job7342 + - record: job:http_inprogress_requests:sum:7343 + expr: vector(1) + labels: + job: job7343 + - record: job:http_inprogress_requests:sum:7344 + expr: vector(1) + labels: + job: job7344 + - record: job:http_inprogress_requests:sum:7345 + expr: vector(1) + labels: + job: job7345 + - record: job:http_inprogress_requests:sum:7346 + expr: vector(1) + labels: + job: job7346 + - record: job:http_inprogress_requests:sum:7347 + expr: vector(1) + labels: + job: job7347 + - record: job:http_inprogress_requests:sum:7348 + expr: vector(1) + labels: + job: job7348 + - record: job:http_inprogress_requests:sum:7349 + expr: vector(1) + labels: + job: job7349 + - record: job:http_inprogress_requests:sum:7350 + expr: vector(1) + labels: + job: job7350 + - record: job:http_inprogress_requests:sum:7351 + expr: vector(1) + labels: + job: job7351 + - record: job:http_inprogress_requests:sum:7352 + expr: vector(1) + labels: + job: job7352 + - record: job:http_inprogress_requests:sum:7353 + expr: vector(1) + labels: + job: job7353 + - record: job:http_inprogress_requests:sum:7354 + expr: vector(1) + labels: + job: job7354 + - record: job:http_inprogress_requests:sum:7355 + expr: vector(1) + labels: + job: job7355 + - record: job:http_inprogress_requests:sum:7356 + expr: vector(1) + labels: + job: job7356 + - record: job:http_inprogress_requests:sum:7357 + expr: vector(1) + labels: + job: job7357 + - record: job:http_inprogress_requests:sum:7358 + expr: vector(1) + labels: + job: job7358 + - record: job:http_inprogress_requests:sum:7359 + expr: vector(1) + labels: + job: job7359 + - record: job:http_inprogress_requests:sum:7360 + expr: vector(1) + labels: + job: job7360 + - record: job:http_inprogress_requests:sum:7361 + expr: vector(1) + labels: + job: job7361 + - record: job:http_inprogress_requests:sum:7362 + expr: vector(1) + labels: + job: job7362 + - record: job:http_inprogress_requests:sum:7363 + expr: vector(1) + labels: + job: job7363 + - record: job:http_inprogress_requests:sum:7364 + expr: vector(1) + labels: + job: job7364 + - record: job:http_inprogress_requests:sum:7365 + expr: vector(1) + labels: + job: job7365 + - record: job:http_inprogress_requests:sum:7366 + expr: vector(1) + labels: + job: job7366 + - record: job:http_inprogress_requests:sum:7367 + expr: vector(1) + labels: + job: job7367 + - record: job:http_inprogress_requests:sum:7368 + expr: vector(1) + labels: + job: job7368 + - record: job:http_inprogress_requests:sum:7369 + expr: vector(1) + labels: + job: job7369 + - record: job:http_inprogress_requests:sum:7370 + expr: vector(1) + labels: + job: job7370 + - record: job:http_inprogress_requests:sum:7371 + expr: vector(1) + labels: + job: job7371 + - record: job:http_inprogress_requests:sum:7372 + expr: vector(1) + labels: + job: job7372 + - record: job:http_inprogress_requests:sum:7373 + expr: vector(1) + labels: + job: job7373 + - record: job:http_inprogress_requests:sum:7374 + expr: vector(1) + labels: + job: job7374 + - record: job:http_inprogress_requests:sum:7375 + expr: vector(1) + labels: + job: job7375 + - record: job:http_inprogress_requests:sum:7376 + expr: vector(1) + labels: + job: job7376 + - record: job:http_inprogress_requests:sum:7377 + expr: vector(1) + labels: + job: job7377 + - record: job:http_inprogress_requests:sum:7378 + expr: vector(1) + labels: + job: job7378 + - record: job:http_inprogress_requests:sum:7379 + expr: vector(1) + labels: + job: job7379 + - record: job:http_inprogress_requests:sum:7380 + expr: vector(1) + labels: + job: job7380 + - record: job:http_inprogress_requests:sum:7381 + expr: vector(1) + labels: + job: job7381 + - record: job:http_inprogress_requests:sum:7382 + expr: vector(1) + labels: + job: job7382 + - record: job:http_inprogress_requests:sum:7383 + expr: vector(1) + labels: + job: job7383 + - record: job:http_inprogress_requests:sum:7384 + expr: vector(1) + labels: + job: job7384 + - record: job:http_inprogress_requests:sum:7385 + expr: vector(1) + labels: + job: job7385 + - record: job:http_inprogress_requests:sum:7386 + expr: vector(1) + labels: + job: job7386 + - record: job:http_inprogress_requests:sum:7387 + expr: vector(1) + labels: + job: job7387 + - record: job:http_inprogress_requests:sum:7388 + expr: vector(1) + labels: + job: job7388 + - record: job:http_inprogress_requests:sum:7389 + expr: vector(1) + labels: + job: job7389 + - record: job:http_inprogress_requests:sum:7390 + expr: vector(1) + labels: + job: job7390 + - record: job:http_inprogress_requests:sum:7391 + expr: vector(1) + labels: + job: job7391 + - record: job:http_inprogress_requests:sum:7392 + expr: vector(1) + labels: + job: job7392 + - record: job:http_inprogress_requests:sum:7393 + expr: vector(1) + labels: + job: job7393 + - record: job:http_inprogress_requests:sum:7394 + expr: vector(1) + labels: + job: job7394 + - record: job:http_inprogress_requests:sum:7395 + expr: vector(1) + labels: + job: job7395 + - record: job:http_inprogress_requests:sum:7396 + expr: vector(1) + labels: + job: job7396 + - record: job:http_inprogress_requests:sum:7397 + expr: vector(1) + labels: + job: job7397 + - record: job:http_inprogress_requests:sum:7398 + expr: vector(1) + labels: + job: job7398 + - record: job:http_inprogress_requests:sum:7399 + expr: vector(1) + labels: + job: job7399 + - record: job:http_inprogress_requests:sum:7400 + expr: vector(1) + labels: + job: job7400 + - record: job:http_inprogress_requests:sum:7401 + expr: vector(1) + labels: + job: job7401 + - record: job:http_inprogress_requests:sum:7402 + expr: vector(1) + labels: + job: job7402 + - record: job:http_inprogress_requests:sum:7403 + expr: vector(1) + labels: + job: job7403 + - record: job:http_inprogress_requests:sum:7404 + expr: vector(1) + labels: + job: job7404 + - record: job:http_inprogress_requests:sum:7405 + expr: vector(1) + labels: + job: job7405 + - record: job:http_inprogress_requests:sum:7406 + expr: vector(1) + labels: + job: job7406 + - record: job:http_inprogress_requests:sum:7407 + expr: vector(1) + labels: + job: job7407 + - record: job:http_inprogress_requests:sum:7408 + expr: vector(1) + labels: + job: job7408 + - record: job:http_inprogress_requests:sum:7409 + expr: vector(1) + labels: + job: job7409 + - record: job:http_inprogress_requests:sum:7410 + expr: vector(1) + labels: + job: job7410 + - record: job:http_inprogress_requests:sum:7411 + expr: vector(1) + labels: + job: job7411 + - record: job:http_inprogress_requests:sum:7412 + expr: vector(1) + labels: + job: job7412 + - record: job:http_inprogress_requests:sum:7413 + expr: vector(1) + labels: + job: job7413 + - record: job:http_inprogress_requests:sum:7414 + expr: vector(1) + labels: + job: job7414 + - record: job:http_inprogress_requests:sum:7415 + expr: vector(1) + labels: + job: job7415 + - record: job:http_inprogress_requests:sum:7416 + expr: vector(1) + labels: + job: job7416 + - record: job:http_inprogress_requests:sum:7417 + expr: vector(1) + labels: + job: job7417 + - record: job:http_inprogress_requests:sum:7418 + expr: vector(1) + labels: + job: job7418 + - record: job:http_inprogress_requests:sum:7419 + expr: vector(1) + labels: + job: job7419 + - record: job:http_inprogress_requests:sum:7420 + expr: vector(1) + labels: + job: job7420 + - record: job:http_inprogress_requests:sum:7421 + expr: vector(1) + labels: + job: job7421 + - record: job:http_inprogress_requests:sum:7422 + expr: vector(1) + labels: + job: job7422 + - record: job:http_inprogress_requests:sum:7423 + expr: vector(1) + labels: + job: job7423 + - record: job:http_inprogress_requests:sum:7424 + expr: vector(1) + labels: + job: job7424 + - record: job:http_inprogress_requests:sum:7425 + expr: vector(1) + labels: + job: job7425 + - record: job:http_inprogress_requests:sum:7426 + expr: vector(1) + labels: + job: job7426 + - record: job:http_inprogress_requests:sum:7427 + expr: vector(1) + labels: + job: job7427 + - record: job:http_inprogress_requests:sum:7428 + expr: vector(1) + labels: + job: job7428 + - record: job:http_inprogress_requests:sum:7429 + expr: vector(1) + labels: + job: job7429 + - record: job:http_inprogress_requests:sum:7430 + expr: vector(1) + labels: + job: job7430 + - record: job:http_inprogress_requests:sum:7431 + expr: vector(1) + labels: + job: job7431 + - record: job:http_inprogress_requests:sum:7432 + expr: vector(1) + labels: + job: job7432 + - record: job:http_inprogress_requests:sum:7433 + expr: vector(1) + labels: + job: job7433 + - record: job:http_inprogress_requests:sum:7434 + expr: vector(1) + labels: + job: job7434 + - record: job:http_inprogress_requests:sum:7435 + expr: vector(1) + labels: + job: job7435 + - record: job:http_inprogress_requests:sum:7436 + expr: vector(1) + labels: + job: job7436 + - record: job:http_inprogress_requests:sum:7437 + expr: vector(1) + labels: + job: job7437 + - record: job:http_inprogress_requests:sum:7438 + expr: vector(1) + labels: + job: job7438 + - record: job:http_inprogress_requests:sum:7439 + expr: vector(1) + labels: + job: job7439 + - record: job:http_inprogress_requests:sum:7440 + expr: vector(1) + labels: + job: job7440 + - record: job:http_inprogress_requests:sum:7441 + expr: vector(1) + labels: + job: job7441 + - record: job:http_inprogress_requests:sum:7442 + expr: vector(1) + labels: + job: job7442 + - record: job:http_inprogress_requests:sum:7443 + expr: vector(1) + labels: + job: job7443 + - record: job:http_inprogress_requests:sum:7444 + expr: vector(1) + labels: + job: job7444 + - record: job:http_inprogress_requests:sum:7445 + expr: vector(1) + labels: + job: job7445 + - record: job:http_inprogress_requests:sum:7446 + expr: vector(1) + labels: + job: job7446 + - record: job:http_inprogress_requests:sum:7447 + expr: vector(1) + labels: + job: job7447 + - record: job:http_inprogress_requests:sum:7448 + expr: vector(1) + labels: + job: job7448 + - record: job:http_inprogress_requests:sum:7449 + expr: vector(1) + labels: + job: job7449 + - record: job:http_inprogress_requests:sum:7450 + expr: vector(1) + labels: + job: job7450 + - record: job:http_inprogress_requests:sum:7451 + expr: vector(1) + labels: + job: job7451 + - record: job:http_inprogress_requests:sum:7452 + expr: vector(1) + labels: + job: job7452 + - record: job:http_inprogress_requests:sum:7453 + expr: vector(1) + labels: + job: job7453 + - record: job:http_inprogress_requests:sum:7454 + expr: vector(1) + labels: + job: job7454 + - record: job:http_inprogress_requests:sum:7455 + expr: vector(1) + labels: + job: job7455 + - record: job:http_inprogress_requests:sum:7456 + expr: vector(1) + labels: + job: job7456 + - record: job:http_inprogress_requests:sum:7457 + expr: vector(1) + labels: + job: job7457 + - record: job:http_inprogress_requests:sum:7458 + expr: vector(1) + labels: + job: job7458 + - record: job:http_inprogress_requests:sum:7459 + expr: vector(1) + labels: + job: job7459 + - record: job:http_inprogress_requests:sum:7460 + expr: vector(1) + labels: + job: job7460 + - record: job:http_inprogress_requests:sum:7461 + expr: vector(1) + labels: + job: job7461 + - record: job:http_inprogress_requests:sum:7462 + expr: vector(1) + labels: + job: job7462 + - record: job:http_inprogress_requests:sum:7463 + expr: vector(1) + labels: + job: job7463 + - record: job:http_inprogress_requests:sum:7464 + expr: vector(1) + labels: + job: job7464 + - record: job:http_inprogress_requests:sum:7465 + expr: vector(1) + labels: + job: job7465 + - record: job:http_inprogress_requests:sum:7466 + expr: vector(1) + labels: + job: job7466 + - record: job:http_inprogress_requests:sum:7467 + expr: vector(1) + labels: + job: job7467 + - record: job:http_inprogress_requests:sum:7468 + expr: vector(1) + labels: + job: job7468 + - record: job:http_inprogress_requests:sum:7469 + expr: vector(1) + labels: + job: job7469 + - record: job:http_inprogress_requests:sum:7470 + expr: vector(1) + labels: + job: job7470 + - record: job:http_inprogress_requests:sum:7471 + expr: vector(1) + labels: + job: job7471 + - record: job:http_inprogress_requests:sum:7472 + expr: vector(1) + labels: + job: job7472 + - record: job:http_inprogress_requests:sum:7473 + expr: vector(1) + labels: + job: job7473 + - record: job:http_inprogress_requests:sum:7474 + expr: vector(1) + labels: + job: job7474 + - record: job:http_inprogress_requests:sum:7475 + expr: vector(1) + labels: + job: job7475 + - record: job:http_inprogress_requests:sum:7476 + expr: vector(1) + labels: + job: job7476 + - record: job:http_inprogress_requests:sum:7477 + expr: vector(1) + labels: + job: job7477 + - record: job:http_inprogress_requests:sum:7478 + expr: vector(1) + labels: + job: job7478 + - record: job:http_inprogress_requests:sum:7479 + expr: vector(1) + labels: + job: job7479 + - record: job:http_inprogress_requests:sum:7480 + expr: vector(1) + labels: + job: job7480 + - record: job:http_inprogress_requests:sum:7481 + expr: vector(1) + labels: + job: job7481 + - record: job:http_inprogress_requests:sum:7482 + expr: vector(1) + labels: + job: job7482 + - record: job:http_inprogress_requests:sum:7483 + expr: vector(1) + labels: + job: job7483 + - record: job:http_inprogress_requests:sum:7484 + expr: vector(1) + labels: + job: job7484 + - record: job:http_inprogress_requests:sum:7485 + expr: vector(1) + labels: + job: job7485 + - record: job:http_inprogress_requests:sum:7486 + expr: vector(1) + labels: + job: job7486 + - record: job:http_inprogress_requests:sum:7487 + expr: vector(1) + labels: + job: job7487 + - record: job:http_inprogress_requests:sum:7488 + expr: vector(1) + labels: + job: job7488 + - record: job:http_inprogress_requests:sum:7489 + expr: vector(1) + labels: + job: job7489 + - record: job:http_inprogress_requests:sum:7490 + expr: vector(1) + labels: + job: job7490 + - record: job:http_inprogress_requests:sum:7491 + expr: vector(1) + labels: + job: job7491 + - record: job:http_inprogress_requests:sum:7492 + expr: vector(1) + labels: + job: job7492 + - record: job:http_inprogress_requests:sum:7493 + expr: vector(1) + labels: + job: job7493 + - record: job:http_inprogress_requests:sum:7494 + expr: vector(1) + labels: + job: job7494 + - record: job:http_inprogress_requests:sum:7495 + expr: vector(1) + labels: + job: job7495 + - record: job:http_inprogress_requests:sum:7496 + expr: vector(1) + labels: + job: job7496 + - record: job:http_inprogress_requests:sum:7497 + expr: vector(1) + labels: + job: job7497 + - record: job:http_inprogress_requests:sum:7498 + expr: vector(1) + labels: + job: job7498 + - record: job:http_inprogress_requests:sum:7499 + expr: vector(1) + labels: + job: job7499 + - record: job:http_inprogress_requests:sum:7500 + expr: vector(1) + labels: + job: job7500 + - record: job:http_inprogress_requests:sum:7501 + expr: vector(1) + labels: + job: job7501 + - record: job:http_inprogress_requests:sum:7502 + expr: vector(1) + labels: + job: job7502 + - record: job:http_inprogress_requests:sum:7503 + expr: vector(1) + labels: + job: job7503 + - record: job:http_inprogress_requests:sum:7504 + expr: vector(1) + labels: + job: job7504 + - record: job:http_inprogress_requests:sum:7505 + expr: vector(1) + labels: + job: job7505 + - record: job:http_inprogress_requests:sum:7506 + expr: vector(1) + labels: + job: job7506 + - record: job:http_inprogress_requests:sum:7507 + expr: vector(1) + labels: + job: job7507 + - record: job:http_inprogress_requests:sum:7508 + expr: vector(1) + labels: + job: job7508 + - record: job:http_inprogress_requests:sum:7509 + expr: vector(1) + labels: + job: job7509 + - record: job:http_inprogress_requests:sum:7510 + expr: vector(1) + labels: + job: job7510 + - record: job:http_inprogress_requests:sum:7511 + expr: vector(1) + labels: + job: job7511 + - record: job:http_inprogress_requests:sum:7512 + expr: vector(1) + labels: + job: job7512 + - record: job:http_inprogress_requests:sum:7513 + expr: vector(1) + labels: + job: job7513 + - record: job:http_inprogress_requests:sum:7514 + expr: vector(1) + labels: + job: job7514 + - record: job:http_inprogress_requests:sum:7515 + expr: vector(1) + labels: + job: job7515 + - record: job:http_inprogress_requests:sum:7516 + expr: vector(1) + labels: + job: job7516 + - record: job:http_inprogress_requests:sum:7517 + expr: vector(1) + labels: + job: job7517 + - record: job:http_inprogress_requests:sum:7518 + expr: vector(1) + labels: + job: job7518 + - record: job:http_inprogress_requests:sum:7519 + expr: vector(1) + labels: + job: job7519 + - record: job:http_inprogress_requests:sum:7520 + expr: vector(1) + labels: + job: job7520 + - record: job:http_inprogress_requests:sum:7521 + expr: vector(1) + labels: + job: job7521 + - record: job:http_inprogress_requests:sum:7522 + expr: vector(1) + labels: + job: job7522 + - record: job:http_inprogress_requests:sum:7523 + expr: vector(1) + labels: + job: job7523 + - record: job:http_inprogress_requests:sum:7524 + expr: vector(1) + labels: + job: job7524 + - record: job:http_inprogress_requests:sum:7525 + expr: vector(1) + labels: + job: job7525 + - record: job:http_inprogress_requests:sum:7526 + expr: vector(1) + labels: + job: job7526 + - record: job:http_inprogress_requests:sum:7527 + expr: vector(1) + labels: + job: job7527 + - record: job:http_inprogress_requests:sum:7528 + expr: vector(1) + labels: + job: job7528 + - record: job:http_inprogress_requests:sum:7529 + expr: vector(1) + labels: + job: job7529 + - record: job:http_inprogress_requests:sum:7530 + expr: vector(1) + labels: + job: job7530 + - record: job:http_inprogress_requests:sum:7531 + expr: vector(1) + labels: + job: job7531 + - record: job:http_inprogress_requests:sum:7532 + expr: vector(1) + labels: + job: job7532 + - record: job:http_inprogress_requests:sum:7533 + expr: vector(1) + labels: + job: job7533 + - record: job:http_inprogress_requests:sum:7534 + expr: vector(1) + labels: + job: job7534 + - record: job:http_inprogress_requests:sum:7535 + expr: vector(1) + labels: + job: job7535 + - record: job:http_inprogress_requests:sum:7536 + expr: vector(1) + labels: + job: job7536 + - record: job:http_inprogress_requests:sum:7537 + expr: vector(1) + labels: + job: job7537 + - record: job:http_inprogress_requests:sum:7538 + expr: vector(1) + labels: + job: job7538 + - record: job:http_inprogress_requests:sum:7539 + expr: vector(1) + labels: + job: job7539 + - record: job:http_inprogress_requests:sum:7540 + expr: vector(1) + labels: + job: job7540 + - record: job:http_inprogress_requests:sum:7541 + expr: vector(1) + labels: + job: job7541 + - record: job:http_inprogress_requests:sum:7542 + expr: vector(1) + labels: + job: job7542 + - record: job:http_inprogress_requests:sum:7543 + expr: vector(1) + labels: + job: job7543 + - record: job:http_inprogress_requests:sum:7544 + expr: vector(1) + labels: + job: job7544 + - record: job:http_inprogress_requests:sum:7545 + expr: vector(1) + labels: + job: job7545 + - record: job:http_inprogress_requests:sum:7546 + expr: vector(1) + labels: + job: job7546 + - record: job:http_inprogress_requests:sum:7547 + expr: vector(1) + labels: + job: job7547 + - record: job:http_inprogress_requests:sum:7548 + expr: vector(1) + labels: + job: job7548 + - record: job:http_inprogress_requests:sum:7549 + expr: vector(1) + labels: + job: job7549 + - record: job:http_inprogress_requests:sum:7550 + expr: vector(1) + labels: + job: job7550 + - record: job:http_inprogress_requests:sum:7551 + expr: vector(1) + labels: + job: job7551 + - record: job:http_inprogress_requests:sum:7552 + expr: vector(1) + labels: + job: job7552 + - record: job:http_inprogress_requests:sum:7553 + expr: vector(1) + labels: + job: job7553 + - record: job:http_inprogress_requests:sum:7554 + expr: vector(1) + labels: + job: job7554 + - record: job:http_inprogress_requests:sum:7555 + expr: vector(1) + labels: + job: job7555 + - record: job:http_inprogress_requests:sum:7556 + expr: vector(1) + labels: + job: job7556 + - record: job:http_inprogress_requests:sum:7557 + expr: vector(1) + labels: + job: job7557 + - record: job:http_inprogress_requests:sum:7558 + expr: vector(1) + labels: + job: job7558 + - record: job:http_inprogress_requests:sum:7559 + expr: vector(1) + labels: + job: job7559 + - record: job:http_inprogress_requests:sum:7560 + expr: vector(1) + labels: + job: job7560 + - record: job:http_inprogress_requests:sum:7561 + expr: vector(1) + labels: + job: job7561 + - record: job:http_inprogress_requests:sum:7562 + expr: vector(1) + labels: + job: job7562 + - record: job:http_inprogress_requests:sum:7563 + expr: vector(1) + labels: + job: job7563 + - record: job:http_inprogress_requests:sum:7564 + expr: vector(1) + labels: + job: job7564 + - record: job:http_inprogress_requests:sum:7565 + expr: vector(1) + labels: + job: job7565 + - record: job:http_inprogress_requests:sum:7566 + expr: vector(1) + labels: + job: job7566 + - record: job:http_inprogress_requests:sum:7567 + expr: vector(1) + labels: + job: job7567 + - record: job:http_inprogress_requests:sum:7568 + expr: vector(1) + labels: + job: job7568 + - record: job:http_inprogress_requests:sum:7569 + expr: vector(1) + labels: + job: job7569 + - record: job:http_inprogress_requests:sum:7570 + expr: vector(1) + labels: + job: job7570 + - record: job:http_inprogress_requests:sum:7571 + expr: vector(1) + labels: + job: job7571 + - record: job:http_inprogress_requests:sum:7572 + expr: vector(1) + labels: + job: job7572 + - record: job:http_inprogress_requests:sum:7573 + expr: vector(1) + labels: + job: job7573 + - record: job:http_inprogress_requests:sum:7574 + expr: vector(1) + labels: + job: job7574 + - record: job:http_inprogress_requests:sum:7575 + expr: vector(1) + labels: + job: job7575 + - record: job:http_inprogress_requests:sum:7576 + expr: vector(1) + labels: + job: job7576 + - record: job:http_inprogress_requests:sum:7577 + expr: vector(1) + labels: + job: job7577 + - record: job:http_inprogress_requests:sum:7578 + expr: vector(1) + labels: + job: job7578 + - record: job:http_inprogress_requests:sum:7579 + expr: vector(1) + labels: + job: job7579 + - record: job:http_inprogress_requests:sum:7580 + expr: vector(1) + labels: + job: job7580 + - record: job:http_inprogress_requests:sum:7581 + expr: vector(1) + labels: + job: job7581 + - record: job:http_inprogress_requests:sum:7582 + expr: vector(1) + labels: + job: job7582 + - record: job:http_inprogress_requests:sum:7583 + expr: vector(1) + labels: + job: job7583 + - record: job:http_inprogress_requests:sum:7584 + expr: vector(1) + labels: + job: job7584 + - record: job:http_inprogress_requests:sum:7585 + expr: vector(1) + labels: + job: job7585 + - record: job:http_inprogress_requests:sum:7586 + expr: vector(1) + labels: + job: job7586 + - record: job:http_inprogress_requests:sum:7587 + expr: vector(1) + labels: + job: job7587 + - record: job:http_inprogress_requests:sum:7588 + expr: vector(1) + labels: + job: job7588 + - record: job:http_inprogress_requests:sum:7589 + expr: vector(1) + labels: + job: job7589 + - record: job:http_inprogress_requests:sum:7590 + expr: vector(1) + labels: + job: job7590 + - record: job:http_inprogress_requests:sum:7591 + expr: vector(1) + labels: + job: job7591 + - record: job:http_inprogress_requests:sum:7592 + expr: vector(1) + labels: + job: job7592 + - record: job:http_inprogress_requests:sum:7593 + expr: vector(1) + labels: + job: job7593 + - record: job:http_inprogress_requests:sum:7594 + expr: vector(1) + labels: + job: job7594 + - record: job:http_inprogress_requests:sum:7595 + expr: vector(1) + labels: + job: job7595 + - record: job:http_inprogress_requests:sum:7596 + expr: vector(1) + labels: + job: job7596 + - record: job:http_inprogress_requests:sum:7597 + expr: vector(1) + labels: + job: job7597 + - record: job:http_inprogress_requests:sum:7598 + expr: vector(1) + labels: + job: job7598 + - record: job:http_inprogress_requests:sum:7599 + expr: vector(1) + labels: + job: job7599 + - record: job:http_inprogress_requests:sum:7600 + expr: vector(1) + labels: + job: job7600 + - record: job:http_inprogress_requests:sum:7601 + expr: vector(1) + labels: + job: job7601 + - record: job:http_inprogress_requests:sum:7602 + expr: vector(1) + labels: + job: job7602 + - record: job:http_inprogress_requests:sum:7603 + expr: vector(1) + labels: + job: job7603 + - record: job:http_inprogress_requests:sum:7604 + expr: vector(1) + labels: + job: job7604 + - record: job:http_inprogress_requests:sum:7605 + expr: vector(1) + labels: + job: job7605 + - record: job:http_inprogress_requests:sum:7606 + expr: vector(1) + labels: + job: job7606 + - record: job:http_inprogress_requests:sum:7607 + expr: vector(1) + labels: + job: job7607 + - record: job:http_inprogress_requests:sum:7608 + expr: vector(1) + labels: + job: job7608 + - record: job:http_inprogress_requests:sum:7609 + expr: vector(1) + labels: + job: job7609 + - record: job:http_inprogress_requests:sum:7610 + expr: vector(1) + labels: + job: job7610 + - record: job:http_inprogress_requests:sum:7611 + expr: vector(1) + labels: + job: job7611 + - record: job:http_inprogress_requests:sum:7612 + expr: vector(1) + labels: + job: job7612 + - record: job:http_inprogress_requests:sum:7613 + expr: vector(1) + labels: + job: job7613 + - record: job:http_inprogress_requests:sum:7614 + expr: vector(1) + labels: + job: job7614 + - record: job:http_inprogress_requests:sum:7615 + expr: vector(1) + labels: + job: job7615 + - record: job:http_inprogress_requests:sum:7616 + expr: vector(1) + labels: + job: job7616 + - record: job:http_inprogress_requests:sum:7617 + expr: vector(1) + labels: + job: job7617 + - record: job:http_inprogress_requests:sum:7618 + expr: vector(1) + labels: + job: job7618 + - record: job:http_inprogress_requests:sum:7619 + expr: vector(1) + labels: + job: job7619 + - record: job:http_inprogress_requests:sum:7620 + expr: vector(1) + labels: + job: job7620 + - record: job:http_inprogress_requests:sum:7621 + expr: vector(1) + labels: + job: job7621 + - record: job:http_inprogress_requests:sum:7622 + expr: vector(1) + labels: + job: job7622 + - record: job:http_inprogress_requests:sum:7623 + expr: vector(1) + labels: + job: job7623 + - record: job:http_inprogress_requests:sum:7624 + expr: vector(1) + labels: + job: job7624 + - record: job:http_inprogress_requests:sum:7625 + expr: vector(1) + labels: + job: job7625 + - record: job:http_inprogress_requests:sum:7626 + expr: vector(1) + labels: + job: job7626 + - record: job:http_inprogress_requests:sum:7627 + expr: vector(1) + labels: + job: job7627 + - record: job:http_inprogress_requests:sum:7628 + expr: vector(1) + labels: + job: job7628 + - record: job:http_inprogress_requests:sum:7629 + expr: vector(1) + labels: + job: job7629 + - record: job:http_inprogress_requests:sum:7630 + expr: vector(1) + labels: + job: job7630 + - record: job:http_inprogress_requests:sum:7631 + expr: vector(1) + labels: + job: job7631 + - record: job:http_inprogress_requests:sum:7632 + expr: vector(1) + labels: + job: job7632 + - record: job:http_inprogress_requests:sum:7633 + expr: vector(1) + labels: + job: job7633 + - record: job:http_inprogress_requests:sum:7634 + expr: vector(1) + labels: + job: job7634 + - record: job:http_inprogress_requests:sum:7635 + expr: vector(1) + labels: + job: job7635 + - record: job:http_inprogress_requests:sum:7636 + expr: vector(1) + labels: + job: job7636 + - record: job:http_inprogress_requests:sum:7637 + expr: vector(1) + labels: + job: job7637 + - record: job:http_inprogress_requests:sum:7638 + expr: vector(1) + labels: + job: job7638 + - record: job:http_inprogress_requests:sum:7639 + expr: vector(1) + labels: + job: job7639 + - record: job:http_inprogress_requests:sum:7640 + expr: vector(1) + labels: + job: job7640 + - record: job:http_inprogress_requests:sum:7641 + expr: vector(1) + labels: + job: job7641 + - record: job:http_inprogress_requests:sum:7642 + expr: vector(1) + labels: + job: job7642 + - record: job:http_inprogress_requests:sum:7643 + expr: vector(1) + labels: + job: job7643 + - record: job:http_inprogress_requests:sum:7644 + expr: vector(1) + labels: + job: job7644 + - record: job:http_inprogress_requests:sum:7645 + expr: vector(1) + labels: + job: job7645 + - record: job:http_inprogress_requests:sum:7646 + expr: vector(1) + labels: + job: job7646 + - record: job:http_inprogress_requests:sum:7647 + expr: vector(1) + labels: + job: job7647 + - record: job:http_inprogress_requests:sum:7648 + expr: vector(1) + labels: + job: job7648 + - record: job:http_inprogress_requests:sum:7649 + expr: vector(1) + labels: + job: job7649 + - record: job:http_inprogress_requests:sum:7650 + expr: vector(1) + labels: + job: job7650 + - record: job:http_inprogress_requests:sum:7651 + expr: vector(1) + labels: + job: job7651 + - record: job:http_inprogress_requests:sum:7652 + expr: vector(1) + labels: + job: job7652 + - record: job:http_inprogress_requests:sum:7653 + expr: vector(1) + labels: + job: job7653 + - record: job:http_inprogress_requests:sum:7654 + expr: vector(1) + labels: + job: job7654 + - record: job:http_inprogress_requests:sum:7655 + expr: vector(1) + labels: + job: job7655 + - record: job:http_inprogress_requests:sum:7656 + expr: vector(1) + labels: + job: job7656 + - record: job:http_inprogress_requests:sum:7657 + expr: vector(1) + labels: + job: job7657 + - record: job:http_inprogress_requests:sum:7658 + expr: vector(1) + labels: + job: job7658 + - record: job:http_inprogress_requests:sum:7659 + expr: vector(1) + labels: + job: job7659 + - record: job:http_inprogress_requests:sum:7660 + expr: vector(1) + labels: + job: job7660 + - record: job:http_inprogress_requests:sum:7661 + expr: vector(1) + labels: + job: job7661 + - record: job:http_inprogress_requests:sum:7662 + expr: vector(1) + labels: + job: job7662 + - record: job:http_inprogress_requests:sum:7663 + expr: vector(1) + labels: + job: job7663 + - record: job:http_inprogress_requests:sum:7664 + expr: vector(1) + labels: + job: job7664 + - record: job:http_inprogress_requests:sum:7665 + expr: vector(1) + labels: + job: job7665 + - record: job:http_inprogress_requests:sum:7666 + expr: vector(1) + labels: + job: job7666 + - record: job:http_inprogress_requests:sum:7667 + expr: vector(1) + labels: + job: job7667 + - record: job:http_inprogress_requests:sum:7668 + expr: vector(1) + labels: + job: job7668 + - record: job:http_inprogress_requests:sum:7669 + expr: vector(1) + labels: + job: job7669 + - record: job:http_inprogress_requests:sum:7670 + expr: vector(1) + labels: + job: job7670 + - record: job:http_inprogress_requests:sum:7671 + expr: vector(1) + labels: + job: job7671 + - record: job:http_inprogress_requests:sum:7672 + expr: vector(1) + labels: + job: job7672 + - record: job:http_inprogress_requests:sum:7673 + expr: vector(1) + labels: + job: job7673 + - record: job:http_inprogress_requests:sum:7674 + expr: vector(1) + labels: + job: job7674 + - record: job:http_inprogress_requests:sum:7675 + expr: vector(1) + labels: + job: job7675 + - record: job:http_inprogress_requests:sum:7676 + expr: vector(1) + labels: + job: job7676 + - record: job:http_inprogress_requests:sum:7677 + expr: vector(1) + labels: + job: job7677 + - record: job:http_inprogress_requests:sum:7678 + expr: vector(1) + labels: + job: job7678 + - record: job:http_inprogress_requests:sum:7679 + expr: vector(1) + labels: + job: job7679 + - record: job:http_inprogress_requests:sum:7680 + expr: vector(1) + labels: + job: job7680 + - record: job:http_inprogress_requests:sum:7681 + expr: vector(1) + labels: + job: job7681 + - record: job:http_inprogress_requests:sum:7682 + expr: vector(1) + labels: + job: job7682 + - record: job:http_inprogress_requests:sum:7683 + expr: vector(1) + labels: + job: job7683 + - record: job:http_inprogress_requests:sum:7684 + expr: vector(1) + labels: + job: job7684 + - record: job:http_inprogress_requests:sum:7685 + expr: vector(1) + labels: + job: job7685 + - record: job:http_inprogress_requests:sum:7686 + expr: vector(1) + labels: + job: job7686 + - record: job:http_inprogress_requests:sum:7687 + expr: vector(1) + labels: + job: job7687 + - record: job:http_inprogress_requests:sum:7688 + expr: vector(1) + labels: + job: job7688 + - record: job:http_inprogress_requests:sum:7689 + expr: vector(1) + labels: + job: job7689 + - record: job:http_inprogress_requests:sum:7690 + expr: vector(1) + labels: + job: job7690 + - record: job:http_inprogress_requests:sum:7691 + expr: vector(1) + labels: + job: job7691 + - record: job:http_inprogress_requests:sum:7692 + expr: vector(1) + labels: + job: job7692 + - record: job:http_inprogress_requests:sum:7693 + expr: vector(1) + labels: + job: job7693 + - record: job:http_inprogress_requests:sum:7694 + expr: vector(1) + labels: + job: job7694 + - record: job:http_inprogress_requests:sum:7695 + expr: vector(1) + labels: + job: job7695 + - record: job:http_inprogress_requests:sum:7696 + expr: vector(1) + labels: + job: job7696 + - record: job:http_inprogress_requests:sum:7697 + expr: vector(1) + labels: + job: job7697 + - record: job:http_inprogress_requests:sum:7698 + expr: vector(1) + labels: + job: job7698 + - record: job:http_inprogress_requests:sum:7699 + expr: vector(1) + labels: + job: job7699 + - record: job:http_inprogress_requests:sum:7700 + expr: vector(1) + labels: + job: job7700 + - record: job:http_inprogress_requests:sum:7701 + expr: vector(1) + labels: + job: job7701 + - record: job:http_inprogress_requests:sum:7702 + expr: vector(1) + labels: + job: job7702 + - record: job:http_inprogress_requests:sum:7703 + expr: vector(1) + labels: + job: job7703 + - record: job:http_inprogress_requests:sum:7704 + expr: vector(1) + labels: + job: job7704 + - record: job:http_inprogress_requests:sum:7705 + expr: vector(1) + labels: + job: job7705 + - record: job:http_inprogress_requests:sum:7706 + expr: vector(1) + labels: + job: job7706 + - record: job:http_inprogress_requests:sum:7707 + expr: vector(1) + labels: + job: job7707 + - record: job:http_inprogress_requests:sum:7708 + expr: vector(1) + labels: + job: job7708 + - record: job:http_inprogress_requests:sum:7709 + expr: vector(1) + labels: + job: job7709 + - record: job:http_inprogress_requests:sum:7710 + expr: vector(1) + labels: + job: job7710 + - record: job:http_inprogress_requests:sum:7711 + expr: vector(1) + labels: + job: job7711 + - record: job:http_inprogress_requests:sum:7712 + expr: vector(1) + labels: + job: job7712 + - record: job:http_inprogress_requests:sum:7713 + expr: vector(1) + labels: + job: job7713 + - record: job:http_inprogress_requests:sum:7714 + expr: vector(1) + labels: + job: job7714 + - record: job:http_inprogress_requests:sum:7715 + expr: vector(1) + labels: + job: job7715 + - record: job:http_inprogress_requests:sum:7716 + expr: vector(1) + labels: + job: job7716 + - record: job:http_inprogress_requests:sum:7717 + expr: vector(1) + labels: + job: job7717 + - record: job:http_inprogress_requests:sum:7718 + expr: vector(1) + labels: + job: job7718 + - record: job:http_inprogress_requests:sum:7719 + expr: vector(1) + labels: + job: job7719 + - record: job:http_inprogress_requests:sum:7720 + expr: vector(1) + labels: + job: job7720 + - record: job:http_inprogress_requests:sum:7721 + expr: vector(1) + labels: + job: job7721 + - record: job:http_inprogress_requests:sum:7722 + expr: vector(1) + labels: + job: job7722 + - record: job:http_inprogress_requests:sum:7723 + expr: vector(1) + labels: + job: job7723 + - record: job:http_inprogress_requests:sum:7724 + expr: vector(1) + labels: + job: job7724 + - record: job:http_inprogress_requests:sum:7725 + expr: vector(1) + labels: + job: job7725 + - record: job:http_inprogress_requests:sum:7726 + expr: vector(1) + labels: + job: job7726 + - record: job:http_inprogress_requests:sum:7727 + expr: vector(1) + labels: + job: job7727 + - record: job:http_inprogress_requests:sum:7728 + expr: vector(1) + labels: + job: job7728 + - record: job:http_inprogress_requests:sum:7729 + expr: vector(1) + labels: + job: job7729 + - record: job:http_inprogress_requests:sum:7730 + expr: vector(1) + labels: + job: job7730 + - record: job:http_inprogress_requests:sum:7731 + expr: vector(1) + labels: + job: job7731 + - record: job:http_inprogress_requests:sum:7732 + expr: vector(1) + labels: + job: job7732 + - record: job:http_inprogress_requests:sum:7733 + expr: vector(1) + labels: + job: job7733 + - record: job:http_inprogress_requests:sum:7734 + expr: vector(1) + labels: + job: job7734 + - record: job:http_inprogress_requests:sum:7735 + expr: vector(1) + labels: + job: job7735 + - record: job:http_inprogress_requests:sum:7736 + expr: vector(1) + labels: + job: job7736 + - record: job:http_inprogress_requests:sum:7737 + expr: vector(1) + labels: + job: job7737 + - record: job:http_inprogress_requests:sum:7738 + expr: vector(1) + labels: + job: job7738 + - record: job:http_inprogress_requests:sum:7739 + expr: vector(1) + labels: + job: job7739 + - record: job:http_inprogress_requests:sum:7740 + expr: vector(1) + labels: + job: job7740 + - record: job:http_inprogress_requests:sum:7741 + expr: vector(1) + labels: + job: job7741 + - record: job:http_inprogress_requests:sum:7742 + expr: vector(1) + labels: + job: job7742 + - record: job:http_inprogress_requests:sum:7743 + expr: vector(1) + labels: + job: job7743 + - record: job:http_inprogress_requests:sum:7744 + expr: vector(1) + labels: + job: job7744 + - record: job:http_inprogress_requests:sum:7745 + expr: vector(1) + labels: + job: job7745 + - record: job:http_inprogress_requests:sum:7746 + expr: vector(1) + labels: + job: job7746 + - record: job:http_inprogress_requests:sum:7747 + expr: vector(1) + labels: + job: job7747 + - record: job:http_inprogress_requests:sum:7748 + expr: vector(1) + labels: + job: job7748 + - record: job:http_inprogress_requests:sum:7749 + expr: vector(1) + labels: + job: job7749 + - record: job:http_inprogress_requests:sum:7750 + expr: vector(1) + labels: + job: job7750 + - record: job:http_inprogress_requests:sum:7751 + expr: vector(1) + labels: + job: job7751 + - record: job:http_inprogress_requests:sum:7752 + expr: vector(1) + labels: + job: job7752 + - record: job:http_inprogress_requests:sum:7753 + expr: vector(1) + labels: + job: job7753 + - record: job:http_inprogress_requests:sum:7754 + expr: vector(1) + labels: + job: job7754 + - record: job:http_inprogress_requests:sum:7755 + expr: vector(1) + labels: + job: job7755 + - record: job:http_inprogress_requests:sum:7756 + expr: vector(1) + labels: + job: job7756 + - record: job:http_inprogress_requests:sum:7757 + expr: vector(1) + labels: + job: job7757 + - record: job:http_inprogress_requests:sum:7758 + expr: vector(1) + labels: + job: job7758 + - record: job:http_inprogress_requests:sum:7759 + expr: vector(1) + labels: + job: job7759 + - record: job:http_inprogress_requests:sum:7760 + expr: vector(1) + labels: + job: job7760 + - record: job:http_inprogress_requests:sum:7761 + expr: vector(1) + labels: + job: job7761 + - record: job:http_inprogress_requests:sum:7762 + expr: vector(1) + labels: + job: job7762 + - record: job:http_inprogress_requests:sum:7763 + expr: vector(1) + labels: + job: job7763 + - record: job:http_inprogress_requests:sum:7764 + expr: vector(1) + labels: + job: job7764 + - record: job:http_inprogress_requests:sum:7765 + expr: vector(1) + labels: + job: job7765 + - record: job:http_inprogress_requests:sum:7766 + expr: vector(1) + labels: + job: job7766 + - record: job:http_inprogress_requests:sum:7767 + expr: vector(1) + labels: + job: job7767 + - record: job:http_inprogress_requests:sum:7768 + expr: vector(1) + labels: + job: job7768 + - record: job:http_inprogress_requests:sum:7769 + expr: vector(1) + labels: + job: job7769 + - record: job:http_inprogress_requests:sum:7770 + expr: vector(1) + labels: + job: job7770 + - record: job:http_inprogress_requests:sum:7771 + expr: vector(1) + labels: + job: job7771 + - record: job:http_inprogress_requests:sum:7772 + expr: vector(1) + labels: + job: job7772 + - record: job:http_inprogress_requests:sum:7773 + expr: vector(1) + labels: + job: job7773 + - record: job:http_inprogress_requests:sum:7774 + expr: vector(1) + labels: + job: job7774 + - record: job:http_inprogress_requests:sum:7775 + expr: vector(1) + labels: + job: job7775 + - record: job:http_inprogress_requests:sum:7776 + expr: vector(1) + labels: + job: job7776 + - record: job:http_inprogress_requests:sum:7777 + expr: vector(1) + labels: + job: job7777 + - record: job:http_inprogress_requests:sum:7778 + expr: vector(1) + labels: + job: job7778 + - record: job:http_inprogress_requests:sum:7779 + expr: vector(1) + labels: + job: job7779 + - record: job:http_inprogress_requests:sum:7780 + expr: vector(1) + labels: + job: job7780 + - record: job:http_inprogress_requests:sum:7781 + expr: vector(1) + labels: + job: job7781 + - record: job:http_inprogress_requests:sum:7782 + expr: vector(1) + labels: + job: job7782 + - record: job:http_inprogress_requests:sum:7783 + expr: vector(1) + labels: + job: job7783 + - record: job:http_inprogress_requests:sum:7784 + expr: vector(1) + labels: + job: job7784 + - record: job:http_inprogress_requests:sum:7785 + expr: vector(1) + labels: + job: job7785 + - record: job:http_inprogress_requests:sum:7786 + expr: vector(1) + labels: + job: job7786 + - record: job:http_inprogress_requests:sum:7787 + expr: vector(1) + labels: + job: job7787 + - record: job:http_inprogress_requests:sum:7788 + expr: vector(1) + labels: + job: job7788 + - record: job:http_inprogress_requests:sum:7789 + expr: vector(1) + labels: + job: job7789 + - record: job:http_inprogress_requests:sum:7790 + expr: vector(1) + labels: + job: job7790 + - record: job:http_inprogress_requests:sum:7791 + expr: vector(1) + labels: + job: job7791 + - record: job:http_inprogress_requests:sum:7792 + expr: vector(1) + labels: + job: job7792 + - record: job:http_inprogress_requests:sum:7793 + expr: vector(1) + labels: + job: job7793 + - record: job:http_inprogress_requests:sum:7794 + expr: vector(1) + labels: + job: job7794 + - record: job:http_inprogress_requests:sum:7795 + expr: vector(1) + labels: + job: job7795 + - record: job:http_inprogress_requests:sum:7796 + expr: vector(1) + labels: + job: job7796 + - record: job:http_inprogress_requests:sum:7797 + expr: vector(1) + labels: + job: job7797 + - record: job:http_inprogress_requests:sum:7798 + expr: vector(1) + labels: + job: job7798 + - record: job:http_inprogress_requests:sum:7799 + expr: vector(1) + labels: + job: job7799 + - record: job:http_inprogress_requests:sum:7800 + expr: vector(1) + labels: + job: job7800 + - record: job:http_inprogress_requests:sum:7801 + expr: vector(1) + labels: + job: job7801 + - record: job:http_inprogress_requests:sum:7802 + expr: vector(1) + labels: + job: job7802 + - record: job:http_inprogress_requests:sum:7803 + expr: vector(1) + labels: + job: job7803 + - record: job:http_inprogress_requests:sum:7804 + expr: vector(1) + labels: + job: job7804 + - record: job:http_inprogress_requests:sum:7805 + expr: vector(1) + labels: + job: job7805 + - record: job:http_inprogress_requests:sum:7806 + expr: vector(1) + labels: + job: job7806 + - record: job:http_inprogress_requests:sum:7807 + expr: vector(1) + labels: + job: job7807 + - record: job:http_inprogress_requests:sum:7808 + expr: vector(1) + labels: + job: job7808 + - record: job:http_inprogress_requests:sum:7809 + expr: vector(1) + labels: + job: job7809 + - record: job:http_inprogress_requests:sum:7810 + expr: vector(1) + labels: + job: job7810 + - record: job:http_inprogress_requests:sum:7811 + expr: vector(1) + labels: + job: job7811 + - record: job:http_inprogress_requests:sum:7812 + expr: vector(1) + labels: + job: job7812 + - record: job:http_inprogress_requests:sum:7813 + expr: vector(1) + labels: + job: job7813 + - record: job:http_inprogress_requests:sum:7814 + expr: vector(1) + labels: + job: job7814 + - record: job:http_inprogress_requests:sum:7815 + expr: vector(1) + labels: + job: job7815 + - record: job:http_inprogress_requests:sum:7816 + expr: vector(1) + labels: + job: job7816 + - record: job:http_inprogress_requests:sum:7817 + expr: vector(1) + labels: + job: job7817 + - record: job:http_inprogress_requests:sum:7818 + expr: vector(1) + labels: + job: job7818 + - record: job:http_inprogress_requests:sum:7819 + expr: vector(1) + labels: + job: job7819 + - record: job:http_inprogress_requests:sum:7820 + expr: vector(1) + labels: + job: job7820 + - record: job:http_inprogress_requests:sum:7821 + expr: vector(1) + labels: + job: job7821 + - record: job:http_inprogress_requests:sum:7822 + expr: vector(1) + labels: + job: job7822 + - record: job:http_inprogress_requests:sum:7823 + expr: vector(1) + labels: + job: job7823 + - record: job:http_inprogress_requests:sum:7824 + expr: vector(1) + labels: + job: job7824 + - record: job:http_inprogress_requests:sum:7825 + expr: vector(1) + labels: + job: job7825 + - record: job:http_inprogress_requests:sum:7826 + expr: vector(1) + labels: + job: job7826 + - record: job:http_inprogress_requests:sum:7827 + expr: vector(1) + labels: + job: job7827 + - record: job:http_inprogress_requests:sum:7828 + expr: vector(1) + labels: + job: job7828 + - record: job:http_inprogress_requests:sum:7829 + expr: vector(1) + labels: + job: job7829 + - record: job:http_inprogress_requests:sum:7830 + expr: vector(1) + labels: + job: job7830 + - record: job:http_inprogress_requests:sum:7831 + expr: vector(1) + labels: + job: job7831 + - record: job:http_inprogress_requests:sum:7832 + expr: vector(1) + labels: + job: job7832 + - record: job:http_inprogress_requests:sum:7833 + expr: vector(1) + labels: + job: job7833 + - record: job:http_inprogress_requests:sum:7834 + expr: vector(1) + labels: + job: job7834 + - record: job:http_inprogress_requests:sum:7835 + expr: vector(1) + labels: + job: job7835 + - record: job:http_inprogress_requests:sum:7836 + expr: vector(1) + labels: + job: job7836 + - record: job:http_inprogress_requests:sum:7837 + expr: vector(1) + labels: + job: job7837 + - record: job:http_inprogress_requests:sum:7838 + expr: vector(1) + labels: + job: job7838 + - record: job:http_inprogress_requests:sum:7839 + expr: vector(1) + labels: + job: job7839 + - record: job:http_inprogress_requests:sum:7840 + expr: vector(1) + labels: + job: job7840 + - record: job:http_inprogress_requests:sum:7841 + expr: vector(1) + labels: + job: job7841 + - record: job:http_inprogress_requests:sum:7842 + expr: vector(1) + labels: + job: job7842 + - record: job:http_inprogress_requests:sum:7843 + expr: vector(1) + labels: + job: job7843 + - record: job:http_inprogress_requests:sum:7844 + expr: vector(1) + labels: + job: job7844 + - record: job:http_inprogress_requests:sum:7845 + expr: vector(1) + labels: + job: job7845 + - record: job:http_inprogress_requests:sum:7846 + expr: vector(1) + labels: + job: job7846 + - record: job:http_inprogress_requests:sum:7847 + expr: vector(1) + labels: + job: job7847 + - record: job:http_inprogress_requests:sum:7848 + expr: vector(1) + labels: + job: job7848 + - record: job:http_inprogress_requests:sum:7849 + expr: vector(1) + labels: + job: job7849 + - record: job:http_inprogress_requests:sum:7850 + expr: vector(1) + labels: + job: job7850 + - record: job:http_inprogress_requests:sum:7851 + expr: vector(1) + labels: + job: job7851 + - record: job:http_inprogress_requests:sum:7852 + expr: vector(1) + labels: + job: job7852 + - record: job:http_inprogress_requests:sum:7853 + expr: vector(1) + labels: + job: job7853 + - record: job:http_inprogress_requests:sum:7854 + expr: vector(1) + labels: + job: job7854 + - record: job:http_inprogress_requests:sum:7855 + expr: vector(1) + labels: + job: job7855 + - record: job:http_inprogress_requests:sum:7856 + expr: vector(1) + labels: + job: job7856 + - record: job:http_inprogress_requests:sum:7857 + expr: vector(1) + labels: + job: job7857 + - record: job:http_inprogress_requests:sum:7858 + expr: vector(1) + labels: + job: job7858 + - record: job:http_inprogress_requests:sum:7859 + expr: vector(1) + labels: + job: job7859 + - record: job:http_inprogress_requests:sum:7860 + expr: vector(1) + labels: + job: job7860 + - record: job:http_inprogress_requests:sum:7861 + expr: vector(1) + labels: + job: job7861 + - record: job:http_inprogress_requests:sum:7862 + expr: vector(1) + labels: + job: job7862 + - record: job:http_inprogress_requests:sum:7863 + expr: vector(1) + labels: + job: job7863 + - record: job:http_inprogress_requests:sum:7864 + expr: vector(1) + labels: + job: job7864 + - record: job:http_inprogress_requests:sum:7865 + expr: vector(1) + labels: + job: job7865 + - record: job:http_inprogress_requests:sum:7866 + expr: vector(1) + labels: + job: job7866 + - record: job:http_inprogress_requests:sum:7867 + expr: vector(1) + labels: + job: job7867 + - record: job:http_inprogress_requests:sum:7868 + expr: vector(1) + labels: + job: job7868 + - record: job:http_inprogress_requests:sum:7869 + expr: vector(1) + labels: + job: job7869 + - record: job:http_inprogress_requests:sum:7870 + expr: vector(1) + labels: + job: job7870 + - record: job:http_inprogress_requests:sum:7871 + expr: vector(1) + labels: + job: job7871 + - record: job:http_inprogress_requests:sum:7872 + expr: vector(1) + labels: + job: job7872 + - record: job:http_inprogress_requests:sum:7873 + expr: vector(1) + labels: + job: job7873 + - record: job:http_inprogress_requests:sum:7874 + expr: vector(1) + labels: + job: job7874 + - record: job:http_inprogress_requests:sum:7875 + expr: vector(1) + labels: + job: job7875 + - record: job:http_inprogress_requests:sum:7876 + expr: vector(1) + labels: + job: job7876 + - record: job:http_inprogress_requests:sum:7877 + expr: vector(1) + labels: + job: job7877 + - record: job:http_inprogress_requests:sum:7878 + expr: vector(1) + labels: + job: job7878 + - record: job:http_inprogress_requests:sum:7879 + expr: vector(1) + labels: + job: job7879 + - record: job:http_inprogress_requests:sum:7880 + expr: vector(1) + labels: + job: job7880 + - record: job:http_inprogress_requests:sum:7881 + expr: vector(1) + labels: + job: job7881 + - record: job:http_inprogress_requests:sum:7882 + expr: vector(1) + labels: + job: job7882 + - record: job:http_inprogress_requests:sum:7883 + expr: vector(1) + labels: + job: job7883 + - record: job:http_inprogress_requests:sum:7884 + expr: vector(1) + labels: + job: job7884 + - record: job:http_inprogress_requests:sum:7885 + expr: vector(1) + labels: + job: job7885 + - record: job:http_inprogress_requests:sum:7886 + expr: vector(1) + labels: + job: job7886 + - record: job:http_inprogress_requests:sum:7887 + expr: vector(1) + labels: + job: job7887 + - record: job:http_inprogress_requests:sum:7888 + expr: vector(1) + labels: + job: job7888 + - record: job:http_inprogress_requests:sum:7889 + expr: vector(1) + labels: + job: job7889 + - record: job:http_inprogress_requests:sum:7890 + expr: vector(1) + labels: + job: job7890 + - record: job:http_inprogress_requests:sum:7891 + expr: vector(1) + labels: + job: job7891 + - record: job:http_inprogress_requests:sum:7892 + expr: vector(1) + labels: + job: job7892 + - record: job:http_inprogress_requests:sum:7893 + expr: vector(1) + labels: + job: job7893 + - record: job:http_inprogress_requests:sum:7894 + expr: vector(1) + labels: + job: job7894 + - record: job:http_inprogress_requests:sum:7895 + expr: vector(1) + labels: + job: job7895 + - record: job:http_inprogress_requests:sum:7896 + expr: vector(1) + labels: + job: job7896 + - record: job:http_inprogress_requests:sum:7897 + expr: vector(1) + labels: + job: job7897 + - record: job:http_inprogress_requests:sum:7898 + expr: vector(1) + labels: + job: job7898 + - record: job:http_inprogress_requests:sum:7899 + expr: vector(1) + labels: + job: job7899 + - record: job:http_inprogress_requests:sum:7900 + expr: vector(1) + labels: + job: job7900 + - record: job:http_inprogress_requests:sum:7901 + expr: vector(1) + labels: + job: job7901 + - record: job:http_inprogress_requests:sum:7902 + expr: vector(1) + labels: + job: job7902 + - record: job:http_inprogress_requests:sum:7903 + expr: vector(1) + labels: + job: job7903 + - record: job:http_inprogress_requests:sum:7904 + expr: vector(1) + labels: + job: job7904 + - record: job:http_inprogress_requests:sum:7905 + expr: vector(1) + labels: + job: job7905 + - record: job:http_inprogress_requests:sum:7906 + expr: vector(1) + labels: + job: job7906 + - record: job:http_inprogress_requests:sum:7907 + expr: vector(1) + labels: + job: job7907 + - record: job:http_inprogress_requests:sum:7908 + expr: vector(1) + labels: + job: job7908 + - record: job:http_inprogress_requests:sum:7909 + expr: vector(1) + labels: + job: job7909 + - record: job:http_inprogress_requests:sum:7910 + expr: vector(1) + labels: + job: job7910 + - record: job:http_inprogress_requests:sum:7911 + expr: vector(1) + labels: + job: job7911 + - record: job:http_inprogress_requests:sum:7912 + expr: vector(1) + labels: + job: job7912 + - record: job:http_inprogress_requests:sum:7913 + expr: vector(1) + labels: + job: job7913 + - record: job:http_inprogress_requests:sum:7914 + expr: vector(1) + labels: + job: job7914 + - record: job:http_inprogress_requests:sum:7915 + expr: vector(1) + labels: + job: job7915 + - record: job:http_inprogress_requests:sum:7916 + expr: vector(1) + labels: + job: job7916 + - record: job:http_inprogress_requests:sum:7917 + expr: vector(1) + labels: + job: job7917 + - record: job:http_inprogress_requests:sum:7918 + expr: vector(1) + labels: + job: job7918 + - record: job:http_inprogress_requests:sum:7919 + expr: vector(1) + labels: + job: job7919 + - record: job:http_inprogress_requests:sum:7920 + expr: vector(1) + labels: + job: job7920 + - record: job:http_inprogress_requests:sum:7921 + expr: vector(1) + labels: + job: job7921 + - record: job:http_inprogress_requests:sum:7922 + expr: vector(1) + labels: + job: job7922 + - record: job:http_inprogress_requests:sum:7923 + expr: vector(1) + labels: + job: job7923 + - record: job:http_inprogress_requests:sum:7924 + expr: vector(1) + labels: + job: job7924 + - record: job:http_inprogress_requests:sum:7925 + expr: vector(1) + labels: + job: job7925 + - record: job:http_inprogress_requests:sum:7926 + expr: vector(1) + labels: + job: job7926 + - record: job:http_inprogress_requests:sum:7927 + expr: vector(1) + labels: + job: job7927 + - record: job:http_inprogress_requests:sum:7928 + expr: vector(1) + labels: + job: job7928 + - record: job:http_inprogress_requests:sum:7929 + expr: vector(1) + labels: + job: job7929 + - record: job:http_inprogress_requests:sum:7930 + expr: vector(1) + labels: + job: job7930 + - record: job:http_inprogress_requests:sum:7931 + expr: vector(1) + labels: + job: job7931 + - record: job:http_inprogress_requests:sum:7932 + expr: vector(1) + labels: + job: job7932 + - record: job:http_inprogress_requests:sum:7933 + expr: vector(1) + labels: + job: job7933 + - record: job:http_inprogress_requests:sum:7934 + expr: vector(1) + labels: + job: job7934 + - record: job:http_inprogress_requests:sum:7935 + expr: vector(1) + labels: + job: job7935 + - record: job:http_inprogress_requests:sum:7936 + expr: vector(1) + labels: + job: job7936 + - record: job:http_inprogress_requests:sum:7937 + expr: vector(1) + labels: + job: job7937 + - record: job:http_inprogress_requests:sum:7938 + expr: vector(1) + labels: + job: job7938 + - record: job:http_inprogress_requests:sum:7939 + expr: vector(1) + labels: + job: job7939 + - record: job:http_inprogress_requests:sum:7940 + expr: vector(1) + labels: + job: job7940 + - record: job:http_inprogress_requests:sum:7941 + expr: vector(1) + labels: + job: job7941 + - record: job:http_inprogress_requests:sum:7942 + expr: vector(1) + labels: + job: job7942 + - record: job:http_inprogress_requests:sum:7943 + expr: vector(1) + labels: + job: job7943 + - record: job:http_inprogress_requests:sum:7944 + expr: vector(1) + labels: + job: job7944 + - record: job:http_inprogress_requests:sum:7945 + expr: vector(1) + labels: + job: job7945 + - record: job:http_inprogress_requests:sum:7946 + expr: vector(1) + labels: + job: job7946 + - record: job:http_inprogress_requests:sum:7947 + expr: vector(1) + labels: + job: job7947 + - record: job:http_inprogress_requests:sum:7948 + expr: vector(1) + labels: + job: job7948 + - record: job:http_inprogress_requests:sum:7949 + expr: vector(1) + labels: + job: job7949 + - record: job:http_inprogress_requests:sum:7950 + expr: vector(1) + labels: + job: job7950 + - record: job:http_inprogress_requests:sum:7951 + expr: vector(1) + labels: + job: job7951 + - record: job:http_inprogress_requests:sum:7952 + expr: vector(1) + labels: + job: job7952 + - record: job:http_inprogress_requests:sum:7953 + expr: vector(1) + labels: + job: job7953 + - record: job:http_inprogress_requests:sum:7954 + expr: vector(1) + labels: + job: job7954 + - record: job:http_inprogress_requests:sum:7955 + expr: vector(1) + labels: + job: job7955 + - record: job:http_inprogress_requests:sum:7956 + expr: vector(1) + labels: + job: job7956 + - record: job:http_inprogress_requests:sum:7957 + expr: vector(1) + labels: + job: job7957 + - record: job:http_inprogress_requests:sum:7958 + expr: vector(1) + labels: + job: job7958 + - record: job:http_inprogress_requests:sum:7959 + expr: vector(1) + labels: + job: job7959 + - record: job:http_inprogress_requests:sum:7960 + expr: vector(1) + labels: + job: job7960 + - record: job:http_inprogress_requests:sum:7961 + expr: vector(1) + labels: + job: job7961 + - record: job:http_inprogress_requests:sum:7962 + expr: vector(1) + labels: + job: job7962 + - record: job:http_inprogress_requests:sum:7963 + expr: vector(1) + labels: + job: job7963 + - record: job:http_inprogress_requests:sum:7964 + expr: vector(1) + labels: + job: job7964 + - record: job:http_inprogress_requests:sum:7965 + expr: vector(1) + labels: + job: job7965 + - record: job:http_inprogress_requests:sum:7966 + expr: vector(1) + labels: + job: job7966 + - record: job:http_inprogress_requests:sum:7967 + expr: vector(1) + labels: + job: job7967 + - record: job:http_inprogress_requests:sum:7968 + expr: vector(1) + labels: + job: job7968 + - record: job:http_inprogress_requests:sum:7969 + expr: vector(1) + labels: + job: job7969 + - record: job:http_inprogress_requests:sum:7970 + expr: vector(1) + labels: + job: job7970 + - record: job:http_inprogress_requests:sum:7971 + expr: vector(1) + labels: + job: job7971 + - record: job:http_inprogress_requests:sum:7972 + expr: vector(1) + labels: + job: job7972 + - record: job:http_inprogress_requests:sum:7973 + expr: vector(1) + labels: + job: job7973 + - record: job:http_inprogress_requests:sum:7974 + expr: vector(1) + labels: + job: job7974 + - record: job:http_inprogress_requests:sum:7975 + expr: vector(1) + labels: + job: job7975 + - record: job:http_inprogress_requests:sum:7976 + expr: vector(1) + labels: + job: job7976 + - record: job:http_inprogress_requests:sum:7977 + expr: vector(1) + labels: + job: job7977 + - record: job:http_inprogress_requests:sum:7978 + expr: vector(1) + labels: + job: job7978 + - record: job:http_inprogress_requests:sum:7979 + expr: vector(1) + labels: + job: job7979 + - record: job:http_inprogress_requests:sum:7980 + expr: vector(1) + labels: + job: job7980 + - record: job:http_inprogress_requests:sum:7981 + expr: vector(1) + labels: + job: job7981 + - record: job:http_inprogress_requests:sum:7982 + expr: vector(1) + labels: + job: job7982 + - record: job:http_inprogress_requests:sum:7983 + expr: vector(1) + labels: + job: job7983 + - record: job:http_inprogress_requests:sum:7984 + expr: vector(1) + labels: + job: job7984 + - record: job:http_inprogress_requests:sum:7985 + expr: vector(1) + labels: + job: job7985 + - record: job:http_inprogress_requests:sum:7986 + expr: vector(1) + labels: + job: job7986 + - record: job:http_inprogress_requests:sum:7987 + expr: vector(1) + labels: + job: job7987 + - record: job:http_inprogress_requests:sum:7988 + expr: vector(1) + labels: + job: job7988 + - record: job:http_inprogress_requests:sum:7989 + expr: vector(1) + labels: + job: job7989 + - record: job:http_inprogress_requests:sum:7990 + expr: vector(1) + labels: + job: job7990 + - record: job:http_inprogress_requests:sum:7991 + expr: vector(1) + labels: + job: job7991 + - record: job:http_inprogress_requests:sum:7992 + expr: vector(1) + labels: + job: job7992 + - record: job:http_inprogress_requests:sum:7993 + expr: vector(1) + labels: + job: job7993 + - record: job:http_inprogress_requests:sum:7994 + expr: vector(1) + labels: + job: job7994 + - record: job:http_inprogress_requests:sum:7995 + expr: vector(1) + labels: + job: job7995 + - record: job:http_inprogress_requests:sum:7996 + expr: vector(1) + labels: + job: job7996 + - record: job:http_inprogress_requests:sum:7997 + expr: vector(1) + labels: + job: job7997 + - record: job:http_inprogress_requests:sum:7998 + expr: vector(1) + labels: + job: job7998 + - record: job:http_inprogress_requests:sum:7999 + expr: vector(1) + labels: + job: job7999 + - record: job:http_inprogress_requests:sum:8000 + expr: vector(1) + labels: + job: job8000 + - record: job:http_inprogress_requests:sum:8001 + expr: vector(1) + labels: + job: job8001 + - record: job:http_inprogress_requests:sum:8002 + expr: vector(1) + labels: + job: job8002 + - record: job:http_inprogress_requests:sum:8003 + expr: vector(1) + labels: + job: job8003 + - record: job:http_inprogress_requests:sum:8004 + expr: vector(1) + labels: + job: job8004 + - record: job:http_inprogress_requests:sum:8005 + expr: vector(1) + labels: + job: job8005 + - record: job:http_inprogress_requests:sum:8006 + expr: vector(1) + labels: + job: job8006 + - record: job:http_inprogress_requests:sum:8007 + expr: vector(1) + labels: + job: job8007 + - record: job:http_inprogress_requests:sum:8008 + expr: vector(1) + labels: + job: job8008 + - record: job:http_inprogress_requests:sum:8009 + expr: vector(1) + labels: + job: job8009 + - record: job:http_inprogress_requests:sum:8010 + expr: vector(1) + labels: + job: job8010 + - record: job:http_inprogress_requests:sum:8011 + expr: vector(1) + labels: + job: job8011 + - record: job:http_inprogress_requests:sum:8012 + expr: vector(1) + labels: + job: job8012 + - record: job:http_inprogress_requests:sum:8013 + expr: vector(1) + labels: + job: job8013 + - record: job:http_inprogress_requests:sum:8014 + expr: vector(1) + labels: + job: job8014 + - record: job:http_inprogress_requests:sum:8015 + expr: vector(1) + labels: + job: job8015 + - record: job:http_inprogress_requests:sum:8016 + expr: vector(1) + labels: + job: job8016 + - record: job:http_inprogress_requests:sum:8017 + expr: vector(1) + labels: + job: job8017 + - record: job:http_inprogress_requests:sum:8018 + expr: vector(1) + labels: + job: job8018 + - record: job:http_inprogress_requests:sum:8019 + expr: vector(1) + labels: + job: job8019 + - record: job:http_inprogress_requests:sum:8020 + expr: vector(1) + labels: + job: job8020 + - record: job:http_inprogress_requests:sum:8021 + expr: vector(1) + labels: + job: job8021 + - record: job:http_inprogress_requests:sum:8022 + expr: vector(1) + labels: + job: job8022 + - record: job:http_inprogress_requests:sum:8023 + expr: vector(1) + labels: + job: job8023 + - record: job:http_inprogress_requests:sum:8024 + expr: vector(1) + labels: + job: job8024 + - record: job:http_inprogress_requests:sum:8025 + expr: vector(1) + labels: + job: job8025 + - record: job:http_inprogress_requests:sum:8026 + expr: vector(1) + labels: + job: job8026 + - record: job:http_inprogress_requests:sum:8027 + expr: vector(1) + labels: + job: job8027 + - record: job:http_inprogress_requests:sum:8028 + expr: vector(1) + labels: + job: job8028 + - record: job:http_inprogress_requests:sum:8029 + expr: vector(1) + labels: + job: job8029 + - record: job:http_inprogress_requests:sum:8030 + expr: vector(1) + labels: + job: job8030 + - record: job:http_inprogress_requests:sum:8031 + expr: vector(1) + labels: + job: job8031 + - record: job:http_inprogress_requests:sum:8032 + expr: vector(1) + labels: + job: job8032 + - record: job:http_inprogress_requests:sum:8033 + expr: vector(1) + labels: + job: job8033 + - record: job:http_inprogress_requests:sum:8034 + expr: vector(1) + labels: + job: job8034 + - record: job:http_inprogress_requests:sum:8035 + expr: vector(1) + labels: + job: job8035 + - record: job:http_inprogress_requests:sum:8036 + expr: vector(1) + labels: + job: job8036 + - record: job:http_inprogress_requests:sum:8037 + expr: vector(1) + labels: + job: job8037 + - record: job:http_inprogress_requests:sum:8038 + expr: vector(1) + labels: + job: job8038 + - record: job:http_inprogress_requests:sum:8039 + expr: vector(1) + labels: + job: job8039 + - record: job:http_inprogress_requests:sum:8040 + expr: vector(1) + labels: + job: job8040 + - record: job:http_inprogress_requests:sum:8041 + expr: vector(1) + labels: + job: job8041 + - record: job:http_inprogress_requests:sum:8042 + expr: vector(1) + labels: + job: job8042 + - record: job:http_inprogress_requests:sum:8043 + expr: vector(1) + labels: + job: job8043 + - record: job:http_inprogress_requests:sum:8044 + expr: vector(1) + labels: + job: job8044 + - record: job:http_inprogress_requests:sum:8045 + expr: vector(1) + labels: + job: job8045 + - record: job:http_inprogress_requests:sum:8046 + expr: vector(1) + labels: + job: job8046 + - record: job:http_inprogress_requests:sum:8047 + expr: vector(1) + labels: + job: job8047 + - record: job:http_inprogress_requests:sum:8048 + expr: vector(1) + labels: + job: job8048 + - record: job:http_inprogress_requests:sum:8049 + expr: vector(1) + labels: + job: job8049 + - record: job:http_inprogress_requests:sum:8050 + expr: vector(1) + labels: + job: job8050 + - record: job:http_inprogress_requests:sum:8051 + expr: vector(1) + labels: + job: job8051 + - record: job:http_inprogress_requests:sum:8052 + expr: vector(1) + labels: + job: job8052 + - record: job:http_inprogress_requests:sum:8053 + expr: vector(1) + labels: + job: job8053 + - record: job:http_inprogress_requests:sum:8054 + expr: vector(1) + labels: + job: job8054 + - record: job:http_inprogress_requests:sum:8055 + expr: vector(1) + labels: + job: job8055 + - record: job:http_inprogress_requests:sum:8056 + expr: vector(1) + labels: + job: job8056 + - record: job:http_inprogress_requests:sum:8057 + expr: vector(1) + labels: + job: job8057 + - record: job:http_inprogress_requests:sum:8058 + expr: vector(1) + labels: + job: job8058 + - record: job:http_inprogress_requests:sum:8059 + expr: vector(1) + labels: + job: job8059 + - record: job:http_inprogress_requests:sum:8060 + expr: vector(1) + labels: + job: job8060 + - record: job:http_inprogress_requests:sum:8061 + expr: vector(1) + labels: + job: job8061 + - record: job:http_inprogress_requests:sum:8062 + expr: vector(1) + labels: + job: job8062 + - record: job:http_inprogress_requests:sum:8063 + expr: vector(1) + labels: + job: job8063 + - record: job:http_inprogress_requests:sum:8064 + expr: vector(1) + labels: + job: job8064 + - record: job:http_inprogress_requests:sum:8065 + expr: vector(1) + labels: + job: job8065 + - record: job:http_inprogress_requests:sum:8066 + expr: vector(1) + labels: + job: job8066 + - record: job:http_inprogress_requests:sum:8067 + expr: vector(1) + labels: + job: job8067 + - record: job:http_inprogress_requests:sum:8068 + expr: vector(1) + labels: + job: job8068 + - record: job:http_inprogress_requests:sum:8069 + expr: vector(1) + labels: + job: job8069 + - record: job:http_inprogress_requests:sum:8070 + expr: vector(1) + labels: + job: job8070 + - record: job:http_inprogress_requests:sum:8071 + expr: vector(1) + labels: + job: job8071 + - record: job:http_inprogress_requests:sum:8072 + expr: vector(1) + labels: + job: job8072 + - record: job:http_inprogress_requests:sum:8073 + expr: vector(1) + labels: + job: job8073 + - record: job:http_inprogress_requests:sum:8074 + expr: vector(1) + labels: + job: job8074 + - record: job:http_inprogress_requests:sum:8075 + expr: vector(1) + labels: + job: job8075 + - record: job:http_inprogress_requests:sum:8076 + expr: vector(1) + labels: + job: job8076 + - record: job:http_inprogress_requests:sum:8077 + expr: vector(1) + labels: + job: job8077 + - record: job:http_inprogress_requests:sum:8078 + expr: vector(1) + labels: + job: job8078 + - record: job:http_inprogress_requests:sum:8079 + expr: vector(1) + labels: + job: job8079 + - record: job:http_inprogress_requests:sum:8080 + expr: vector(1) + labels: + job: job8080 + - record: job:http_inprogress_requests:sum:8081 + expr: vector(1) + labels: + job: job8081 + - record: job:http_inprogress_requests:sum:8082 + expr: vector(1) + labels: + job: job8082 + - record: job:http_inprogress_requests:sum:8083 + expr: vector(1) + labels: + job: job8083 + - record: job:http_inprogress_requests:sum:8084 + expr: vector(1) + labels: + job: job8084 + - record: job:http_inprogress_requests:sum:8085 + expr: vector(1) + labels: + job: job8085 + - record: job:http_inprogress_requests:sum:8086 + expr: vector(1) + labels: + job: job8086 + - record: job:http_inprogress_requests:sum:8087 + expr: vector(1) + labels: + job: job8087 + - record: job:http_inprogress_requests:sum:8088 + expr: vector(1) + labels: + job: job8088 + - record: job:http_inprogress_requests:sum:8089 + expr: vector(1) + labels: + job: job8089 + - record: job:http_inprogress_requests:sum:8090 + expr: vector(1) + labels: + job: job8090 + - record: job:http_inprogress_requests:sum:8091 + expr: vector(1) + labels: + job: job8091 + - record: job:http_inprogress_requests:sum:8092 + expr: vector(1) + labels: + job: job8092 + - record: job:http_inprogress_requests:sum:8093 + expr: vector(1) + labels: + job: job8093 + - record: job:http_inprogress_requests:sum:8094 + expr: vector(1) + labels: + job: job8094 + - record: job:http_inprogress_requests:sum:8095 + expr: vector(1) + labels: + job: job8095 + - record: job:http_inprogress_requests:sum:8096 + expr: vector(1) + labels: + job: job8096 + - record: job:http_inprogress_requests:sum:8097 + expr: vector(1) + labels: + job: job8097 + - record: job:http_inprogress_requests:sum:8098 + expr: vector(1) + labels: + job: job8098 + - record: job:http_inprogress_requests:sum:8099 + expr: vector(1) + labels: + job: job8099 + - record: job:http_inprogress_requests:sum:8100 + expr: vector(1) + labels: + job: job8100 + - record: job:http_inprogress_requests:sum:8101 + expr: vector(1) + labels: + job: job8101 + - record: job:http_inprogress_requests:sum:8102 + expr: vector(1) + labels: + job: job8102 + - record: job:http_inprogress_requests:sum:8103 + expr: vector(1) + labels: + job: job8103 + - record: job:http_inprogress_requests:sum:8104 + expr: vector(1) + labels: + job: job8104 + - record: job:http_inprogress_requests:sum:8105 + expr: vector(1) + labels: + job: job8105 + - record: job:http_inprogress_requests:sum:8106 + expr: vector(1) + labels: + job: job8106 + - record: job:http_inprogress_requests:sum:8107 + expr: vector(1) + labels: + job: job8107 + - record: job:http_inprogress_requests:sum:8108 + expr: vector(1) + labels: + job: job8108 + - record: job:http_inprogress_requests:sum:8109 + expr: vector(1) + labels: + job: job8109 + - record: job:http_inprogress_requests:sum:8110 + expr: vector(1) + labels: + job: job8110 + - record: job:http_inprogress_requests:sum:8111 + expr: vector(1) + labels: + job: job8111 + - record: job:http_inprogress_requests:sum:8112 + expr: vector(1) + labels: + job: job8112 + - record: job:http_inprogress_requests:sum:8113 + expr: vector(1) + labels: + job: job8113 + - record: job:http_inprogress_requests:sum:8114 + expr: vector(1) + labels: + job: job8114 + - record: job:http_inprogress_requests:sum:8115 + expr: vector(1) + labels: + job: job8115 + - record: job:http_inprogress_requests:sum:8116 + expr: vector(1) + labels: + job: job8116 + - record: job:http_inprogress_requests:sum:8117 + expr: vector(1) + labels: + job: job8117 + - record: job:http_inprogress_requests:sum:8118 + expr: vector(1) + labels: + job: job8118 + - record: job:http_inprogress_requests:sum:8119 + expr: vector(1) + labels: + job: job8119 + - record: job:http_inprogress_requests:sum:8120 + expr: vector(1) + labels: + job: job8120 + - record: job:http_inprogress_requests:sum:8121 + expr: vector(1) + labels: + job: job8121 + - record: job:http_inprogress_requests:sum:8122 + expr: vector(1) + labels: + job: job8122 + - record: job:http_inprogress_requests:sum:8123 + expr: vector(1) + labels: + job: job8123 + - record: job:http_inprogress_requests:sum:8124 + expr: vector(1) + labels: + job: job8124 + - record: job:http_inprogress_requests:sum:8125 + expr: vector(1) + labels: + job: job8125 + - record: job:http_inprogress_requests:sum:8126 + expr: vector(1) + labels: + job: job8126 + - record: job:http_inprogress_requests:sum:8127 + expr: vector(1) + labels: + job: job8127 + - record: job:http_inprogress_requests:sum:8128 + expr: vector(1) + labels: + job: job8128 + - record: job:http_inprogress_requests:sum:8129 + expr: vector(1) + labels: + job: job8129 + - record: job:http_inprogress_requests:sum:8130 + expr: vector(1) + labels: + job: job8130 + - record: job:http_inprogress_requests:sum:8131 + expr: vector(1) + labels: + job: job8131 + - record: job:http_inprogress_requests:sum:8132 + expr: vector(1) + labels: + job: job8132 + - record: job:http_inprogress_requests:sum:8133 + expr: vector(1) + labels: + job: job8133 + - record: job:http_inprogress_requests:sum:8134 + expr: vector(1) + labels: + job: job8134 + - record: job:http_inprogress_requests:sum:8135 + expr: vector(1) + labels: + job: job8135 + - record: job:http_inprogress_requests:sum:8136 + expr: vector(1) + labels: + job: job8136 + - record: job:http_inprogress_requests:sum:8137 + expr: vector(1) + labels: + job: job8137 + - record: job:http_inprogress_requests:sum:8138 + expr: vector(1) + labels: + job: job8138 + - record: job:http_inprogress_requests:sum:8139 + expr: vector(1) + labels: + job: job8139 + - record: job:http_inprogress_requests:sum:8140 + expr: vector(1) + labels: + job: job8140 + - record: job:http_inprogress_requests:sum:8141 + expr: vector(1) + labels: + job: job8141 + - record: job:http_inprogress_requests:sum:8142 + expr: vector(1) + labels: + job: job8142 + - record: job:http_inprogress_requests:sum:8143 + expr: vector(1) + labels: + job: job8143 + - record: job:http_inprogress_requests:sum:8144 + expr: vector(1) + labels: + job: job8144 + - record: job:http_inprogress_requests:sum:8145 + expr: vector(1) + labels: + job: job8145 + - record: job:http_inprogress_requests:sum:8146 + expr: vector(1) + labels: + job: job8146 + - record: job:http_inprogress_requests:sum:8147 + expr: vector(1) + labels: + job: job8147 + - record: job:http_inprogress_requests:sum:8148 + expr: vector(1) + labels: + job: job8148 + - record: job:http_inprogress_requests:sum:8149 + expr: vector(1) + labels: + job: job8149 + - record: job:http_inprogress_requests:sum:8150 + expr: vector(1) + labels: + job: job8150 + - record: job:http_inprogress_requests:sum:8151 + expr: vector(1) + labels: + job: job8151 + - record: job:http_inprogress_requests:sum:8152 + expr: vector(1) + labels: + job: job8152 + - record: job:http_inprogress_requests:sum:8153 + expr: vector(1) + labels: + job: job8153 + - record: job:http_inprogress_requests:sum:8154 + expr: vector(1) + labels: + job: job8154 + - record: job:http_inprogress_requests:sum:8155 + expr: vector(1) + labels: + job: job8155 + - record: job:http_inprogress_requests:sum:8156 + expr: vector(1) + labels: + job: job8156 + - record: job:http_inprogress_requests:sum:8157 + expr: vector(1) + labels: + job: job8157 + - record: job:http_inprogress_requests:sum:8158 + expr: vector(1) + labels: + job: job8158 + - record: job:http_inprogress_requests:sum:8159 + expr: vector(1) + labels: + job: job8159 + - record: job:http_inprogress_requests:sum:8160 + expr: vector(1) + labels: + job: job8160 + - record: job:http_inprogress_requests:sum:8161 + expr: vector(1) + labels: + job: job8161 + - record: job:http_inprogress_requests:sum:8162 + expr: vector(1) + labels: + job: job8162 + - record: job:http_inprogress_requests:sum:8163 + expr: vector(1) + labels: + job: job8163 + - record: job:http_inprogress_requests:sum:8164 + expr: vector(1) + labels: + job: job8164 + - record: job:http_inprogress_requests:sum:8165 + expr: vector(1) + labels: + job: job8165 + - record: job:http_inprogress_requests:sum:8166 + expr: vector(1) + labels: + job: job8166 + - record: job:http_inprogress_requests:sum:8167 + expr: vector(1) + labels: + job: job8167 + - record: job:http_inprogress_requests:sum:8168 + expr: vector(1) + labels: + job: job8168 + - record: job:http_inprogress_requests:sum:8169 + expr: vector(1) + labels: + job: job8169 + - record: job:http_inprogress_requests:sum:8170 + expr: vector(1) + labels: + job: job8170 + - record: job:http_inprogress_requests:sum:8171 + expr: vector(1) + labels: + job: job8171 + - record: job:http_inprogress_requests:sum:8172 + expr: vector(1) + labels: + job: job8172 + - record: job:http_inprogress_requests:sum:8173 + expr: vector(1) + labels: + job: job8173 + - record: job:http_inprogress_requests:sum:8174 + expr: vector(1) + labels: + job: job8174 + - record: job:http_inprogress_requests:sum:8175 + expr: vector(1) + labels: + job: job8175 + - record: job:http_inprogress_requests:sum:8176 + expr: vector(1) + labels: + job: job8176 + - record: job:http_inprogress_requests:sum:8177 + expr: vector(1) + labels: + job: job8177 + - record: job:http_inprogress_requests:sum:8178 + expr: vector(1) + labels: + job: job8178 + - record: job:http_inprogress_requests:sum:8179 + expr: vector(1) + labels: + job: job8179 + - record: job:http_inprogress_requests:sum:8180 + expr: vector(1) + labels: + job: job8180 + - record: job:http_inprogress_requests:sum:8181 + expr: vector(1) + labels: + job: job8181 + - record: job:http_inprogress_requests:sum:8182 + expr: vector(1) + labels: + job: job8182 + - record: job:http_inprogress_requests:sum:8183 + expr: vector(1) + labels: + job: job8183 + - record: job:http_inprogress_requests:sum:8184 + expr: vector(1) + labels: + job: job8184 + - record: job:http_inprogress_requests:sum:8185 + expr: vector(1) + labels: + job: job8185 + - record: job:http_inprogress_requests:sum:8186 + expr: vector(1) + labels: + job: job8186 + - record: job:http_inprogress_requests:sum:8187 + expr: vector(1) + labels: + job: job8187 + - record: job:http_inprogress_requests:sum:8188 + expr: vector(1) + labels: + job: job8188 + - record: job:http_inprogress_requests:sum:8189 + expr: vector(1) + labels: + job: job8189 + - record: job:http_inprogress_requests:sum:8190 + expr: vector(1) + labels: + job: job8190 + - record: job:http_inprogress_requests:sum:8191 + expr: vector(1) + labels: + job: job8191 + - record: job:http_inprogress_requests:sum:8192 + expr: vector(1) + labels: + job: job8192 + - record: job:http_inprogress_requests:sum:8193 + expr: vector(1) + labels: + job: job8193 + - record: job:http_inprogress_requests:sum:8194 + expr: vector(1) + labels: + job: job8194 + - record: job:http_inprogress_requests:sum:8195 + expr: vector(1) + labels: + job: job8195 + - record: job:http_inprogress_requests:sum:8196 + expr: vector(1) + labels: + job: job8196 + - record: job:http_inprogress_requests:sum:8197 + expr: vector(1) + labels: + job: job8197 + - record: job:http_inprogress_requests:sum:8198 + expr: vector(1) + labels: + job: job8198 + - record: job:http_inprogress_requests:sum:8199 + expr: vector(1) + labels: + job: job8199 + - record: job:http_inprogress_requests:sum:8200 + expr: vector(1) + labels: + job: job8200 + - record: job:http_inprogress_requests:sum:8201 + expr: vector(1) + labels: + job: job8201 + - record: job:http_inprogress_requests:sum:8202 + expr: vector(1) + labels: + job: job8202 + - record: job:http_inprogress_requests:sum:8203 + expr: vector(1) + labels: + job: job8203 + - record: job:http_inprogress_requests:sum:8204 + expr: vector(1) + labels: + job: job8204 + - record: job:http_inprogress_requests:sum:8205 + expr: vector(1) + labels: + job: job8205 + - record: job:http_inprogress_requests:sum:8206 + expr: vector(1) + labels: + job: job8206 + - record: job:http_inprogress_requests:sum:8207 + expr: vector(1) + labels: + job: job8207 + - record: job:http_inprogress_requests:sum:8208 + expr: vector(1) + labels: + job: job8208 + - record: job:http_inprogress_requests:sum:8209 + expr: vector(1) + labels: + job: job8209 + - record: job:http_inprogress_requests:sum:8210 + expr: vector(1) + labels: + job: job8210 + - record: job:http_inprogress_requests:sum:8211 + expr: vector(1) + labels: + job: job8211 + - record: job:http_inprogress_requests:sum:8212 + expr: vector(1) + labels: + job: job8212 + - record: job:http_inprogress_requests:sum:8213 + expr: vector(1) + labels: + job: job8213 + - record: job:http_inprogress_requests:sum:8214 + expr: vector(1) + labels: + job: job8214 + - record: job:http_inprogress_requests:sum:8215 + expr: vector(1) + labels: + job: job8215 + - record: job:http_inprogress_requests:sum:8216 + expr: vector(1) + labels: + job: job8216 + - record: job:http_inprogress_requests:sum:8217 + expr: vector(1) + labels: + job: job8217 + - record: job:http_inprogress_requests:sum:8218 + expr: vector(1) + labels: + job: job8218 + - record: job:http_inprogress_requests:sum:8219 + expr: vector(1) + labels: + job: job8219 + - record: job:http_inprogress_requests:sum:8220 + expr: vector(1) + labels: + job: job8220 + - record: job:http_inprogress_requests:sum:8221 + expr: vector(1) + labels: + job: job8221 + - record: job:http_inprogress_requests:sum:8222 + expr: vector(1) + labels: + job: job8222 + - record: job:http_inprogress_requests:sum:8223 + expr: vector(1) + labels: + job: job8223 + - record: job:http_inprogress_requests:sum:8224 + expr: vector(1) + labels: + job: job8224 + - record: job:http_inprogress_requests:sum:8225 + expr: vector(1) + labels: + job: job8225 + - record: job:http_inprogress_requests:sum:8226 + expr: vector(1) + labels: + job: job8226 + - record: job:http_inprogress_requests:sum:8227 + expr: vector(1) + labels: + job: job8227 + - record: job:http_inprogress_requests:sum:8228 + expr: vector(1) + labels: + job: job8228 + - record: job:http_inprogress_requests:sum:8229 + expr: vector(1) + labels: + job: job8229 + - record: job:http_inprogress_requests:sum:8230 + expr: vector(1) + labels: + job: job8230 + - record: job:http_inprogress_requests:sum:8231 + expr: vector(1) + labels: + job: job8231 + - record: job:http_inprogress_requests:sum:8232 + expr: vector(1) + labels: + job: job8232 + - record: job:http_inprogress_requests:sum:8233 + expr: vector(1) + labels: + job: job8233 + - record: job:http_inprogress_requests:sum:8234 + expr: vector(1) + labels: + job: job8234 + - record: job:http_inprogress_requests:sum:8235 + expr: vector(1) + labels: + job: job8235 + - record: job:http_inprogress_requests:sum:8236 + expr: vector(1) + labels: + job: job8236 + - record: job:http_inprogress_requests:sum:8237 + expr: vector(1) + labels: + job: job8237 + - record: job:http_inprogress_requests:sum:8238 + expr: vector(1) + labels: + job: job8238 + - record: job:http_inprogress_requests:sum:8239 + expr: vector(1) + labels: + job: job8239 + - record: job:http_inprogress_requests:sum:8240 + expr: vector(1) + labels: + job: job8240 + - record: job:http_inprogress_requests:sum:8241 + expr: vector(1) + labels: + job: job8241 + - record: job:http_inprogress_requests:sum:8242 + expr: vector(1) + labels: + job: job8242 + - record: job:http_inprogress_requests:sum:8243 + expr: vector(1) + labels: + job: job8243 + - record: job:http_inprogress_requests:sum:8244 + expr: vector(1) + labels: + job: job8244 + - record: job:http_inprogress_requests:sum:8245 + expr: vector(1) + labels: + job: job8245 + - record: job:http_inprogress_requests:sum:8246 + expr: vector(1) + labels: + job: job8246 + - record: job:http_inprogress_requests:sum:8247 + expr: vector(1) + labels: + job: job8247 + - record: job:http_inprogress_requests:sum:8248 + expr: vector(1) + labels: + job: job8248 + - record: job:http_inprogress_requests:sum:8249 + expr: vector(1) + labels: + job: job8249 + - record: job:http_inprogress_requests:sum:8250 + expr: vector(1) + labels: + job: job8250 + - record: job:http_inprogress_requests:sum:8251 + expr: vector(1) + labels: + job: job8251 + - record: job:http_inprogress_requests:sum:8252 + expr: vector(1) + labels: + job: job8252 + - record: job:http_inprogress_requests:sum:8253 + expr: vector(1) + labels: + job: job8253 + - record: job:http_inprogress_requests:sum:8254 + expr: vector(1) + labels: + job: job8254 + - record: job:http_inprogress_requests:sum:8255 + expr: vector(1) + labels: + job: job8255 + - record: job:http_inprogress_requests:sum:8256 + expr: vector(1) + labels: + job: job8256 + - record: job:http_inprogress_requests:sum:8257 + expr: vector(1) + labels: + job: job8257 + - record: job:http_inprogress_requests:sum:8258 + expr: vector(1) + labels: + job: job8258 + - record: job:http_inprogress_requests:sum:8259 + expr: vector(1) + labels: + job: job8259 + - record: job:http_inprogress_requests:sum:8260 + expr: vector(1) + labels: + job: job8260 + - record: job:http_inprogress_requests:sum:8261 + expr: vector(1) + labels: + job: job8261 + - record: job:http_inprogress_requests:sum:8262 + expr: vector(1) + labels: + job: job8262 + - record: job:http_inprogress_requests:sum:8263 + expr: vector(1) + labels: + job: job8263 + - record: job:http_inprogress_requests:sum:8264 + expr: vector(1) + labels: + job: job8264 + - record: job:http_inprogress_requests:sum:8265 + expr: vector(1) + labels: + job: job8265 + - record: job:http_inprogress_requests:sum:8266 + expr: vector(1) + labels: + job: job8266 + - record: job:http_inprogress_requests:sum:8267 + expr: vector(1) + labels: + job: job8267 + - record: job:http_inprogress_requests:sum:8268 + expr: vector(1) + labels: + job: job8268 + - record: job:http_inprogress_requests:sum:8269 + expr: vector(1) + labels: + job: job8269 + - record: job:http_inprogress_requests:sum:8270 + expr: vector(1) + labels: + job: job8270 + - record: job:http_inprogress_requests:sum:8271 + expr: vector(1) + labels: + job: job8271 + - record: job:http_inprogress_requests:sum:8272 + expr: vector(1) + labels: + job: job8272 + - record: job:http_inprogress_requests:sum:8273 + expr: vector(1) + labels: + job: job8273 + - record: job:http_inprogress_requests:sum:8274 + expr: vector(1) + labels: + job: job8274 + - record: job:http_inprogress_requests:sum:8275 + expr: vector(1) + labels: + job: job8275 + - record: job:http_inprogress_requests:sum:8276 + expr: vector(1) + labels: + job: job8276 + - record: job:http_inprogress_requests:sum:8277 + expr: vector(1) + labels: + job: job8277 + - record: job:http_inprogress_requests:sum:8278 + expr: vector(1) + labels: + job: job8278 + - record: job:http_inprogress_requests:sum:8279 + expr: vector(1) + labels: + job: job8279 + - record: job:http_inprogress_requests:sum:8280 + expr: vector(1) + labels: + job: job8280 + - record: job:http_inprogress_requests:sum:8281 + expr: vector(1) + labels: + job: job8281 + - record: job:http_inprogress_requests:sum:8282 + expr: vector(1) + labels: + job: job8282 + - record: job:http_inprogress_requests:sum:8283 + expr: vector(1) + labels: + job: job8283 + - record: job:http_inprogress_requests:sum:8284 + expr: vector(1) + labels: + job: job8284 + - record: job:http_inprogress_requests:sum:8285 + expr: vector(1) + labels: + job: job8285 + - record: job:http_inprogress_requests:sum:8286 + expr: vector(1) + labels: + job: job8286 + - record: job:http_inprogress_requests:sum:8287 + expr: vector(1) + labels: + job: job8287 + - record: job:http_inprogress_requests:sum:8288 + expr: vector(1) + labels: + job: job8288 + - record: job:http_inprogress_requests:sum:8289 + expr: vector(1) + labels: + job: job8289 + - record: job:http_inprogress_requests:sum:8290 + expr: vector(1) + labels: + job: job8290 + - record: job:http_inprogress_requests:sum:8291 + expr: vector(1) + labels: + job: job8291 + - record: job:http_inprogress_requests:sum:8292 + expr: vector(1) + labels: + job: job8292 + - record: job:http_inprogress_requests:sum:8293 + expr: vector(1) + labels: + job: job8293 + - record: job:http_inprogress_requests:sum:8294 + expr: vector(1) + labels: + job: job8294 + - record: job:http_inprogress_requests:sum:8295 + expr: vector(1) + labels: + job: job8295 + - record: job:http_inprogress_requests:sum:8296 + expr: vector(1) + labels: + job: job8296 + - record: job:http_inprogress_requests:sum:8297 + expr: vector(1) + labels: + job: job8297 + - record: job:http_inprogress_requests:sum:8298 + expr: vector(1) + labels: + job: job8298 + - record: job:http_inprogress_requests:sum:8299 + expr: vector(1) + labels: + job: job8299 + - record: job:http_inprogress_requests:sum:8300 + expr: vector(1) + labels: + job: job8300 + - record: job:http_inprogress_requests:sum:8301 + expr: vector(1) + labels: + job: job8301 + - record: job:http_inprogress_requests:sum:8302 + expr: vector(1) + labels: + job: job8302 + - record: job:http_inprogress_requests:sum:8303 + expr: vector(1) + labels: + job: job8303 + - record: job:http_inprogress_requests:sum:8304 + expr: vector(1) + labels: + job: job8304 + - record: job:http_inprogress_requests:sum:8305 + expr: vector(1) + labels: + job: job8305 + - record: job:http_inprogress_requests:sum:8306 + expr: vector(1) + labels: + job: job8306 + - record: job:http_inprogress_requests:sum:8307 + expr: vector(1) + labels: + job: job8307 + - record: job:http_inprogress_requests:sum:8308 + expr: vector(1) + labels: + job: job8308 + - record: job:http_inprogress_requests:sum:8309 + expr: vector(1) + labels: + job: job8309 + - record: job:http_inprogress_requests:sum:8310 + expr: vector(1) + labels: + job: job8310 + - record: job:http_inprogress_requests:sum:8311 + expr: vector(1) + labels: + job: job8311 + - record: job:http_inprogress_requests:sum:8312 + expr: vector(1) + labels: + job: job8312 + - record: job:http_inprogress_requests:sum:8313 + expr: vector(1) + labels: + job: job8313 + - record: job:http_inprogress_requests:sum:8314 + expr: vector(1) + labels: + job: job8314 + - record: job:http_inprogress_requests:sum:8315 + expr: vector(1) + labels: + job: job8315 + - record: job:http_inprogress_requests:sum:8316 + expr: vector(1) + labels: + job: job8316 + - record: job:http_inprogress_requests:sum:8317 + expr: vector(1) + labels: + job: job8317 + - record: job:http_inprogress_requests:sum:8318 + expr: vector(1) + labels: + job: job8318 + - record: job:http_inprogress_requests:sum:8319 + expr: vector(1) + labels: + job: job8319 + - record: job:http_inprogress_requests:sum:8320 + expr: vector(1) + labels: + job: job8320 + - record: job:http_inprogress_requests:sum:8321 + expr: vector(1) + labels: + job: job8321 + - record: job:http_inprogress_requests:sum:8322 + expr: vector(1) + labels: + job: job8322 + - record: job:http_inprogress_requests:sum:8323 + expr: vector(1) + labels: + job: job8323 + - record: job:http_inprogress_requests:sum:8324 + expr: vector(1) + labels: + job: job8324 + - record: job:http_inprogress_requests:sum:8325 + expr: vector(1) + labels: + job: job8325 + - record: job:http_inprogress_requests:sum:8326 + expr: vector(1) + labels: + job: job8326 + - record: job:http_inprogress_requests:sum:8327 + expr: vector(1) + labels: + job: job8327 + - record: job:http_inprogress_requests:sum:8328 + expr: vector(1) + labels: + job: job8328 + - record: job:http_inprogress_requests:sum:8329 + expr: vector(1) + labels: + job: job8329 + - record: job:http_inprogress_requests:sum:8330 + expr: vector(1) + labels: + job: job8330 + - record: job:http_inprogress_requests:sum:8331 + expr: vector(1) + labels: + job: job8331 + - record: job:http_inprogress_requests:sum:8332 + expr: vector(1) + labels: + job: job8332 + - record: job:http_inprogress_requests:sum:8333 + expr: vector(1) + labels: + job: job8333 + - record: job:http_inprogress_requests:sum:8334 + expr: vector(1) + labels: + job: job8334 + - record: job:http_inprogress_requests:sum:8335 + expr: vector(1) + labels: + job: job8335 + - record: job:http_inprogress_requests:sum:8336 + expr: vector(1) + labels: + job: job8336 + - record: job:http_inprogress_requests:sum:8337 + expr: vector(1) + labels: + job: job8337 + - record: job:http_inprogress_requests:sum:8338 + expr: vector(1) + labels: + job: job8338 + - record: job:http_inprogress_requests:sum:8339 + expr: vector(1) + labels: + job: job8339 + - record: job:http_inprogress_requests:sum:8340 + expr: vector(1) + labels: + job: job8340 + - record: job:http_inprogress_requests:sum:8341 + expr: vector(1) + labels: + job: job8341 + - record: job:http_inprogress_requests:sum:8342 + expr: vector(1) + labels: + job: job8342 + - record: job:http_inprogress_requests:sum:8343 + expr: vector(1) + labels: + job: job8343 + - record: job:http_inprogress_requests:sum:8344 + expr: vector(1) + labels: + job: job8344 + - record: job:http_inprogress_requests:sum:8345 + expr: vector(1) + labels: + job: job8345 + - record: job:http_inprogress_requests:sum:8346 + expr: vector(1) + labels: + job: job8346 + - record: job:http_inprogress_requests:sum:8347 + expr: vector(1) + labels: + job: job8347 + - record: job:http_inprogress_requests:sum:8348 + expr: vector(1) + labels: + job: job8348 + - record: job:http_inprogress_requests:sum:8349 + expr: vector(1) + labels: + job: job8349 + - record: job:http_inprogress_requests:sum:8350 + expr: vector(1) + labels: + job: job8350 + - record: job:http_inprogress_requests:sum:8351 + expr: vector(1) + labels: + job: job8351 + - record: job:http_inprogress_requests:sum:8352 + expr: vector(1) + labels: + job: job8352 + - record: job:http_inprogress_requests:sum:8353 + expr: vector(1) + labels: + job: job8353 + - record: job:http_inprogress_requests:sum:8354 + expr: vector(1) + labels: + job: job8354 + - record: job:http_inprogress_requests:sum:8355 + expr: vector(1) + labels: + job: job8355 + - record: job:http_inprogress_requests:sum:8356 + expr: vector(1) + labels: + job: job8356 + - record: job:http_inprogress_requests:sum:8357 + expr: vector(1) + labels: + job: job8357 + - record: job:http_inprogress_requests:sum:8358 + expr: vector(1) + labels: + job: job8358 + - record: job:http_inprogress_requests:sum:8359 + expr: vector(1) + labels: + job: job8359 + - record: job:http_inprogress_requests:sum:8360 + expr: vector(1) + labels: + job: job8360 + - record: job:http_inprogress_requests:sum:8361 + expr: vector(1) + labels: + job: job8361 + - record: job:http_inprogress_requests:sum:8362 + expr: vector(1) + labels: + job: job8362 + - record: job:http_inprogress_requests:sum:8363 + expr: vector(1) + labels: + job: job8363 + - record: job:http_inprogress_requests:sum:8364 + expr: vector(1) + labels: + job: job8364 + - record: job:http_inprogress_requests:sum:8365 + expr: vector(1) + labels: + job: job8365 + - record: job:http_inprogress_requests:sum:8366 + expr: vector(1) + labels: + job: job8366 + - record: job:http_inprogress_requests:sum:8367 + expr: vector(1) + labels: + job: job8367 + - record: job:http_inprogress_requests:sum:8368 + expr: vector(1) + labels: + job: job8368 + - record: job:http_inprogress_requests:sum:8369 + expr: vector(1) + labels: + job: job8369 + - record: job:http_inprogress_requests:sum:8370 + expr: vector(1) + labels: + job: job8370 + - record: job:http_inprogress_requests:sum:8371 + expr: vector(1) + labels: + job: job8371 + - record: job:http_inprogress_requests:sum:8372 + expr: vector(1) + labels: + job: job8372 + - record: job:http_inprogress_requests:sum:8373 + expr: vector(1) + labels: + job: job8373 + - record: job:http_inprogress_requests:sum:8374 + expr: vector(1) + labels: + job: job8374 + - record: job:http_inprogress_requests:sum:8375 + expr: vector(1) + labels: + job: job8375 + - record: job:http_inprogress_requests:sum:8376 + expr: vector(1) + labels: + job: job8376 + - record: job:http_inprogress_requests:sum:8377 + expr: vector(1) + labels: + job: job8377 + - record: job:http_inprogress_requests:sum:8378 + expr: vector(1) + labels: + job: job8378 + - record: job:http_inprogress_requests:sum:8379 + expr: vector(1) + labels: + job: job8379 + - record: job:http_inprogress_requests:sum:8380 + expr: vector(1) + labels: + job: job8380 + - record: job:http_inprogress_requests:sum:8381 + expr: vector(1) + labels: + job: job8381 + - record: job:http_inprogress_requests:sum:8382 + expr: vector(1) + labels: + job: job8382 + - record: job:http_inprogress_requests:sum:8383 + expr: vector(1) + labels: + job: job8383 + - record: job:http_inprogress_requests:sum:8384 + expr: vector(1) + labels: + job: job8384 + - record: job:http_inprogress_requests:sum:8385 + expr: vector(1) + labels: + job: job8385 + - record: job:http_inprogress_requests:sum:8386 + expr: vector(1) + labels: + job: job8386 + - record: job:http_inprogress_requests:sum:8387 + expr: vector(1) + labels: + job: job8387 + - record: job:http_inprogress_requests:sum:8388 + expr: vector(1) + labels: + job: job8388 + - record: job:http_inprogress_requests:sum:8389 + expr: vector(1) + labels: + job: job8389 + - record: job:http_inprogress_requests:sum:8390 + expr: vector(1) + labels: + job: job8390 + - record: job:http_inprogress_requests:sum:8391 + expr: vector(1) + labels: + job: job8391 + - record: job:http_inprogress_requests:sum:8392 + expr: vector(1) + labels: + job: job8392 + - record: job:http_inprogress_requests:sum:8393 + expr: vector(1) + labels: + job: job8393 + - record: job:http_inprogress_requests:sum:8394 + expr: vector(1) + labels: + job: job8394 + - record: job:http_inprogress_requests:sum:8395 + expr: vector(1) + labels: + job: job8395 + - record: job:http_inprogress_requests:sum:8396 + expr: vector(1) + labels: + job: job8396 + - record: job:http_inprogress_requests:sum:8397 + expr: vector(1) + labels: + job: job8397 + - record: job:http_inprogress_requests:sum:8398 + expr: vector(1) + labels: + job: job8398 + - record: job:http_inprogress_requests:sum:8399 + expr: vector(1) + labels: + job: job8399 + - record: job:http_inprogress_requests:sum:8400 + expr: vector(1) + labels: + job: job8400 + - record: job:http_inprogress_requests:sum:8401 + expr: vector(1) + labels: + job: job8401 + - record: job:http_inprogress_requests:sum:8402 + expr: vector(1) + labels: + job: job8402 + - record: job:http_inprogress_requests:sum:8403 + expr: vector(1) + labels: + job: job8403 + - record: job:http_inprogress_requests:sum:8404 + expr: vector(1) + labels: + job: job8404 + - record: job:http_inprogress_requests:sum:8405 + expr: vector(1) + labels: + job: job8405 + - record: job:http_inprogress_requests:sum:8406 + expr: vector(1) + labels: + job: job8406 + - record: job:http_inprogress_requests:sum:8407 + expr: vector(1) + labels: + job: job8407 + - record: job:http_inprogress_requests:sum:8408 + expr: vector(1) + labels: + job: job8408 + - record: job:http_inprogress_requests:sum:8409 + expr: vector(1) + labels: + job: job8409 + - record: job:http_inprogress_requests:sum:8410 + expr: vector(1) + labels: + job: job8410 + - record: job:http_inprogress_requests:sum:8411 + expr: vector(1) + labels: + job: job8411 + - record: job:http_inprogress_requests:sum:8412 + expr: vector(1) + labels: + job: job8412 + - record: job:http_inprogress_requests:sum:8413 + expr: vector(1) + labels: + job: job8413 + - record: job:http_inprogress_requests:sum:8414 + expr: vector(1) + labels: + job: job8414 + - record: job:http_inprogress_requests:sum:8415 + expr: vector(1) + labels: + job: job8415 + - record: job:http_inprogress_requests:sum:8416 + expr: vector(1) + labels: + job: job8416 + - record: job:http_inprogress_requests:sum:8417 + expr: vector(1) + labels: + job: job8417 + - record: job:http_inprogress_requests:sum:8418 + expr: vector(1) + labels: + job: job8418 + - record: job:http_inprogress_requests:sum:8419 + expr: vector(1) + labels: + job: job8419 + - record: job:http_inprogress_requests:sum:8420 + expr: vector(1) + labels: + job: job8420 + - record: job:http_inprogress_requests:sum:8421 + expr: vector(1) + labels: + job: job8421 + - record: job:http_inprogress_requests:sum:8422 + expr: vector(1) + labels: + job: job8422 + - record: job:http_inprogress_requests:sum:8423 + expr: vector(1) + labels: + job: job8423 + - record: job:http_inprogress_requests:sum:8424 + expr: vector(1) + labels: + job: job8424 + - record: job:http_inprogress_requests:sum:8425 + expr: vector(1) + labels: + job: job8425 + - record: job:http_inprogress_requests:sum:8426 + expr: vector(1) + labels: + job: job8426 + - record: job:http_inprogress_requests:sum:8427 + expr: vector(1) + labels: + job: job8427 + - record: job:http_inprogress_requests:sum:8428 + expr: vector(1) + labels: + job: job8428 + - record: job:http_inprogress_requests:sum:8429 + expr: vector(1) + labels: + job: job8429 + - record: job:http_inprogress_requests:sum:8430 + expr: vector(1) + labels: + job: job8430 + - record: job:http_inprogress_requests:sum:8431 + expr: vector(1) + labels: + job: job8431 + - record: job:http_inprogress_requests:sum:8432 + expr: vector(1) + labels: + job: job8432 + - record: job:http_inprogress_requests:sum:8433 + expr: vector(1) + labels: + job: job8433 + - record: job:http_inprogress_requests:sum:8434 + expr: vector(1) + labels: + job: job8434 + - record: job:http_inprogress_requests:sum:8435 + expr: vector(1) + labels: + job: job8435 + - record: job:http_inprogress_requests:sum:8436 + expr: vector(1) + labels: + job: job8436 + - record: job:http_inprogress_requests:sum:8437 + expr: vector(1) + labels: + job: job8437 + - record: job:http_inprogress_requests:sum:8438 + expr: vector(1) + labels: + job: job8438 + - record: job:http_inprogress_requests:sum:8439 + expr: vector(1) + labels: + job: job8439 + - record: job:http_inprogress_requests:sum:8440 + expr: vector(1) + labels: + job: job8440 + - record: job:http_inprogress_requests:sum:8441 + expr: vector(1) + labels: + job: job8441 + - record: job:http_inprogress_requests:sum:8442 + expr: vector(1) + labels: + job: job8442 + - record: job:http_inprogress_requests:sum:8443 + expr: vector(1) + labels: + job: job8443 + - record: job:http_inprogress_requests:sum:8444 + expr: vector(1) + labels: + job: job8444 + - record: job:http_inprogress_requests:sum:8445 + expr: vector(1) + labels: + job: job8445 + - record: job:http_inprogress_requests:sum:8446 + expr: vector(1) + labels: + job: job8446 + - record: job:http_inprogress_requests:sum:8447 + expr: vector(1) + labels: + job: job8447 + - record: job:http_inprogress_requests:sum:8448 + expr: vector(1) + labels: + job: job8448 + - record: job:http_inprogress_requests:sum:8449 + expr: vector(1) + labels: + job: job8449 + - record: job:http_inprogress_requests:sum:8450 + expr: vector(1) + labels: + job: job8450 + - record: job:http_inprogress_requests:sum:8451 + expr: vector(1) + labels: + job: job8451 + - record: job:http_inprogress_requests:sum:8452 + expr: vector(1) + labels: + job: job8452 + - record: job:http_inprogress_requests:sum:8453 + expr: vector(1) + labels: + job: job8453 + - record: job:http_inprogress_requests:sum:8454 + expr: vector(1) + labels: + job: job8454 + - record: job:http_inprogress_requests:sum:8455 + expr: vector(1) + labels: + job: job8455 + - record: job:http_inprogress_requests:sum:8456 + expr: vector(1) + labels: + job: job8456 + - record: job:http_inprogress_requests:sum:8457 + expr: vector(1) + labels: + job: job8457 + - record: job:http_inprogress_requests:sum:8458 + expr: vector(1) + labels: + job: job8458 + - record: job:http_inprogress_requests:sum:8459 + expr: vector(1) + labels: + job: job8459 + - record: job:http_inprogress_requests:sum:8460 + expr: vector(1) + labels: + job: job8460 + - record: job:http_inprogress_requests:sum:8461 + expr: vector(1) + labels: + job: job8461 + - record: job:http_inprogress_requests:sum:8462 + expr: vector(1) + labels: + job: job8462 + - record: job:http_inprogress_requests:sum:8463 + expr: vector(1) + labels: + job: job8463 + - record: job:http_inprogress_requests:sum:8464 + expr: vector(1) + labels: + job: job8464 + - record: job:http_inprogress_requests:sum:8465 + expr: vector(1) + labels: + job: job8465 + - record: job:http_inprogress_requests:sum:8466 + expr: vector(1) + labels: + job: job8466 + - record: job:http_inprogress_requests:sum:8467 + expr: vector(1) + labels: + job: job8467 + - record: job:http_inprogress_requests:sum:8468 + expr: vector(1) + labels: + job: job8468 + - record: job:http_inprogress_requests:sum:8469 + expr: vector(1) + labels: + job: job8469 + - record: job:http_inprogress_requests:sum:8470 + expr: vector(1) + labels: + job: job8470 + - record: job:http_inprogress_requests:sum:8471 + expr: vector(1) + labels: + job: job8471 + - record: job:http_inprogress_requests:sum:8472 + expr: vector(1) + labels: + job: job8472 + - record: job:http_inprogress_requests:sum:8473 + expr: vector(1) + labels: + job: job8473 + - record: job:http_inprogress_requests:sum:8474 + expr: vector(1) + labels: + job: job8474 + - record: job:http_inprogress_requests:sum:8475 + expr: vector(1) + labels: + job: job8475 + - record: job:http_inprogress_requests:sum:8476 + expr: vector(1) + labels: + job: job8476 + - record: job:http_inprogress_requests:sum:8477 + expr: vector(1) + labels: + job: job8477 + - record: job:http_inprogress_requests:sum:8478 + expr: vector(1) + labels: + job: job8478 + - record: job:http_inprogress_requests:sum:8479 + expr: vector(1) + labels: + job: job8479 + - record: job:http_inprogress_requests:sum:8480 + expr: vector(1) + labels: + job: job8480 + - record: job:http_inprogress_requests:sum:8481 + expr: vector(1) + labels: + job: job8481 + - record: job:http_inprogress_requests:sum:8482 + expr: vector(1) + labels: + job: job8482 + - record: job:http_inprogress_requests:sum:8483 + expr: vector(1) + labels: + job: job8483 + - record: job:http_inprogress_requests:sum:8484 + expr: vector(1) + labels: + job: job8484 + - record: job:http_inprogress_requests:sum:8485 + expr: vector(1) + labels: + job: job8485 + - record: job:http_inprogress_requests:sum:8486 + expr: vector(1) + labels: + job: job8486 + - record: job:http_inprogress_requests:sum:8487 + expr: vector(1) + labels: + job: job8487 + - record: job:http_inprogress_requests:sum:8488 + expr: vector(1) + labels: + job: job8488 + - record: job:http_inprogress_requests:sum:8489 + expr: vector(1) + labels: + job: job8489 + - record: job:http_inprogress_requests:sum:8490 + expr: vector(1) + labels: + job: job8490 + - record: job:http_inprogress_requests:sum:8491 + expr: vector(1) + labels: + job: job8491 + - record: job:http_inprogress_requests:sum:8492 + expr: vector(1) + labels: + job: job8492 + - record: job:http_inprogress_requests:sum:8493 + expr: vector(1) + labels: + job: job8493 + - record: job:http_inprogress_requests:sum:8494 + expr: vector(1) + labels: + job: job8494 + - record: job:http_inprogress_requests:sum:8495 + expr: vector(1) + labels: + job: job8495 + - record: job:http_inprogress_requests:sum:8496 + expr: vector(1) + labels: + job: job8496 + - record: job:http_inprogress_requests:sum:8497 + expr: vector(1) + labels: + job: job8497 + - record: job:http_inprogress_requests:sum:8498 + expr: vector(1) + labels: + job: job8498 + - record: job:http_inprogress_requests:sum:8499 + expr: vector(1) + labels: + job: job8499 + - record: job:http_inprogress_requests:sum:8500 + expr: vector(1) + labels: + job: job8500 + - record: job:http_inprogress_requests:sum:8501 + expr: vector(1) + labels: + job: job8501 + - record: job:http_inprogress_requests:sum:8502 + expr: vector(1) + labels: + job: job8502 + - record: job:http_inprogress_requests:sum:8503 + expr: vector(1) + labels: + job: job8503 + - record: job:http_inprogress_requests:sum:8504 + expr: vector(1) + labels: + job: job8504 + - record: job:http_inprogress_requests:sum:8505 + expr: vector(1) + labels: + job: job8505 + - record: job:http_inprogress_requests:sum:8506 + expr: vector(1) + labels: + job: job8506 + - record: job:http_inprogress_requests:sum:8507 + expr: vector(1) + labels: + job: job8507 + - record: job:http_inprogress_requests:sum:8508 + expr: vector(1) + labels: + job: job8508 + - record: job:http_inprogress_requests:sum:8509 + expr: vector(1) + labels: + job: job8509 + - record: job:http_inprogress_requests:sum:8510 + expr: vector(1) + labels: + job: job8510 + - record: job:http_inprogress_requests:sum:8511 + expr: vector(1) + labels: + job: job8511 + - record: job:http_inprogress_requests:sum:8512 + expr: vector(1) + labels: + job: job8512 + - record: job:http_inprogress_requests:sum:8513 + expr: vector(1) + labels: + job: job8513 + - record: job:http_inprogress_requests:sum:8514 + expr: vector(1) + labels: + job: job8514 + - record: job:http_inprogress_requests:sum:8515 + expr: vector(1) + labels: + job: job8515 + - record: job:http_inprogress_requests:sum:8516 + expr: vector(1) + labels: + job: job8516 + - record: job:http_inprogress_requests:sum:8517 + expr: vector(1) + labels: + job: job8517 + - record: job:http_inprogress_requests:sum:8518 + expr: vector(1) + labels: + job: job8518 + - record: job:http_inprogress_requests:sum:8519 + expr: vector(1) + labels: + job: job8519 + - record: job:http_inprogress_requests:sum:8520 + expr: vector(1) + labels: + job: job8520 + - record: job:http_inprogress_requests:sum:8521 + expr: vector(1) + labels: + job: job8521 + - record: job:http_inprogress_requests:sum:8522 + expr: vector(1) + labels: + job: job8522 + - record: job:http_inprogress_requests:sum:8523 + expr: vector(1) + labels: + job: job8523 + - record: job:http_inprogress_requests:sum:8524 + expr: vector(1) + labels: + job: job8524 + - record: job:http_inprogress_requests:sum:8525 + expr: vector(1) + labels: + job: job8525 + - record: job:http_inprogress_requests:sum:8526 + expr: vector(1) + labels: + job: job8526 + - record: job:http_inprogress_requests:sum:8527 + expr: vector(1) + labels: + job: job8527 + - record: job:http_inprogress_requests:sum:8528 + expr: vector(1) + labels: + job: job8528 + - record: job:http_inprogress_requests:sum:8529 + expr: vector(1) + labels: + job: job8529 + - record: job:http_inprogress_requests:sum:8530 + expr: vector(1) + labels: + job: job8530 + - record: job:http_inprogress_requests:sum:8531 + expr: vector(1) + labels: + job: job8531 + - record: job:http_inprogress_requests:sum:8532 + expr: vector(1) + labels: + job: job8532 + - record: job:http_inprogress_requests:sum:8533 + expr: vector(1) + labels: + job: job8533 + - record: job:http_inprogress_requests:sum:8534 + expr: vector(1) + labels: + job: job8534 + - record: job:http_inprogress_requests:sum:8535 + expr: vector(1) + labels: + job: job8535 + - record: job:http_inprogress_requests:sum:8536 + expr: vector(1) + labels: + job: job8536 + - record: job:http_inprogress_requests:sum:8537 + expr: vector(1) + labels: + job: job8537 + - record: job:http_inprogress_requests:sum:8538 + expr: vector(1) + labels: + job: job8538 + - record: job:http_inprogress_requests:sum:8539 + expr: vector(1) + labels: + job: job8539 + - record: job:http_inprogress_requests:sum:8540 + expr: vector(1) + labels: + job: job8540 + - record: job:http_inprogress_requests:sum:8541 + expr: vector(1) + labels: + job: job8541 + - record: job:http_inprogress_requests:sum:8542 + expr: vector(1) + labels: + job: job8542 + - record: job:http_inprogress_requests:sum:8543 + expr: vector(1) + labels: + job: job8543 + - record: job:http_inprogress_requests:sum:8544 + expr: vector(1) + labels: + job: job8544 + - record: job:http_inprogress_requests:sum:8545 + expr: vector(1) + labels: + job: job8545 + - record: job:http_inprogress_requests:sum:8546 + expr: vector(1) + labels: + job: job8546 + - record: job:http_inprogress_requests:sum:8547 + expr: vector(1) + labels: + job: job8547 + - record: job:http_inprogress_requests:sum:8548 + expr: vector(1) + labels: + job: job8548 + - record: job:http_inprogress_requests:sum:8549 + expr: vector(1) + labels: + job: job8549 + - record: job:http_inprogress_requests:sum:8550 + expr: vector(1) + labels: + job: job8550 + - record: job:http_inprogress_requests:sum:8551 + expr: vector(1) + labels: + job: job8551 + - record: job:http_inprogress_requests:sum:8552 + expr: vector(1) + labels: + job: job8552 + - record: job:http_inprogress_requests:sum:8553 + expr: vector(1) + labels: + job: job8553 + - record: job:http_inprogress_requests:sum:8554 + expr: vector(1) + labels: + job: job8554 + - record: job:http_inprogress_requests:sum:8555 + expr: vector(1) + labels: + job: job8555 + - record: job:http_inprogress_requests:sum:8556 + expr: vector(1) + labels: + job: job8556 + - record: job:http_inprogress_requests:sum:8557 + expr: vector(1) + labels: + job: job8557 + - record: job:http_inprogress_requests:sum:8558 + expr: vector(1) + labels: + job: job8558 + - record: job:http_inprogress_requests:sum:8559 + expr: vector(1) + labels: + job: job8559 + - record: job:http_inprogress_requests:sum:8560 + expr: vector(1) + labels: + job: job8560 + - record: job:http_inprogress_requests:sum:8561 + expr: vector(1) + labels: + job: job8561 + - record: job:http_inprogress_requests:sum:8562 + expr: vector(1) + labels: + job: job8562 + - record: job:http_inprogress_requests:sum:8563 + expr: vector(1) + labels: + job: job8563 + - record: job:http_inprogress_requests:sum:8564 + expr: vector(1) + labels: + job: job8564 + - record: job:http_inprogress_requests:sum:8565 + expr: vector(1) + labels: + job: job8565 + - record: job:http_inprogress_requests:sum:8566 + expr: vector(1) + labels: + job: job8566 + - record: job:http_inprogress_requests:sum:8567 + expr: vector(1) + labels: + job: job8567 + - record: job:http_inprogress_requests:sum:8568 + expr: vector(1) + labels: + job: job8568 + - record: job:http_inprogress_requests:sum:8569 + expr: vector(1) + labels: + job: job8569 + - record: job:http_inprogress_requests:sum:8570 + expr: vector(1) + labels: + job: job8570 + - record: job:http_inprogress_requests:sum:8571 + expr: vector(1) + labels: + job: job8571 + - record: job:http_inprogress_requests:sum:8572 + expr: vector(1) + labels: + job: job8572 + - record: job:http_inprogress_requests:sum:8573 + expr: vector(1) + labels: + job: job8573 + - record: job:http_inprogress_requests:sum:8574 + expr: vector(1) + labels: + job: job8574 + - record: job:http_inprogress_requests:sum:8575 + expr: vector(1) + labels: + job: job8575 + - record: job:http_inprogress_requests:sum:8576 + expr: vector(1) + labels: + job: job8576 + - record: job:http_inprogress_requests:sum:8577 + expr: vector(1) + labels: + job: job8577 + - record: job:http_inprogress_requests:sum:8578 + expr: vector(1) + labels: + job: job8578 + - record: job:http_inprogress_requests:sum:8579 + expr: vector(1) + labels: + job: job8579 + - record: job:http_inprogress_requests:sum:8580 + expr: vector(1) + labels: + job: job8580 + - record: job:http_inprogress_requests:sum:8581 + expr: vector(1) + labels: + job: job8581 + - record: job:http_inprogress_requests:sum:8582 + expr: vector(1) + labels: + job: job8582 + - record: job:http_inprogress_requests:sum:8583 + expr: vector(1) + labels: + job: job8583 + - record: job:http_inprogress_requests:sum:8584 + expr: vector(1) + labels: + job: job8584 + - record: job:http_inprogress_requests:sum:8585 + expr: vector(1) + labels: + job: job8585 + - record: job:http_inprogress_requests:sum:8586 + expr: vector(1) + labels: + job: job8586 + - record: job:http_inprogress_requests:sum:8587 + expr: vector(1) + labels: + job: job8587 + - record: job:http_inprogress_requests:sum:8588 + expr: vector(1) + labels: + job: job8588 + - record: job:http_inprogress_requests:sum:8589 + expr: vector(1) + labels: + job: job8589 + - record: job:http_inprogress_requests:sum:8590 + expr: vector(1) + labels: + job: job8590 + - record: job:http_inprogress_requests:sum:8591 + expr: vector(1) + labels: + job: job8591 + - record: job:http_inprogress_requests:sum:8592 + expr: vector(1) + labels: + job: job8592 + - record: job:http_inprogress_requests:sum:8593 + expr: vector(1) + labels: + job: job8593 + - record: job:http_inprogress_requests:sum:8594 + expr: vector(1) + labels: + job: job8594 + - record: job:http_inprogress_requests:sum:8595 + expr: vector(1) + labels: + job: job8595 + - record: job:http_inprogress_requests:sum:8596 + expr: vector(1) + labels: + job: job8596 + - record: job:http_inprogress_requests:sum:8597 + expr: vector(1) + labels: + job: job8597 + - record: job:http_inprogress_requests:sum:8598 + expr: vector(1) + labels: + job: job8598 + - record: job:http_inprogress_requests:sum:8599 + expr: vector(1) + labels: + job: job8599 + - record: job:http_inprogress_requests:sum:8600 + expr: vector(1) + labels: + job: job8600 + - record: job:http_inprogress_requests:sum:8601 + expr: vector(1) + labels: + job: job8601 + - record: job:http_inprogress_requests:sum:8602 + expr: vector(1) + labels: + job: job8602 + - record: job:http_inprogress_requests:sum:8603 + expr: vector(1) + labels: + job: job8603 + - record: job:http_inprogress_requests:sum:8604 + expr: vector(1) + labels: + job: job8604 + - record: job:http_inprogress_requests:sum:8605 + expr: vector(1) + labels: + job: job8605 + - record: job:http_inprogress_requests:sum:8606 + expr: vector(1) + labels: + job: job8606 + - record: job:http_inprogress_requests:sum:8607 + expr: vector(1) + labels: + job: job8607 + - record: job:http_inprogress_requests:sum:8608 + expr: vector(1) + labels: + job: job8608 + - record: job:http_inprogress_requests:sum:8609 + expr: vector(1) + labels: + job: job8609 + - record: job:http_inprogress_requests:sum:8610 + expr: vector(1) + labels: + job: job8610 + - record: job:http_inprogress_requests:sum:8611 + expr: vector(1) + labels: + job: job8611 + - record: job:http_inprogress_requests:sum:8612 + expr: vector(1) + labels: + job: job8612 + - record: job:http_inprogress_requests:sum:8613 + expr: vector(1) + labels: + job: job8613 + - record: job:http_inprogress_requests:sum:8614 + expr: vector(1) + labels: + job: job8614 + - record: job:http_inprogress_requests:sum:8615 + expr: vector(1) + labels: + job: job8615 + - record: job:http_inprogress_requests:sum:8616 + expr: vector(1) + labels: + job: job8616 + - record: job:http_inprogress_requests:sum:8617 + expr: vector(1) + labels: + job: job8617 + - record: job:http_inprogress_requests:sum:8618 + expr: vector(1) + labels: + job: job8618 + - record: job:http_inprogress_requests:sum:8619 + expr: vector(1) + labels: + job: job8619 + - record: job:http_inprogress_requests:sum:8620 + expr: vector(1) + labels: + job: job8620 + - record: job:http_inprogress_requests:sum:8621 + expr: vector(1) + labels: + job: job8621 + - record: job:http_inprogress_requests:sum:8622 + expr: vector(1) + labels: + job: job8622 + - record: job:http_inprogress_requests:sum:8623 + expr: vector(1) + labels: + job: job8623 + - record: job:http_inprogress_requests:sum:8624 + expr: vector(1) + labels: + job: job8624 + - record: job:http_inprogress_requests:sum:8625 + expr: vector(1) + labels: + job: job8625 + - record: job:http_inprogress_requests:sum:8626 + expr: vector(1) + labels: + job: job8626 + - record: job:http_inprogress_requests:sum:8627 + expr: vector(1) + labels: + job: job8627 + - record: job:http_inprogress_requests:sum:8628 + expr: vector(1) + labels: + job: job8628 + - record: job:http_inprogress_requests:sum:8629 + expr: vector(1) + labels: + job: job8629 + - record: job:http_inprogress_requests:sum:8630 + expr: vector(1) + labels: + job: job8630 + - record: job:http_inprogress_requests:sum:8631 + expr: vector(1) + labels: + job: job8631 + - record: job:http_inprogress_requests:sum:8632 + expr: vector(1) + labels: + job: job8632 + - record: job:http_inprogress_requests:sum:8633 + expr: vector(1) + labels: + job: job8633 + - record: job:http_inprogress_requests:sum:8634 + expr: vector(1) + labels: + job: job8634 + - record: job:http_inprogress_requests:sum:8635 + expr: vector(1) + labels: + job: job8635 + - record: job:http_inprogress_requests:sum:8636 + expr: vector(1) + labels: + job: job8636 + - record: job:http_inprogress_requests:sum:8637 + expr: vector(1) + labels: + job: job8637 + - record: job:http_inprogress_requests:sum:8638 + expr: vector(1) + labels: + job: job8638 + - record: job:http_inprogress_requests:sum:8639 + expr: vector(1) + labels: + job: job8639 + - record: job:http_inprogress_requests:sum:8640 + expr: vector(1) + labels: + job: job8640 + - record: job:http_inprogress_requests:sum:8641 + expr: vector(1) + labels: + job: job8641 + - record: job:http_inprogress_requests:sum:8642 + expr: vector(1) + labels: + job: job8642 + - record: job:http_inprogress_requests:sum:8643 + expr: vector(1) + labels: + job: job8643 + - record: job:http_inprogress_requests:sum:8644 + expr: vector(1) + labels: + job: job8644 + - record: job:http_inprogress_requests:sum:8645 + expr: vector(1) + labels: + job: job8645 + - record: job:http_inprogress_requests:sum:8646 + expr: vector(1) + labels: + job: job8646 + - record: job:http_inprogress_requests:sum:8647 + expr: vector(1) + labels: + job: job8647 + - record: job:http_inprogress_requests:sum:8648 + expr: vector(1) + labels: + job: job8648 + - record: job:http_inprogress_requests:sum:8649 + expr: vector(1) + labels: + job: job8649 + - record: job:http_inprogress_requests:sum:8650 + expr: vector(1) + labels: + job: job8650 + - record: job:http_inprogress_requests:sum:8651 + expr: vector(1) + labels: + job: job8651 + - record: job:http_inprogress_requests:sum:8652 + expr: vector(1) + labels: + job: job8652 + - record: job:http_inprogress_requests:sum:8653 + expr: vector(1) + labels: + job: job8653 + - record: job:http_inprogress_requests:sum:8654 + expr: vector(1) + labels: + job: job8654 + - record: job:http_inprogress_requests:sum:8655 + expr: vector(1) + labels: + job: job8655 + - record: job:http_inprogress_requests:sum:8656 + expr: vector(1) + labels: + job: job8656 + - record: job:http_inprogress_requests:sum:8657 + expr: vector(1) + labels: + job: job8657 + - record: job:http_inprogress_requests:sum:8658 + expr: vector(1) + labels: + job: job8658 + - record: job:http_inprogress_requests:sum:8659 + expr: vector(1) + labels: + job: job8659 + - record: job:http_inprogress_requests:sum:8660 + expr: vector(1) + labels: + job: job8660 + - record: job:http_inprogress_requests:sum:8661 + expr: vector(1) + labels: + job: job8661 + - record: job:http_inprogress_requests:sum:8662 + expr: vector(1) + labels: + job: job8662 + - record: job:http_inprogress_requests:sum:8663 + expr: vector(1) + labels: + job: job8663 + - record: job:http_inprogress_requests:sum:8664 + expr: vector(1) + labels: + job: job8664 + - record: job:http_inprogress_requests:sum:8665 + expr: vector(1) + labels: + job: job8665 + - record: job:http_inprogress_requests:sum:8666 + expr: vector(1) + labels: + job: job8666 + - record: job:http_inprogress_requests:sum:8667 + expr: vector(1) + labels: + job: job8667 + - record: job:http_inprogress_requests:sum:8668 + expr: vector(1) + labels: + job: job8668 + - record: job:http_inprogress_requests:sum:8669 + expr: vector(1) + labels: + job: job8669 + - record: job:http_inprogress_requests:sum:8670 + expr: vector(1) + labels: + job: job8670 + - record: job:http_inprogress_requests:sum:8671 + expr: vector(1) + labels: + job: job8671 + - record: job:http_inprogress_requests:sum:8672 + expr: vector(1) + labels: + job: job8672 + - record: job:http_inprogress_requests:sum:8673 + expr: vector(1) + labels: + job: job8673 + - record: job:http_inprogress_requests:sum:8674 + expr: vector(1) + labels: + job: job8674 + - record: job:http_inprogress_requests:sum:8675 + expr: vector(1) + labels: + job: job8675 + - record: job:http_inprogress_requests:sum:8676 + expr: vector(1) + labels: + job: job8676 + - record: job:http_inprogress_requests:sum:8677 + expr: vector(1) + labels: + job: job8677 + - record: job:http_inprogress_requests:sum:8678 + expr: vector(1) + labels: + job: job8678 + - record: job:http_inprogress_requests:sum:8679 + expr: vector(1) + labels: + job: job8679 + - record: job:http_inprogress_requests:sum:8680 + expr: vector(1) + labels: + job: job8680 + - record: job:http_inprogress_requests:sum:8681 + expr: vector(1) + labels: + job: job8681 + - record: job:http_inprogress_requests:sum:8682 + expr: vector(1) + labels: + job: job8682 + - record: job:http_inprogress_requests:sum:8683 + expr: vector(1) + labels: + job: job8683 + - record: job:http_inprogress_requests:sum:8684 + expr: vector(1) + labels: + job: job8684 + - record: job:http_inprogress_requests:sum:8685 + expr: vector(1) + labels: + job: job8685 + - record: job:http_inprogress_requests:sum:8686 + expr: vector(1) + labels: + job: job8686 + - record: job:http_inprogress_requests:sum:8687 + expr: vector(1) + labels: + job: job8687 + - record: job:http_inprogress_requests:sum:8688 + expr: vector(1) + labels: + job: job8688 + - record: job:http_inprogress_requests:sum:8689 + expr: vector(1) + labels: + job: job8689 + - record: job:http_inprogress_requests:sum:8690 + expr: vector(1) + labels: + job: job8690 + - record: job:http_inprogress_requests:sum:8691 + expr: vector(1) + labels: + job: job8691 + - record: job:http_inprogress_requests:sum:8692 + expr: vector(1) + labels: + job: job8692 + - record: job:http_inprogress_requests:sum:8693 + expr: vector(1) + labels: + job: job8693 + - record: job:http_inprogress_requests:sum:8694 + expr: vector(1) + labels: + job: job8694 + - record: job:http_inprogress_requests:sum:8695 + expr: vector(1) + labels: + job: job8695 + - record: job:http_inprogress_requests:sum:8696 + expr: vector(1) + labels: + job: job8696 + - record: job:http_inprogress_requests:sum:8697 + expr: vector(1) + labels: + job: job8697 + - record: job:http_inprogress_requests:sum:8698 + expr: vector(1) + labels: + job: job8698 + - record: job:http_inprogress_requests:sum:8699 + expr: vector(1) + labels: + job: job8699 + - record: job:http_inprogress_requests:sum:8700 + expr: vector(1) + labels: + job: job8700 + - record: job:http_inprogress_requests:sum:8701 + expr: vector(1) + labels: + job: job8701 + - record: job:http_inprogress_requests:sum:8702 + expr: vector(1) + labels: + job: job8702 + - record: job:http_inprogress_requests:sum:8703 + expr: vector(1) + labels: + job: job8703 + - record: job:http_inprogress_requests:sum:8704 + expr: vector(1) + labels: + job: job8704 + - record: job:http_inprogress_requests:sum:8705 + expr: vector(1) + labels: + job: job8705 + - record: job:http_inprogress_requests:sum:8706 + expr: vector(1) + labels: + job: job8706 + - record: job:http_inprogress_requests:sum:8707 + expr: vector(1) + labels: + job: job8707 + - record: job:http_inprogress_requests:sum:8708 + expr: vector(1) + labels: + job: job8708 + - record: job:http_inprogress_requests:sum:8709 + expr: vector(1) + labels: + job: job8709 + - record: job:http_inprogress_requests:sum:8710 + expr: vector(1) + labels: + job: job8710 + - record: job:http_inprogress_requests:sum:8711 + expr: vector(1) + labels: + job: job8711 + - record: job:http_inprogress_requests:sum:8712 + expr: vector(1) + labels: + job: job8712 + - record: job:http_inprogress_requests:sum:8713 + expr: vector(1) + labels: + job: job8713 + - record: job:http_inprogress_requests:sum:8714 + expr: vector(1) + labels: + job: job8714 + - record: job:http_inprogress_requests:sum:8715 + expr: vector(1) + labels: + job: job8715 + - record: job:http_inprogress_requests:sum:8716 + expr: vector(1) + labels: + job: job8716 + - record: job:http_inprogress_requests:sum:8717 + expr: vector(1) + labels: + job: job8717 + - record: job:http_inprogress_requests:sum:8718 + expr: vector(1) + labels: + job: job8718 + - record: job:http_inprogress_requests:sum:8719 + expr: vector(1) + labels: + job: job8719 + - record: job:http_inprogress_requests:sum:8720 + expr: vector(1) + labels: + job: job8720 + - record: job:http_inprogress_requests:sum:8721 + expr: vector(1) + labels: + job: job8721 + - record: job:http_inprogress_requests:sum:8722 + expr: vector(1) + labels: + job: job8722 + - record: job:http_inprogress_requests:sum:8723 + expr: vector(1) + labels: + job: job8723 + - record: job:http_inprogress_requests:sum:8724 + expr: vector(1) + labels: + job: job8724 + - record: job:http_inprogress_requests:sum:8725 + expr: vector(1) + labels: + job: job8725 + - record: job:http_inprogress_requests:sum:8726 + expr: vector(1) + labels: + job: job8726 + - record: job:http_inprogress_requests:sum:8727 + expr: vector(1) + labels: + job: job8727 + - record: job:http_inprogress_requests:sum:8728 + expr: vector(1) + labels: + job: job8728 + - record: job:http_inprogress_requests:sum:8729 + expr: vector(1) + labels: + job: job8729 + - record: job:http_inprogress_requests:sum:8730 + expr: vector(1) + labels: + job: job8730 + - record: job:http_inprogress_requests:sum:8731 + expr: vector(1) + labels: + job: job8731 + - record: job:http_inprogress_requests:sum:8732 + expr: vector(1) + labels: + job: job8732 + - record: job:http_inprogress_requests:sum:8733 + expr: vector(1) + labels: + job: job8733 + - record: job:http_inprogress_requests:sum:8734 + expr: vector(1) + labels: + job: job8734 + - record: job:http_inprogress_requests:sum:8735 + expr: vector(1) + labels: + job: job8735 + - record: job:http_inprogress_requests:sum:8736 + expr: vector(1) + labels: + job: job8736 + - record: job:http_inprogress_requests:sum:8737 + expr: vector(1) + labels: + job: job8737 + - record: job:http_inprogress_requests:sum:8738 + expr: vector(1) + labels: + job: job8738 + - record: job:http_inprogress_requests:sum:8739 + expr: vector(1) + labels: + job: job8739 + - record: job:http_inprogress_requests:sum:8740 + expr: vector(1) + labels: + job: job8740 + - record: job:http_inprogress_requests:sum:8741 + expr: vector(1) + labels: + job: job8741 + - record: job:http_inprogress_requests:sum:8742 + expr: vector(1) + labels: + job: job8742 + - record: job:http_inprogress_requests:sum:8743 + expr: vector(1) + labels: + job: job8743 + - record: job:http_inprogress_requests:sum:8744 + expr: vector(1) + labels: + job: job8744 + - record: job:http_inprogress_requests:sum:8745 + expr: vector(1) + labels: + job: job8745 + - record: job:http_inprogress_requests:sum:8746 + expr: vector(1) + labels: + job: job8746 + - record: job:http_inprogress_requests:sum:8747 + expr: vector(1) + labels: + job: job8747 + - record: job:http_inprogress_requests:sum:8748 + expr: vector(1) + labels: + job: job8748 + - record: job:http_inprogress_requests:sum:8749 + expr: vector(1) + labels: + job: job8749 + - record: job:http_inprogress_requests:sum:8750 + expr: vector(1) + labels: + job: job8750 + - record: job:http_inprogress_requests:sum:8751 + expr: vector(1) + labels: + job: job8751 + - record: job:http_inprogress_requests:sum:8752 + expr: vector(1) + labels: + job: job8752 + - record: job:http_inprogress_requests:sum:8753 + expr: vector(1) + labels: + job: job8753 + - record: job:http_inprogress_requests:sum:8754 + expr: vector(1) + labels: + job: job8754 + - record: job:http_inprogress_requests:sum:8755 + expr: vector(1) + labels: + job: job8755 + - record: job:http_inprogress_requests:sum:8756 + expr: vector(1) + labels: + job: job8756 + - record: job:http_inprogress_requests:sum:8757 + expr: vector(1) + labels: + job: job8757 + - record: job:http_inprogress_requests:sum:8758 + expr: vector(1) + labels: + job: job8758 + - record: job:http_inprogress_requests:sum:8759 + expr: vector(1) + labels: + job: job8759 + - record: job:http_inprogress_requests:sum:8760 + expr: vector(1) + labels: + job: job8760 + - record: job:http_inprogress_requests:sum:8761 + expr: vector(1) + labels: + job: job8761 + - record: job:http_inprogress_requests:sum:8762 + expr: vector(1) + labels: + job: job8762 + - record: job:http_inprogress_requests:sum:8763 + expr: vector(1) + labels: + job: job8763 + - record: job:http_inprogress_requests:sum:8764 + expr: vector(1) + labels: + job: job8764 + - record: job:http_inprogress_requests:sum:8765 + expr: vector(1) + labels: + job: job8765 + - record: job:http_inprogress_requests:sum:8766 + expr: vector(1) + labels: + job: job8766 + - record: job:http_inprogress_requests:sum:8767 + expr: vector(1) + labels: + job: job8767 + - record: job:http_inprogress_requests:sum:8768 + expr: vector(1) + labels: + job: job8768 + - record: job:http_inprogress_requests:sum:8769 + expr: vector(1) + labels: + job: job8769 + - record: job:http_inprogress_requests:sum:8770 + expr: vector(1) + labels: + job: job8770 + - record: job:http_inprogress_requests:sum:8771 + expr: vector(1) + labels: + job: job8771 + - record: job:http_inprogress_requests:sum:8772 + expr: vector(1) + labels: + job: job8772 + - record: job:http_inprogress_requests:sum:8773 + expr: vector(1) + labels: + job: job8773 + - record: job:http_inprogress_requests:sum:8774 + expr: vector(1) + labels: + job: job8774 + - record: job:http_inprogress_requests:sum:8775 + expr: vector(1) + labels: + job: job8775 + - record: job:http_inprogress_requests:sum:8776 + expr: vector(1) + labels: + job: job8776 + - record: job:http_inprogress_requests:sum:8777 + expr: vector(1) + labels: + job: job8777 + - record: job:http_inprogress_requests:sum:8778 + expr: vector(1) + labels: + job: job8778 + - record: job:http_inprogress_requests:sum:8779 + expr: vector(1) + labels: + job: job8779 + - record: job:http_inprogress_requests:sum:8780 + expr: vector(1) + labels: + job: job8780 + - record: job:http_inprogress_requests:sum:8781 + expr: vector(1) + labels: + job: job8781 + - record: job:http_inprogress_requests:sum:8782 + expr: vector(1) + labels: + job: job8782 + - record: job:http_inprogress_requests:sum:8783 + expr: vector(1) + labels: + job: job8783 + - record: job:http_inprogress_requests:sum:8784 + expr: vector(1) + labels: + job: job8784 + - record: job:http_inprogress_requests:sum:8785 + expr: vector(1) + labels: + job: job8785 + - record: job:http_inprogress_requests:sum:8786 + expr: vector(1) + labels: + job: job8786 + - record: job:http_inprogress_requests:sum:8787 + expr: vector(1) + labels: + job: job8787 + - record: job:http_inprogress_requests:sum:8788 + expr: vector(1) + labels: + job: job8788 + - record: job:http_inprogress_requests:sum:8789 + expr: vector(1) + labels: + job: job8789 + - record: job:http_inprogress_requests:sum:8790 + expr: vector(1) + labels: + job: job8790 + - record: job:http_inprogress_requests:sum:8791 + expr: vector(1) + labels: + job: job8791 + - record: job:http_inprogress_requests:sum:8792 + expr: vector(1) + labels: + job: job8792 + - record: job:http_inprogress_requests:sum:8793 + expr: vector(1) + labels: + job: job8793 + - record: job:http_inprogress_requests:sum:8794 + expr: vector(1) + labels: + job: job8794 + - record: job:http_inprogress_requests:sum:8795 + expr: vector(1) + labels: + job: job8795 + - record: job:http_inprogress_requests:sum:8796 + expr: vector(1) + labels: + job: job8796 + - record: job:http_inprogress_requests:sum:8797 + expr: vector(1) + labels: + job: job8797 + - record: job:http_inprogress_requests:sum:8798 + expr: vector(1) + labels: + job: job8798 + - record: job:http_inprogress_requests:sum:8799 + expr: vector(1) + labels: + job: job8799 + - record: job:http_inprogress_requests:sum:8800 + expr: vector(1) + labels: + job: job8800 + - record: job:http_inprogress_requests:sum:8801 + expr: vector(1) + labels: + job: job8801 + - record: job:http_inprogress_requests:sum:8802 + expr: vector(1) + labels: + job: job8802 + - record: job:http_inprogress_requests:sum:8803 + expr: vector(1) + labels: + job: job8803 + - record: job:http_inprogress_requests:sum:8804 + expr: vector(1) + labels: + job: job8804 + - record: job:http_inprogress_requests:sum:8805 + expr: vector(1) + labels: + job: job8805 + - record: job:http_inprogress_requests:sum:8806 + expr: vector(1) + labels: + job: job8806 + - record: job:http_inprogress_requests:sum:8807 + expr: vector(1) + labels: + job: job8807 + - record: job:http_inprogress_requests:sum:8808 + expr: vector(1) + labels: + job: job8808 + - record: job:http_inprogress_requests:sum:8809 + expr: vector(1) + labels: + job: job8809 + - record: job:http_inprogress_requests:sum:8810 + expr: vector(1) + labels: + job: job8810 + - record: job:http_inprogress_requests:sum:8811 + expr: vector(1) + labels: + job: job8811 + - record: job:http_inprogress_requests:sum:8812 + expr: vector(1) + labels: + job: job8812 + - record: job:http_inprogress_requests:sum:8813 + expr: vector(1) + labels: + job: job8813 + - record: job:http_inprogress_requests:sum:8814 + expr: vector(1) + labels: + job: job8814 + - record: job:http_inprogress_requests:sum:8815 + expr: vector(1) + labels: + job: job8815 + - record: job:http_inprogress_requests:sum:8816 + expr: vector(1) + labels: + job: job8816 + - record: job:http_inprogress_requests:sum:8817 + expr: vector(1) + labels: + job: job8817 + - record: job:http_inprogress_requests:sum:8818 + expr: vector(1) + labels: + job: job8818 + - record: job:http_inprogress_requests:sum:8819 + expr: vector(1) + labels: + job: job8819 + - record: job:http_inprogress_requests:sum:8820 + expr: vector(1) + labels: + job: job8820 + - record: job:http_inprogress_requests:sum:8821 + expr: vector(1) + labels: + job: job8821 + - record: job:http_inprogress_requests:sum:8822 + expr: vector(1) + labels: + job: job8822 + - record: job:http_inprogress_requests:sum:8823 + expr: vector(1) + labels: + job: job8823 + - record: job:http_inprogress_requests:sum:8824 + expr: vector(1) + labels: + job: job8824 + - record: job:http_inprogress_requests:sum:8825 + expr: vector(1) + labels: + job: job8825 + - record: job:http_inprogress_requests:sum:8826 + expr: vector(1) + labels: + job: job8826 + - record: job:http_inprogress_requests:sum:8827 + expr: vector(1) + labels: + job: job8827 + - record: job:http_inprogress_requests:sum:8828 + expr: vector(1) + labels: + job: job8828 + - record: job:http_inprogress_requests:sum:8829 + expr: vector(1) + labels: + job: job8829 + - record: job:http_inprogress_requests:sum:8830 + expr: vector(1) + labels: + job: job8830 + - record: job:http_inprogress_requests:sum:8831 + expr: vector(1) + labels: + job: job8831 + - record: job:http_inprogress_requests:sum:8832 + expr: vector(1) + labels: + job: job8832 + - record: job:http_inprogress_requests:sum:8833 + expr: vector(1) + labels: + job: job8833 + - record: job:http_inprogress_requests:sum:8834 + expr: vector(1) + labels: + job: job8834 + - record: job:http_inprogress_requests:sum:8835 + expr: vector(1) + labels: + job: job8835 + - record: job:http_inprogress_requests:sum:8836 + expr: vector(1) + labels: + job: job8836 + - record: job:http_inprogress_requests:sum:8837 + expr: vector(1) + labels: + job: job8837 + - record: job:http_inprogress_requests:sum:8838 + expr: vector(1) + labels: + job: job8838 + - record: job:http_inprogress_requests:sum:8839 + expr: vector(1) + labels: + job: job8839 + - record: job:http_inprogress_requests:sum:8840 + expr: vector(1) + labels: + job: job8840 + - record: job:http_inprogress_requests:sum:8841 + expr: vector(1) + labels: + job: job8841 + - record: job:http_inprogress_requests:sum:8842 + expr: vector(1) + labels: + job: job8842 + - record: job:http_inprogress_requests:sum:8843 + expr: vector(1) + labels: + job: job8843 + - record: job:http_inprogress_requests:sum:8844 + expr: vector(1) + labels: + job: job8844 + - record: job:http_inprogress_requests:sum:8845 + expr: vector(1) + labels: + job: job8845 + - record: job:http_inprogress_requests:sum:8846 + expr: vector(1) + labels: + job: job8846 + - record: job:http_inprogress_requests:sum:8847 + expr: vector(1) + labels: + job: job8847 + - record: job:http_inprogress_requests:sum:8848 + expr: vector(1) + labels: + job: job8848 + - record: job:http_inprogress_requests:sum:8849 + expr: vector(1) + labels: + job: job8849 + - record: job:http_inprogress_requests:sum:8850 + expr: vector(1) + labels: + job: job8850 + - record: job:http_inprogress_requests:sum:8851 + expr: vector(1) + labels: + job: job8851 + - record: job:http_inprogress_requests:sum:8852 + expr: vector(1) + labels: + job: job8852 + - record: job:http_inprogress_requests:sum:8853 + expr: vector(1) + labels: + job: job8853 + - record: job:http_inprogress_requests:sum:8854 + expr: vector(1) + labels: + job: job8854 + - record: job:http_inprogress_requests:sum:8855 + expr: vector(1) + labels: + job: job8855 + - record: job:http_inprogress_requests:sum:8856 + expr: vector(1) + labels: + job: job8856 + - record: job:http_inprogress_requests:sum:8857 + expr: vector(1) + labels: + job: job8857 + - record: job:http_inprogress_requests:sum:8858 + expr: vector(1) + labels: + job: job8858 + - record: job:http_inprogress_requests:sum:8859 + expr: vector(1) + labels: + job: job8859 + - record: job:http_inprogress_requests:sum:8860 + expr: vector(1) + labels: + job: job8860 + - record: job:http_inprogress_requests:sum:8861 + expr: vector(1) + labels: + job: job8861 + - record: job:http_inprogress_requests:sum:8862 + expr: vector(1) + labels: + job: job8862 + - record: job:http_inprogress_requests:sum:8863 + expr: vector(1) + labels: + job: job8863 + - record: job:http_inprogress_requests:sum:8864 + expr: vector(1) + labels: + job: job8864 + - record: job:http_inprogress_requests:sum:8865 + expr: vector(1) + labels: + job: job8865 + - record: job:http_inprogress_requests:sum:8866 + expr: vector(1) + labels: + job: job8866 + - record: job:http_inprogress_requests:sum:8867 + expr: vector(1) + labels: + job: job8867 + - record: job:http_inprogress_requests:sum:8868 + expr: vector(1) + labels: + job: job8868 + - record: job:http_inprogress_requests:sum:8869 + expr: vector(1) + labels: + job: job8869 + - record: job:http_inprogress_requests:sum:8870 + expr: vector(1) + labels: + job: job8870 + - record: job:http_inprogress_requests:sum:8871 + expr: vector(1) + labels: + job: job8871 + - record: job:http_inprogress_requests:sum:8872 + expr: vector(1) + labels: + job: job8872 + - record: job:http_inprogress_requests:sum:8873 + expr: vector(1) + labels: + job: job8873 + - record: job:http_inprogress_requests:sum:8874 + expr: vector(1) + labels: + job: job8874 + - record: job:http_inprogress_requests:sum:8875 + expr: vector(1) + labels: + job: job8875 + - record: job:http_inprogress_requests:sum:8876 + expr: vector(1) + labels: + job: job8876 + - record: job:http_inprogress_requests:sum:8877 + expr: vector(1) + labels: + job: job8877 + - record: job:http_inprogress_requests:sum:8878 + expr: vector(1) + labels: + job: job8878 + - record: job:http_inprogress_requests:sum:8879 + expr: vector(1) + labels: + job: job8879 + - record: job:http_inprogress_requests:sum:8880 + expr: vector(1) + labels: + job: job8880 + - record: job:http_inprogress_requests:sum:8881 + expr: vector(1) + labels: + job: job8881 + - record: job:http_inprogress_requests:sum:8882 + expr: vector(1) + labels: + job: job8882 + - record: job:http_inprogress_requests:sum:8883 + expr: vector(1) + labels: + job: job8883 + - record: job:http_inprogress_requests:sum:8884 + expr: vector(1) + labels: + job: job8884 + - record: job:http_inprogress_requests:sum:8885 + expr: vector(1) + labels: + job: job8885 + - record: job:http_inprogress_requests:sum:8886 + expr: vector(1) + labels: + job: job8886 + - record: job:http_inprogress_requests:sum:8887 + expr: vector(1) + labels: + job: job8887 + - record: job:http_inprogress_requests:sum:8888 + expr: vector(1) + labels: + job: job8888 + - record: job:http_inprogress_requests:sum:8889 + expr: vector(1) + labels: + job: job8889 + - record: job:http_inprogress_requests:sum:8890 + expr: vector(1) + labels: + job: job8890 + - record: job:http_inprogress_requests:sum:8891 + expr: vector(1) + labels: + job: job8891 + - record: job:http_inprogress_requests:sum:8892 + expr: vector(1) + labels: + job: job8892 + - record: job:http_inprogress_requests:sum:8893 + expr: vector(1) + labels: + job: job8893 + - record: job:http_inprogress_requests:sum:8894 + expr: vector(1) + labels: + job: job8894 + - record: job:http_inprogress_requests:sum:8895 + expr: vector(1) + labels: + job: job8895 + - record: job:http_inprogress_requests:sum:8896 + expr: vector(1) + labels: + job: job8896 + - record: job:http_inprogress_requests:sum:8897 + expr: vector(1) + labels: + job: job8897 + - record: job:http_inprogress_requests:sum:8898 + expr: vector(1) + labels: + job: job8898 + - record: job:http_inprogress_requests:sum:8899 + expr: vector(1) + labels: + job: job8899 + - record: job:http_inprogress_requests:sum:8900 + expr: vector(1) + labels: + job: job8900 + - record: job:http_inprogress_requests:sum:8901 + expr: vector(1) + labels: + job: job8901 + - record: job:http_inprogress_requests:sum:8902 + expr: vector(1) + labels: + job: job8902 + - record: job:http_inprogress_requests:sum:8903 + expr: vector(1) + labels: + job: job8903 + - record: job:http_inprogress_requests:sum:8904 + expr: vector(1) + labels: + job: job8904 + - record: job:http_inprogress_requests:sum:8905 + expr: vector(1) + labels: + job: job8905 + - record: job:http_inprogress_requests:sum:8906 + expr: vector(1) + labels: + job: job8906 + - record: job:http_inprogress_requests:sum:8907 + expr: vector(1) + labels: + job: job8907 + - record: job:http_inprogress_requests:sum:8908 + expr: vector(1) + labels: + job: job8908 + - record: job:http_inprogress_requests:sum:8909 + expr: vector(1) + labels: + job: job8909 + - record: job:http_inprogress_requests:sum:8910 + expr: vector(1) + labels: + job: job8910 + - record: job:http_inprogress_requests:sum:8911 + expr: vector(1) + labels: + job: job8911 + - record: job:http_inprogress_requests:sum:8912 + expr: vector(1) + labels: + job: job8912 + - record: job:http_inprogress_requests:sum:8913 + expr: vector(1) + labels: + job: job8913 + - record: job:http_inprogress_requests:sum:8914 + expr: vector(1) + labels: + job: job8914 + - record: job:http_inprogress_requests:sum:8915 + expr: vector(1) + labels: + job: job8915 + - record: job:http_inprogress_requests:sum:8916 + expr: vector(1) + labels: + job: job8916 + - record: job:http_inprogress_requests:sum:8917 + expr: vector(1) + labels: + job: job8917 + - record: job:http_inprogress_requests:sum:8918 + expr: vector(1) + labels: + job: job8918 + - record: job:http_inprogress_requests:sum:8919 + expr: vector(1) + labels: + job: job8919 + - record: job:http_inprogress_requests:sum:8920 + expr: vector(1) + labels: + job: job8920 + - record: job:http_inprogress_requests:sum:8921 + expr: vector(1) + labels: + job: job8921 + - record: job:http_inprogress_requests:sum:8922 + expr: vector(1) + labels: + job: job8922 + - record: job:http_inprogress_requests:sum:8923 + expr: vector(1) + labels: + job: job8923 + - record: job:http_inprogress_requests:sum:8924 + expr: vector(1) + labels: + job: job8924 + - record: job:http_inprogress_requests:sum:8925 + expr: vector(1) + labels: + job: job8925 + - record: job:http_inprogress_requests:sum:8926 + expr: vector(1) + labels: + job: job8926 + - record: job:http_inprogress_requests:sum:8927 + expr: vector(1) + labels: + job: job8927 + - record: job:http_inprogress_requests:sum:8928 + expr: vector(1) + labels: + job: job8928 + - record: job:http_inprogress_requests:sum:8929 + expr: vector(1) + labels: + job: job8929 + - record: job:http_inprogress_requests:sum:8930 + expr: vector(1) + labels: + job: job8930 + - record: job:http_inprogress_requests:sum:8931 + expr: vector(1) + labels: + job: job8931 + - record: job:http_inprogress_requests:sum:8932 + expr: vector(1) + labels: + job: job8932 + - record: job:http_inprogress_requests:sum:8933 + expr: vector(1) + labels: + job: job8933 + - record: job:http_inprogress_requests:sum:8934 + expr: vector(1) + labels: + job: job8934 + - record: job:http_inprogress_requests:sum:8935 + expr: vector(1) + labels: + job: job8935 + - record: job:http_inprogress_requests:sum:8936 + expr: vector(1) + labels: + job: job8936 + - record: job:http_inprogress_requests:sum:8937 + expr: vector(1) + labels: + job: job8937 + - record: job:http_inprogress_requests:sum:8938 + expr: vector(1) + labels: + job: job8938 + - record: job:http_inprogress_requests:sum:8939 + expr: vector(1) + labels: + job: job8939 + - record: job:http_inprogress_requests:sum:8940 + expr: vector(1) + labels: + job: job8940 + - record: job:http_inprogress_requests:sum:8941 + expr: vector(1) + labels: + job: job8941 + - record: job:http_inprogress_requests:sum:8942 + expr: vector(1) + labels: + job: job8942 + - record: job:http_inprogress_requests:sum:8943 + expr: vector(1) + labels: + job: job8943 + - record: job:http_inprogress_requests:sum:8944 + expr: vector(1) + labels: + job: job8944 + - record: job:http_inprogress_requests:sum:8945 + expr: vector(1) + labels: + job: job8945 + - record: job:http_inprogress_requests:sum:8946 + expr: vector(1) + labels: + job: job8946 + - record: job:http_inprogress_requests:sum:8947 + expr: vector(1) + labels: + job: job8947 + - record: job:http_inprogress_requests:sum:8948 + expr: vector(1) + labels: + job: job8948 + - record: job:http_inprogress_requests:sum:8949 + expr: vector(1) + labels: + job: job8949 + - record: job:http_inprogress_requests:sum:8950 + expr: vector(1) + labels: + job: job8950 + - record: job:http_inprogress_requests:sum:8951 + expr: vector(1) + labels: + job: job8951 + - record: job:http_inprogress_requests:sum:8952 + expr: vector(1) + labels: + job: job8952 + - record: job:http_inprogress_requests:sum:8953 + expr: vector(1) + labels: + job: job8953 + - record: job:http_inprogress_requests:sum:8954 + expr: vector(1) + labels: + job: job8954 + - record: job:http_inprogress_requests:sum:8955 + expr: vector(1) + labels: + job: job8955 + - record: job:http_inprogress_requests:sum:8956 + expr: vector(1) + labels: + job: job8956 + - record: job:http_inprogress_requests:sum:8957 + expr: vector(1) + labels: + job: job8957 + - record: job:http_inprogress_requests:sum:8958 + expr: vector(1) + labels: + job: job8958 + - record: job:http_inprogress_requests:sum:8959 + expr: vector(1) + labels: + job: job8959 + - record: job:http_inprogress_requests:sum:8960 + expr: vector(1) + labels: + job: job8960 + - record: job:http_inprogress_requests:sum:8961 + expr: vector(1) + labels: + job: job8961 + - record: job:http_inprogress_requests:sum:8962 + expr: vector(1) + labels: + job: job8962 + - record: job:http_inprogress_requests:sum:8963 + expr: vector(1) + labels: + job: job8963 + - record: job:http_inprogress_requests:sum:8964 + expr: vector(1) + labels: + job: job8964 + - record: job:http_inprogress_requests:sum:8965 + expr: vector(1) + labels: + job: job8965 + - record: job:http_inprogress_requests:sum:8966 + expr: vector(1) + labels: + job: job8966 + - record: job:http_inprogress_requests:sum:8967 + expr: vector(1) + labels: + job: job8967 + - record: job:http_inprogress_requests:sum:8968 + expr: vector(1) + labels: + job: job8968 + - record: job:http_inprogress_requests:sum:8969 + expr: vector(1) + labels: + job: job8969 + - record: job:http_inprogress_requests:sum:8970 + expr: vector(1) + labels: + job: job8970 + - record: job:http_inprogress_requests:sum:8971 + expr: vector(1) + labels: + job: job8971 + - record: job:http_inprogress_requests:sum:8972 + expr: vector(1) + labels: + job: job8972 + - record: job:http_inprogress_requests:sum:8973 + expr: vector(1) + labels: + job: job8973 + - record: job:http_inprogress_requests:sum:8974 + expr: vector(1) + labels: + job: job8974 + - record: job:http_inprogress_requests:sum:8975 + expr: vector(1) + labels: + job: job8975 + - record: job:http_inprogress_requests:sum:8976 + expr: vector(1) + labels: + job: job8976 + - record: job:http_inprogress_requests:sum:8977 + expr: vector(1) + labels: + job: job8977 + - record: job:http_inprogress_requests:sum:8978 + expr: vector(1) + labels: + job: job8978 + - record: job:http_inprogress_requests:sum:8979 + expr: vector(1) + labels: + job: job8979 + - record: job:http_inprogress_requests:sum:8980 + expr: vector(1) + labels: + job: job8980 + - record: job:http_inprogress_requests:sum:8981 + expr: vector(1) + labels: + job: job8981 + - record: job:http_inprogress_requests:sum:8982 + expr: vector(1) + labels: + job: job8982 + - record: job:http_inprogress_requests:sum:8983 + expr: vector(1) + labels: + job: job8983 + - record: job:http_inprogress_requests:sum:8984 + expr: vector(1) + labels: + job: job8984 + - record: job:http_inprogress_requests:sum:8985 + expr: vector(1) + labels: + job: job8985 + - record: job:http_inprogress_requests:sum:8986 + expr: vector(1) + labels: + job: job8986 + - record: job:http_inprogress_requests:sum:8987 + expr: vector(1) + labels: + job: job8987 + - record: job:http_inprogress_requests:sum:8988 + expr: vector(1) + labels: + job: job8988 + - record: job:http_inprogress_requests:sum:8989 + expr: vector(1) + labels: + job: job8989 + - record: job:http_inprogress_requests:sum:8990 + expr: vector(1) + labels: + job: job8990 + - record: job:http_inprogress_requests:sum:8991 + expr: vector(1) + labels: + job: job8991 + - record: job:http_inprogress_requests:sum:8992 + expr: vector(1) + labels: + job: job8992 + - record: job:http_inprogress_requests:sum:8993 + expr: vector(1) + labels: + job: job8993 + - record: job:http_inprogress_requests:sum:8994 + expr: vector(1) + labels: + job: job8994 + - record: job:http_inprogress_requests:sum:8995 + expr: vector(1) + labels: + job: job8995 + - record: job:http_inprogress_requests:sum:8996 + expr: vector(1) + labels: + job: job8996 + - record: job:http_inprogress_requests:sum:8997 + expr: vector(1) + labels: + job: job8997 + - record: job:http_inprogress_requests:sum:8998 + expr: vector(1) + labels: + job: job8998 + - record: job:http_inprogress_requests:sum:8999 + expr: vector(1) + labels: + job: job8999 + - record: job:http_inprogress_requests:sum:9000 + expr: vector(1) + labels: + job: job9000 + - record: job:http_inprogress_requests:sum:9001 + expr: vector(1) + labels: + job: job9001 + - record: job:http_inprogress_requests:sum:9002 + expr: vector(1) + labels: + job: job9002 + - record: job:http_inprogress_requests:sum:9003 + expr: vector(1) + labels: + job: job9003 + - record: job:http_inprogress_requests:sum:9004 + expr: vector(1) + labels: + job: job9004 + - record: job:http_inprogress_requests:sum:9005 + expr: vector(1) + labels: + job: job9005 + - record: job:http_inprogress_requests:sum:9006 + expr: vector(1) + labels: + job: job9006 + - record: job:http_inprogress_requests:sum:9007 + expr: vector(1) + labels: + job: job9007 + - record: job:http_inprogress_requests:sum:9008 + expr: vector(1) + labels: + job: job9008 + - record: job:http_inprogress_requests:sum:9009 + expr: vector(1) + labels: + job: job9009 + - record: job:http_inprogress_requests:sum:9010 + expr: vector(1) + labels: + job: job9010 + - record: job:http_inprogress_requests:sum:9011 + expr: vector(1) + labels: + job: job9011 + - record: job:http_inprogress_requests:sum:9012 + expr: vector(1) + labels: + job: job9012 + - record: job:http_inprogress_requests:sum:9013 + expr: vector(1) + labels: + job: job9013 + - record: job:http_inprogress_requests:sum:9014 + expr: vector(1) + labels: + job: job9014 + - record: job:http_inprogress_requests:sum:9015 + expr: vector(1) + labels: + job: job9015 + - record: job:http_inprogress_requests:sum:9016 + expr: vector(1) + labels: + job: job9016 + - record: job:http_inprogress_requests:sum:9017 + expr: vector(1) + labels: + job: job9017 + - record: job:http_inprogress_requests:sum:9018 + expr: vector(1) + labels: + job: job9018 + - record: job:http_inprogress_requests:sum:9019 + expr: vector(1) + labels: + job: job9019 + - record: job:http_inprogress_requests:sum:9020 + expr: vector(1) + labels: + job: job9020 + - record: job:http_inprogress_requests:sum:9021 + expr: vector(1) + labels: + job: job9021 + - record: job:http_inprogress_requests:sum:9022 + expr: vector(1) + labels: + job: job9022 + - record: job:http_inprogress_requests:sum:9023 + expr: vector(1) + labels: + job: job9023 + - record: job:http_inprogress_requests:sum:9024 + expr: vector(1) + labels: + job: job9024 + - record: job:http_inprogress_requests:sum:9025 + expr: vector(1) + labels: + job: job9025 + - record: job:http_inprogress_requests:sum:9026 + expr: vector(1) + labels: + job: job9026 + - record: job:http_inprogress_requests:sum:9027 + expr: vector(1) + labels: + job: job9027 + - record: job:http_inprogress_requests:sum:9028 + expr: vector(1) + labels: + job: job9028 + - record: job:http_inprogress_requests:sum:9029 + expr: vector(1) + labels: + job: job9029 + - record: job:http_inprogress_requests:sum:9030 + expr: vector(1) + labels: + job: job9030 + - record: job:http_inprogress_requests:sum:9031 + expr: vector(1) + labels: + job: job9031 + - record: job:http_inprogress_requests:sum:9032 + expr: vector(1) + labels: + job: job9032 + - record: job:http_inprogress_requests:sum:9033 + expr: vector(1) + labels: + job: job9033 + - record: job:http_inprogress_requests:sum:9034 + expr: vector(1) + labels: + job: job9034 + - record: job:http_inprogress_requests:sum:9035 + expr: vector(1) + labels: + job: job9035 + - record: job:http_inprogress_requests:sum:9036 + expr: vector(1) + labels: + job: job9036 + - record: job:http_inprogress_requests:sum:9037 + expr: vector(1) + labels: + job: job9037 + - record: job:http_inprogress_requests:sum:9038 + expr: vector(1) + labels: + job: job9038 + - record: job:http_inprogress_requests:sum:9039 + expr: vector(1) + labels: + job: job9039 + - record: job:http_inprogress_requests:sum:9040 + expr: vector(1) + labels: + job: job9040 + - record: job:http_inprogress_requests:sum:9041 + expr: vector(1) + labels: + job: job9041 + - record: job:http_inprogress_requests:sum:9042 + expr: vector(1) + labels: + job: job9042 + - record: job:http_inprogress_requests:sum:9043 + expr: vector(1) + labels: + job: job9043 + - record: job:http_inprogress_requests:sum:9044 + expr: vector(1) + labels: + job: job9044 + - record: job:http_inprogress_requests:sum:9045 + expr: vector(1) + labels: + job: job9045 + - record: job:http_inprogress_requests:sum:9046 + expr: vector(1) + labels: + job: job9046 + - record: job:http_inprogress_requests:sum:9047 + expr: vector(1) + labels: + job: job9047 + - record: job:http_inprogress_requests:sum:9048 + expr: vector(1) + labels: + job: job9048 + - record: job:http_inprogress_requests:sum:9049 + expr: vector(1) + labels: + job: job9049 + - record: job:http_inprogress_requests:sum:9050 + expr: vector(1) + labels: + job: job9050 + - record: job:http_inprogress_requests:sum:9051 + expr: vector(1) + labels: + job: job9051 + - record: job:http_inprogress_requests:sum:9052 + expr: vector(1) + labels: + job: job9052 + - record: job:http_inprogress_requests:sum:9053 + expr: vector(1) + labels: + job: job9053 + - record: job:http_inprogress_requests:sum:9054 + expr: vector(1) + labels: + job: job9054 + - record: job:http_inprogress_requests:sum:9055 + expr: vector(1) + labels: + job: job9055 + - record: job:http_inprogress_requests:sum:9056 + expr: vector(1) + labels: + job: job9056 + - record: job:http_inprogress_requests:sum:9057 + expr: vector(1) + labels: + job: job9057 + - record: job:http_inprogress_requests:sum:9058 + expr: vector(1) + labels: + job: job9058 + - record: job:http_inprogress_requests:sum:9059 + expr: vector(1) + labels: + job: job9059 + - record: job:http_inprogress_requests:sum:9060 + expr: vector(1) + labels: + job: job9060 + - record: job:http_inprogress_requests:sum:9061 + expr: vector(1) + labels: + job: job9061 + - record: job:http_inprogress_requests:sum:9062 + expr: vector(1) + labels: + job: job9062 + - record: job:http_inprogress_requests:sum:9063 + expr: vector(1) + labels: + job: job9063 + - record: job:http_inprogress_requests:sum:9064 + expr: vector(1) + labels: + job: job9064 + - record: job:http_inprogress_requests:sum:9065 + expr: vector(1) + labels: + job: job9065 + - record: job:http_inprogress_requests:sum:9066 + expr: vector(1) + labels: + job: job9066 + - record: job:http_inprogress_requests:sum:9067 + expr: vector(1) + labels: + job: job9067 + - record: job:http_inprogress_requests:sum:9068 + expr: vector(1) + labels: + job: job9068 + - record: job:http_inprogress_requests:sum:9069 + expr: vector(1) + labels: + job: job9069 + - record: job:http_inprogress_requests:sum:9070 + expr: vector(1) + labels: + job: job9070 + - record: job:http_inprogress_requests:sum:9071 + expr: vector(1) + labels: + job: job9071 + - record: job:http_inprogress_requests:sum:9072 + expr: vector(1) + labels: + job: job9072 + - record: job:http_inprogress_requests:sum:9073 + expr: vector(1) + labels: + job: job9073 + - record: job:http_inprogress_requests:sum:9074 + expr: vector(1) + labels: + job: job9074 + - record: job:http_inprogress_requests:sum:9075 + expr: vector(1) + labels: + job: job9075 + - record: job:http_inprogress_requests:sum:9076 + expr: vector(1) + labels: + job: job9076 + - record: job:http_inprogress_requests:sum:9077 + expr: vector(1) + labels: + job: job9077 + - record: job:http_inprogress_requests:sum:9078 + expr: vector(1) + labels: + job: job9078 + - record: job:http_inprogress_requests:sum:9079 + expr: vector(1) + labels: + job: job9079 + - record: job:http_inprogress_requests:sum:9080 + expr: vector(1) + labels: + job: job9080 + - record: job:http_inprogress_requests:sum:9081 + expr: vector(1) + labels: + job: job9081 + - record: job:http_inprogress_requests:sum:9082 + expr: vector(1) + labels: + job: job9082 + - record: job:http_inprogress_requests:sum:9083 + expr: vector(1) + labels: + job: job9083 + - record: job:http_inprogress_requests:sum:9084 + expr: vector(1) + labels: + job: job9084 + - record: job:http_inprogress_requests:sum:9085 + expr: vector(1) + labels: + job: job9085 + - record: job:http_inprogress_requests:sum:9086 + expr: vector(1) + labels: + job: job9086 + - record: job:http_inprogress_requests:sum:9087 + expr: vector(1) + labels: + job: job9087 + - record: job:http_inprogress_requests:sum:9088 + expr: vector(1) + labels: + job: job9088 + - record: job:http_inprogress_requests:sum:9089 + expr: vector(1) + labels: + job: job9089 + - record: job:http_inprogress_requests:sum:9090 + expr: vector(1) + labels: + job: job9090 + - record: job:http_inprogress_requests:sum:9091 + expr: vector(1) + labels: + job: job9091 + - record: job:http_inprogress_requests:sum:9092 + expr: vector(1) + labels: + job: job9092 + - record: job:http_inprogress_requests:sum:9093 + expr: vector(1) + labels: + job: job9093 + - record: job:http_inprogress_requests:sum:9094 + expr: vector(1) + labels: + job: job9094 + - record: job:http_inprogress_requests:sum:9095 + expr: vector(1) + labels: + job: job9095 + - record: job:http_inprogress_requests:sum:9096 + expr: vector(1) + labels: + job: job9096 + - record: job:http_inprogress_requests:sum:9097 + expr: vector(1) + labels: + job: job9097 + - record: job:http_inprogress_requests:sum:9098 + expr: vector(1) + labels: + job: job9098 + - record: job:http_inprogress_requests:sum:9099 + expr: vector(1) + labels: + job: job9099 + - record: job:http_inprogress_requests:sum:9100 + expr: vector(1) + labels: + job: job9100 + - record: job:http_inprogress_requests:sum:9101 + expr: vector(1) + labels: + job: job9101 + - record: job:http_inprogress_requests:sum:9102 + expr: vector(1) + labels: + job: job9102 + - record: job:http_inprogress_requests:sum:9103 + expr: vector(1) + labels: + job: job9103 + - record: job:http_inprogress_requests:sum:9104 + expr: vector(1) + labels: + job: job9104 + - record: job:http_inprogress_requests:sum:9105 + expr: vector(1) + labels: + job: job9105 + - record: job:http_inprogress_requests:sum:9106 + expr: vector(1) + labels: + job: job9106 + - record: job:http_inprogress_requests:sum:9107 + expr: vector(1) + labels: + job: job9107 + - record: job:http_inprogress_requests:sum:9108 + expr: vector(1) + labels: + job: job9108 + - record: job:http_inprogress_requests:sum:9109 + expr: vector(1) + labels: + job: job9109 + - record: job:http_inprogress_requests:sum:9110 + expr: vector(1) + labels: + job: job9110 + - record: job:http_inprogress_requests:sum:9111 + expr: vector(1) + labels: + job: job9111 + - record: job:http_inprogress_requests:sum:9112 + expr: vector(1) + labels: + job: job9112 + - record: job:http_inprogress_requests:sum:9113 + expr: vector(1) + labels: + job: job9113 + - record: job:http_inprogress_requests:sum:9114 + expr: vector(1) + labels: + job: job9114 + - record: job:http_inprogress_requests:sum:9115 + expr: vector(1) + labels: + job: job9115 + - record: job:http_inprogress_requests:sum:9116 + expr: vector(1) + labels: + job: job9116 + - record: job:http_inprogress_requests:sum:9117 + expr: vector(1) + labels: + job: job9117 + - record: job:http_inprogress_requests:sum:9118 + expr: vector(1) + labels: + job: job9118 + - record: job:http_inprogress_requests:sum:9119 + expr: vector(1) + labels: + job: job9119 + - record: job:http_inprogress_requests:sum:9120 + expr: vector(1) + labels: + job: job9120 + - record: job:http_inprogress_requests:sum:9121 + expr: vector(1) + labels: + job: job9121 + - record: job:http_inprogress_requests:sum:9122 + expr: vector(1) + labels: + job: job9122 + - record: job:http_inprogress_requests:sum:9123 + expr: vector(1) + labels: + job: job9123 + - record: job:http_inprogress_requests:sum:9124 + expr: vector(1) + labels: + job: job9124 + - record: job:http_inprogress_requests:sum:9125 + expr: vector(1) + labels: + job: job9125 + - record: job:http_inprogress_requests:sum:9126 + expr: vector(1) + labels: + job: job9126 + - record: job:http_inprogress_requests:sum:9127 + expr: vector(1) + labels: + job: job9127 + - record: job:http_inprogress_requests:sum:9128 + expr: vector(1) + labels: + job: job9128 + - record: job:http_inprogress_requests:sum:9129 + expr: vector(1) + labels: + job: job9129 + - record: job:http_inprogress_requests:sum:9130 + expr: vector(1) + labels: + job: job9130 + - record: job:http_inprogress_requests:sum:9131 + expr: vector(1) + labels: + job: job9131 + - record: job:http_inprogress_requests:sum:9132 + expr: vector(1) + labels: + job: job9132 + - record: job:http_inprogress_requests:sum:9133 + expr: vector(1) + labels: + job: job9133 + - record: job:http_inprogress_requests:sum:9134 + expr: vector(1) + labels: + job: job9134 + - record: job:http_inprogress_requests:sum:9135 + expr: vector(1) + labels: + job: job9135 + - record: job:http_inprogress_requests:sum:9136 + expr: vector(1) + labels: + job: job9136 + - record: job:http_inprogress_requests:sum:9137 + expr: vector(1) + labels: + job: job9137 + - record: job:http_inprogress_requests:sum:9138 + expr: vector(1) + labels: + job: job9138 + - record: job:http_inprogress_requests:sum:9139 + expr: vector(1) + labels: + job: job9139 + - record: job:http_inprogress_requests:sum:9140 + expr: vector(1) + labels: + job: job9140 + - record: job:http_inprogress_requests:sum:9141 + expr: vector(1) + labels: + job: job9141 + - record: job:http_inprogress_requests:sum:9142 + expr: vector(1) + labels: + job: job9142 + - record: job:http_inprogress_requests:sum:9143 + expr: vector(1) + labels: + job: job9143 + - record: job:http_inprogress_requests:sum:9144 + expr: vector(1) + labels: + job: job9144 + - record: job:http_inprogress_requests:sum:9145 + expr: vector(1) + labels: + job: job9145 + - record: job:http_inprogress_requests:sum:9146 + expr: vector(1) + labels: + job: job9146 + - record: job:http_inprogress_requests:sum:9147 + expr: vector(1) + labels: + job: job9147 + - record: job:http_inprogress_requests:sum:9148 + expr: vector(1) + labels: + job: job9148 + - record: job:http_inprogress_requests:sum:9149 + expr: vector(1) + labels: + job: job9149 + - record: job:http_inprogress_requests:sum:9150 + expr: vector(1) + labels: + job: job9150 + - record: job:http_inprogress_requests:sum:9151 + expr: vector(1) + labels: + job: job9151 + - record: job:http_inprogress_requests:sum:9152 + expr: vector(1) + labels: + job: job9152 + - record: job:http_inprogress_requests:sum:9153 + expr: vector(1) + labels: + job: job9153 + - record: job:http_inprogress_requests:sum:9154 + expr: vector(1) + labels: + job: job9154 + - record: job:http_inprogress_requests:sum:9155 + expr: vector(1) + labels: + job: job9155 + - record: job:http_inprogress_requests:sum:9156 + expr: vector(1) + labels: + job: job9156 + - record: job:http_inprogress_requests:sum:9157 + expr: vector(1) + labels: + job: job9157 + - record: job:http_inprogress_requests:sum:9158 + expr: vector(1) + labels: + job: job9158 + - record: job:http_inprogress_requests:sum:9159 + expr: vector(1) + labels: + job: job9159 + - record: job:http_inprogress_requests:sum:9160 + expr: vector(1) + labels: + job: job9160 + - record: job:http_inprogress_requests:sum:9161 + expr: vector(1) + labels: + job: job9161 + - record: job:http_inprogress_requests:sum:9162 + expr: vector(1) + labels: + job: job9162 + - record: job:http_inprogress_requests:sum:9163 + expr: vector(1) + labels: + job: job9163 + - record: job:http_inprogress_requests:sum:9164 + expr: vector(1) + labels: + job: job9164 + - record: job:http_inprogress_requests:sum:9165 + expr: vector(1) + labels: + job: job9165 + - record: job:http_inprogress_requests:sum:9166 + expr: vector(1) + labels: + job: job9166 + - record: job:http_inprogress_requests:sum:9167 + expr: vector(1) + labels: + job: job9167 + - record: job:http_inprogress_requests:sum:9168 + expr: vector(1) + labels: + job: job9168 + - record: job:http_inprogress_requests:sum:9169 + expr: vector(1) + labels: + job: job9169 + - record: job:http_inprogress_requests:sum:9170 + expr: vector(1) + labels: + job: job9170 + - record: job:http_inprogress_requests:sum:9171 + expr: vector(1) + labels: + job: job9171 + - record: job:http_inprogress_requests:sum:9172 + expr: vector(1) + labels: + job: job9172 + - record: job:http_inprogress_requests:sum:9173 + expr: vector(1) + labels: + job: job9173 + - record: job:http_inprogress_requests:sum:9174 + expr: vector(1) + labels: + job: job9174 + - record: job:http_inprogress_requests:sum:9175 + expr: vector(1) + labels: + job: job9175 + - record: job:http_inprogress_requests:sum:9176 + expr: vector(1) + labels: + job: job9176 + - record: job:http_inprogress_requests:sum:9177 + expr: vector(1) + labels: + job: job9177 + - record: job:http_inprogress_requests:sum:9178 + expr: vector(1) + labels: + job: job9178 + - record: job:http_inprogress_requests:sum:9179 + expr: vector(1) + labels: + job: job9179 + - record: job:http_inprogress_requests:sum:9180 + expr: vector(1) + labels: + job: job9180 + - record: job:http_inprogress_requests:sum:9181 + expr: vector(1) + labels: + job: job9181 + - record: job:http_inprogress_requests:sum:9182 + expr: vector(1) + labels: + job: job9182 + - record: job:http_inprogress_requests:sum:9183 + expr: vector(1) + labels: + job: job9183 + - record: job:http_inprogress_requests:sum:9184 + expr: vector(1) + labels: + job: job9184 + - record: job:http_inprogress_requests:sum:9185 + expr: vector(1) + labels: + job: job9185 + - record: job:http_inprogress_requests:sum:9186 + expr: vector(1) + labels: + job: job9186 + - record: job:http_inprogress_requests:sum:9187 + expr: vector(1) + labels: + job: job9187 + - record: job:http_inprogress_requests:sum:9188 + expr: vector(1) + labels: + job: job9188 + - record: job:http_inprogress_requests:sum:9189 + expr: vector(1) + labels: + job: job9189 + - record: job:http_inprogress_requests:sum:9190 + expr: vector(1) + labels: + job: job9190 + - record: job:http_inprogress_requests:sum:9191 + expr: vector(1) + labels: + job: job9191 + - record: job:http_inprogress_requests:sum:9192 + expr: vector(1) + labels: + job: job9192 + - record: job:http_inprogress_requests:sum:9193 + expr: vector(1) + labels: + job: job9193 + - record: job:http_inprogress_requests:sum:9194 + expr: vector(1) + labels: + job: job9194 + - record: job:http_inprogress_requests:sum:9195 + expr: vector(1) + labels: + job: job9195 + - record: job:http_inprogress_requests:sum:9196 + expr: vector(1) + labels: + job: job9196 + - record: job:http_inprogress_requests:sum:9197 + expr: vector(1) + labels: + job: job9197 + - record: job:http_inprogress_requests:sum:9198 + expr: vector(1) + labels: + job: job9198 + - record: job:http_inprogress_requests:sum:9199 + expr: vector(1) + labels: + job: job9199 + - record: job:http_inprogress_requests:sum:9200 + expr: vector(1) + labels: + job: job9200 + - record: job:http_inprogress_requests:sum:9201 + expr: vector(1) + labels: + job: job9201 + - record: job:http_inprogress_requests:sum:9202 + expr: vector(1) + labels: + job: job9202 + - record: job:http_inprogress_requests:sum:9203 + expr: vector(1) + labels: + job: job9203 + - record: job:http_inprogress_requests:sum:9204 + expr: vector(1) + labels: + job: job9204 + - record: job:http_inprogress_requests:sum:9205 + expr: vector(1) + labels: + job: job9205 + - record: job:http_inprogress_requests:sum:9206 + expr: vector(1) + labels: + job: job9206 + - record: job:http_inprogress_requests:sum:9207 + expr: vector(1) + labels: + job: job9207 + - record: job:http_inprogress_requests:sum:9208 + expr: vector(1) + labels: + job: job9208 + - record: job:http_inprogress_requests:sum:9209 + expr: vector(1) + labels: + job: job9209 + - record: job:http_inprogress_requests:sum:9210 + expr: vector(1) + labels: + job: job9210 + - record: job:http_inprogress_requests:sum:9211 + expr: vector(1) + labels: + job: job9211 + - record: job:http_inprogress_requests:sum:9212 + expr: vector(1) + labels: + job: job9212 + - record: job:http_inprogress_requests:sum:9213 + expr: vector(1) + labels: + job: job9213 + - record: job:http_inprogress_requests:sum:9214 + expr: vector(1) + labels: + job: job9214 + - record: job:http_inprogress_requests:sum:9215 + expr: vector(1) + labels: + job: job9215 + - record: job:http_inprogress_requests:sum:9216 + expr: vector(1) + labels: + job: job9216 + - record: job:http_inprogress_requests:sum:9217 + expr: vector(1) + labels: + job: job9217 + - record: job:http_inprogress_requests:sum:9218 + expr: vector(1) + labels: + job: job9218 + - record: job:http_inprogress_requests:sum:9219 + expr: vector(1) + labels: + job: job9219 + - record: job:http_inprogress_requests:sum:9220 + expr: vector(1) + labels: + job: job9220 + - record: job:http_inprogress_requests:sum:9221 + expr: vector(1) + labels: + job: job9221 + - record: job:http_inprogress_requests:sum:9222 + expr: vector(1) + labels: + job: job9222 + - record: job:http_inprogress_requests:sum:9223 + expr: vector(1) + labels: + job: job9223 + - record: job:http_inprogress_requests:sum:9224 + expr: vector(1) + labels: + job: job9224 + - record: job:http_inprogress_requests:sum:9225 + expr: vector(1) + labels: + job: job9225 + - record: job:http_inprogress_requests:sum:9226 + expr: vector(1) + labels: + job: job9226 + - record: job:http_inprogress_requests:sum:9227 + expr: vector(1) + labels: + job: job9227 + - record: job:http_inprogress_requests:sum:9228 + expr: vector(1) + labels: + job: job9228 + - record: job:http_inprogress_requests:sum:9229 + expr: vector(1) + labels: + job: job9229 + - record: job:http_inprogress_requests:sum:9230 + expr: vector(1) + labels: + job: job9230 + - record: job:http_inprogress_requests:sum:9231 + expr: vector(1) + labels: + job: job9231 + - record: job:http_inprogress_requests:sum:9232 + expr: vector(1) + labels: + job: job9232 + - record: job:http_inprogress_requests:sum:9233 + expr: vector(1) + labels: + job: job9233 + - record: job:http_inprogress_requests:sum:9234 + expr: vector(1) + labels: + job: job9234 + - record: job:http_inprogress_requests:sum:9235 + expr: vector(1) + labels: + job: job9235 + - record: job:http_inprogress_requests:sum:9236 + expr: vector(1) + labels: + job: job9236 + - record: job:http_inprogress_requests:sum:9237 + expr: vector(1) + labels: + job: job9237 + - record: job:http_inprogress_requests:sum:9238 + expr: vector(1) + labels: + job: job9238 + - record: job:http_inprogress_requests:sum:9239 + expr: vector(1) + labels: + job: job9239 + - record: job:http_inprogress_requests:sum:9240 + expr: vector(1) + labels: + job: job9240 + - record: job:http_inprogress_requests:sum:9241 + expr: vector(1) + labels: + job: job9241 + - record: job:http_inprogress_requests:sum:9242 + expr: vector(1) + labels: + job: job9242 + - record: job:http_inprogress_requests:sum:9243 + expr: vector(1) + labels: + job: job9243 + - record: job:http_inprogress_requests:sum:9244 + expr: vector(1) + labels: + job: job9244 + - record: job:http_inprogress_requests:sum:9245 + expr: vector(1) + labels: + job: job9245 + - record: job:http_inprogress_requests:sum:9246 + expr: vector(1) + labels: + job: job9246 + - record: job:http_inprogress_requests:sum:9247 + expr: vector(1) + labels: + job: job9247 + - record: job:http_inprogress_requests:sum:9248 + expr: vector(1) + labels: + job: job9248 + - record: job:http_inprogress_requests:sum:9249 + expr: vector(1) + labels: + job: job9249 + - record: job:http_inprogress_requests:sum:9250 + expr: vector(1) + labels: + job: job9250 + - record: job:http_inprogress_requests:sum:9251 + expr: vector(1) + labels: + job: job9251 + - record: job:http_inprogress_requests:sum:9252 + expr: vector(1) + labels: + job: job9252 + - record: job:http_inprogress_requests:sum:9253 + expr: vector(1) + labels: + job: job9253 + - record: job:http_inprogress_requests:sum:9254 + expr: vector(1) + labels: + job: job9254 + - record: job:http_inprogress_requests:sum:9255 + expr: vector(1) + labels: + job: job9255 + - record: job:http_inprogress_requests:sum:9256 + expr: vector(1) + labels: + job: job9256 + - record: job:http_inprogress_requests:sum:9257 + expr: vector(1) + labels: + job: job9257 + - record: job:http_inprogress_requests:sum:9258 + expr: vector(1) + labels: + job: job9258 + - record: job:http_inprogress_requests:sum:9259 + expr: vector(1) + labels: + job: job9259 + - record: job:http_inprogress_requests:sum:9260 + expr: vector(1) + labels: + job: job9260 + - record: job:http_inprogress_requests:sum:9261 + expr: vector(1) + labels: + job: job9261 + - record: job:http_inprogress_requests:sum:9262 + expr: vector(1) + labels: + job: job9262 + - record: job:http_inprogress_requests:sum:9263 + expr: vector(1) + labels: + job: job9263 + - record: job:http_inprogress_requests:sum:9264 + expr: vector(1) + labels: + job: job9264 + - record: job:http_inprogress_requests:sum:9265 + expr: vector(1) + labels: + job: job9265 + - record: job:http_inprogress_requests:sum:9266 + expr: vector(1) + labels: + job: job9266 + - record: job:http_inprogress_requests:sum:9267 + expr: vector(1) + labels: + job: job9267 + - record: job:http_inprogress_requests:sum:9268 + expr: vector(1) + labels: + job: job9268 + - record: job:http_inprogress_requests:sum:9269 + expr: vector(1) + labels: + job: job9269 + - record: job:http_inprogress_requests:sum:9270 + expr: vector(1) + labels: + job: job9270 + - record: job:http_inprogress_requests:sum:9271 + expr: vector(1) + labels: + job: job9271 + - record: job:http_inprogress_requests:sum:9272 + expr: vector(1) + labels: + job: job9272 + - record: job:http_inprogress_requests:sum:9273 + expr: vector(1) + labels: + job: job9273 + - record: job:http_inprogress_requests:sum:9274 + expr: vector(1) + labels: + job: job9274 + - record: job:http_inprogress_requests:sum:9275 + expr: vector(1) + labels: + job: job9275 + - record: job:http_inprogress_requests:sum:9276 + expr: vector(1) + labels: + job: job9276 + - record: job:http_inprogress_requests:sum:9277 + expr: vector(1) + labels: + job: job9277 + - record: job:http_inprogress_requests:sum:9278 + expr: vector(1) + labels: + job: job9278 + - record: job:http_inprogress_requests:sum:9279 + expr: vector(1) + labels: + job: job9279 + - record: job:http_inprogress_requests:sum:9280 + expr: vector(1) + labels: + job: job9280 + - record: job:http_inprogress_requests:sum:9281 + expr: vector(1) + labels: + job: job9281 + - record: job:http_inprogress_requests:sum:9282 + expr: vector(1) + labels: + job: job9282 + - record: job:http_inprogress_requests:sum:9283 + expr: vector(1) + labels: + job: job9283 + - record: job:http_inprogress_requests:sum:9284 + expr: vector(1) + labels: + job: job9284 + - record: job:http_inprogress_requests:sum:9285 + expr: vector(1) + labels: + job: job9285 + - record: job:http_inprogress_requests:sum:9286 + expr: vector(1) + labels: + job: job9286 + - record: job:http_inprogress_requests:sum:9287 + expr: vector(1) + labels: + job: job9287 + - record: job:http_inprogress_requests:sum:9288 + expr: vector(1) + labels: + job: job9288 + - record: job:http_inprogress_requests:sum:9289 + expr: vector(1) + labels: + job: job9289 + - record: job:http_inprogress_requests:sum:9290 + expr: vector(1) + labels: + job: job9290 + - record: job:http_inprogress_requests:sum:9291 + expr: vector(1) + labels: + job: job9291 + - record: job:http_inprogress_requests:sum:9292 + expr: vector(1) + labels: + job: job9292 + - record: job:http_inprogress_requests:sum:9293 + expr: vector(1) + labels: + job: job9293 + - record: job:http_inprogress_requests:sum:9294 + expr: vector(1) + labels: + job: job9294 + - record: job:http_inprogress_requests:sum:9295 + expr: vector(1) + labels: + job: job9295 + - record: job:http_inprogress_requests:sum:9296 + expr: vector(1) + labels: + job: job9296 + - record: job:http_inprogress_requests:sum:9297 + expr: vector(1) + labels: + job: job9297 + - record: job:http_inprogress_requests:sum:9298 + expr: vector(1) + labels: + job: job9298 + - record: job:http_inprogress_requests:sum:9299 + expr: vector(1) + labels: + job: job9299 + - record: job:http_inprogress_requests:sum:9300 + expr: vector(1) + labels: + job: job9300 + - record: job:http_inprogress_requests:sum:9301 + expr: vector(1) + labels: + job: job9301 + - record: job:http_inprogress_requests:sum:9302 + expr: vector(1) + labels: + job: job9302 + - record: job:http_inprogress_requests:sum:9303 + expr: vector(1) + labels: + job: job9303 + - record: job:http_inprogress_requests:sum:9304 + expr: vector(1) + labels: + job: job9304 + - record: job:http_inprogress_requests:sum:9305 + expr: vector(1) + labels: + job: job9305 + - record: job:http_inprogress_requests:sum:9306 + expr: vector(1) + labels: + job: job9306 + - record: job:http_inprogress_requests:sum:9307 + expr: vector(1) + labels: + job: job9307 + - record: job:http_inprogress_requests:sum:9308 + expr: vector(1) + labels: + job: job9308 + - record: job:http_inprogress_requests:sum:9309 + expr: vector(1) + labels: + job: job9309 + - record: job:http_inprogress_requests:sum:9310 + expr: vector(1) + labels: + job: job9310 + - record: job:http_inprogress_requests:sum:9311 + expr: vector(1) + labels: + job: job9311 + - record: job:http_inprogress_requests:sum:9312 + expr: vector(1) + labels: + job: job9312 + - record: job:http_inprogress_requests:sum:9313 + expr: vector(1) + labels: + job: job9313 + - record: job:http_inprogress_requests:sum:9314 + expr: vector(1) + labels: + job: job9314 + - record: job:http_inprogress_requests:sum:9315 + expr: vector(1) + labels: + job: job9315 + - record: job:http_inprogress_requests:sum:9316 + expr: vector(1) + labels: + job: job9316 + - record: job:http_inprogress_requests:sum:9317 + expr: vector(1) + labels: + job: job9317 + - record: job:http_inprogress_requests:sum:9318 + expr: vector(1) + labels: + job: job9318 + - record: job:http_inprogress_requests:sum:9319 + expr: vector(1) + labels: + job: job9319 + - record: job:http_inprogress_requests:sum:9320 + expr: vector(1) + labels: + job: job9320 + - record: job:http_inprogress_requests:sum:9321 + expr: vector(1) + labels: + job: job9321 + - record: job:http_inprogress_requests:sum:9322 + expr: vector(1) + labels: + job: job9322 + - record: job:http_inprogress_requests:sum:9323 + expr: vector(1) + labels: + job: job9323 + - record: job:http_inprogress_requests:sum:9324 + expr: vector(1) + labels: + job: job9324 + - record: job:http_inprogress_requests:sum:9325 + expr: vector(1) + labels: + job: job9325 + - record: job:http_inprogress_requests:sum:9326 + expr: vector(1) + labels: + job: job9326 + - record: job:http_inprogress_requests:sum:9327 + expr: vector(1) + labels: + job: job9327 + - record: job:http_inprogress_requests:sum:9328 + expr: vector(1) + labels: + job: job9328 + - record: job:http_inprogress_requests:sum:9329 + expr: vector(1) + labels: + job: job9329 + - record: job:http_inprogress_requests:sum:9330 + expr: vector(1) + labels: + job: job9330 + - record: job:http_inprogress_requests:sum:9331 + expr: vector(1) + labels: + job: job9331 + - record: job:http_inprogress_requests:sum:9332 + expr: vector(1) + labels: + job: job9332 + - record: job:http_inprogress_requests:sum:9333 + expr: vector(1) + labels: + job: job9333 + - record: job:http_inprogress_requests:sum:9334 + expr: vector(1) + labels: + job: job9334 + - record: job:http_inprogress_requests:sum:9335 + expr: vector(1) + labels: + job: job9335 + - record: job:http_inprogress_requests:sum:9336 + expr: vector(1) + labels: + job: job9336 + - record: job:http_inprogress_requests:sum:9337 + expr: vector(1) + labels: + job: job9337 + - record: job:http_inprogress_requests:sum:9338 + expr: vector(1) + labels: + job: job9338 + - record: job:http_inprogress_requests:sum:9339 + expr: vector(1) + labels: + job: job9339 + - record: job:http_inprogress_requests:sum:9340 + expr: vector(1) + labels: + job: job9340 + - record: job:http_inprogress_requests:sum:9341 + expr: vector(1) + labels: + job: job9341 + - record: job:http_inprogress_requests:sum:9342 + expr: vector(1) + labels: + job: job9342 + - record: job:http_inprogress_requests:sum:9343 + expr: vector(1) + labels: + job: job9343 + - record: job:http_inprogress_requests:sum:9344 + expr: vector(1) + labels: + job: job9344 + - record: job:http_inprogress_requests:sum:9345 + expr: vector(1) + labels: + job: job9345 + - record: job:http_inprogress_requests:sum:9346 + expr: vector(1) + labels: + job: job9346 + - record: job:http_inprogress_requests:sum:9347 + expr: vector(1) + labels: + job: job9347 + - record: job:http_inprogress_requests:sum:9348 + expr: vector(1) + labels: + job: job9348 + - record: job:http_inprogress_requests:sum:9349 + expr: vector(1) + labels: + job: job9349 + - record: job:http_inprogress_requests:sum:9350 + expr: vector(1) + labels: + job: job9350 + - record: job:http_inprogress_requests:sum:9351 + expr: vector(1) + labels: + job: job9351 + - record: job:http_inprogress_requests:sum:9352 + expr: vector(1) + labels: + job: job9352 + - record: job:http_inprogress_requests:sum:9353 + expr: vector(1) + labels: + job: job9353 + - record: job:http_inprogress_requests:sum:9354 + expr: vector(1) + labels: + job: job9354 + - record: job:http_inprogress_requests:sum:9355 + expr: vector(1) + labels: + job: job9355 + - record: job:http_inprogress_requests:sum:9356 + expr: vector(1) + labels: + job: job9356 + - record: job:http_inprogress_requests:sum:9357 + expr: vector(1) + labels: + job: job9357 + - record: job:http_inprogress_requests:sum:9358 + expr: vector(1) + labels: + job: job9358 + - record: job:http_inprogress_requests:sum:9359 + expr: vector(1) + labels: + job: job9359 + - record: job:http_inprogress_requests:sum:9360 + expr: vector(1) + labels: + job: job9360 + - record: job:http_inprogress_requests:sum:9361 + expr: vector(1) + labels: + job: job9361 + - record: job:http_inprogress_requests:sum:9362 + expr: vector(1) + labels: + job: job9362 + - record: job:http_inprogress_requests:sum:9363 + expr: vector(1) + labels: + job: job9363 + - record: job:http_inprogress_requests:sum:9364 + expr: vector(1) + labels: + job: job9364 + - record: job:http_inprogress_requests:sum:9365 + expr: vector(1) + labels: + job: job9365 + - record: job:http_inprogress_requests:sum:9366 + expr: vector(1) + labels: + job: job9366 + - record: job:http_inprogress_requests:sum:9367 + expr: vector(1) + labels: + job: job9367 + - record: job:http_inprogress_requests:sum:9368 + expr: vector(1) + labels: + job: job9368 + - record: job:http_inprogress_requests:sum:9369 + expr: vector(1) + labels: + job: job9369 + - record: job:http_inprogress_requests:sum:9370 + expr: vector(1) + labels: + job: job9370 + - record: job:http_inprogress_requests:sum:9371 + expr: vector(1) + labels: + job: job9371 + - record: job:http_inprogress_requests:sum:9372 + expr: vector(1) + labels: + job: job9372 + - record: job:http_inprogress_requests:sum:9373 + expr: vector(1) + labels: + job: job9373 + - record: job:http_inprogress_requests:sum:9374 + expr: vector(1) + labels: + job: job9374 + - record: job:http_inprogress_requests:sum:9375 + expr: vector(1) + labels: + job: job9375 + - record: job:http_inprogress_requests:sum:9376 + expr: vector(1) + labels: + job: job9376 + - record: job:http_inprogress_requests:sum:9377 + expr: vector(1) + labels: + job: job9377 + - record: job:http_inprogress_requests:sum:9378 + expr: vector(1) + labels: + job: job9378 + - record: job:http_inprogress_requests:sum:9379 + expr: vector(1) + labels: + job: job9379 + - record: job:http_inprogress_requests:sum:9380 + expr: vector(1) + labels: + job: job9380 + - record: job:http_inprogress_requests:sum:9381 + expr: vector(1) + labels: + job: job9381 + - record: job:http_inprogress_requests:sum:9382 + expr: vector(1) + labels: + job: job9382 + - record: job:http_inprogress_requests:sum:9383 + expr: vector(1) + labels: + job: job9383 + - record: job:http_inprogress_requests:sum:9384 + expr: vector(1) + labels: + job: job9384 + - record: job:http_inprogress_requests:sum:9385 + expr: vector(1) + labels: + job: job9385 + - record: job:http_inprogress_requests:sum:9386 + expr: vector(1) + labels: + job: job9386 + - record: job:http_inprogress_requests:sum:9387 + expr: vector(1) + labels: + job: job9387 + - record: job:http_inprogress_requests:sum:9388 + expr: vector(1) + labels: + job: job9388 + - record: job:http_inprogress_requests:sum:9389 + expr: vector(1) + labels: + job: job9389 + - record: job:http_inprogress_requests:sum:9390 + expr: vector(1) + labels: + job: job9390 + - record: job:http_inprogress_requests:sum:9391 + expr: vector(1) + labels: + job: job9391 + - record: job:http_inprogress_requests:sum:9392 + expr: vector(1) + labels: + job: job9392 + - record: job:http_inprogress_requests:sum:9393 + expr: vector(1) + labels: + job: job9393 + - record: job:http_inprogress_requests:sum:9394 + expr: vector(1) + labels: + job: job9394 + - record: job:http_inprogress_requests:sum:9395 + expr: vector(1) + labels: + job: job9395 + - record: job:http_inprogress_requests:sum:9396 + expr: vector(1) + labels: + job: job9396 + - record: job:http_inprogress_requests:sum:9397 + expr: vector(1) + labels: + job: job9397 + - record: job:http_inprogress_requests:sum:9398 + expr: vector(1) + labels: + job: job9398 + - record: job:http_inprogress_requests:sum:9399 + expr: vector(1) + labels: + job: job9399 + - record: job:http_inprogress_requests:sum:9400 + expr: vector(1) + labels: + job: job9400 + - record: job:http_inprogress_requests:sum:9401 + expr: vector(1) + labels: + job: job9401 + - record: job:http_inprogress_requests:sum:9402 + expr: vector(1) + labels: + job: job9402 + - record: job:http_inprogress_requests:sum:9403 + expr: vector(1) + labels: + job: job9403 + - record: job:http_inprogress_requests:sum:9404 + expr: vector(1) + labels: + job: job9404 + - record: job:http_inprogress_requests:sum:9405 + expr: vector(1) + labels: + job: job9405 + - record: job:http_inprogress_requests:sum:9406 + expr: vector(1) + labels: + job: job9406 + - record: job:http_inprogress_requests:sum:9407 + expr: vector(1) + labels: + job: job9407 + - record: job:http_inprogress_requests:sum:9408 + expr: vector(1) + labels: + job: job9408 + - record: job:http_inprogress_requests:sum:9409 + expr: vector(1) + labels: + job: job9409 + - record: job:http_inprogress_requests:sum:9410 + expr: vector(1) + labels: + job: job9410 + - record: job:http_inprogress_requests:sum:9411 + expr: vector(1) + labels: + job: job9411 + - record: job:http_inprogress_requests:sum:9412 + expr: vector(1) + labels: + job: job9412 + - record: job:http_inprogress_requests:sum:9413 + expr: vector(1) + labels: + job: job9413 + - record: job:http_inprogress_requests:sum:9414 + expr: vector(1) + labels: + job: job9414 + - record: job:http_inprogress_requests:sum:9415 + expr: vector(1) + labels: + job: job9415 + - record: job:http_inprogress_requests:sum:9416 + expr: vector(1) + labels: + job: job9416 + - record: job:http_inprogress_requests:sum:9417 + expr: vector(1) + labels: + job: job9417 + - record: job:http_inprogress_requests:sum:9418 + expr: vector(1) + labels: + job: job9418 + - record: job:http_inprogress_requests:sum:9419 + expr: vector(1) + labels: + job: job9419 + - record: job:http_inprogress_requests:sum:9420 + expr: vector(1) + labels: + job: job9420 + - record: job:http_inprogress_requests:sum:9421 + expr: vector(1) + labels: + job: job9421 + - record: job:http_inprogress_requests:sum:9422 + expr: vector(1) + labels: + job: job9422 + - record: job:http_inprogress_requests:sum:9423 + expr: vector(1) + labels: + job: job9423 + - record: job:http_inprogress_requests:sum:9424 + expr: vector(1) + labels: + job: job9424 + - record: job:http_inprogress_requests:sum:9425 + expr: vector(1) + labels: + job: job9425 + - record: job:http_inprogress_requests:sum:9426 + expr: vector(1) + labels: + job: job9426 + - record: job:http_inprogress_requests:sum:9427 + expr: vector(1) + labels: + job: job9427 + - record: job:http_inprogress_requests:sum:9428 + expr: vector(1) + labels: + job: job9428 + - record: job:http_inprogress_requests:sum:9429 + expr: vector(1) + labels: + job: job9429 + - record: job:http_inprogress_requests:sum:9430 + expr: vector(1) + labels: + job: job9430 + - record: job:http_inprogress_requests:sum:9431 + expr: vector(1) + labels: + job: job9431 + - record: job:http_inprogress_requests:sum:9432 + expr: vector(1) + labels: + job: job9432 + - record: job:http_inprogress_requests:sum:9433 + expr: vector(1) + labels: + job: job9433 + - record: job:http_inprogress_requests:sum:9434 + expr: vector(1) + labels: + job: job9434 + - record: job:http_inprogress_requests:sum:9435 + expr: vector(1) + labels: + job: job9435 + - record: job:http_inprogress_requests:sum:9436 + expr: vector(1) + labels: + job: job9436 + - record: job:http_inprogress_requests:sum:9437 + expr: vector(1) + labels: + job: job9437 + - record: job:http_inprogress_requests:sum:9438 + expr: vector(1) + labels: + job: job9438 + - record: job:http_inprogress_requests:sum:9439 + expr: vector(1) + labels: + job: job9439 + - record: job:http_inprogress_requests:sum:9440 + expr: vector(1) + labels: + job: job9440 + - record: job:http_inprogress_requests:sum:9441 + expr: vector(1) + labels: + job: job9441 + - record: job:http_inprogress_requests:sum:9442 + expr: vector(1) + labels: + job: job9442 + - record: job:http_inprogress_requests:sum:9443 + expr: vector(1) + labels: + job: job9443 + - record: job:http_inprogress_requests:sum:9444 + expr: vector(1) + labels: + job: job9444 + - record: job:http_inprogress_requests:sum:9445 + expr: vector(1) + labels: + job: job9445 + - record: job:http_inprogress_requests:sum:9446 + expr: vector(1) + labels: + job: job9446 + - record: job:http_inprogress_requests:sum:9447 + expr: vector(1) + labels: + job: job9447 + - record: job:http_inprogress_requests:sum:9448 + expr: vector(1) + labels: + job: job9448 + - record: job:http_inprogress_requests:sum:9449 + expr: vector(1) + labels: + job: job9449 + - record: job:http_inprogress_requests:sum:9450 + expr: vector(1) + labels: + job: job9450 + - record: job:http_inprogress_requests:sum:9451 + expr: vector(1) + labels: + job: job9451 + - record: job:http_inprogress_requests:sum:9452 + expr: vector(1) + labels: + job: job9452 + - record: job:http_inprogress_requests:sum:9453 + expr: vector(1) + labels: + job: job9453 + - record: job:http_inprogress_requests:sum:9454 + expr: vector(1) + labels: + job: job9454 + - record: job:http_inprogress_requests:sum:9455 + expr: vector(1) + labels: + job: job9455 + - record: job:http_inprogress_requests:sum:9456 + expr: vector(1) + labels: + job: job9456 + - record: job:http_inprogress_requests:sum:9457 + expr: vector(1) + labels: + job: job9457 + - record: job:http_inprogress_requests:sum:9458 + expr: vector(1) + labels: + job: job9458 + - record: job:http_inprogress_requests:sum:9459 + expr: vector(1) + labels: + job: job9459 + - record: job:http_inprogress_requests:sum:9460 + expr: vector(1) + labels: + job: job9460 + - record: job:http_inprogress_requests:sum:9461 + expr: vector(1) + labels: + job: job9461 + - record: job:http_inprogress_requests:sum:9462 + expr: vector(1) + labels: + job: job9462 + - record: job:http_inprogress_requests:sum:9463 + expr: vector(1) + labels: + job: job9463 + - record: job:http_inprogress_requests:sum:9464 + expr: vector(1) + labels: + job: job9464 + - record: job:http_inprogress_requests:sum:9465 + expr: vector(1) + labels: + job: job9465 + - record: job:http_inprogress_requests:sum:9466 + expr: vector(1) + labels: + job: job9466 + - record: job:http_inprogress_requests:sum:9467 + expr: vector(1) + labels: + job: job9467 + - record: job:http_inprogress_requests:sum:9468 + expr: vector(1) + labels: + job: job9468 + - record: job:http_inprogress_requests:sum:9469 + expr: vector(1) + labels: + job: job9469 + - record: job:http_inprogress_requests:sum:9470 + expr: vector(1) + labels: + job: job9470 + - record: job:http_inprogress_requests:sum:9471 + expr: vector(1) + labels: + job: job9471 + - record: job:http_inprogress_requests:sum:9472 + expr: vector(1) + labels: + job: job9472 + - record: job:http_inprogress_requests:sum:9473 + expr: vector(1) + labels: + job: job9473 + - record: job:http_inprogress_requests:sum:9474 + expr: vector(1) + labels: + job: job9474 + - record: job:http_inprogress_requests:sum:9475 + expr: vector(1) + labels: + job: job9475 + - record: job:http_inprogress_requests:sum:9476 + expr: vector(1) + labels: + job: job9476 + - record: job:http_inprogress_requests:sum:9477 + expr: vector(1) + labels: + job: job9477 + - record: job:http_inprogress_requests:sum:9478 + expr: vector(1) + labels: + job: job9478 + - record: job:http_inprogress_requests:sum:9479 + expr: vector(1) + labels: + job: job9479 + - record: job:http_inprogress_requests:sum:9480 + expr: vector(1) + labels: + job: job9480 + - record: job:http_inprogress_requests:sum:9481 + expr: vector(1) + labels: + job: job9481 + - record: job:http_inprogress_requests:sum:9482 + expr: vector(1) + labels: + job: job9482 + - record: job:http_inprogress_requests:sum:9483 + expr: vector(1) + labels: + job: job9483 + - record: job:http_inprogress_requests:sum:9484 + expr: vector(1) + labels: + job: job9484 + - record: job:http_inprogress_requests:sum:9485 + expr: vector(1) + labels: + job: job9485 + - record: job:http_inprogress_requests:sum:9486 + expr: vector(1) + labels: + job: job9486 + - record: job:http_inprogress_requests:sum:9487 + expr: vector(1) + labels: + job: job9487 + - record: job:http_inprogress_requests:sum:9488 + expr: vector(1) + labels: + job: job9488 + - record: job:http_inprogress_requests:sum:9489 + expr: vector(1) + labels: + job: job9489 + - record: job:http_inprogress_requests:sum:9490 + expr: vector(1) + labels: + job: job9490 + - record: job:http_inprogress_requests:sum:9491 + expr: vector(1) + labels: + job: job9491 + - record: job:http_inprogress_requests:sum:9492 + expr: vector(1) + labels: + job: job9492 + - record: job:http_inprogress_requests:sum:9493 + expr: vector(1) + labels: + job: job9493 + - record: job:http_inprogress_requests:sum:9494 + expr: vector(1) + labels: + job: job9494 + - record: job:http_inprogress_requests:sum:9495 + expr: vector(1) + labels: + job: job9495 + - record: job:http_inprogress_requests:sum:9496 + expr: vector(1) + labels: + job: job9496 + - record: job:http_inprogress_requests:sum:9497 + expr: vector(1) + labels: + job: job9497 + - record: job:http_inprogress_requests:sum:9498 + expr: vector(1) + labels: + job: job9498 + - record: job:http_inprogress_requests:sum:9499 + expr: vector(1) + labels: + job: job9499 + - record: job:http_inprogress_requests:sum:9500 + expr: vector(1) + labels: + job: job9500 + - record: job:http_inprogress_requests:sum:9501 + expr: vector(1) + labels: + job: job9501 + - record: job:http_inprogress_requests:sum:9502 + expr: vector(1) + labels: + job: job9502 + - record: job:http_inprogress_requests:sum:9503 + expr: vector(1) + labels: + job: job9503 + - record: job:http_inprogress_requests:sum:9504 + expr: vector(1) + labels: + job: job9504 + - record: job:http_inprogress_requests:sum:9505 + expr: vector(1) + labels: + job: job9505 + - record: job:http_inprogress_requests:sum:9506 + expr: vector(1) + labels: + job: job9506 + - record: job:http_inprogress_requests:sum:9507 + expr: vector(1) + labels: + job: job9507 + - record: job:http_inprogress_requests:sum:9508 + expr: vector(1) + labels: + job: job9508 + - record: job:http_inprogress_requests:sum:9509 + expr: vector(1) + labels: + job: job9509 + - record: job:http_inprogress_requests:sum:9510 + expr: vector(1) + labels: + job: job9510 + - record: job:http_inprogress_requests:sum:9511 + expr: vector(1) + labels: + job: job9511 + - record: job:http_inprogress_requests:sum:9512 + expr: vector(1) + labels: + job: job9512 + - record: job:http_inprogress_requests:sum:9513 + expr: vector(1) + labels: + job: job9513 + - record: job:http_inprogress_requests:sum:9514 + expr: vector(1) + labels: + job: job9514 + - record: job:http_inprogress_requests:sum:9515 + expr: vector(1) + labels: + job: job9515 + - record: job:http_inprogress_requests:sum:9516 + expr: vector(1) + labels: + job: job9516 + - record: job:http_inprogress_requests:sum:9517 + expr: vector(1) + labels: + job: job9517 + - record: job:http_inprogress_requests:sum:9518 + expr: vector(1) + labels: + job: job9518 + - record: job:http_inprogress_requests:sum:9519 + expr: vector(1) + labels: + job: job9519 + - record: job:http_inprogress_requests:sum:9520 + expr: vector(1) + labels: + job: job9520 + - record: job:http_inprogress_requests:sum:9521 + expr: vector(1) + labels: + job: job9521 + - record: job:http_inprogress_requests:sum:9522 + expr: vector(1) + labels: + job: job9522 + - record: job:http_inprogress_requests:sum:9523 + expr: vector(1) + labels: + job: job9523 + - record: job:http_inprogress_requests:sum:9524 + expr: vector(1) + labels: + job: job9524 + - record: job:http_inprogress_requests:sum:9525 + expr: vector(1) + labels: + job: job9525 + - record: job:http_inprogress_requests:sum:9526 + expr: vector(1) + labels: + job: job9526 + - record: job:http_inprogress_requests:sum:9527 + expr: vector(1) + labels: + job: job9527 + - record: job:http_inprogress_requests:sum:9528 + expr: vector(1) + labels: + job: job9528 + - record: job:http_inprogress_requests:sum:9529 + expr: vector(1) + labels: + job: job9529 + - record: job:http_inprogress_requests:sum:9530 + expr: vector(1) + labels: + job: job9530 + - record: job:http_inprogress_requests:sum:9531 + expr: vector(1) + labels: + job: job9531 + - record: job:http_inprogress_requests:sum:9532 + expr: vector(1) + labels: + job: job9532 + - record: job:http_inprogress_requests:sum:9533 + expr: vector(1) + labels: + job: job9533 + - record: job:http_inprogress_requests:sum:9534 + expr: vector(1) + labels: + job: job9534 + - record: job:http_inprogress_requests:sum:9535 + expr: vector(1) + labels: + job: job9535 + - record: job:http_inprogress_requests:sum:9536 + expr: vector(1) + labels: + job: job9536 + - record: job:http_inprogress_requests:sum:9537 + expr: vector(1) + labels: + job: job9537 + - record: job:http_inprogress_requests:sum:9538 + expr: vector(1) + labels: + job: job9538 + - record: job:http_inprogress_requests:sum:9539 + expr: vector(1) + labels: + job: job9539 + - record: job:http_inprogress_requests:sum:9540 + expr: vector(1) + labels: + job: job9540 + - record: job:http_inprogress_requests:sum:9541 + expr: vector(1) + labels: + job: job9541 + - record: job:http_inprogress_requests:sum:9542 + expr: vector(1) + labels: + job: job9542 + - record: job:http_inprogress_requests:sum:9543 + expr: vector(1) + labels: + job: job9543 + - record: job:http_inprogress_requests:sum:9544 + expr: vector(1) + labels: + job: job9544 + - record: job:http_inprogress_requests:sum:9545 + expr: vector(1) + labels: + job: job9545 + - record: job:http_inprogress_requests:sum:9546 + expr: vector(1) + labels: + job: job9546 + - record: job:http_inprogress_requests:sum:9547 + expr: vector(1) + labels: + job: job9547 + - record: job:http_inprogress_requests:sum:9548 + expr: vector(1) + labels: + job: job9548 + - record: job:http_inprogress_requests:sum:9549 + expr: vector(1) + labels: + job: job9549 + - record: job:http_inprogress_requests:sum:9550 + expr: vector(1) + labels: + job: job9550 + - record: job:http_inprogress_requests:sum:9551 + expr: vector(1) + labels: + job: job9551 + - record: job:http_inprogress_requests:sum:9552 + expr: vector(1) + labels: + job: job9552 + - record: job:http_inprogress_requests:sum:9553 + expr: vector(1) + labels: + job: job9553 + - record: job:http_inprogress_requests:sum:9554 + expr: vector(1) + labels: + job: job9554 + - record: job:http_inprogress_requests:sum:9555 + expr: vector(1) + labels: + job: job9555 + - record: job:http_inprogress_requests:sum:9556 + expr: vector(1) + labels: + job: job9556 + - record: job:http_inprogress_requests:sum:9557 + expr: vector(1) + labels: + job: job9557 + - record: job:http_inprogress_requests:sum:9558 + expr: vector(1) + labels: + job: job9558 + - record: job:http_inprogress_requests:sum:9559 + expr: vector(1) + labels: + job: job9559 + - record: job:http_inprogress_requests:sum:9560 + expr: vector(1) + labels: + job: job9560 + - record: job:http_inprogress_requests:sum:9561 + expr: vector(1) + labels: + job: job9561 + - record: job:http_inprogress_requests:sum:9562 + expr: vector(1) + labels: + job: job9562 + - record: job:http_inprogress_requests:sum:9563 + expr: vector(1) + labels: + job: job9563 + - record: job:http_inprogress_requests:sum:9564 + expr: vector(1) + labels: + job: job9564 + - record: job:http_inprogress_requests:sum:9565 + expr: vector(1) + labels: + job: job9565 + - record: job:http_inprogress_requests:sum:9566 + expr: vector(1) + labels: + job: job9566 + - record: job:http_inprogress_requests:sum:9567 + expr: vector(1) + labels: + job: job9567 + - record: job:http_inprogress_requests:sum:9568 + expr: vector(1) + labels: + job: job9568 + - record: job:http_inprogress_requests:sum:9569 + expr: vector(1) + labels: + job: job9569 + - record: job:http_inprogress_requests:sum:9570 + expr: vector(1) + labels: + job: job9570 + - record: job:http_inprogress_requests:sum:9571 + expr: vector(1) + labels: + job: job9571 + - record: job:http_inprogress_requests:sum:9572 + expr: vector(1) + labels: + job: job9572 + - record: job:http_inprogress_requests:sum:9573 + expr: vector(1) + labels: + job: job9573 + - record: job:http_inprogress_requests:sum:9574 + expr: vector(1) + labels: + job: job9574 + - record: job:http_inprogress_requests:sum:9575 + expr: vector(1) + labels: + job: job9575 + - record: job:http_inprogress_requests:sum:9576 + expr: vector(1) + labels: + job: job9576 + - record: job:http_inprogress_requests:sum:9577 + expr: vector(1) + labels: + job: job9577 + - record: job:http_inprogress_requests:sum:9578 + expr: vector(1) + labels: + job: job9578 + - record: job:http_inprogress_requests:sum:9579 + expr: vector(1) + labels: + job: job9579 + - record: job:http_inprogress_requests:sum:9580 + expr: vector(1) + labels: + job: job9580 + - record: job:http_inprogress_requests:sum:9581 + expr: vector(1) + labels: + job: job9581 + - record: job:http_inprogress_requests:sum:9582 + expr: vector(1) + labels: + job: job9582 + - record: job:http_inprogress_requests:sum:9583 + expr: vector(1) + labels: + job: job9583 + - record: job:http_inprogress_requests:sum:9584 + expr: vector(1) + labels: + job: job9584 + - record: job:http_inprogress_requests:sum:9585 + expr: vector(1) + labels: + job: job9585 + - record: job:http_inprogress_requests:sum:9586 + expr: vector(1) + labels: + job: job9586 + - record: job:http_inprogress_requests:sum:9587 + expr: vector(1) + labels: + job: job9587 + - record: job:http_inprogress_requests:sum:9588 + expr: vector(1) + labels: + job: job9588 + - record: job:http_inprogress_requests:sum:9589 + expr: vector(1) + labels: + job: job9589 + - record: job:http_inprogress_requests:sum:9590 + expr: vector(1) + labels: + job: job9590 + - record: job:http_inprogress_requests:sum:9591 + expr: vector(1) + labels: + job: job9591 + - record: job:http_inprogress_requests:sum:9592 + expr: vector(1) + labels: + job: job9592 + - record: job:http_inprogress_requests:sum:9593 + expr: vector(1) + labels: + job: job9593 + - record: job:http_inprogress_requests:sum:9594 + expr: vector(1) + labels: + job: job9594 + - record: job:http_inprogress_requests:sum:9595 + expr: vector(1) + labels: + job: job9595 + - record: job:http_inprogress_requests:sum:9596 + expr: vector(1) + labels: + job: job9596 + - record: job:http_inprogress_requests:sum:9597 + expr: vector(1) + labels: + job: job9597 + - record: job:http_inprogress_requests:sum:9598 + expr: vector(1) + labels: + job: job9598 + - record: job:http_inprogress_requests:sum:9599 + expr: vector(1) + labels: + job: job9599 + - record: job:http_inprogress_requests:sum:9600 + expr: vector(1) + labels: + job: job9600 + - record: job:http_inprogress_requests:sum:9601 + expr: vector(1) + labels: + job: job9601 + - record: job:http_inprogress_requests:sum:9602 + expr: vector(1) + labels: + job: job9602 + - record: job:http_inprogress_requests:sum:9603 + expr: vector(1) + labels: + job: job9603 + - record: job:http_inprogress_requests:sum:9604 + expr: vector(1) + labels: + job: job9604 + - record: job:http_inprogress_requests:sum:9605 + expr: vector(1) + labels: + job: job9605 + - record: job:http_inprogress_requests:sum:9606 + expr: vector(1) + labels: + job: job9606 + - record: job:http_inprogress_requests:sum:9607 + expr: vector(1) + labels: + job: job9607 + - record: job:http_inprogress_requests:sum:9608 + expr: vector(1) + labels: + job: job9608 + - record: job:http_inprogress_requests:sum:9609 + expr: vector(1) + labels: + job: job9609 + - record: job:http_inprogress_requests:sum:9610 + expr: vector(1) + labels: + job: job9610 + - record: job:http_inprogress_requests:sum:9611 + expr: vector(1) + labels: + job: job9611 + - record: job:http_inprogress_requests:sum:9612 + expr: vector(1) + labels: + job: job9612 + - record: job:http_inprogress_requests:sum:9613 + expr: vector(1) + labels: + job: job9613 + - record: job:http_inprogress_requests:sum:9614 + expr: vector(1) + labels: + job: job9614 + - record: job:http_inprogress_requests:sum:9615 + expr: vector(1) + labels: + job: job9615 + - record: job:http_inprogress_requests:sum:9616 + expr: vector(1) + labels: + job: job9616 + - record: job:http_inprogress_requests:sum:9617 + expr: vector(1) + labels: + job: job9617 + - record: job:http_inprogress_requests:sum:9618 + expr: vector(1) + labels: + job: job9618 + - record: job:http_inprogress_requests:sum:9619 + expr: vector(1) + labels: + job: job9619 + - record: job:http_inprogress_requests:sum:9620 + expr: vector(1) + labels: + job: job9620 + - record: job:http_inprogress_requests:sum:9621 + expr: vector(1) + labels: + job: job9621 + - record: job:http_inprogress_requests:sum:9622 + expr: vector(1) + labels: + job: job9622 + - record: job:http_inprogress_requests:sum:9623 + expr: vector(1) + labels: + job: job9623 + - record: job:http_inprogress_requests:sum:9624 + expr: vector(1) + labels: + job: job9624 + - record: job:http_inprogress_requests:sum:9625 + expr: vector(1) + labels: + job: job9625 + - record: job:http_inprogress_requests:sum:9626 + expr: vector(1) + labels: + job: job9626 + - record: job:http_inprogress_requests:sum:9627 + expr: vector(1) + labels: + job: job9627 + - record: job:http_inprogress_requests:sum:9628 + expr: vector(1) + labels: + job: job9628 + - record: job:http_inprogress_requests:sum:9629 + expr: vector(1) + labels: + job: job9629 + - record: job:http_inprogress_requests:sum:9630 + expr: vector(1) + labels: + job: job9630 + - record: job:http_inprogress_requests:sum:9631 + expr: vector(1) + labels: + job: job9631 + - record: job:http_inprogress_requests:sum:9632 + expr: vector(1) + labels: + job: job9632 + - record: job:http_inprogress_requests:sum:9633 + expr: vector(1) + labels: + job: job9633 + - record: job:http_inprogress_requests:sum:9634 + expr: vector(1) + labels: + job: job9634 + - record: job:http_inprogress_requests:sum:9635 + expr: vector(1) + labels: + job: job9635 + - record: job:http_inprogress_requests:sum:9636 + expr: vector(1) + labels: + job: job9636 + - record: job:http_inprogress_requests:sum:9637 + expr: vector(1) + labels: + job: job9637 + - record: job:http_inprogress_requests:sum:9638 + expr: vector(1) + labels: + job: job9638 + - record: job:http_inprogress_requests:sum:9639 + expr: vector(1) + labels: + job: job9639 + - record: job:http_inprogress_requests:sum:9640 + expr: vector(1) + labels: + job: job9640 + - record: job:http_inprogress_requests:sum:9641 + expr: vector(1) + labels: + job: job9641 + - record: job:http_inprogress_requests:sum:9642 + expr: vector(1) + labels: + job: job9642 + - record: job:http_inprogress_requests:sum:9643 + expr: vector(1) + labels: + job: job9643 + - record: job:http_inprogress_requests:sum:9644 + expr: vector(1) + labels: + job: job9644 + - record: job:http_inprogress_requests:sum:9645 + expr: vector(1) + labels: + job: job9645 + - record: job:http_inprogress_requests:sum:9646 + expr: vector(1) + labels: + job: job9646 + - record: job:http_inprogress_requests:sum:9647 + expr: vector(1) + labels: + job: job9647 + - record: job:http_inprogress_requests:sum:9648 + expr: vector(1) + labels: + job: job9648 + - record: job:http_inprogress_requests:sum:9649 + expr: vector(1) + labels: + job: job9649 + - record: job:http_inprogress_requests:sum:9650 + expr: vector(1) + labels: + job: job9650 + - record: job:http_inprogress_requests:sum:9651 + expr: vector(1) + labels: + job: job9651 + - record: job:http_inprogress_requests:sum:9652 + expr: vector(1) + labels: + job: job9652 + - record: job:http_inprogress_requests:sum:9653 + expr: vector(1) + labels: + job: job9653 + - record: job:http_inprogress_requests:sum:9654 + expr: vector(1) + labels: + job: job9654 + - record: job:http_inprogress_requests:sum:9655 + expr: vector(1) + labels: + job: job9655 + - record: job:http_inprogress_requests:sum:9656 + expr: vector(1) + labels: + job: job9656 + - record: job:http_inprogress_requests:sum:9657 + expr: vector(1) + labels: + job: job9657 + - record: job:http_inprogress_requests:sum:9658 + expr: vector(1) + labels: + job: job9658 + - record: job:http_inprogress_requests:sum:9659 + expr: vector(1) + labels: + job: job9659 + - record: job:http_inprogress_requests:sum:9660 + expr: vector(1) + labels: + job: job9660 + - record: job:http_inprogress_requests:sum:9661 + expr: vector(1) + labels: + job: job9661 + - record: job:http_inprogress_requests:sum:9662 + expr: vector(1) + labels: + job: job9662 + - record: job:http_inprogress_requests:sum:9663 + expr: vector(1) + labels: + job: job9663 + - record: job:http_inprogress_requests:sum:9664 + expr: vector(1) + labels: + job: job9664 + - record: job:http_inprogress_requests:sum:9665 + expr: vector(1) + labels: + job: job9665 + - record: job:http_inprogress_requests:sum:9666 + expr: vector(1) + labels: + job: job9666 + - record: job:http_inprogress_requests:sum:9667 + expr: vector(1) + labels: + job: job9667 + - record: job:http_inprogress_requests:sum:9668 + expr: vector(1) + labels: + job: job9668 + - record: job:http_inprogress_requests:sum:9669 + expr: vector(1) + labels: + job: job9669 + - record: job:http_inprogress_requests:sum:9670 + expr: vector(1) + labels: + job: job9670 + - record: job:http_inprogress_requests:sum:9671 + expr: vector(1) + labels: + job: job9671 + - record: job:http_inprogress_requests:sum:9672 + expr: vector(1) + labels: + job: job9672 + - record: job:http_inprogress_requests:sum:9673 + expr: vector(1) + labels: + job: job9673 + - record: job:http_inprogress_requests:sum:9674 + expr: vector(1) + labels: + job: job9674 + - record: job:http_inprogress_requests:sum:9675 + expr: vector(1) + labels: + job: job9675 + - record: job:http_inprogress_requests:sum:9676 + expr: vector(1) + labels: + job: job9676 + - record: job:http_inprogress_requests:sum:9677 + expr: vector(1) + labels: + job: job9677 + - record: job:http_inprogress_requests:sum:9678 + expr: vector(1) + labels: + job: job9678 + - record: job:http_inprogress_requests:sum:9679 + expr: vector(1) + labels: + job: job9679 + - record: job:http_inprogress_requests:sum:9680 + expr: vector(1) + labels: + job: job9680 + - record: job:http_inprogress_requests:sum:9681 + expr: vector(1) + labels: + job: job9681 + - record: job:http_inprogress_requests:sum:9682 + expr: vector(1) + labels: + job: job9682 + - record: job:http_inprogress_requests:sum:9683 + expr: vector(1) + labels: + job: job9683 + - record: job:http_inprogress_requests:sum:9684 + expr: vector(1) + labels: + job: job9684 + - record: job:http_inprogress_requests:sum:9685 + expr: vector(1) + labels: + job: job9685 + - record: job:http_inprogress_requests:sum:9686 + expr: vector(1) + labels: + job: job9686 + - record: job:http_inprogress_requests:sum:9687 + expr: vector(1) + labels: + job: job9687 + - record: job:http_inprogress_requests:sum:9688 + expr: vector(1) + labels: + job: job9688 + - record: job:http_inprogress_requests:sum:9689 + expr: vector(1) + labels: + job: job9689 + - record: job:http_inprogress_requests:sum:9690 + expr: vector(1) + labels: + job: job9690 + - record: job:http_inprogress_requests:sum:9691 + expr: vector(1) + labels: + job: job9691 + - record: job:http_inprogress_requests:sum:9692 + expr: vector(1) + labels: + job: job9692 + - record: job:http_inprogress_requests:sum:9693 + expr: vector(1) + labels: + job: job9693 + - record: job:http_inprogress_requests:sum:9694 + expr: vector(1) + labels: + job: job9694 + - record: job:http_inprogress_requests:sum:9695 + expr: vector(1) + labels: + job: job9695 + - record: job:http_inprogress_requests:sum:9696 + expr: vector(1) + labels: + job: job9696 + - record: job:http_inprogress_requests:sum:9697 + expr: vector(1) + labels: + job: job9697 + - record: job:http_inprogress_requests:sum:9698 + expr: vector(1) + labels: + job: job9698 + - record: job:http_inprogress_requests:sum:9699 + expr: vector(1) + labels: + job: job9699 + - record: job:http_inprogress_requests:sum:9700 + expr: vector(1) + labels: + job: job9700 + - record: job:http_inprogress_requests:sum:9701 + expr: vector(1) + labels: + job: job9701 + - record: job:http_inprogress_requests:sum:9702 + expr: vector(1) + labels: + job: job9702 + - record: job:http_inprogress_requests:sum:9703 + expr: vector(1) + labels: + job: job9703 + - record: job:http_inprogress_requests:sum:9704 + expr: vector(1) + labels: + job: job9704 + - record: job:http_inprogress_requests:sum:9705 + expr: vector(1) + labels: + job: job9705 + - record: job:http_inprogress_requests:sum:9706 + expr: vector(1) + labels: + job: job9706 + - record: job:http_inprogress_requests:sum:9707 + expr: vector(1) + labels: + job: job9707 + - record: job:http_inprogress_requests:sum:9708 + expr: vector(1) + labels: + job: job9708 + - record: job:http_inprogress_requests:sum:9709 + expr: vector(1) + labels: + job: job9709 + - record: job:http_inprogress_requests:sum:9710 + expr: vector(1) + labels: + job: job9710 + - record: job:http_inprogress_requests:sum:9711 + expr: vector(1) + labels: + job: job9711 + - record: job:http_inprogress_requests:sum:9712 + expr: vector(1) + labels: + job: job9712 + - record: job:http_inprogress_requests:sum:9713 + expr: vector(1) + labels: + job: job9713 + - record: job:http_inprogress_requests:sum:9714 + expr: vector(1) + labels: + job: job9714 + - record: job:http_inprogress_requests:sum:9715 + expr: vector(1) + labels: + job: job9715 + - record: job:http_inprogress_requests:sum:9716 + expr: vector(1) + labels: + job: job9716 + - record: job:http_inprogress_requests:sum:9717 + expr: vector(1) + labels: + job: job9717 + - record: job:http_inprogress_requests:sum:9718 + expr: vector(1) + labels: + job: job9718 + - record: job:http_inprogress_requests:sum:9719 + expr: vector(1) + labels: + job: job9719 + - record: job:http_inprogress_requests:sum:9720 + expr: vector(1) + labels: + job: job9720 + - record: job:http_inprogress_requests:sum:9721 + expr: vector(1) + labels: + job: job9721 + - record: job:http_inprogress_requests:sum:9722 + expr: vector(1) + labels: + job: job9722 + - record: job:http_inprogress_requests:sum:9723 + expr: vector(1) + labels: + job: job9723 + - record: job:http_inprogress_requests:sum:9724 + expr: vector(1) + labels: + job: job9724 + - record: job:http_inprogress_requests:sum:9725 + expr: vector(1) + labels: + job: job9725 + - record: job:http_inprogress_requests:sum:9726 + expr: vector(1) + labels: + job: job9726 + - record: job:http_inprogress_requests:sum:9727 + expr: vector(1) + labels: + job: job9727 + - record: job:http_inprogress_requests:sum:9728 + expr: vector(1) + labels: + job: job9728 + - record: job:http_inprogress_requests:sum:9729 + expr: vector(1) + labels: + job: job9729 + - record: job:http_inprogress_requests:sum:9730 + expr: vector(1) + labels: + job: job9730 + - record: job:http_inprogress_requests:sum:9731 + expr: vector(1) + labels: + job: job9731 + - record: job:http_inprogress_requests:sum:9732 + expr: vector(1) + labels: + job: job9732 + - record: job:http_inprogress_requests:sum:9733 + expr: vector(1) + labels: + job: job9733 + - record: job:http_inprogress_requests:sum:9734 + expr: vector(1) + labels: + job: job9734 + - record: job:http_inprogress_requests:sum:9735 + expr: vector(1) + labels: + job: job9735 + - record: job:http_inprogress_requests:sum:9736 + expr: vector(1) + labels: + job: job9736 + - record: job:http_inprogress_requests:sum:9737 + expr: vector(1) + labels: + job: job9737 + - record: job:http_inprogress_requests:sum:9738 + expr: vector(1) + labels: + job: job9738 + - record: job:http_inprogress_requests:sum:9739 + expr: vector(1) + labels: + job: job9739 + - record: job:http_inprogress_requests:sum:9740 + expr: vector(1) + labels: + job: job9740 + - record: job:http_inprogress_requests:sum:9741 + expr: vector(1) + labels: + job: job9741 + - record: job:http_inprogress_requests:sum:9742 + expr: vector(1) + labels: + job: job9742 + - record: job:http_inprogress_requests:sum:9743 + expr: vector(1) + labels: + job: job9743 + - record: job:http_inprogress_requests:sum:9744 + expr: vector(1) + labels: + job: job9744 + - record: job:http_inprogress_requests:sum:9745 + expr: vector(1) + labels: + job: job9745 + - record: job:http_inprogress_requests:sum:9746 + expr: vector(1) + labels: + job: job9746 + - record: job:http_inprogress_requests:sum:9747 + expr: vector(1) + labels: + job: job9747 + - record: job:http_inprogress_requests:sum:9748 + expr: vector(1) + labels: + job: job9748 + - record: job:http_inprogress_requests:sum:9749 + expr: vector(1) + labels: + job: job9749 + - record: job:http_inprogress_requests:sum:9750 + expr: vector(1) + labels: + job: job9750 + - record: job:http_inprogress_requests:sum:9751 + expr: vector(1) + labels: + job: job9751 + - record: job:http_inprogress_requests:sum:9752 + expr: vector(1) + labels: + job: job9752 + - record: job:http_inprogress_requests:sum:9753 + expr: vector(1) + labels: + job: job9753 + - record: job:http_inprogress_requests:sum:9754 + expr: vector(1) + labels: + job: job9754 + - record: job:http_inprogress_requests:sum:9755 + expr: vector(1) + labels: + job: job9755 + - record: job:http_inprogress_requests:sum:9756 + expr: vector(1) + labels: + job: job9756 + - record: job:http_inprogress_requests:sum:9757 + expr: vector(1) + labels: + job: job9757 + - record: job:http_inprogress_requests:sum:9758 + expr: vector(1) + labels: + job: job9758 + - record: job:http_inprogress_requests:sum:9759 + expr: vector(1) + labels: + job: job9759 + - record: job:http_inprogress_requests:sum:9760 + expr: vector(1) + labels: + job: job9760 + - record: job:http_inprogress_requests:sum:9761 + expr: vector(1) + labels: + job: job9761 + - record: job:http_inprogress_requests:sum:9762 + expr: vector(1) + labels: + job: job9762 + - record: job:http_inprogress_requests:sum:9763 + expr: vector(1) + labels: + job: job9763 + - record: job:http_inprogress_requests:sum:9764 + expr: vector(1) + labels: + job: job9764 + - record: job:http_inprogress_requests:sum:9765 + expr: vector(1) + labels: + job: job9765 + - record: job:http_inprogress_requests:sum:9766 + expr: vector(1) + labels: + job: job9766 + - record: job:http_inprogress_requests:sum:9767 + expr: vector(1) + labels: + job: job9767 + - record: job:http_inprogress_requests:sum:9768 + expr: vector(1) + labels: + job: job9768 + - record: job:http_inprogress_requests:sum:9769 + expr: vector(1) + labels: + job: job9769 + - record: job:http_inprogress_requests:sum:9770 + expr: vector(1) + labels: + job: job9770 + - record: job:http_inprogress_requests:sum:9771 + expr: vector(1) + labels: + job: job9771 + - record: job:http_inprogress_requests:sum:9772 + expr: vector(1) + labels: + job: job9772 + - record: job:http_inprogress_requests:sum:9773 + expr: vector(1) + labels: + job: job9773 + - record: job:http_inprogress_requests:sum:9774 + expr: vector(1) + labels: + job: job9774 + - record: job:http_inprogress_requests:sum:9775 + expr: vector(1) + labels: + job: job9775 + - record: job:http_inprogress_requests:sum:9776 + expr: vector(1) + labels: + job: job9776 + - record: job:http_inprogress_requests:sum:9777 + expr: vector(1) + labels: + job: job9777 + - record: job:http_inprogress_requests:sum:9778 + expr: vector(1) + labels: + job: job9778 + - record: job:http_inprogress_requests:sum:9779 + expr: vector(1) + labels: + job: job9779 + - record: job:http_inprogress_requests:sum:9780 + expr: vector(1) + labels: + job: job9780 + - record: job:http_inprogress_requests:sum:9781 + expr: vector(1) + labels: + job: job9781 + - record: job:http_inprogress_requests:sum:9782 + expr: vector(1) + labels: + job: job9782 + - record: job:http_inprogress_requests:sum:9783 + expr: vector(1) + labels: + job: job9783 + - record: job:http_inprogress_requests:sum:9784 + expr: vector(1) + labels: + job: job9784 + - record: job:http_inprogress_requests:sum:9785 + expr: vector(1) + labels: + job: job9785 + - record: job:http_inprogress_requests:sum:9786 + expr: vector(1) + labels: + job: job9786 + - record: job:http_inprogress_requests:sum:9787 + expr: vector(1) + labels: + job: job9787 + - record: job:http_inprogress_requests:sum:9788 + expr: vector(1) + labels: + job: job9788 + - record: job:http_inprogress_requests:sum:9789 + expr: vector(1) + labels: + job: job9789 + - record: job:http_inprogress_requests:sum:9790 + expr: vector(1) + labels: + job: job9790 + - record: job:http_inprogress_requests:sum:9791 + expr: vector(1) + labels: + job: job9791 + - record: job:http_inprogress_requests:sum:9792 + expr: vector(1) + labels: + job: job9792 + - record: job:http_inprogress_requests:sum:9793 + expr: vector(1) + labels: + job: job9793 + - record: job:http_inprogress_requests:sum:9794 + expr: vector(1) + labels: + job: job9794 + - record: job:http_inprogress_requests:sum:9795 + expr: vector(1) + labels: + job: job9795 + - record: job:http_inprogress_requests:sum:9796 + expr: vector(1) + labels: + job: job9796 + - record: job:http_inprogress_requests:sum:9797 + expr: vector(1) + labels: + job: job9797 + - record: job:http_inprogress_requests:sum:9798 + expr: vector(1) + labels: + job: job9798 + - record: job:http_inprogress_requests:sum:9799 + expr: vector(1) + labels: + job: job9799 + - record: job:http_inprogress_requests:sum:9800 + expr: vector(1) + labels: + job: job9800 + - record: job:http_inprogress_requests:sum:9801 + expr: vector(1) + labels: + job: job9801 + - record: job:http_inprogress_requests:sum:9802 + expr: vector(1) + labels: + job: job9802 + - record: job:http_inprogress_requests:sum:9803 + expr: vector(1) + labels: + job: job9803 + - record: job:http_inprogress_requests:sum:9804 + expr: vector(1) + labels: + job: job9804 + - record: job:http_inprogress_requests:sum:9805 + expr: vector(1) + labels: + job: job9805 + - record: job:http_inprogress_requests:sum:9806 + expr: vector(1) + labels: + job: job9806 + - record: job:http_inprogress_requests:sum:9807 + expr: vector(1) + labels: + job: job9807 + - record: job:http_inprogress_requests:sum:9808 + expr: vector(1) + labels: + job: job9808 + - record: job:http_inprogress_requests:sum:9809 + expr: vector(1) + labels: + job: job9809 + - record: job:http_inprogress_requests:sum:9810 + expr: vector(1) + labels: + job: job9810 + - record: job:http_inprogress_requests:sum:9811 + expr: vector(1) + labels: + job: job9811 + - record: job:http_inprogress_requests:sum:9812 + expr: vector(1) + labels: + job: job9812 + - record: job:http_inprogress_requests:sum:9813 + expr: vector(1) + labels: + job: job9813 + - record: job:http_inprogress_requests:sum:9814 + expr: vector(1) + labels: + job: job9814 + - record: job:http_inprogress_requests:sum:9815 + expr: vector(1) + labels: + job: job9815 + - record: job:http_inprogress_requests:sum:9816 + expr: vector(1) + labels: + job: job9816 + - record: job:http_inprogress_requests:sum:9817 + expr: vector(1) + labels: + job: job9817 + - record: job:http_inprogress_requests:sum:9818 + expr: vector(1) + labels: + job: job9818 + - record: job:http_inprogress_requests:sum:9819 + expr: vector(1) + labels: + job: job9819 + - record: job:http_inprogress_requests:sum:9820 + expr: vector(1) + labels: + job: job9820 + - record: job:http_inprogress_requests:sum:9821 + expr: vector(1) + labels: + job: job9821 + - record: job:http_inprogress_requests:sum:9822 + expr: vector(1) + labels: + job: job9822 + - record: job:http_inprogress_requests:sum:9823 + expr: vector(1) + labels: + job: job9823 + - record: job:http_inprogress_requests:sum:9824 + expr: vector(1) + labels: + job: job9824 + - record: job:http_inprogress_requests:sum:9825 + expr: vector(1) + labels: + job: job9825 + - record: job:http_inprogress_requests:sum:9826 + expr: vector(1) + labels: + job: job9826 + - record: job:http_inprogress_requests:sum:9827 + expr: vector(1) + labels: + job: job9827 + - record: job:http_inprogress_requests:sum:9828 + expr: vector(1) + labels: + job: job9828 + - record: job:http_inprogress_requests:sum:9829 + expr: vector(1) + labels: + job: job9829 + - record: job:http_inprogress_requests:sum:9830 + expr: vector(1) + labels: + job: job9830 + - record: job:http_inprogress_requests:sum:9831 + expr: vector(1) + labels: + job: job9831 + - record: job:http_inprogress_requests:sum:9832 + expr: vector(1) + labels: + job: job9832 + - record: job:http_inprogress_requests:sum:9833 + expr: vector(1) + labels: + job: job9833 + - record: job:http_inprogress_requests:sum:9834 + expr: vector(1) + labels: + job: job9834 + - record: job:http_inprogress_requests:sum:9835 + expr: vector(1) + labels: + job: job9835 + - record: job:http_inprogress_requests:sum:9836 + expr: vector(1) + labels: + job: job9836 + - record: job:http_inprogress_requests:sum:9837 + expr: vector(1) + labels: + job: job9837 + - record: job:http_inprogress_requests:sum:9838 + expr: vector(1) + labels: + job: job9838 + - record: job:http_inprogress_requests:sum:9839 + expr: vector(1) + labels: + job: job9839 + - record: job:http_inprogress_requests:sum:9840 + expr: vector(1) + labels: + job: job9840 + - record: job:http_inprogress_requests:sum:9841 + expr: vector(1) + labels: + job: job9841 + - record: job:http_inprogress_requests:sum:9842 + expr: vector(1) + labels: + job: job9842 + - record: job:http_inprogress_requests:sum:9843 + expr: vector(1) + labels: + job: job9843 + - record: job:http_inprogress_requests:sum:9844 + expr: vector(1) + labels: + job: job9844 + - record: job:http_inprogress_requests:sum:9845 + expr: vector(1) + labels: + job: job9845 + - record: job:http_inprogress_requests:sum:9846 + expr: vector(1) + labels: + job: job9846 + - record: job:http_inprogress_requests:sum:9847 + expr: vector(1) + labels: + job: job9847 + - record: job:http_inprogress_requests:sum:9848 + expr: vector(1) + labels: + job: job9848 + - record: job:http_inprogress_requests:sum:9849 + expr: vector(1) + labels: + job: job9849 + - record: job:http_inprogress_requests:sum:9850 + expr: vector(1) + labels: + job: job9850 + - record: job:http_inprogress_requests:sum:9851 + expr: vector(1) + labels: + job: job9851 + - record: job:http_inprogress_requests:sum:9852 + expr: vector(1) + labels: + job: job9852 + - record: job:http_inprogress_requests:sum:9853 + expr: vector(1) + labels: + job: job9853 + - record: job:http_inprogress_requests:sum:9854 + expr: vector(1) + labels: + job: job9854 + - record: job:http_inprogress_requests:sum:9855 + expr: vector(1) + labels: + job: job9855 + - record: job:http_inprogress_requests:sum:9856 + expr: vector(1) + labels: + job: job9856 + - record: job:http_inprogress_requests:sum:9857 + expr: vector(1) + labels: + job: job9857 + - record: job:http_inprogress_requests:sum:9858 + expr: vector(1) + labels: + job: job9858 + - record: job:http_inprogress_requests:sum:9859 + expr: vector(1) + labels: + job: job9859 + - record: job:http_inprogress_requests:sum:9860 + expr: vector(1) + labels: + job: job9860 + - record: job:http_inprogress_requests:sum:9861 + expr: vector(1) + labels: + job: job9861 + - record: job:http_inprogress_requests:sum:9862 + expr: vector(1) + labels: + job: job9862 + - record: job:http_inprogress_requests:sum:9863 + expr: vector(1) + labels: + job: job9863 + - record: job:http_inprogress_requests:sum:9864 + expr: vector(1) + labels: + job: job9864 + - record: job:http_inprogress_requests:sum:9865 + expr: vector(1) + labels: + job: job9865 + - record: job:http_inprogress_requests:sum:9866 + expr: vector(1) + labels: + job: job9866 + - record: job:http_inprogress_requests:sum:9867 + expr: vector(1) + labels: + job: job9867 + - record: job:http_inprogress_requests:sum:9868 + expr: vector(1) + labels: + job: job9868 + - record: job:http_inprogress_requests:sum:9869 + expr: vector(1) + labels: + job: job9869 + - record: job:http_inprogress_requests:sum:9870 + expr: vector(1) + labels: + job: job9870 + - record: job:http_inprogress_requests:sum:9871 + expr: vector(1) + labels: + job: job9871 + - record: job:http_inprogress_requests:sum:9872 + expr: vector(1) + labels: + job: job9872 + - record: job:http_inprogress_requests:sum:9873 + expr: vector(1) + labels: + job: job9873 + - record: job:http_inprogress_requests:sum:9874 + expr: vector(1) + labels: + job: job9874 + - record: job:http_inprogress_requests:sum:9875 + expr: vector(1) + labels: + job: job9875 + - record: job:http_inprogress_requests:sum:9876 + expr: vector(1) + labels: + job: job9876 + - record: job:http_inprogress_requests:sum:9877 + expr: vector(1) + labels: + job: job9877 + - record: job:http_inprogress_requests:sum:9878 + expr: vector(1) + labels: + job: job9878 + - record: job:http_inprogress_requests:sum:9879 + expr: vector(1) + labels: + job: job9879 + - record: job:http_inprogress_requests:sum:9880 + expr: vector(1) + labels: + job: job9880 + - record: job:http_inprogress_requests:sum:9881 + expr: vector(1) + labels: + job: job9881 + - record: job:http_inprogress_requests:sum:9882 + expr: vector(1) + labels: + job: job9882 + - record: job:http_inprogress_requests:sum:9883 + expr: vector(1) + labels: + job: job9883 + - record: job:http_inprogress_requests:sum:9884 + expr: vector(1) + labels: + job: job9884 + - record: job:http_inprogress_requests:sum:9885 + expr: vector(1) + labels: + job: job9885 + - record: job:http_inprogress_requests:sum:9886 + expr: vector(1) + labels: + job: job9886 + - record: job:http_inprogress_requests:sum:9887 + expr: vector(1) + labels: + job: job9887 + - record: job:http_inprogress_requests:sum:9888 + expr: vector(1) + labels: + job: job9888 + - record: job:http_inprogress_requests:sum:9889 + expr: vector(1) + labels: + job: job9889 + - record: job:http_inprogress_requests:sum:9890 + expr: vector(1) + labels: + job: job9890 + - record: job:http_inprogress_requests:sum:9891 + expr: vector(1) + labels: + job: job9891 + - record: job:http_inprogress_requests:sum:9892 + expr: vector(1) + labels: + job: job9892 + - record: job:http_inprogress_requests:sum:9893 + expr: vector(1) + labels: + job: job9893 + - record: job:http_inprogress_requests:sum:9894 + expr: vector(1) + labels: + job: job9894 + - record: job:http_inprogress_requests:sum:9895 + expr: vector(1) + labels: + job: job9895 + - record: job:http_inprogress_requests:sum:9896 + expr: vector(1) + labels: + job: job9896 + - record: job:http_inprogress_requests:sum:9897 + expr: vector(1) + labels: + job: job9897 + - record: job:http_inprogress_requests:sum:9898 + expr: vector(1) + labels: + job: job9898 + - record: job:http_inprogress_requests:sum:9899 + expr: vector(1) + labels: + job: job9899 + - record: job:http_inprogress_requests:sum:9900 + expr: vector(1) + labels: + job: job9900 + - record: job:http_inprogress_requests:sum:9901 + expr: vector(1) + labels: + job: job9901 + - record: job:http_inprogress_requests:sum:9902 + expr: vector(1) + labels: + job: job9902 + - record: job:http_inprogress_requests:sum:9903 + expr: vector(1) + labels: + job: job9903 + - record: job:http_inprogress_requests:sum:9904 + expr: vector(1) + labels: + job: job9904 + - record: job:http_inprogress_requests:sum:9905 + expr: vector(1) + labels: + job: job9905 + - record: job:http_inprogress_requests:sum:9906 + expr: vector(1) + labels: + job: job9906 + - record: job:http_inprogress_requests:sum:9907 + expr: vector(1) + labels: + job: job9907 + - record: job:http_inprogress_requests:sum:9908 + expr: vector(1) + labels: + job: job9908 + - record: job:http_inprogress_requests:sum:9909 + expr: vector(1) + labels: + job: job9909 + - record: job:http_inprogress_requests:sum:9910 + expr: vector(1) + labels: + job: job9910 + - record: job:http_inprogress_requests:sum:9911 + expr: vector(1) + labels: + job: job9911 + - record: job:http_inprogress_requests:sum:9912 + expr: vector(1) + labels: + job: job9912 + - record: job:http_inprogress_requests:sum:9913 + expr: vector(1) + labels: + job: job9913 + - record: job:http_inprogress_requests:sum:9914 + expr: vector(1) + labels: + job: job9914 + - record: job:http_inprogress_requests:sum:9915 + expr: vector(1) + labels: + job: job9915 + - record: job:http_inprogress_requests:sum:9916 + expr: vector(1) + labels: + job: job9916 + - record: job:http_inprogress_requests:sum:9917 + expr: vector(1) + labels: + job: job9917 + - record: job:http_inprogress_requests:sum:9918 + expr: vector(1) + labels: + job: job9918 + - record: job:http_inprogress_requests:sum:9919 + expr: vector(1) + labels: + job: job9919 + - record: job:http_inprogress_requests:sum:9920 + expr: vector(1) + labels: + job: job9920 + - record: job:http_inprogress_requests:sum:9921 + expr: vector(1) + labels: + job: job9921 + - record: job:http_inprogress_requests:sum:9922 + expr: vector(1) + labels: + job: job9922 + - record: job:http_inprogress_requests:sum:9923 + expr: vector(1) + labels: + job: job9923 + - record: job:http_inprogress_requests:sum:9924 + expr: vector(1) + labels: + job: job9924 + - record: job:http_inprogress_requests:sum:9925 + expr: vector(1) + labels: + job: job9925 + - record: job:http_inprogress_requests:sum:9926 + expr: vector(1) + labels: + job: job9926 + - record: job:http_inprogress_requests:sum:9927 + expr: vector(1) + labels: + job: job9927 + - record: job:http_inprogress_requests:sum:9928 + expr: vector(1) + labels: + job: job9928 + - record: job:http_inprogress_requests:sum:9929 + expr: vector(1) + labels: + job: job9929 + - record: job:http_inprogress_requests:sum:9930 + expr: vector(1) + labels: + job: job9930 + - record: job:http_inprogress_requests:sum:9931 + expr: vector(1) + labels: + job: job9931 + - record: job:http_inprogress_requests:sum:9932 + expr: vector(1) + labels: + job: job9932 + - record: job:http_inprogress_requests:sum:9933 + expr: vector(1) + labels: + job: job9933 + - record: job:http_inprogress_requests:sum:9934 + expr: vector(1) + labels: + job: job9934 + - record: job:http_inprogress_requests:sum:9935 + expr: vector(1) + labels: + job: job9935 + - record: job:http_inprogress_requests:sum:9936 + expr: vector(1) + labels: + job: job9936 + - record: job:http_inprogress_requests:sum:9937 + expr: vector(1) + labels: + job: job9937 + - record: job:http_inprogress_requests:sum:9938 + expr: vector(1) + labels: + job: job9938 + - record: job:http_inprogress_requests:sum:9939 + expr: vector(1) + labels: + job: job9939 + - record: job:http_inprogress_requests:sum:9940 + expr: vector(1) + labels: + job: job9940 + - record: job:http_inprogress_requests:sum:9941 + expr: vector(1) + labels: + job: job9941 + - record: job:http_inprogress_requests:sum:9942 + expr: vector(1) + labels: + job: job9942 + - record: job:http_inprogress_requests:sum:9943 + expr: vector(1) + labels: + job: job9943 + - record: job:http_inprogress_requests:sum:9944 + expr: vector(1) + labels: + job: job9944 + - record: job:http_inprogress_requests:sum:9945 + expr: vector(1) + labels: + job: job9945 + - record: job:http_inprogress_requests:sum:9946 + expr: vector(1) + labels: + job: job9946 + - record: job:http_inprogress_requests:sum:9947 + expr: vector(1) + labels: + job: job9947 + - record: job:http_inprogress_requests:sum:9948 + expr: vector(1) + labels: + job: job9948 + - record: job:http_inprogress_requests:sum:9949 + expr: vector(1) + labels: + job: job9949 + - record: job:http_inprogress_requests:sum:9950 + expr: vector(1) + labels: + job: job9950 + - record: job:http_inprogress_requests:sum:9951 + expr: vector(1) + labels: + job: job9951 + - record: job:http_inprogress_requests:sum:9952 + expr: vector(1) + labels: + job: job9952 + - record: job:http_inprogress_requests:sum:9953 + expr: vector(1) + labels: + job: job9953 + - record: job:http_inprogress_requests:sum:9954 + expr: vector(1) + labels: + job: job9954 + - record: job:http_inprogress_requests:sum:9955 + expr: vector(1) + labels: + job: job9955 + - record: job:http_inprogress_requests:sum:9956 + expr: vector(1) + labels: + job: job9956 + - record: job:http_inprogress_requests:sum:9957 + expr: vector(1) + labels: + job: job9957 + - record: job:http_inprogress_requests:sum:9958 + expr: vector(1) + labels: + job: job9958 + - record: job:http_inprogress_requests:sum:9959 + expr: vector(1) + labels: + job: job9959 + - record: job:http_inprogress_requests:sum:9960 + expr: vector(1) + labels: + job: job9960 + - record: job:http_inprogress_requests:sum:9961 + expr: vector(1) + labels: + job: job9961 + - record: job:http_inprogress_requests:sum:9962 + expr: vector(1) + labels: + job: job9962 + - record: job:http_inprogress_requests:sum:9963 + expr: vector(1) + labels: + job: job9963 + - record: job:http_inprogress_requests:sum:9964 + expr: vector(1) + labels: + job: job9964 + - record: job:http_inprogress_requests:sum:9965 + expr: vector(1) + labels: + job: job9965 + - record: job:http_inprogress_requests:sum:9966 + expr: vector(1) + labels: + job: job9966 + - record: job:http_inprogress_requests:sum:9967 + expr: vector(1) + labels: + job: job9967 + - record: job:http_inprogress_requests:sum:9968 + expr: vector(1) + labels: + job: job9968 + - record: job:http_inprogress_requests:sum:9969 + expr: vector(1) + labels: + job: job9969 + - record: job:http_inprogress_requests:sum:9970 + expr: vector(1) + labels: + job: job9970 + - record: job:http_inprogress_requests:sum:9971 + expr: vector(1) + labels: + job: job9971 + - record: job:http_inprogress_requests:sum:9972 + expr: vector(1) + labels: + job: job9972 + - record: job:http_inprogress_requests:sum:9973 + expr: vector(1) + labels: + job: job9973 + - record: job:http_inprogress_requests:sum:9974 + expr: vector(1) + labels: + job: job9974 + - record: job:http_inprogress_requests:sum:9975 + expr: vector(1) + labels: + job: job9975 + - record: job:http_inprogress_requests:sum:9976 + expr: vector(1) + labels: + job: job9976 + - record: job:http_inprogress_requests:sum:9977 + expr: vector(1) + labels: + job: job9977 + - record: job:http_inprogress_requests:sum:9978 + expr: vector(1) + labels: + job: job9978 + - record: job:http_inprogress_requests:sum:9979 + expr: vector(1) + labels: + job: job9979 + - record: job:http_inprogress_requests:sum:9980 + expr: vector(1) + labels: + job: job9980 + - record: job:http_inprogress_requests:sum:9981 + expr: vector(1) + labels: + job: job9981 + - record: job:http_inprogress_requests:sum:9982 + expr: vector(1) + labels: + job: job9982 + - record: job:http_inprogress_requests:sum:9983 + expr: vector(1) + labels: + job: job9983 + - record: job:http_inprogress_requests:sum:9984 + expr: vector(1) + labels: + job: job9984 + - record: job:http_inprogress_requests:sum:9985 + expr: vector(1) + labels: + job: job9985 + - record: job:http_inprogress_requests:sum:9986 + expr: vector(1) + labels: + job: job9986 + - record: job:http_inprogress_requests:sum:9987 + expr: vector(1) + labels: + job: job9987 + - record: job:http_inprogress_requests:sum:9988 + expr: vector(1) + labels: + job: job9988 + - record: job:http_inprogress_requests:sum:9989 + expr: vector(1) + labels: + job: job9989 + - record: job:http_inprogress_requests:sum:9990 + expr: vector(1) + labels: + job: job9990 + - record: job:http_inprogress_requests:sum:9991 + expr: vector(1) + labels: + job: job9991 + - record: job:http_inprogress_requests:sum:9992 + expr: vector(1) + labels: + job: job9992 + - record: job:http_inprogress_requests:sum:9993 + expr: vector(1) + labels: + job: job9993 + - record: job:http_inprogress_requests:sum:9994 + expr: vector(1) + labels: + job: job9994 + - record: job:http_inprogress_requests:sum:9995 + expr: vector(1) + labels: + job: job9995 + - record: job:http_inprogress_requests:sum:9996 + expr: vector(1) + labels: + job: job9996 + - record: job:http_inprogress_requests:sum:9997 + expr: vector(1) + labels: + job: job9997 + - record: job:http_inprogress_requests:sum:9998 + expr: vector(1) + labels: + job: job9998 + - record: job:http_inprogress_requests:sum:9999 + expr: vector(1) + labels: + job: job9999 + - record: job:http_inprogress_requests:sum:10000 + expr: vector(1) + labels: + job: job10000 + - record: job:http_inprogress_requests:sum:10000 + expr: vector(1) + labels: + job: job10000 diff --git a/cmd/promtool/tsdb.go b/cmd/promtool/tsdb.go index 782ea7d54..45cde87cf 100644 --- a/cmd/promtool/tsdb.go +++ b/cmd/promtool/tsdb.go @@ -418,7 +418,7 @@ func openBlock(path, blockID string) (*tsdb.DBReadOnly, tsdb.BlockReader, error) return db, block, nil } -func analyzeBlock(path, blockID string, limit int) error { +func analyzeBlock(path, blockID string, limit int, runExtended bool) error { db, block, err := openBlock(path, blockID) if err != nil { return err @@ -564,7 +564,11 @@ func analyzeBlock(path, blockID string, limit int) error { fmt.Printf("\nHighest cardinality metric names:\n") printInfo(postingInfos) - return analyzeCompaction(block, ir) + if runExtended { + return analyzeCompaction(block, ir) + } + + return nil } func analyzeCompaction(block tsdb.BlockReader, indexr tsdb.IndexReader) (err error) { diff --git a/config/config.go b/config/config.go index b560faace..dc2ed19a2 100644 --- a/config/config.go +++ b/config/config.go @@ -29,6 +29,7 @@ import ( "github.com/pkg/errors" "github.com/prometheus/common/config" "github.com/prometheus/common/model" + "github.com/prometheus/common/sigv4" yaml "gopkg.in/yaml.v2" "github.com/prometheus/prometheus/discovery" @@ -666,7 +667,7 @@ type RemoteWriteConfig struct { HTTPClientConfig config.HTTPClientConfig `yaml:",inline"` QueueConfig QueueConfig `yaml:"queue_config,omitempty"` MetadataConfig MetadataConfig `yaml:"metadata_config,omitempty"` - SigV4Config *SigV4Config `yaml:"sigv4,omitempty"` + SigV4Config *sigv4.SigV4Config `yaml:"sigv4,omitempty"` } // SetDirectory joins any relative file paths with dir. @@ -758,17 +759,6 @@ type MetadataConfig struct { MaxSamplesPerSend int `yaml:"max_samples_per_send,omitempty"` } -// SigV4Config is the configuration for signing remote write requests with -// AWS's SigV4 verification process. Empty values will be retrieved using the -// AWS default credentials chain. -type SigV4Config struct { - Region string `yaml:"region,omitempty"` - AccessKey string `yaml:"access_key,omitempty"` - SecretKey config.Secret `yaml:"secret_key,omitempty"` - Profile string `yaml:"profile,omitempty"` - RoleARN string `yaml:"role_arn,omitempty"` -} - // RemoteReadConfig is the configuration for reading from remote storage. type RemoteReadConfig struct { URL *config.URL `yaml:"url"` diff --git a/config/config_default_test.go b/config/config_default_test.go index e0f09aa11..f5333f4c8 100644 --- a/config/config_default_test.go +++ b/config/config_default_test.go @@ -11,6 +11,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +//go:build !windows // +build !windows package config diff --git a/config/config_test.go b/config/config_test.go index d5cc092a2..6db46a2b5 100644 --- a/config/config_test.go +++ b/config/config_test.go @@ -45,6 +45,7 @@ import ( "github.com/prometheus/prometheus/discovery/marathon" "github.com/prometheus/prometheus/discovery/moby" "github.com/prometheus/prometheus/discovery/openstack" + "github.com/prometheus/prometheus/discovery/puppetdb" "github.com/prometheus/prometheus/discovery/scaleway" "github.com/prometheus/prometheus/discovery/targetgroup" "github.com/prometheus/prometheus/discovery/triton" @@ -790,6 +791,34 @@ var expectedConf = &Config{ }}, }, }, + { + JobName: "service-puppetdb", + + HonorTimestamps: true, + ScrapeInterval: model.Duration(15 * time.Second), + ScrapeTimeout: DefaultGlobalConfig.ScrapeTimeout, + + MetricsPath: DefaultScrapeConfig.MetricsPath, + Scheme: DefaultScrapeConfig.Scheme, + HTTPClientConfig: config.DefaultHTTPClientConfig, + + ServiceDiscoveryConfigs: discovery.Configs{&puppetdb.SDConfig{ + URL: "https://puppetserver/", + Query: "resources { type = \"Package\" and title = \"httpd\" }", + IncludeParameters: true, + Port: 80, + RefreshInterval: model.Duration(60 * time.Second), + HTTPClientConfig: config.HTTPClientConfig{ + FollowRedirects: true, + TLSConfig: config.TLSConfig{ + CAFile: "testdata/valid_ca_file", + CertFile: "testdata/valid_cert_file", + KeyFile: "testdata/valid_key_file", + }, + }, + }, + }, + }, { JobName: "hetzner", HonorTimestamps: true, @@ -1262,6 +1291,22 @@ var expectedErrors = []struct { filename: "empty_static_config.bad.yml", errMsg: "empty or null section in static_configs", }, + { + filename: "puppetdb_no_query.bad.yml", + errMsg: "query missing", + }, + { + filename: "puppetdb_no_url.bad.yml", + errMsg: "URL is missing", + }, + { + filename: "puppetdb_bad_url.bad.yml", + errMsg: "host is missing in URL", + }, + { + filename: "puppetdb_no_scheme.bad.yml", + errMsg: "URL scheme must be 'http' or 'https'", + }, { filename: "hetzner_role.bad.yml", errMsg: "unknown role", @@ -1302,6 +1347,10 @@ var expectedErrors = []struct { filename: "http_url_bad_scheme.bad.yml", errMsg: "URL scheme must be 'http' or 'https'", }, + { + filename: "empty_scrape_config_action.bad.yml", + errMsg: "relabel action cannot be empty", + }, } func TestBadConfigs(t *testing.T) { diff --git a/config/testdata/conf.good.yml b/config/testdata/conf.good.yml index 19fe0c9b2..a439bd0a0 100644 --- a/config/testdata/conf.good.yml +++ b/config/testdata/conf.good.yml @@ -307,6 +307,18 @@ scrape_configs: cert_file: valid_cert_file key_file: valid_key_file + - job_name: service-puppetdb + puppetdb_sd_configs: + - url: https://puppetserver/ + query: 'resources { type = "Package" and title = "httpd" }' + include_parameters: true + port: 80 + refresh_interval: 1m + tls_config: + ca_file: valid_ca_file + cert_file: valid_cert_file + key_file: valid_key_file + - job_name: hetzner hetzner_sd_configs: - role: hcloud diff --git a/config/testdata/empty_scrape_config_action.bad.yml b/config/testdata/empty_scrape_config_action.bad.yml new file mode 100644 index 000000000..8e5f747a2 --- /dev/null +++ b/config/testdata/empty_scrape_config_action.bad.yml @@ -0,0 +1,4 @@ +scrape_configs: + - job_name: prometheus + relabel_configs: + - action: null diff --git a/config/testdata/puppetdb_bad_url.bad.yml b/config/testdata/puppetdb_bad_url.bad.yml new file mode 100644 index 000000000..8a82ae9ec --- /dev/null +++ b/config/testdata/puppetdb_bad_url.bad.yml @@ -0,0 +1,4 @@ +scrape_configs: + - puppetdb_sd_configs: + - url: http:// + query: 'resources { type = "Package" and title = "httpd" }' diff --git a/config/testdata/puppetdb_no_query.bad.yml b/config/testdata/puppetdb_no_query.bad.yml new file mode 100644 index 000000000..5d4c3f999 --- /dev/null +++ b/config/testdata/puppetdb_no_query.bad.yml @@ -0,0 +1,3 @@ +scrape_configs: + - puppetdb_sd_configs: + - url: http://puppetserver/ diff --git a/config/testdata/puppetdb_no_scheme.bad.yml b/config/testdata/puppetdb_no_scheme.bad.yml new file mode 100644 index 000000000..e980aa6b8 --- /dev/null +++ b/config/testdata/puppetdb_no_scheme.bad.yml @@ -0,0 +1,4 @@ +scrape_configs: + - puppetdb_sd_configs: + - url: ftp://puppet + query: 'resources { type = "Package" and title = "httpd" }' diff --git a/config/testdata/puppetdb_no_url.bad.yml b/config/testdata/puppetdb_no_url.bad.yml new file mode 100644 index 000000000..b806be16a --- /dev/null +++ b/config/testdata/puppetdb_no_url.bad.yml @@ -0,0 +1,3 @@ +scrape_configs: + - puppetdb_sd_configs: + - query: 'resources { type = "Package" and title = "httpd" }' diff --git a/discovery/aws/ec2.go b/discovery/aws/ec2.go index d2ad9736a..0bcfd0547 100644 --- a/discovery/aws/ec2.go +++ b/discovery/aws/ec2.go @@ -194,24 +194,16 @@ func (d *EC2Discovery) ec2Client(ctx context.Context) (*ec2.EC2, error) { return d.ec2, nil } -func (d *EC2Discovery) azID(ctx context.Context, az string) (string, error) { - if azID, ok := d.azToAZID[az]; ok { - return azID, nil - } - +func (d *EC2Discovery) refreshAZIDs(ctx context.Context) error { azs, err := d.ec2.DescribeAvailabilityZonesWithContext(ctx, &ec2.DescribeAvailabilityZonesInput{}) if err != nil { - return "", errors.Wrap(err, "could not describe availability zones") + return err } d.azToAZID = make(map[string]string, len(azs.AvailabilityZones)) for _, az := range azs.AvailabilityZones { d.azToAZID[*az.ZoneName] = *az.ZoneId } - - if azID, ok := d.azToAZID[az]; ok { - return azID, nil - } - return "", fmt.Errorf("no availability zone ID mapping found for %s", az) + return nil } func (d *EC2Discovery) refresh(ctx context.Context) ([]*targetgroup.Group, error) { @@ -232,21 +224,23 @@ func (d *EC2Discovery) refresh(ctx context.Context) ([]*targetgroup.Group, error }) } - input := &ec2.DescribeInstancesInput{Filters: filters} + // Only refresh the AZ ID map if we have never been able to build one. + // Prometheus requires a reload if AWS adds a new AZ to the region. + if d.azToAZID == nil { + if err := d.refreshAZIDs(ctx); err != nil { + level.Debug(d.logger).Log( + "msg", "Unable to describe availability zones", + "err", err) + } + } + input := &ec2.DescribeInstancesInput{Filters: filters} if err := ec2Client.DescribeInstancesPagesWithContext(ctx, input, func(p *ec2.DescribeInstancesOutput, lastPage bool) bool { for _, r := range p.Reservations { for _, inst := range r.Instances { if inst.PrivateIpAddress == nil { continue } - azID, err := d.azID(ctx, *inst.Placement.AvailabilityZone) - if err != nil { - level.Warn(d.logger).Log( - "msg", "Unable to determine availability zone ID", - "az", *inst.Placement.AvailabilityZone, - "err", err) - } labels := model.LabelSet{ ec2LabelInstanceID: model.LabelValue(*inst.InstanceId), @@ -271,9 +265,14 @@ func (d *EC2Discovery) refresh(ctx context.Context) ([]*targetgroup.Group, error labels[ec2LabelPublicIP] = model.LabelValue(*inst.PublicIpAddress) labels[ec2LabelPublicDNS] = model.LabelValue(*inst.PublicDnsName) } - labels[ec2LabelAMI] = model.LabelValue(*inst.ImageId) labels[ec2LabelAZ] = model.LabelValue(*inst.Placement.AvailabilityZone) + azID, ok := d.azToAZID[*inst.Placement.AvailabilityZone] + if !ok && d.azToAZID != nil { + level.Debug(d.logger).Log( + "msg", "Availability zone ID not found", + "az", *inst.Placement.AvailabilityZone) + } labels[ec2LabelAZID] = model.LabelValue(azID) labels[ec2LabelInstanceState] = model.LabelValue(*inst.State.Name) labels[ec2LabelInstanceType] = model.LabelValue(*inst.InstanceType) diff --git a/discovery/azure/azure.go b/discovery/azure/azure.go index 6de0995ef..b0de0abd8 100644 --- a/discovery/azure/azure.go +++ b/discovery/azure/azure.go @@ -464,7 +464,9 @@ func mapFromVM(vm compute.VirtualMachine) virtualMachine { } } - if vm.VirtualMachineProperties != nil && vm.VirtualMachineProperties.OsProfile != nil { + if vm.VirtualMachineProperties != nil && + vm.VirtualMachineProperties.OsProfile != nil && + vm.VirtualMachineProperties.OsProfile.ComputerName != nil { computerName = *(vm.VirtualMachineProperties.OsProfile.ComputerName) } diff --git a/discovery/consul/consul.go b/discovery/consul/consul.go index 19dc9ecca..16d0d2628 100644 --- a/discovery/consul/consul.go +++ b/discovery/consul/consul.go @@ -199,7 +199,7 @@ func NewDiscovery(conf *SDConfig, logger log.Logger) (*Discovery, error) { logger = log.NewNopLogger() } - wrapper, err := config.NewClientFromConfig(conf.HTTPClientConfig, "consul_sd", config.WithHTTP2Disabled(), config.WithIdleConnTimeout(2*watchTimeout)) + wrapper, err := config.NewClientFromConfig(conf.HTTPClientConfig, "consul_sd", config.WithIdleConnTimeout(2*watchTimeout)) if err != nil { return nil, err } diff --git a/discovery/digitalocean/digitalocean.go b/discovery/digitalocean/digitalocean.go index b887ada04..10f8582eb 100644 --- a/discovery/digitalocean/digitalocean.go +++ b/discovery/digitalocean/digitalocean.go @@ -108,7 +108,7 @@ func NewDiscovery(conf *SDConfig, logger log.Logger) (*Discovery, error) { port: conf.Port, } - rt, err := config.NewRoundTripperFromConfig(conf.HTTPClientConfig, "digitalocean_sd", config.WithHTTP2Disabled()) + rt, err := config.NewRoundTripperFromConfig(conf.HTTPClientConfig, "digitalocean_sd") if err != nil { return nil, err } diff --git a/discovery/eureka/eureka.go b/discovery/eureka/eureka.go index dcfc2be10..110a5d862 100644 --- a/discovery/eureka/eureka.go +++ b/discovery/eureka/eureka.go @@ -118,7 +118,7 @@ type Discovery struct { // NewDiscovery creates a new Eureka discovery for the given role. func NewDiscovery(conf *SDConfig, logger log.Logger) (*Discovery, error) { - rt, err := config.NewRoundTripperFromConfig(conf.HTTPClientConfig, "eureka_sd", config.WithHTTP2Disabled()) + rt, err := config.NewRoundTripperFromConfig(conf.HTTPClientConfig, "eureka_sd") if err != nil { return nil, err } diff --git a/discovery/hetzner/hcloud.go b/discovery/hetzner/hcloud.go index 494321fd5..35492e6a0 100644 --- a/discovery/hetzner/hcloud.go +++ b/discovery/hetzner/hcloud.go @@ -64,7 +64,7 @@ func newHcloudDiscovery(conf *SDConfig, logger log.Logger) (*hcloudDiscovery, er port: conf.Port, } - rt, err := config.NewRoundTripperFromConfig(conf.HTTPClientConfig, "hetzner_sd", config.WithHTTP2Disabled()) + rt, err := config.NewRoundTripperFromConfig(conf.HTTPClientConfig, "hetzner_sd") if err != nil { return nil, err } diff --git a/discovery/hetzner/robot.go b/discovery/hetzner/robot.go index f7079d909..25f04502f 100644 --- a/discovery/hetzner/robot.go +++ b/discovery/hetzner/robot.go @@ -59,7 +59,7 @@ func newRobotDiscovery(conf *SDConfig, logger log.Logger) (*robotDiscovery, erro endpoint: conf.robotEndpoint, } - rt, err := config.NewRoundTripperFromConfig(conf.HTTPClientConfig, "hetzner_sd", config.WithHTTP2Disabled()) + rt, err := config.NewRoundTripperFromConfig(conf.HTTPClientConfig, "hetzner_sd") if err != nil { return nil, err } diff --git a/discovery/http/http.go b/discovery/http/http.go index af2e99939..ee3643fdb 100644 --- a/discovery/http/http.go +++ b/discovery/http/http.go @@ -113,7 +113,7 @@ func NewDiscovery(conf *SDConfig, logger log.Logger) (*Discovery, error) { logger = log.NewNopLogger() } - client, err := config.NewClientFromConfig(conf.HTTPClientConfig, "http", config.WithHTTP2Disabled()) + client, err := config.NewClientFromConfig(conf.HTTPClientConfig, "http") if err != nil { return nil, err } diff --git a/discovery/install/install.go b/discovery/install/install.go index 34ccf3d0f..88cf67ca7 100644 --- a/discovery/install/install.go +++ b/discovery/install/install.go @@ -31,6 +31,7 @@ import ( _ "github.com/prometheus/prometheus/discovery/marathon" // register marathon _ "github.com/prometheus/prometheus/discovery/moby" // register moby _ "github.com/prometheus/prometheus/discovery/openstack" // register openstack + _ "github.com/prometheus/prometheus/discovery/puppetdb" // register puppetdb _ "github.com/prometheus/prometheus/discovery/scaleway" // register scaleway _ "github.com/prometheus/prometheus/discovery/triton" // register triton _ "github.com/prometheus/prometheus/discovery/xds" // register xds diff --git a/discovery/kubernetes/ingress.go b/discovery/kubernetes/ingress.go index 042fa8870..070785f29 100644 --- a/discovery/kubernetes/ingress.go +++ b/discovery/kubernetes/ingress.go @@ -15,11 +15,13 @@ package kubernetes import ( "context" + "strings" "github.com/go-kit/log" "github.com/go-kit/log/level" "github.com/pkg/errors" "github.com/prometheus/common/model" + v1 "k8s.io/api/networking/v1" "k8s.io/api/networking/v1beta1" "k8s.io/client-go/tools/cache" "k8s.io/client-go/util/workqueue" @@ -112,26 +114,24 @@ func (i *Ingress) process(ctx context.Context, ch chan<- []*targetgroup.Group) b send(ctx, ch, &targetgroup.Group{Source: ingressSourceFromNamespaceAndName(namespace, name)}) return true } - eps, err := convertToIngress(o) - if err != nil { - level.Error(i.logger).Log("msg", "converting to Ingress object failed", "err", err) + + var ia ingressAdaptor + switch ingress := o.(type) { + case *v1.Ingress: + ia = newIngressAdaptorFromV1(ingress) + case *v1beta1.Ingress: + ia = newIngressAdaptorFromV1beta1(ingress) + default: + level.Error(i.logger).Log("msg", "converting to Ingress object failed", "err", + errors.Errorf("received unexpected object: %v", o)) return true } - send(ctx, ch, i.buildIngress(eps)) + send(ctx, ch, i.buildIngress(ia)) return true } -func convertToIngress(o interface{}) (*v1beta1.Ingress, error) { - ingress, ok := o.(*v1beta1.Ingress) - if ok { - return ingress, nil - } - - return nil, errors.Errorf("received unexpected object: %v", o) -} - -func ingressSource(s *v1beta1.Ingress) string { - return ingressSourceFromNamespaceAndName(s.Namespace, s.Name) +func ingressSource(s ingressAdaptor) string { + return ingressSourceFromNamespaceAndName(s.namespace(), s.name()) } func ingressSourceFromNamespaceAndName(namespace, name string) string { @@ -150,22 +150,22 @@ const ( ingressClassNameLabel = metaLabelPrefix + "ingress_class_name" ) -func ingressLabels(ingress *v1beta1.Ingress) model.LabelSet { +func ingressLabels(ingress ingressAdaptor) model.LabelSet { // Each label and annotation will create two key-value pairs in the map. - ls := make(model.LabelSet, 2*(len(ingress.Labels)+len(ingress.Annotations))+2) - ls[ingressNameLabel] = lv(ingress.Name) - ls[namespaceLabel] = lv(ingress.Namespace) - if ingress.Spec.IngressClassName != nil { - ls[ingressClassNameLabel] = lv(*ingress.Spec.IngressClassName) + ls := make(model.LabelSet, 2*(len(ingress.labels())+len(ingress.annotations()))+2) + ls[ingressNameLabel] = lv(ingress.name()) + ls[namespaceLabel] = lv(ingress.namespace()) + if cls := ingress.ingressClassName(); cls != nil { + ls[ingressClassNameLabel] = lv(*cls) } - for k, v := range ingress.Labels { + for k, v := range ingress.labels() { ln := strutil.SanitizeLabelName(k) ls[model.LabelName(ingressLabelPrefix+ln)] = lv(v) ls[model.LabelName(ingressLabelPresentPrefix+ln)] = presentValue } - for k, v := range ingress.Annotations { + for k, v := range ingress.annotations() { ln := strutil.SanitizeLabelName(k) ls[model.LabelName(ingressAnnotationPrefix+ln)] = lv(v) ls[model.LabelName(ingressAnnotationPresentPrefix+ln)] = presentValue @@ -173,14 +173,14 @@ func ingressLabels(ingress *v1beta1.Ingress) model.LabelSet { return ls } -func pathsFromIngressRule(rv *v1beta1.IngressRuleValue) []string { - if rv.HTTP == nil { +func pathsFromIngressPaths(ingressPaths []string) []string { + if ingressPaths == nil { return []string{"/"} } - paths := make([]string, len(rv.HTTP.Paths)) - for n, p := range rv.HTTP.Paths { - path := p.Path - if path == "" { + paths := make([]string, len(ingressPaths)) + for n, p := range ingressPaths { + path := p + if p == "" { path = "/" } paths[n] = path @@ -188,33 +188,29 @@ func pathsFromIngressRule(rv *v1beta1.IngressRuleValue) []string { return paths } -func (i *Ingress) buildIngress(ingress *v1beta1.Ingress) *targetgroup.Group { +func (i *Ingress) buildIngress(ingress ingressAdaptor) *targetgroup.Group { tg := &targetgroup.Group{ Source: ingressSource(ingress), } tg.Labels = ingressLabels(ingress) - tlsHosts := make(map[string]struct{}) - for _, tls := range ingress.Spec.TLS { - for _, host := range tls.Hosts { - tlsHosts[host] = struct{}{} - } - } - - for _, rule := range ingress.Spec.Rules { - paths := pathsFromIngressRule(&rule.IngressRuleValue) - + for _, rule := range ingress.rules() { scheme := "http" - _, isTLS := tlsHosts[rule.Host] - if isTLS { - scheme = "https" + paths := pathsFromIngressPaths(rule.paths()) + + out: + for _, pattern := range ingress.tlsHosts() { + if matchesHostnamePattern(pattern, rule.host()) { + scheme = "https" + break out + } } for _, path := range paths { tg.Targets = append(tg.Targets, model.LabelSet{ - model.AddressLabel: lv(rule.Host), + model.AddressLabel: lv(rule.host()), ingressSchemeLabel: lv(scheme), - ingressHostLabel: lv(rule.Host), + ingressHostLabel: lv(rule.host()), ingressPathLabel: lv(path), }) } @@ -222,3 +218,33 @@ func (i *Ingress) buildIngress(ingress *v1beta1.Ingress) *targetgroup.Group { return tg } + +// matchesHostnamePattern returns true if the host matches a wildcard DNS +// pattern or pattern and host are equal. +func matchesHostnamePattern(pattern, host string) bool { + if pattern == host { + return true + } + + patternParts := strings.Split(pattern, ".") + hostParts := strings.Split(host, ".") + + // If the first element of the pattern is not a wildcard, give up. + if len(patternParts) == 0 || patternParts[0] != "*" { + return false + } + + // A wildcard match require the pattern to have the same length as the host + // path. + if len(patternParts) != len(hostParts) { + return false + } + + for i := 1; i < len(patternParts); i++ { + if patternParts[i] != hostParts[i] { + return false + } + } + + return true +} diff --git a/discovery/kubernetes/ingress_adaptor.go b/discovery/kubernetes/ingress_adaptor.go new file mode 100644 index 000000000..113a067ca --- /dev/null +++ b/discovery/kubernetes/ingress_adaptor.go @@ -0,0 +1,141 @@ +// Copyright 2016 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package kubernetes + +import ( + v1 "k8s.io/api/networking/v1" + "k8s.io/api/networking/v1beta1" +) + +// ingressAdaptor is an adaptor for the different Ingress versions +type ingressAdaptor interface { + name() string + namespace() string + labels() map[string]string + annotations() map[string]string + tlsHosts() []string + ingressClassName() *string + rules() []ingressRuleAdaptor +} + +type ingressRuleAdaptor interface { + paths() []string + host() string +} + +// Adaptor for networking.k8s.io/v1 +type ingressAdaptorV1 struct { + ingress *v1.Ingress +} + +func newIngressAdaptorFromV1(ingress *v1.Ingress) ingressAdaptor { + return &ingressAdaptorV1{ingress: ingress} +} + +func (i *ingressAdaptorV1) name() string { return i.ingress.Name } +func (i *ingressAdaptorV1) namespace() string { return i.ingress.Namespace } +func (i *ingressAdaptorV1) labels() map[string]string { return i.ingress.Labels } +func (i *ingressAdaptorV1) annotations() map[string]string { return i.ingress.Annotations } +func (i *ingressAdaptorV1) ingressClassName() *string { return i.ingress.Spec.IngressClassName } + +func (i *ingressAdaptorV1) tlsHosts() []string { + var hosts []string + for _, tls := range i.ingress.Spec.TLS { + hosts = append(hosts, tls.Hosts...) + } + return hosts +} + +func (i *ingressAdaptorV1) rules() []ingressRuleAdaptor { + var rules []ingressRuleAdaptor + for _, rule := range i.ingress.Spec.Rules { + rules = append(rules, newIngressRuleAdaptorFromV1(rule)) + } + return rules +} + +type ingressRuleAdaptorV1 struct { + rule v1.IngressRule +} + +func newIngressRuleAdaptorFromV1(rule v1.IngressRule) ingressRuleAdaptor { + return &ingressRuleAdaptorV1{rule: rule} +} + +func (i *ingressRuleAdaptorV1) paths() []string { + rv := i.rule.IngressRuleValue + if rv.HTTP == nil { + return nil + } + paths := make([]string, len(rv.HTTP.Paths)) + for n, p := range rv.HTTP.Paths { + paths[n] = p.Path + } + return paths +} + +func (i *ingressRuleAdaptorV1) host() string { return i.rule.Host } + +// Adaptor for networking.k8s.io/v1beta1 +type ingressAdaptorV1Beta1 struct { + ingress *v1beta1.Ingress +} + +func newIngressAdaptorFromV1beta1(ingress *v1beta1.Ingress) ingressAdaptor { + return &ingressAdaptorV1Beta1{ingress: ingress} +} + +func (i *ingressAdaptorV1Beta1) name() string { return i.ingress.Name } +func (i *ingressAdaptorV1Beta1) namespace() string { return i.ingress.Namespace } +func (i *ingressAdaptorV1Beta1) labels() map[string]string { return i.ingress.Labels } +func (i *ingressAdaptorV1Beta1) annotations() map[string]string { return i.ingress.Annotations } +func (i *ingressAdaptorV1Beta1) ingressClassName() *string { return i.ingress.Spec.IngressClassName } + +func (i *ingressAdaptorV1Beta1) tlsHosts() []string { + var hosts []string + for _, tls := range i.ingress.Spec.TLS { + hosts = append(hosts, tls.Hosts...) + } + return hosts +} + +func (i *ingressAdaptorV1Beta1) rules() []ingressRuleAdaptor { + var rules []ingressRuleAdaptor + for _, rule := range i.ingress.Spec.Rules { + rules = append(rules, newIngressRuleAdaptorFromV1Beta1(rule)) + } + return rules +} + +type ingressRuleAdaptorV1Beta1 struct { + rule v1beta1.IngressRule +} + +func newIngressRuleAdaptorFromV1Beta1(rule v1beta1.IngressRule) ingressRuleAdaptor { + return &ingressRuleAdaptorV1Beta1{rule: rule} +} + +func (i *ingressRuleAdaptorV1Beta1) paths() []string { + rv := i.rule.IngressRuleValue + if rv.HTTP == nil { + return nil + } + paths := make([]string, len(rv.HTTP.Paths)) + for n, p := range rv.HTTP.Paths { + paths[n] = p.Path + } + return paths +} + +func (i *ingressRuleAdaptorV1Beta1) host() string { return i.rule.Host } diff --git a/discovery/kubernetes/ingress_test.go b/discovery/kubernetes/ingress_test.go index 5ae5d4980..81055b5c2 100644 --- a/discovery/kubernetes/ingress_test.go +++ b/discovery/kubernetes/ingress_test.go @@ -19,6 +19,7 @@ import ( "testing" "github.com/prometheus/common/model" + v1 "k8s.io/api/networking/v1" "k8s.io/api/networking/v1beta1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -31,9 +32,64 @@ const ( TLSNo TLSMode = iota TLSYes TLSMixed + TLSWildcard ) -func makeIngress(tls TLSMode) *v1beta1.Ingress { +func makeIngress(tls TLSMode) *v1.Ingress { + ret := &v1.Ingress{ + ObjectMeta: metav1.ObjectMeta{ + Name: "testingress", + Namespace: "default", + Labels: map[string]string{"test/label": "testvalue"}, + Annotations: map[string]string{"test/annotation": "testannotationvalue"}, + }, + Spec: v1.IngressSpec{ + IngressClassName: classString("testclass"), + TLS: nil, + Rules: []v1.IngressRule{ + { + Host: "example.com", + IngressRuleValue: v1.IngressRuleValue{ + HTTP: &v1.HTTPIngressRuleValue{ + Paths: []v1.HTTPIngressPath{ + {Path: "/"}, + {Path: "/foo"}, + }, + }, + }, + }, + { + // No backend config, ignored + Host: "nobackend.example.com", + IngressRuleValue: v1.IngressRuleValue{ + HTTP: &v1.HTTPIngressRuleValue{}, + }, + }, + { + Host: "test.example.com", + IngressRuleValue: v1.IngressRuleValue{ + HTTP: &v1.HTTPIngressRuleValue{ + Paths: []v1.HTTPIngressPath{{}}, + }, + }, + }, + }, + }, + } + + switch tls { + case TLSYes: + ret.Spec.TLS = []v1.IngressTLS{{Hosts: []string{"example.com", "test.example.com"}}} + case TLSMixed: + ret.Spec.TLS = []v1.IngressTLS{{Hosts: []string{"example.com"}}} + case TLSWildcard: + ret.Spec.TLS = []v1.IngressTLS{{Hosts: []string{"*.example.com"}}} + } + + return ret +} + +func makeIngressV1beta1(tls TLSMode) *v1beta1.Ingress { ret := &v1beta1.Ingress{ ObjectMeta: metav1.ObjectMeta{ Name: "testingress", @@ -80,6 +136,8 @@ func makeIngress(tls TLSMode) *v1beta1.Ingress { ret.Spec.TLS = []v1beta1.IngressTLS{{Hosts: []string{"example.com", "test.example.com"}}} case TLSMixed: ret.Spec.TLS = []v1beta1.IngressTLS{{Hosts: []string{"example.com"}}} + case TLSWildcard: + ret.Spec.TLS = []v1beta1.IngressTLS{{Hosts: []string{"*.example.com"}}} } return ret @@ -99,6 +157,8 @@ func expectedTargetGroups(ns string, tls TLSMode) map[string]*targetgroup.Group scheme2 = "https" case TLSMixed: scheme1 = "https" + case TLSWildcard: + scheme2 = "https" } key := fmt.Sprintf("ingress/%s/testingress", ns) @@ -145,6 +205,20 @@ func TestIngressDiscoveryAdd(t *testing.T) { discovery: n, afterStart: func() { obj := makeIngress(TLSNo) + c.NetworkingV1().Ingresses("default").Create(context.Background(), obj, metav1.CreateOptions{}) + }, + expectedMaxItems: 1, + expectedRes: expectedTargetGroups("default", TLSNo), + }.Run(t) +} + +func TestIngressDiscoveryAddV1beta1(t *testing.T) { + n, c := makeDiscoveryWithVersion(RoleIngress, NamespaceDiscovery{Names: []string{"default"}}, "v1.18.0") + + k8sDiscoveryTest{ + discovery: n, + afterStart: func() { + obj := makeIngressV1beta1(TLSNo) c.NetworkingV1beta1().Ingresses("default").Create(context.Background(), obj, metav1.CreateOptions{}) }, expectedMaxItems: 1, @@ -159,6 +233,20 @@ func TestIngressDiscoveryAddTLS(t *testing.T) { discovery: n, afterStart: func() { obj := makeIngress(TLSYes) + c.NetworkingV1().Ingresses("default").Create(context.Background(), obj, metav1.CreateOptions{}) + }, + expectedMaxItems: 1, + expectedRes: expectedTargetGroups("default", TLSYes), + }.Run(t) +} + +func TestIngressDiscoveryAddTLSV1beta1(t *testing.T) { + n, c := makeDiscoveryWithVersion(RoleIngress, NamespaceDiscovery{Names: []string{"default"}}, "v1.18.0") + + k8sDiscoveryTest{ + discovery: n, + afterStart: func() { + obj := makeIngressV1beta1(TLSYes) c.NetworkingV1beta1().Ingresses("default").Create(context.Background(), obj, metav1.CreateOptions{}) }, expectedMaxItems: 1, @@ -173,6 +261,20 @@ func TestIngressDiscoveryAddMixed(t *testing.T) { discovery: n, afterStart: func() { obj := makeIngress(TLSMixed) + c.NetworkingV1().Ingresses("default").Create(context.Background(), obj, metav1.CreateOptions{}) + }, + expectedMaxItems: 1, + expectedRes: expectedTargetGroups("default", TLSMixed), + }.Run(t) +} + +func TestIngressDiscoveryAddMixedV1beta1(t *testing.T) { + n, c := makeDiscoveryWithVersion(RoleIngress, NamespaceDiscovery{Names: []string{"default"}}, "v1.18.0") + + k8sDiscoveryTest{ + discovery: n, + afterStart: func() { + obj := makeIngressV1beta1(TLSMixed) c.NetworkingV1beta1().Ingresses("default").Create(context.Background(), obj, metav1.CreateOptions{}) }, expectedMaxItems: 1, @@ -193,6 +295,27 @@ func TestIngressDiscoveryNamespaces(t *testing.T) { for _, ns := range []string{"ns1", "ns2"} { obj := makeIngress(TLSNo) obj.Namespace = ns + c.NetworkingV1().Ingresses(obj.Namespace).Create(context.Background(), obj, metav1.CreateOptions{}) + } + }, + expectedMaxItems: 2, + expectedRes: expected, + }.Run(t) +} + +func TestIngressDiscoveryNamespacesV1beta1(t *testing.T) { + n, c := makeDiscoveryWithVersion(RoleIngress, NamespaceDiscovery{Names: []string{"ns1", "ns2"}}, "v1.18.0") + + expected := expectedTargetGroups("ns1", TLSNo) + for k, v := range expectedTargetGroups("ns2", TLSNo) { + expected[k] = v + } + k8sDiscoveryTest{ + discovery: n, + afterStart: func() { + for _, ns := range []string{"ns1", "ns2"} { + obj := makeIngressV1beta1(TLSNo) + obj.Namespace = ns c.NetworkingV1beta1().Ingresses(obj.Namespace).Create(context.Background(), obj, metav1.CreateOptions{}) } }, diff --git a/discovery/kubernetes/kubernetes.go b/discovery/kubernetes/kubernetes.go index ef3e8e6a1..a87203e4e 100644 --- a/discovery/kubernetes/kubernetes.go +++ b/discovery/kubernetes/kubernetes.go @@ -30,11 +30,13 @@ import ( "github.com/prometheus/common/version" apiv1 "k8s.io/api/core/v1" disv1beta1 "k8s.io/api/discovery/v1beta1" + networkv1 "k8s.io/api/networking/v1" "k8s.io/api/networking/v1beta1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/fields" "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/runtime" + utilversion "k8s.io/apimachinery/pkg/util/version" "k8s.io/apimachinery/pkg/watch" "k8s.io/client-go/kubernetes" "k8s.io/client-go/rest" @@ -281,7 +283,7 @@ func New(l log.Logger, conf *SDConfig) (*Discovery, error) { } level.Info(l).Log("msg", "Using pod service account via in-cluster config") } else { - rt, err := config.NewRoundTripperFromConfig(conf.HTTPClientConfig, "kubernetes_sd", config.WithHTTP2Disabled()) + rt, err := config.NewRoundTripperFromConfig(conf.HTTPClientConfig, "kubernetes_sd") if err != nil { return nil, err } @@ -491,23 +493,58 @@ func (d *Discovery) Run(ctx context.Context, ch chan<- []*targetgroup.Group) { go svc.informer.Run(ctx.Done()) } case RoleIngress: + // Check "networking.k8s.io/v1" availability with retries. + // If "v1" is not avaiable, use "networking.k8s.io/v1beta1" for backward compatibility + var v1Supported bool + if retryOnError(ctx, 10*time.Second, + func() (err error) { + v1Supported, err = checkNetworkingV1Supported(d.client) + if err != nil { + level.Error(d.logger).Log("msg", "Failed to check networking.k8s.io/v1 availability", "err", err) + } + return err + }, + ) { + d.Unlock() + return + } + for _, namespace := range namespaces { - i := d.client.NetworkingV1beta1().Ingresses(namespace) - ilw := &cache.ListWatch{ - ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { - options.FieldSelector = d.selectors.ingress.field - options.LabelSelector = d.selectors.ingress.label - return i.List(ctx, options) - }, - WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { - options.FieldSelector = d.selectors.ingress.field - options.LabelSelector = d.selectors.ingress.label - return i.Watch(ctx, options) - }, + var informer cache.SharedInformer + if v1Supported { + i := d.client.NetworkingV1().Ingresses(namespace) + ilw := &cache.ListWatch{ + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { + options.FieldSelector = d.selectors.ingress.field + options.LabelSelector = d.selectors.ingress.label + return i.List(ctx, options) + }, + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { + options.FieldSelector = d.selectors.ingress.field + options.LabelSelector = d.selectors.ingress.label + return i.Watch(ctx, options) + }, + } + informer = cache.NewSharedInformer(ilw, &networkv1.Ingress{}, resyncPeriod) + } else { + i := d.client.NetworkingV1beta1().Ingresses(namespace) + ilw := &cache.ListWatch{ + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { + options.FieldSelector = d.selectors.ingress.field + options.LabelSelector = d.selectors.ingress.label + return i.List(ctx, options) + }, + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { + options.FieldSelector = d.selectors.ingress.field + options.LabelSelector = d.selectors.ingress.label + return i.Watch(ctx, options) + }, + } + informer = cache.NewSharedInformer(ilw, &v1beta1.Ingress{}, resyncPeriod) } ingress := NewIngress( log.With(d.logger, "role", "ingress"), - cache.NewSharedInformer(ilw, &v1beta1.Ingress{}, resyncPeriod), + informer, ) d.discoverers = append(d.discoverers, ingress) go ingress.informer.Run(ctx.Done()) @@ -563,3 +600,33 @@ func send(ctx context.Context, ch chan<- []*targetgroup.Group, tg *targetgroup.G case ch <- []*targetgroup.Group{tg}: } } + +func retryOnError(ctx context.Context, interval time.Duration, f func() error) (canceled bool) { + var err error + err = f() + for { + if err == nil { + return false + } + select { + case <-ctx.Done(): + return true + case <-time.After(interval): + err = f() + } + } +} + +func checkNetworkingV1Supported(client kubernetes.Interface) (bool, error) { + k8sVer, err := client.Discovery().ServerVersion() + if err != nil { + return false, err + } + semVer, err := utilversion.ParseSemantic(k8sVer.String()) + if err != nil { + return false, err + } + // networking.k8s.io/v1 is available since Kubernetes v1.19 + // https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.19.md + return semVer.Major() >= 1 && semVer.Minor() >= 19, nil +} diff --git a/discovery/kubernetes/kubernetes_test.go b/discovery/kubernetes/kubernetes_test.go index 44a6c1b29..e1ca23402 100644 --- a/discovery/kubernetes/kubernetes_test.go +++ b/discovery/kubernetes/kubernetes_test.go @@ -20,8 +20,11 @@ import ( "time" "github.com/go-kit/log" + "github.com/pkg/errors" "github.com/stretchr/testify/require" "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/version" + fakediscovery "k8s.io/client-go/discovery/fake" "k8s.io/client-go/kubernetes" "k8s.io/client-go/kubernetes/fake" "k8s.io/client-go/tools/cache" @@ -37,7 +40,14 @@ func TestMain(m *testing.M) { // makeDiscovery creates a kubernetes.Discovery instance for testing. func makeDiscovery(role Role, nsDiscovery NamespaceDiscovery, objects ...runtime.Object) (*Discovery, kubernetes.Interface) { + return makeDiscoveryWithVersion(role, nsDiscovery, "v1.22.0", objects...) +} + +// makeDiscoveryWithVersion creates a kubernetes.Discovery instance with the specified kubernetes version for testing. +func makeDiscoveryWithVersion(role Role, nsDiscovery NamespaceDiscovery, k8sVer string, objects ...runtime.Object) (*Discovery, kubernetes.Interface) { clientset := fake.NewSimpleClientset(objects...) + fakeDiscovery, _ := clientset.Discovery().(*fakediscovery.FakeDiscovery) + fakeDiscovery.FakedServerVersion = &version.Info{GitVersion: k8sVer} return &Discovery{ client: clientset, @@ -205,3 +215,52 @@ func (p *Pod) hasSynced() bool { func (s *Service) hasSynced() bool { return s.informer.HasSynced() } + +func TestRetryOnError(t *testing.T) { + for _, successAt := range []int{1, 2, 3} { + var called int + f := func() error { + called++ + if called >= successAt { + return nil + } + return errors.New("dummy") + } + retryOnError(context.TODO(), 0, f) + require.Equal(t, successAt, called) + } +} + +func TestCheckNetworkingV1Supported(t *testing.T) { + tests := []struct { + version string + wantSupported bool + wantErr bool + }{ + {version: "v1.18.0", wantSupported: false, wantErr: false}, + {version: "v1.18.1", wantSupported: false, wantErr: false}, + // networking v1 is supported since Kubernetes v1.19 + {version: "v1.19.0", wantSupported: true, wantErr: false}, + {version: "v1.20.0-beta.2", wantSupported: true, wantErr: false}, + // error patterns + {version: "", wantSupported: false, wantErr: true}, + {version: "<>", wantSupported: false, wantErr: true}, + } + + for _, tc := range tests { + tc := tc + t.Run(tc.version, func(t *testing.T) { + clientset := fake.NewSimpleClientset() + fakeDiscovery, _ := clientset.Discovery().(*fakediscovery.FakeDiscovery) + fakeDiscovery.FakedServerVersion = &version.Info{GitVersion: tc.version} + supported, err := checkNetworkingV1Supported(clientset) + + if tc.wantErr { + require.Error(t, err) + } else { + require.NoError(t, err) + } + require.Equal(t, tc.wantSupported, supported) + }) + } +} diff --git a/discovery/linode/linode.go b/discovery/linode/linode.go index 21c856857..fad2a74f1 100644 --- a/discovery/linode/linode.go +++ b/discovery/linode/linode.go @@ -132,7 +132,7 @@ func NewDiscovery(conf *SDConfig, logger log.Logger) (*Discovery, error) { eventPollingEnabled: true, } - rt, err := config.NewRoundTripperFromConfig(conf.HTTPClientConfig, "linode_sd", config.WithHTTP2Disabled()) + rt, err := config.NewRoundTripperFromConfig(conf.HTTPClientConfig, "linode_sd") if err != nil { return nil, err } diff --git a/discovery/marathon/marathon.go b/discovery/marathon/marathon.go index 586245bc4..30c32bb5d 100644 --- a/discovery/marathon/marathon.go +++ b/discovery/marathon/marathon.go @@ -131,7 +131,7 @@ type Discovery struct { // NewDiscovery returns a new Marathon Discovery. func NewDiscovery(conf SDConfig, logger log.Logger) (*Discovery, error) { - rt, err := config.NewRoundTripperFromConfig(conf.HTTPClientConfig, "marathon_sd", config.WithHTTP2Disabled()) + rt, err := config.NewRoundTripperFromConfig(conf.HTTPClientConfig, "marathon_sd") if err != nil { return nil, err } diff --git a/discovery/moby/docker.go b/discovery/moby/docker.go index 98dc42acb..deabcdd1e 100644 --- a/discovery/moby/docker.go +++ b/discovery/moby/docker.go @@ -142,7 +142,7 @@ func NewDockerDiscovery(conf *DockerSDConfig, logger log.Logger) (*DockerDiscove // unix, which are not supported by the HTTP client. Passing HTTP client // options to the Docker client makes those non-HTTP requests fail. if hostURL.Scheme == "http" || hostURL.Scheme == "https" { - rt, err := config.NewRoundTripperFromConfig(conf.HTTPClientConfig, "docker_sd", config.WithHTTP2Disabled()) + rt, err := config.NewRoundTripperFromConfig(conf.HTTPClientConfig, "docker_sd") if err != nil { return nil, err } diff --git a/discovery/moby/dockerswarm.go b/discovery/moby/dockerswarm.go index a9eabfd72..371f9d5ed 100644 --- a/discovery/moby/dockerswarm.go +++ b/discovery/moby/dockerswarm.go @@ -146,7 +146,7 @@ func NewDiscovery(conf *DockerSwarmSDConfig, logger log.Logger) (*Discovery, err // unix, which are not supported by the HTTP client. Passing HTTP client // options to the Docker client makes those non-HTTP requests fail. if hostURL.Scheme == "http" || hostURL.Scheme == "https" { - rt, err := config.NewRoundTripperFromConfig(conf.HTTPClientConfig, "dockerswarm_sd", config.WithHTTP2Disabled()) + rt, err := config.NewRoundTripperFromConfig(conf.HTTPClientConfig, "dockerswarm_sd") if err != nil { return nil, err } diff --git a/discovery/puppetdb/fixtures/vhosts.json b/discovery/puppetdb/fixtures/vhosts.json new file mode 100644 index 000000000..5ea7b05a2 --- /dev/null +++ b/discovery/puppetdb/fixtures/vhosts.json @@ -0,0 +1,49 @@ +[ + { + "certname": "edinburgh.example.com", + "environment": "prod", + "exported": false, + "file": "/etc/puppetlabs/code/environments/prod/modules/upstream/apache/manifests/init.pp", + "line": 384, + "parameters": { + "access_log": true, + "access_log_file": "ssl_access_log", + "additional_includes": [ ], + "directoryindex": "", + "docroot": "/var/www/html", + "ensure": "absent", + "options": [ + "Indexes", + "FollowSymLinks", + "MultiViews" + ], + "php_flags": { }, + "labels": { + "alias": "edinburgh" + }, + "scriptaliases": [ + { + "alias": "/cgi-bin", + "path": "/var/www/cgi-bin" + } + ] + }, + "resource": "49af83866dc5a1518968b68e58a25319107afe11", + "tags": [ + "roles::hypervisor", + "apache", + "apache::vhost", + "class", + "default-ssl", + "profile_hypervisor", + "vhost", + "profile_apache", + "hypervisor", + "__node_regexp__edinburgh", + "roles", + "node" + ], + "title": "default-ssl", + "type": "Apache::Vhost" + } +] diff --git a/discovery/puppetdb/puppetdb.go b/discovery/puppetdb/puppetdb.go new file mode 100644 index 000000000..c6e93ebe9 --- /dev/null +++ b/discovery/puppetdb/puppetdb.go @@ -0,0 +1,252 @@ +// Copyright 2021 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package puppetdb + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "io" + "io/ioutil" + "net" + "net/http" + "net/url" + "path" + "regexp" + "strconv" + "strings" + "time" + + "github.com/go-kit/log" + "github.com/pkg/errors" + "github.com/prometheus/common/config" + "github.com/prometheus/common/model" + "github.com/prometheus/common/version" + + "github.com/prometheus/prometheus/discovery" + "github.com/prometheus/prometheus/discovery/refresh" + "github.com/prometheus/prometheus/discovery/targetgroup" +) + +const ( + pdbLabel = model.MetaLabelPrefix + "puppetdb_" + pdbLabelCertname = pdbLabel + "certname" + pdbLabelResource = pdbLabel + "resource" + pdbLabelType = pdbLabel + "type" + pdbLabelTitle = pdbLabel + "title" + pdbLabelExported = pdbLabel + "exported" + pdbLabelTags = pdbLabel + "tags" + pdbLabelFile = pdbLabel + "file" + pdbLabelEnvironment = pdbLabel + "environment" + pdbLabelParameter = pdbLabel + "parameter_" + separator = "," +) + +var ( + // DefaultSDConfig is the default PuppetDB SD configuration. + DefaultSDConfig = SDConfig{ + RefreshInterval: model.Duration(60 * time.Second), + Port: 80, + HTTPClientConfig: config.DefaultHTTPClientConfig, + } + matchContentType = regexp.MustCompile(`^(?i:application\/json(;\s*charset=("utf-8"|utf-8))?)$`) + userAgent = fmt.Sprintf("Prometheus/%s", version.Version) +) + +func init() { + discovery.RegisterConfig(&SDConfig{}) +} + +// SDConfig is the configuration for PuppetDB based discovery. +type SDConfig struct { + HTTPClientConfig config.HTTPClientConfig `yaml:",inline"` + RefreshInterval model.Duration `yaml:"refresh_interval,omitempty"` + URL string `yaml:"url"` + Query string `yaml:"query"` + IncludeParameters bool `yaml:"include_parameters"` + Port int `yaml:"port"` +} + +// Name returns the name of the Config. +func (*SDConfig) Name() string { return "puppetdb" } + +// NewDiscoverer returns a Discoverer for the Config. +func (c *SDConfig) NewDiscoverer(opts discovery.DiscovererOptions) (discovery.Discoverer, error) { + return NewDiscovery(c, opts.Logger) +} + +// SetDirectory joins any relative file paths with dir. +func (c *SDConfig) SetDirectory(dir string) { + c.HTTPClientConfig.SetDirectory(dir) +} + +// UnmarshalYAML implements the yaml.Unmarshaler interface. +func (c *SDConfig) UnmarshalYAML(unmarshal func(interface{}) error) error { + *c = DefaultSDConfig + type plain SDConfig + err := unmarshal((*plain)(c)) + if err != nil { + return err + } + if c.URL == "" { + return fmt.Errorf("URL is missing") + } + parsedURL, err := url.Parse(c.URL) + if err != nil { + return err + } + if parsedURL.Scheme != "http" && parsedURL.Scheme != "https" { + return fmt.Errorf("URL scheme must be 'http' or 'https'") + } + if parsedURL.Host == "" { + return fmt.Errorf("host is missing in URL") + } + if c.Query == "" { + return fmt.Errorf("query missing") + } + return nil +} + +// Discovery provides service discovery functionality based +// on PuppetDB resources. +type Discovery struct { + *refresh.Discovery + url string + query string + port int + includeParameters bool + client *http.Client +} + +// NewDiscovery returns a new PuppetDB discovery for the given config. +func NewDiscovery(conf *SDConfig, logger log.Logger) (*Discovery, error) { + if logger == nil { + logger = log.NewNopLogger() + } + + client, err := config.NewClientFromConfig(conf.HTTPClientConfig, "http") + if err != nil { + return nil, err + } + client.Timeout = time.Duration(conf.RefreshInterval) + + u, err := url.Parse(conf.URL) + if err != nil { + return nil, err + } + u.Path = path.Join(u.Path, "pdb/query/v4") + + d := &Discovery{ + url: u.String(), + port: conf.Port, + query: conf.Query, + includeParameters: conf.IncludeParameters, + client: client, + } + + d.Discovery = refresh.NewDiscovery( + logger, + "http", + time.Duration(conf.RefreshInterval), + d.refresh, + ) + return d, nil +} + +func (d *Discovery) refresh(ctx context.Context) ([]*targetgroup.Group, error) { + body := struct { + Query string `json:"query"` + }{d.query} + bodyBytes, err := json.Marshal(body) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", d.url, bytes.NewBuffer(bodyBytes)) + if err != nil { + return nil, err + } + req.Header.Set("User-Agent", userAgent) + req.Header.Set("Accept", "application/json") + req.Header.Set("Content-Type", "application/json") + + resp, err := d.client.Do(req.WithContext(ctx)) + if err != nil { + return nil, err + } + defer func() { + io.Copy(ioutil.Discard, resp.Body) + resp.Body.Close() + }() + + if resp.StatusCode != http.StatusOK { + return nil, errors.Errorf("server returned HTTP status %s", resp.Status) + } + + if ct := resp.Header.Get("Content-Type"); !matchContentType.MatchString(ct) { + return nil, errors.Errorf("unsupported content type %s", resp.Header.Get("Content-Type")) + } + + b, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nil, err + } + + var resources []Resource + + if err := json.Unmarshal(b, &resources); err != nil { + return nil, err + } + + tg := &targetgroup.Group{ + // Use a pseudo-URL as source. + Source: d.url + "?query=" + d.query, + } + + for _, resource := range resources { + labels := model.LabelSet{ + pdbLabelCertname: model.LabelValue(resource.Certname), + pdbLabelResource: model.LabelValue(resource.Resource), + pdbLabelType: model.LabelValue(resource.Type), + pdbLabelTitle: model.LabelValue(resource.Title), + pdbLabelExported: model.LabelValue(fmt.Sprintf("%t", resource.Exported)), + pdbLabelFile: model.LabelValue(resource.File), + pdbLabelEnvironment: model.LabelValue(resource.Environment), + } + + addr := net.JoinHostPort(resource.Certname, strconv.FormatUint(uint64(d.port), 10)) + labels[model.AddressLabel] = model.LabelValue(addr) + + if len(resource.Tags) > 0 { + // We surround the separated list with the separator as well. This way regular expressions + // in relabeling rules don't have to consider tag positions. + tags := separator + strings.Join(resource.Tags, separator) + separator + labels[pdbLabelTags] = model.LabelValue(tags) + } + + // Parameters are not included by default. This should only be enabled + // on select resources as it might expose secrets on the Prometheus UI + // for certain resources. + if d.includeParameters { + for k, v := range resource.Parameters.toLabels() { + labels[pdbLabelParameter+k] = v + } + } + + tg.Targets = append(tg.Targets, labels) + } + + return []*targetgroup.Group{tg}, nil +} diff --git a/discovery/puppetdb/puppetdb_test.go b/discovery/puppetdb/puppetdb_test.go new file mode 100644 index 000000000..3fcfab549 --- /dev/null +++ b/discovery/puppetdb/puppetdb_test.go @@ -0,0 +1,195 @@ +// Copyright 2021 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package puppetdb + +import ( + "context" + "encoding/json" + "fmt" + "net/http" + "net/http/httptest" + "testing" + "time" + + "github.com/go-kit/log" + "github.com/prometheus/common/config" + "github.com/prometheus/common/model" + "github.com/prometheus/prometheus/discovery/targetgroup" + "github.com/stretchr/testify/require" +) + +func mockServer(t *testing.T) *httptest.Server { + ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + var request struct { + Query string `json:"query"` + } + err := json.NewDecoder(r.Body).Decode(&request) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + http.ServeFile(w, r, "fixtures/"+request.Query+".json") + })) + t.Cleanup(ts.Close) + return ts +} + +func TestPuppetSlashInURL(t *testing.T) { + tests := map[string]string{ + "https://puppetserver": "https://puppetserver/pdb/query/v4", + "https://puppetserver/": "https://puppetserver/pdb/query/v4", + "http://puppetserver:8080/": "http://puppetserver:8080/pdb/query/v4", + "http://puppetserver:8080": "http://puppetserver:8080/pdb/query/v4", + } + + for serverURL, apiURL := range tests { + cfg := SDConfig{ + HTTPClientConfig: config.DefaultHTTPClientConfig, + URL: serverURL, + Query: "vhosts", // This is not a valid PuppetDB query, but it is used by the mock. + Port: 80, + RefreshInterval: model.Duration(30 * time.Second), + } + d, err := NewDiscovery(&cfg, log.NewNopLogger()) + require.NoError(t, err) + require.Equal(t, apiURL, d.url) + } +} + +func TestPuppetDBRefresh(t *testing.T) { + ts := mockServer(t) + + cfg := SDConfig{ + HTTPClientConfig: config.DefaultHTTPClientConfig, + URL: ts.URL, + Query: "vhosts", // This is not a valid PuppetDB query, but it is used by the mock. + Port: 80, + RefreshInterval: model.Duration(30 * time.Second), + } + + d, err := NewDiscovery(&cfg, log.NewNopLogger()) + require.NoError(t, err) + + ctx := context.Background() + tgs, err := d.refresh(ctx) + require.NoError(t, err) + + expectedTargets := []*targetgroup.Group{ + { + Targets: []model.LabelSet{ + { + model.AddressLabel: model.LabelValue("edinburgh.example.com:80"), + model.LabelName("__meta_puppetdb_certname"): model.LabelValue("edinburgh.example.com"), + model.LabelName("__meta_puppetdb_environment"): model.LabelValue("prod"), + model.LabelName("__meta_puppetdb_exported"): model.LabelValue("false"), + model.LabelName("__meta_puppetdb_file"): model.LabelValue("/etc/puppetlabs/code/environments/prod/modules/upstream/apache/manifests/init.pp"), + model.LabelName("__meta_puppetdb_resource"): model.LabelValue("49af83866dc5a1518968b68e58a25319107afe11"), + model.LabelName("__meta_puppetdb_tags"): model.LabelValue(",roles::hypervisor,apache,apache::vhost,class,default-ssl,profile_hypervisor,vhost,profile_apache,hypervisor,__node_regexp__edinburgh,roles,node,"), + model.LabelName("__meta_puppetdb_title"): model.LabelValue("default-ssl"), + model.LabelName("__meta_puppetdb_type"): model.LabelValue("Apache::Vhost"), + }, + }, + Source: ts.URL + "/pdb/query/v4?query=vhosts", + }, + } + require.Equal(t, tgs, expectedTargets) +} + +func TestPuppetDBRefreshWithParameters(t *testing.T) { + ts := mockServer(t) + + cfg := SDConfig{ + HTTPClientConfig: config.DefaultHTTPClientConfig, + URL: ts.URL, + Query: "vhosts", // This is not a valid PuppetDB query, but it is used by the mock. + Port: 80, + IncludeParameters: true, + RefreshInterval: model.Duration(30 * time.Second), + } + + d, err := NewDiscovery(&cfg, log.NewNopLogger()) + require.NoError(t, err) + + ctx := context.Background() + tgs, err := d.refresh(ctx) + require.NoError(t, err) + + expectedTargets := []*targetgroup.Group{ + { + Targets: []model.LabelSet{ + { + model.AddressLabel: model.LabelValue("edinburgh.example.com:80"), + model.LabelName("__meta_puppetdb_certname"): model.LabelValue("edinburgh.example.com"), + model.LabelName("__meta_puppetdb_environment"): model.LabelValue("prod"), + model.LabelName("__meta_puppetdb_exported"): model.LabelValue("false"), + model.LabelName("__meta_puppetdb_file"): model.LabelValue("/etc/puppetlabs/code/environments/prod/modules/upstream/apache/manifests/init.pp"), + model.LabelName("__meta_puppetdb_parameter_access_log"): model.LabelValue("true"), + model.LabelName("__meta_puppetdb_parameter_access_log_file"): model.LabelValue("ssl_access_log"), + model.LabelName("__meta_puppetdb_parameter_docroot"): model.LabelValue("/var/www/html"), + model.LabelName("__meta_puppetdb_parameter_ensure"): model.LabelValue("absent"), + model.LabelName("__meta_puppetdb_parameter_labels_alias"): model.LabelValue("edinburgh"), + model.LabelName("__meta_puppetdb_parameter_options"): model.LabelValue("Indexes,FollowSymLinks,MultiViews"), + model.LabelName("__meta_puppetdb_resource"): model.LabelValue("49af83866dc5a1518968b68e58a25319107afe11"), + model.LabelName("__meta_puppetdb_tags"): model.LabelValue(",roles::hypervisor,apache,apache::vhost,class,default-ssl,profile_hypervisor,vhost,profile_apache,hypervisor,__node_regexp__edinburgh,roles,node,"), + model.LabelName("__meta_puppetdb_title"): model.LabelValue("default-ssl"), + model.LabelName("__meta_puppetdb_type"): model.LabelValue("Apache::Vhost"), + }, + }, + Source: ts.URL + "/pdb/query/v4?query=vhosts", + }, + } + require.Equal(t, tgs, expectedTargets) +} + +func TestPuppetDBInvalidCode(t *testing.T) { + ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(http.StatusBadRequest) + })) + + t.Cleanup(ts.Close) + + cfg := SDConfig{ + HTTPClientConfig: config.DefaultHTTPClientConfig, + URL: ts.URL, + RefreshInterval: model.Duration(30 * time.Second), + } + + d, err := NewDiscovery(&cfg, log.NewNopLogger()) + require.NoError(t, err) + + ctx := context.Background() + _, err = d.refresh(ctx) + require.EqualError(t, err, "server returned HTTP status 400 Bad Request") +} + +func TestPuppetDBInvalidFormat(t *testing.T) { + ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + fmt.Fprintln(w, "{}") + })) + + t.Cleanup(ts.Close) + + cfg := SDConfig{ + HTTPClientConfig: config.DefaultHTTPClientConfig, + URL: ts.URL, + RefreshInterval: model.Duration(30 * time.Second), + } + + d, err := NewDiscovery(&cfg, log.NewNopLogger()) + require.NoError(t, err) + + ctx := context.Background() + _, err = d.refresh(ctx) + require.EqualError(t, err, "unsupported content type text/plain; charset=utf-8") +} diff --git a/discovery/puppetdb/resources.go b/discovery/puppetdb/resources.go new file mode 100644 index 000000000..64b3a781e --- /dev/null +++ b/discovery/puppetdb/resources.go @@ -0,0 +1,82 @@ +// Copyright 2021 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package puppetdb + +import ( + "strconv" + "strings" + + "github.com/prometheus/common/model" + "github.com/prometheus/prometheus/util/strutil" +) + +type Resource struct { + Certname string `json:"certname"` + Resource string `json:"resource"` + Type string `json:"type"` + Title string `json:"title"` + Exported bool `json:"exported"` + Tags []string `json:"tags"` + File string `json:"file"` + Environment string `json:"environment"` + Parameters Parameters `json:"parameters"` +} + +type Parameters map[string]interface{} + +func (p *Parameters) toLabels() model.LabelSet { + labels := model.LabelSet{} + + for k, v := range *p { + var labelValue string + switch value := v.(type) { + case string: + labelValue = value + case bool: + labelValue = strconv.FormatBool(value) + case []string: + labelValue = separator + strings.Join(value, separator) + separator + case []interface{}: + if len(value) == 0 { + continue + } + values := make([]string, len(value)) + for i, v := range value { + switch value := v.(type) { + case string: + values[i] = value + case bool: + values[i] = strconv.FormatBool(value) + case []string: + values[i] = separator + strings.Join(value, separator) + separator + } + } + labelValue = strings.Join(values, separator) + case map[string]interface{}: + subParameter := Parameters(value) + prefix := strutil.SanitizeLabelName(k + "_") + for subk, subv := range subParameter.toLabels() { + labels[model.LabelName(prefix)+subk] = subv + } + default: + continue + } + if labelValue == "" { + continue + } + name := strutil.SanitizeLabelName(k) + labels[model.LabelName(name)] = model.LabelValue(labelValue) + } + return labels +} diff --git a/discovery/scaleway/baremetal.go b/discovery/scaleway/baremetal.go index 066c0b604..9e002b987 100644 --- a/discovery/scaleway/baremetal.go +++ b/discovery/scaleway/baremetal.go @@ -70,7 +70,7 @@ func newBaremetalDiscovery(conf *SDConfig) (*baremetalDiscovery, error) { tagsFilter: conf.TagsFilter, } - rt, err := config.NewRoundTripperFromConfig(conf.HTTPClientConfig, "scaleway_sd", config.WithHTTP2Disabled()) + rt, err := config.NewRoundTripperFromConfig(conf.HTTPClientConfig, "scaleway_sd") if err != nil { return nil, err } diff --git a/discovery/scaleway/instance.go b/discovery/scaleway/instance.go index 8b2603165..a78c5e93c 100644 --- a/discovery/scaleway/instance.go +++ b/discovery/scaleway/instance.go @@ -81,7 +81,7 @@ func newInstanceDiscovery(conf *SDConfig) (*instanceDiscovery, error) { tagsFilter: conf.TagsFilter, } - rt, err := config.NewRoundTripperFromConfig(conf.HTTPClientConfig, "scaleway_sd", config.WithHTTP2Disabled()) + rt, err := config.NewRoundTripperFromConfig(conf.HTTPClientConfig, "scaleway_sd") if err != nil { return nil, err } diff --git a/discovery/xds/client.go b/discovery/xds/client.go index cd8ffb017..05d1ca40c 100644 --- a/discovery/xds/client.go +++ b/discovery/xds/client.go @@ -112,7 +112,7 @@ func NewHTTPResourceClient(conf *HTTPResourceClientConfig, protocolVersion Proto endpointURL.RawQuery = conf.ExtraQueryParams.Encode() } - client, err := config.NewClientFromConfig(conf.HTTPClientConfig, conf.Name, config.WithHTTP2Disabled(), config.WithIdleConnTimeout(conf.Timeout)) + client, err := config.NewClientFromConfig(conf.HTTPClientConfig, conf.Name, config.WithIdleConnTimeout(conf.Timeout)) if err != nil { return nil, err } diff --git a/docs/configuration/configuration.md b/docs/configuration/configuration.md index 36a22d14b..4e2552110 100644 --- a/docs/configuration/configuration.md +++ b/docs/configuration/configuration.md @@ -272,6 +272,10 @@ nerve_sd_configs: openstack_sd_configs: [ - ... ] +# List of PuppetDB service discovery configurations. +puppetdb_sd_configs: + [ - ... ] + # List of Scaleway service discovery configurations. scaleway_sd_configs: [ - ... ] @@ -901,7 +905,7 @@ The following meta labels are available on targets during [relabeling](#relabel_ * `__meta_ec2_ami`: the EC2 Amazon Machine Image * `__meta_ec2_architecture`: the architecture of the instance * `__meta_ec2_availability_zone`: the availability zone in which the instance is running -* `__meta_ec2_availability_zone_id`: the [availability zone ID](https://docs.aws.amazon.com/ram/latest/userguide/working-with-az-ids.html) in which the instance is running +* `__meta_ec2_availability_zone_id`: the [availability zone ID](https://docs.aws.amazon.com/ram/latest/userguide/working-with-az-ids.html) in which the instance is running (requires `ec2:DescribeAvailabilityZones`) * `__meta_ec2_instance_id`: the EC2 instance ID * `__meta_ec2_instance_lifecycle`: the lifecycle of the EC2 instance, set only for 'spot' or 'scheduled' instances, absent otherwise * `__meta_ec2_instance_state`: the state of the EC2 instance @@ -1069,6 +1073,94 @@ tls_config: [ ] ``` +### `` + +PuppetDB SD configurations allow retrieving scrape targets from +[PuppetDB](https://puppet.com/docs/puppetdb/latest/index.html) resources. + +This SD discovers resources and will create a target for each resource returned +by the API. + +The resource address is the `certname` of the resource and can be changed during +[relabeling](#relabel_config). + +The following meta labels are available on targets during [relabeling](#relabel_config): + +* `__meta_puppetdb_certname`: the name of the node associated with the resource +* `__meta_puppetdb_resource`: a SHA-1 hash of the resource’s type, title, and parameters, for identification +* `__meta_puppetdb_type`: the resource type +* `__meta_puppetdb_title`: the resource title +* `__meta_puppetdb_exported`: whether the resource is exported (`"true"` or `"false"`) +* `__meta_puppetdb_tags`: comma separated list of resource tags +* `__meta_puppetdb_file`: the manifest file in which the resource was declared +* `__meta_puppetdb_environment`: the environment of the node associated with the resource +* `__meta_puppetdb_parameter_`: the parameters of the resource + + +See below for the configuration options for PuppetDB discovery: + +```yaml +# The URL of the PuppetDB root query endpoint. +url: + +# Puppet Query Language (PQL) query. Only resources are supported. +# https://puppet.com/docs/puppetdb/latest/api/query/v4/pql.html +query: + +# Whether to include the parameters as meta labels. +# Due to the differences between parameter types and Prometheus labels, +# some parameters might not be rendered. The format of the parameters might +# also change in future releases. +# +# Note: Enabling this exposes parameters in the Prometheus UI and API. Make sure +# that you don't have secrets exposed as parameters if you enable this. +[ include_parameters: | default = false ] + +# Refresh interval to re-read the resources list. +[ refresh_interval: | default = 60s ] + +# The port to scrape metrics from. +[ port: | default = 80 ] + +# TLS configuration to connect to the PuppetDB. +tls_config: + [ ] + +# basic_auth, authorization, and oauth2, are mutually exclusive. + +# Optional HTTP basic authentication information. +basic_auth: + [ username: ] + [ password: ] + [ password_file: ] + +# `Authorization` HTTP header configuration. +authorization: + # Sets the authentication type. + [ type: | default: Bearer ] + # Sets the credentials. It is mutually exclusive with + # `credentials_file`. + [ credentials: ] + # Sets the credentials with the credentials read from the configured file. + # It is mutually exclusive with `credentials`. + [ credentials_file: ] + +# Optional OAuth 2.0 configuration. +# Cannot be used at the same time as basic_auth or authorization. +oauth2: + [ ] + +# Optional proxy URL. +[ proxy_url: ] + +# Configure whether HTTP requests follow HTTP 3xx redirects. +[ follow_redirects: | default = true ] +``` + +See [this example Prometheus configuration file](/documentation/examples/prometheus-puppetdb.yml) +for a detailed example of configuring Prometheus with PuppetDB. + + ### `` File-based service discovery provides a more generic way to configure static targets @@ -1454,6 +1546,29 @@ Available meta labels: * If the endpoints belong to a service, all labels of the `role: service` discovery are attached. * For all targets backed by a pod, all labels of the `role: pod` discovery are attached. +#### `endpointslice` + +The `endpointslice` role discovers targets from existing endpointslices. For each endpoint +address referenced in the endpointslice object one target is discovered. If the endpoint is backed by a pod, all +additional container ports of the pod, not bound to an endpoint port, are discovered as targets as well. + +Available meta labels: +* `__meta_kubernetes_namespace`: The namespace of the endpoints object. +* `__meta_kubernetes_endpointslice_name`: The name of endpointslice object. +* For all targets discovered directly from the endpointslice list (those not additionally inferred + from underlying pods), the following labels are attached: +* `__meta_kubernetes_endpointslice_address_target_kind`: Kind of the referenced object. +* `__meta_kubernetes_endpointslice_address_target_name`: Name of referenced object. +* `__meta_kubernetes_endpointslice_address_type`: The ip protocol family of the adress target. +* `__meta_kubernetes_endpointslice_endpoint_conditions_ready`: Set to `true` or `false` for the referenced endpoint's ready state. +* `__meta_kubernetes_endpointslice_endpoint_topology_kubernetes_io_hostname`: Name of the node hosting the referenced endpoint. +* `__meta_kubernetes_endpointslice_endpoint_topology_present_kubernetes_io_hostname`: Flag that shows if the referenced object has a kubernetes.io/hostname annotation. +* `__meta_kubernetes_endpointslice_port`: Port of the referenced endpoint. +* `__meta_kubernetes_endpointslice_port_name`: Named port of the referenced endpoint. +* `__meta_kubernetes_endpointslice_port_protocol`: Protocol of the referenced endpoint. +* If the endpoints belong to a service, all labels of the `role: service` discovery are attached. +* For all targets backed by a pod, all labels of the `role: pod` discovery are attached. + #### `ingress` The `ingress` role discovers a target for each path of each ingress. @@ -1487,7 +1602,7 @@ See below for the configuration options for Kubernetes discovery: # One of endpoints, service, pod, node, or ingress. role: -# Optional path to a kubeconfig file. +# Optional path to a kubeconfig file. # Note that api_server and kube_config are mutually exclusive. [ kubeconfig_file: ] @@ -1566,7 +1681,7 @@ inside a Prometheus-enabled mesh. The following meta labels are available for each target: -* `__meta_kuma_mesh`: the name of the proxy's Mesh +* `__meta_kuma_mesh`: the name of the proxy's Mesh * `__meta_kuma_dataplane`: the name of the proxy * `__meta_kuma_service`: the name of the proxy's associated Service * `__meta_kuma_label_`: each tag of the proxy @@ -2172,6 +2287,9 @@ it was not set during relabeling. The `__scheme__` and `__metrics_path__` labels are set to the scheme and metrics path of the target respectively. The `__param_` label is set to the value of the first passed URL parameter called ``. +The `__scrape_interval__` and `__scrape_timeout__` labels are set to the target's +interval and timeout. This is **experimental** and could change in the future. + Additional labels prefixed with `__meta_` may be available during the relabeling phase. They are set by the service discovery mechanism that provided the target and vary between mechanisms. @@ -2384,6 +2502,10 @@ nerve_sd_configs: openstack_sd_configs: [ - ... ] +# List of PuppetDB service discovery configurations. +puppetdb_sd_configs: + [ - ... ] + # List of Scaleway service discovery configurations. scaleway_sd_configs: [ - ... ] diff --git a/docs/configuration/recording_rules.md b/docs/configuration/recording_rules.md index ab1f5d32c..8b12632dc 100644 --- a/docs/configuration/recording_rules.md +++ b/docs/configuration/recording_rules.md @@ -78,6 +78,10 @@ name: # How often rules in the group are evaluated. [ interval: | default = global.evaluation_interval ] +# Limit the number of alerts and series individual rules can produce. +# 0 is no limit. +[ limit: | default = 0 ] + rules: [ - ... ] ``` diff --git a/docs/feature_flags.md b/docs/feature_flags.md index e3ab40a64..07424d731 100644 --- a/docs/feature_flags.md +++ b/docs/feature_flags.md @@ -34,7 +34,7 @@ that PromQL does not look ahead of the evaluation time for samples. `--enable-feature=promql-negative-offset` In contrast to the positive offset modifier, the negative offset modifier lets -one shift a vector selector into the future. An example in which one may want +one shift a vector selector into the future. An example in which one may want to use a negative offset is reviewing past data and making temporal comparisons with more recent data. @@ -59,5 +59,15 @@ Exemplar storage is implemented as a fixed size circular buffer that stores exem `--enable-feature=memory-snapshot-on-shutdown` This takes the snapshot of the chunks that are in memory along with the series information when shutting down and stores -it on disk. This will reduce the startup time since the memory state can be restored with this snapshot and m-mapped +it on disk. This will reduce the startup time since the memory state can be restored with this snapshot and m-mapped chunks without the need of WAL replay. + +## Extra Scrape Metrics + +`--enable-feature=extra-scrape-metrics` + +When enabled, for each instance scrape, Prometheus stores a sample in the following additional time series: + +- `scrape_timeout_seconds`. The configured `scrape_timeout` for a target. This allows you to measure each target to find out how close they are to timing out with `scrape_duration_seconds / scrape_timeout_seconds`. +- `scrape_sample_limit`. The configured `sample_limit` for a target. This allows you to measure each target + to find out how close they are to reaching the limit with `scrape_samples_post_metric_relabeling / scrape_sample_limit`. Note that `scrape_sample_limit` can be zero if there is no limit configured, which means that the query above can return `+Inf` for targets with no limit (as we divide by zero). If you want to query only for targets that do have a sample limit use this query: `scrape_samples_post_metric_relabeling / (scrape_sample_limit > 0)`. diff --git a/docs/http_sd.md b/docs/http_sd.md index 8a2bbf18c..ab88886cc 100644 --- a/docs/http_sd.md +++ b/docs/http_sd.md @@ -25,7 +25,7 @@ Here is a table comparing our two generic Service Discovery implementations. ## Requirements of HTTP SD endpoints -If you implement an HTTP SD endpoint, here is a few requirements you should be +If you implement an HTTP SD endpoint, here are a few requirements you should be aware of. The response is consumed as is, unmodified. On each refresh interval (default: 1 @@ -47,7 +47,7 @@ for incremental updates. A Prometheus instance does not send its hostname and it is not possible for a SD endpoint to know if the SD requests is the first one after a restart or not. -The URL to the HTTP SD is not considered secret. The authentication, and any API +The URL to the HTTP SD is not considered secret. The authentication and any API keys should be passed with the appropriate authentication mechanisms. Prometheus supports TLS authentication, basic authentication, OAuth2, and authorization headers. diff --git a/docs/querying/api.md b/docs/querying/api.md index 58d5c11eb..6fa21cc7d 100644 --- a/docs/querying/api.md +++ b/docs/querying/api.md @@ -361,7 +361,7 @@ URL query parameters: - `end=`: End timestamp. ```json -$ curl -g 'http://localhost:9090/api/v1/query_exemplars?query=test_exemplar_metric_total&start=2020-09-14T15:22:25.479Z&end=020-09-14T15:23:25.479Z' +$ curl -g 'http://localhost:9090/api/v1/query_exemplars?query=test_exemplar_metric_total&start=2020-09-14T15:22:25.479Z&end=2020-09-14T15:23:25.479Z' { "status": "success", "data": [ @@ -502,7 +502,9 @@ $ curl http://localhost:9090/api/v1/targets "lastError": "", "lastScrape": "2017-01-17T15:07:44.723715405+01:00", "lastScrapeDuration": 0.050688943, - "health": "up" + "health": "up", + "scrapeInterval": "1m", + "scrapeTimeout": "10s" } ], "droppedTargets": [ @@ -511,6 +513,8 @@ $ curl http://localhost:9090/api/v1/targets "__address__": "127.0.0.1:9100", "__metrics_path__": "/metrics", "__scheme__": "http", + "__scrape_interval__": "1m", + "__scrape_timeout__": "10s", "job": "node" }, } diff --git a/docs/querying/functions.md b/docs/querying/functions.md index 079a1e320..33740ac4a 100644 --- a/docs/querying/functions.md +++ b/docs/querying/functions.md @@ -434,3 +434,26 @@ over time and return an instant vector with per-series aggregation results: Note that all values in the specified interval have the same weight in the aggregation even if the values are not equally spaced throughout the interval. + +## Trigonometric Functions + +The trigonometric functions work in radians: + +- `acos(v instant-vector)`: calculates the arccosine of all elements in `v` ([special cases](https://pkg.go.dev/math#Acos)). +- `acosh(v instant-vector)`: calculates the inverse hyperbolic cosine of all elements in `v` ([special cases](https://pkg.go.dev/math#Acosh)). +- `asin(v instant-vector)`: calculates the arcsine of all elements in `v` ([special cases](https://pkg.go.dev/math#Asin)). +- `asinh(v instant-vector)`: calculates the inverse hyperbolic sine of all elements in `v` ([special cases](https://pkg.go.dev/math#Asinh)). +- `atan(v instant-vector)`: calculates the arctangent of all elements in `v` ([special cases](https://pkg.go.dev/math#Atan)). +- `atanh(v instant-vector)`: calculates the inverse hyperbolic tangent of all elements in `v` ([special cases](https://pkg.go.dev/math#Atanh)). +- `cos(v instant-vector)`: calculates the cosine of all elements in `v` ([special cases](https://pkg.go.dev/math#Cos)). +- `cosh(v instant-vector)`: calculates the hyperbolic cosine of all elements in `v` ([special cases](https://pkg.go.dev/math#Cosh)). +- `sin(v instant-vector)`: calculates the sine of all elements in `v` ([special cases](https://pkg.go.dev/math#Sin)). +- `sinh(v instant-vector)`: calculates the hyperbolic sine of all elements in `v` ([special cases](https://pkg.go.dev/math#Sinh)). +- `tan(v instant-vector)`: calculates the tangent of all elements in `v` ([special cases](https://pkg.go.dev/math#Tan)). +- `tanh(v instant-vector)`: calculates the hyperbolic tangent of all elements in `v` ([special cases](https://pkg.go.dev/math#Tanh)). + +The following are useful for converting between degrees and radians: + +- `deg(v instant-vector)`: converts radians to degrees for all elements in `v`. +- `pi()`: returns pi. +- `rad(v instant-vector)`: converts degrees to radians for all elements in `v`. \ No newline at end of file diff --git a/docs/querying/operators.md b/docs/querying/operators.md index d998d7326..ae6265f6e 100644 --- a/docs/querying/operators.md +++ b/docs/querying/operators.md @@ -40,6 +40,16 @@ grouping labels becoming the output label set. The metric name is dropped. Entri for which no matching entry in the right-hand vector can be found are not part of the result. +### Trigonometric binary operators + +The following trigonometric binary operators, which work in radians, exist in Prometheus: + +* `atan2` (based on https://pkg.go.dev/math#Atan2) + +Trigonometric operators allow trigonometric functions to be executed on two vectors using +vector matching, which isn't available with normal functions. They act in the same manner +as arithmetic operators. + ### Comparison binary operators The following binary comparison operators exist in Prometheus: @@ -264,7 +274,7 @@ The following list shows the precedence of binary operators in Prometheus, from highest to lowest. 1. `^` -2. `*`, `/`, `%` +2. `*`, `/`, `%`, `atan2` 3. `+`, `-` 4. `==`, `!=`, `<=`, `<`, `>=`, `>` 5. `and`, `unless` diff --git a/docs/storage.md b/docs/storage.md index 85193ecf2..a6ad5e798 100644 --- a/docs/storage.md +++ b/docs/storage.md @@ -27,7 +27,7 @@ replayed when the Prometheus server restarts. Write-ahead log files are stored in the `wal` directory in 128MB segments. These files contain raw data that has not yet been compacted; thus they are significantly larger than regular block files. Prometheus will retain a minimum of three write-ahead log files. -High-traffic servers may retain more than three WAL files in order to to keep at +High-traffic servers may retain more than three WAL files in order to keep at least two hours of raw data. A Prometheus server's data directory looks something like this: @@ -82,7 +82,7 @@ Prometheus has several flags that configure local storage. The most important ar * `--storage.tsdb.path`: Where Prometheus writes its database. Defaults to `data/`. * `--storage.tsdb.retention.time`: When to remove old data. Defaults to `15d`. Overrides `storage.tsdb.retention` if this flag is set to anything other than default. -* `--storage.tsdb.retention.size`: The maximum number of bytes of storage blocks to retain. The oldest data will be removed first. Defaults to `0` or disabled. Units supported: B, KB, MB, GB, TB, PB, EB. Ex: "512MB" +* `--storage.tsdb.retention.size`: The maximum number of bytes of storage blocks to retain. The oldest data will be removed first. Defaults to `0` or disabled. Units supported: B, KB, MB, GB, TB, PB, EB. Ex: "512MB". Only the persistent blocks are deleted to honor this retention although WAL and m-mapped chunks are counted in the total size. So the minimum requirement for the disk is the peak space taken by the `wal` (the WAL and Checkpoint) and `chunks_head` (m-mapped Head chunks) directory combined (peaks every 2 hours). * `--storage.tsdb.retention`: Deprecated in favor of `storage.tsdb.retention.time`. * `--storage.tsdb.wal-compression`: Enables compression of the write-ahead log (WAL). Depending on your data, you can expect the WAL size to be halved with little extra cpu load. This flag was introduced in 2.11.0 and enabled by default in 2.20.0. Note that once enabled, downgrading Prometheus to a version below 2.11.0 will require deleting the WAL. diff --git a/documentation/examples/custom-sd/adapter/adapter_test.go b/documentation/examples/custom-sd/adapter/adapter_test.go index 318f03db4..e1223537c 100644 --- a/documentation/examples/custom-sd/adapter/adapter_test.go +++ b/documentation/examples/custom-sd/adapter/adapter_test.go @@ -17,7 +17,6 @@ import ( "context" "io/ioutil" "os" - "reflect" "testing" "github.com/prometheus/common/model" @@ -217,14 +216,7 @@ func TestGenerateTargetGroups(t *testing.T) { for _, testCase := range testCases { result := generateTargetGroups(testCase.targetGroup) - - if !reflect.DeepEqual(result, testCase.expectedCustomSD) { - t.Errorf("%q failed\ngot: %#v\nexpected: %v", - testCase.title, - result, - testCase.expectedCustomSD) - } - + require.Equal(t, testCase.expectedCustomSD, result) } } diff --git a/documentation/examples/prometheus-puppetdb.yml b/documentation/examples/prometheus-puppetdb.yml new file mode 100644 index 000000000..f7f4313e7 --- /dev/null +++ b/documentation/examples/prometheus-puppetdb.yml @@ -0,0 +1,40 @@ +# Prometheus example configuration to be used with PuppetDB. + +scrape_configs: + - job_name: 'puppetdb-node-exporter' + puppetdb_sd_configs: + # This example discovers the nodes which have the class Prometheus::Node_exporter. + - url: https://puppetdb.example.com + query: 'resources { type = "Class" and title = "Prometheus::Node_exporter" }' + port: 9100 + tls_config: + cert_file: prometheus-public.pem + key_file: prometheus-private.pem + ca_file: ca.pem + + - job_name: 'puppetdb-scrape-jobs' + puppetdb_sd_configs: + # This example uses the Prometheus::Scrape_job + # exported resources. + # https://github.com/camptocamp/prometheus-puppetdb-sd + # This examples is compatible with Prometheus-puppetdb-sd, + # if the exported Prometheus::Scrape_job only have at most one target. + - url: https://puppetdb.example.com + query: 'resources { type = "Prometheus::Scrape_job" and exported = true }' + include_parameters: true + tls_config: + cert_file: prometheus-public.pem + key_file: prometheus-private.pem + ca_file: ca.pem + relabel_configs: + - source_labels: [__meta_puppetdb_certname] + target_label: certname + - source_labels: [__meta_puppetdb_parameter_targets] + regex: '(.+),?.*' + replacement: $1 + target_label: __address__ + - source_labels: [__meta_puppetdb_parameter_job_name] + target_label: job + - regex: '__meta_puppetdb_parameter_labels_(.+)' + replacement: '$1' + action: labelmap diff --git a/documentation/examples/remote_storage/remote_storage_adapter/graphite/client_test.go b/documentation/examples/remote_storage/remote_storage_adapter/graphite/client_test.go index b5484842d..68844d327 100644 --- a/documentation/examples/remote_storage/remote_storage_adapter/graphite/client_test.go +++ b/documentation/examples/remote_storage/remote_storage_adapter/graphite/client_test.go @@ -17,6 +17,7 @@ import ( "testing" "github.com/prometheus/common/model" + "github.com/stretchr/testify/require" ) var ( @@ -32,17 +33,13 @@ func TestEscape(t *testing.T) { value := "abzABZ019(){},'\"\\" expected := "abzABZ019\\(\\)\\{\\}\\,\\'\\\"\\\\" actual := escape(model.LabelValue(value)) - if expected != actual { - t.Errorf("Expected %s, got %s", expected, actual) - } + require.Equal(t, expected, actual) // Test percent-encoding. value = "é/|_;:%." expected = "%C3%A9%2F|_;:%25%2E" actual = escape(model.LabelValue(value)) - if expected != actual { - t.Errorf("Expected %s, got %s", expected, actual) - } + require.Equal(t, expected, actual) } func TestPathFromMetric(t *testing.T) { @@ -51,7 +48,5 @@ func TestPathFromMetric(t *testing.T) { ".many_chars.abc!ABC:012-3!45%C3%B667~89%2E%2F\\(\\)\\{\\}\\,%3D%2E\\\"\\\\" + ".testlabel.test:value") actual := pathFromMetric(metric, "prefix.") - if expected != actual { - t.Errorf("Expected %s, got %s", expected, actual) - } + require.Equal(t, expected, actual) } diff --git a/documentation/examples/remote_storage/remote_storage_adapter/influxdb/client_test.go b/documentation/examples/remote_storage/remote_storage_adapter/influxdb/client_test.go index 15bab1d9c..b657abdde 100644 --- a/documentation/examples/remote_storage/remote_storage_adapter/influxdb/client_test.go +++ b/documentation/examples/remote_storage/remote_storage_adapter/influxdb/client_test.go @@ -24,6 +24,7 @@ import ( influx "github.com/influxdata/influxdb/client/v2" "github.com/prometheus/common/model" + "github.com/stretchr/testify/require" ) func TestClient(t *testing.T) { @@ -73,28 +74,17 @@ testmetric,test_label=test_label_value2 value=5.1234 123456789123 server := httptest.NewServer(http.HandlerFunc( func(w http.ResponseWriter, r *http.Request) { - if r.Method != "POST" { - t.Fatalf("Unexpected method; expected POST, got %s", r.Method) - } - if r.URL.Path != "/write" { - t.Fatalf("Unexpected path; expected %s, got %s", "/write", r.URL.Path) - } + require.Equal(t, "POST", r.Method, "Unexpected method.") + require.Equal(t, "/write", r.URL.Path, "Unexpected path.") b, err := ioutil.ReadAll(r.Body) - if err != nil { - t.Fatalf("Error reading body: %s", err) - } - - if string(b) != expectedBody { - t.Fatalf("Unexpected request body; expected:\n\n%s\n\ngot:\n\n%s", expectedBody, string(b)) - } + require.NoError(t, err, "Error reading body.") + require.Equal(t, expectedBody, string(b), "Unexpected request body.") }, )) defer server.Close() serverURL, err := url.Parse(server.URL) - if err != nil { - t.Fatalf("Unable to parse server URL %s: %s", server.URL, err) - } + require.NoError(t, err, "Unable to parse server URL.") conf := influx.HTTPConfig{ Addr: serverURL.String(), @@ -103,8 +93,6 @@ testmetric,test_label=test_label_value2 value=5.1234 123456789123 Timeout: time.Minute, } c := NewClient(nil, conf, "test_db", "default") - - if err := c.Write(samples); err != nil { - t.Fatalf("Error sending samples: %s", err) - } + err = c.Write(samples) + require.NoError(t, err, "Error sending samples.") } diff --git a/documentation/examples/remote_storage/remote_storage_adapter/opentsdb/client_test.go b/documentation/examples/remote_storage/remote_storage_adapter/opentsdb/client_test.go index f26952247..51906efce 100644 --- a/documentation/examples/remote_storage/remote_storage_adapter/opentsdb/client_test.go +++ b/documentation/examples/remote_storage/remote_storage_adapter/opentsdb/client_test.go @@ -14,12 +14,11 @@ package opentsdb import ( - "bytes" "encoding/json" - "reflect" "testing" "github.com/prometheus/common/model" + "github.com/stretchr/testify/require" ) var ( @@ -36,9 +35,7 @@ func TestTagsFromMetric(t *testing.T) { "many_chars": TagValue("abc!ABC:012-3!45ö67~89./"), } actual := tagsFromMetric(metric) - if !reflect.DeepEqual(actual, expected) { - t.Errorf("Expected %#v, got %#v", expected, actual) - } + require.Equal(t, expected, actual) } func TestMarshalStoreSamplesRequest(t *testing.T) { @@ -51,25 +48,11 @@ func TestMarshalStoreSamplesRequest(t *testing.T) { expectedJSON := []byte(`{"metric":"test_.metric","timestamp":4711,"value":3.1415,"tags":{"many_chars":"abc_21ABC_.012-3_2145_C3_B667_7E89./","testlabel":"test_.value"}}`) resultingJSON, err := json.Marshal(request) - if err != nil { - t.Fatalf("Marshal(request) resulted in err: %s", err) - } - if !bytes.Equal(resultingJSON, expectedJSON) { - t.Errorf( - "Marshal(request) => %q, want %q", - resultingJSON, expectedJSON, - ) - } + require.NoError(t, err, "Marshal(request) resulted in err.") + require.Equal(t, expectedJSON, resultingJSON) var unmarshaledRequest StoreSamplesRequest err = json.Unmarshal(expectedJSON, &unmarshaledRequest) - if err != nil { - t.Fatalf("Unmarshal(expectedJSON, &unmarshaledRequest) resulted in err: %s", err) - } - if !reflect.DeepEqual(unmarshaledRequest, request) { - t.Errorf( - "Unmarshal(expectedJSON, &unmarshaledRequest) => %#v, want %#v", - unmarshaledRequest, request, - ) - } + require.NoError(t, err, "Unmarshal(expectedJSON, &unmarshaledRequest) resulted in err.") + require.Equal(t, request, unmarshaledRequest) } diff --git a/documentation/examples/remote_storage/remote_storage_adapter/opentsdb/tagvalue_test.go b/documentation/examples/remote_storage/remote_storage_adapter/opentsdb/tagvalue_test.go index 100aed29f..5adedb324 100644 --- a/documentation/examples/remote_storage/remote_storage_adapter/opentsdb/tagvalue_test.go +++ b/documentation/examples/remote_storage/remote_storage_adapter/opentsdb/tagvalue_test.go @@ -14,9 +14,10 @@ package opentsdb import ( - "bytes" "encoding/json" "testing" + + "github.com/stretchr/testify/require" ) var stringtests = []struct { @@ -32,17 +33,9 @@ var stringtests = []struct { func TestTagValueMarshaling(t *testing.T) { for i, tt := range stringtests { - json, err := json.Marshal(tt.tv) - if err != nil { - t.Errorf("%d. Marshal(%q) returned err: %s", i, tt.tv, err) - } else { - if !bytes.Equal(json, tt.json) { - t.Errorf( - "%d. Marshal(%q) => %q, want %q", - i, tt.tv, json, tt.json, - ) - } - } + got, err := json.Marshal(tt.tv) + require.NoError(t, err, "%d. Marshal(%q) returned error.", i, tt.tv) + require.Equal(t, tt.json, got, "%d. Marshal(%q) not equal.", i, tt.tv) } } @@ -50,15 +43,7 @@ func TestTagValueUnMarshaling(t *testing.T) { for i, tt := range stringtests { var tv TagValue err := json.Unmarshal(tt.json, &tv) - if err != nil { - t.Errorf("%d. Unmarshal(%q, &str) returned err: %s", i, tt.json, err) - } else { - if tv != tt.tv { - t.Errorf( - "%d. Unmarshal(%q, &str) => str==%q, want %q", - i, tt.json, tv, tt.tv, - ) - } - } + require.NoError(t, err, "%d. Unmarshal(%q, &str) returned error.", i, tt.json) + require.Equal(t, tt.tv, tv, "%d. Unmarshal(%q, &str) not equal.", i, tt.json) } } diff --git a/documentation/prometheus-mixin/README.md b/documentation/prometheus-mixin/README.md index a28d91068..ef9c8f7c1 100644 --- a/documentation/prometheus-mixin/README.md +++ b/documentation/prometheus-mixin/README.md @@ -9,9 +9,9 @@ and dashboards for Prometheus. To use them, you need to have `jsonnet` (v0.13+) and `jb` installed. If you have a working Go development environment, it's easiest to run the following: ```bash -$ go get github.com/google/go-jsonnet/cmd/jsonnet -$ go get github.com/google/go-jsonnet/cmd/jsonnetfmt -$ go get github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb +$ go install github.com/google/go-jsonnet/cmd/jsonnet@latest +$ go install github.com/google/go-jsonnet/cmd/jsonnetfmt@latest +$ go install github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb@latest ``` _Note: The make targets `lint` and `fmt` need the `jsonnetfmt` binary, which is diff --git a/documentation/prometheus-mixin/dashboards.libsonnet b/documentation/prometheus-mixin/dashboards.libsonnet index a26104230..0581007b4 100644 --- a/documentation/prometheus-mixin/dashboards.libsonnet +++ b/documentation/prometheus-mixin/dashboards.libsonnet @@ -13,8 +13,8 @@ local template = grafana.template; g.dashboard( '%(prefix)sOverview' % $._config.grafanaPrometheus ) - .addMultiTemplate('job', 'prometheus_build_info', 'job') - .addMultiTemplate('instance', 'prometheus_build_info', 'instance') + .addMultiTemplate('job', 'prometheus_build_info{%(prometheusSelector)s}' % $._config, 'job') + .addMultiTemplate('instance', 'prometheus_build_info{job=~"$job"}', 'instance') .addRow( g.row('Prometheus Stats') .addPanel( diff --git a/documentation/prometheus-mixin/tools.go b/documentation/prometheus-mixin/tools.go index e3551e821..1115bb953 100644 --- a/documentation/prometheus-mixin/tools.go +++ b/documentation/prometheus-mixin/tools.go @@ -12,7 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -//+build tools +//go:build tools +// +build tools // Package tools tracks dependencies for tools that used in the build process. // See https://github.com/golang/go/issues/25922 diff --git a/go.mod b/go.mod index cce0344e8..f03bcb8a5 100644 --- a/go.mod +++ b/go.mod @@ -3,37 +3,37 @@ module github.com/prometheus/prometheus go 1.14 require ( - github.com/Azure/azure-sdk-for-go v55.8.0+incompatible - github.com/Azure/go-autorest/autorest v0.11.19 - github.com/Azure/go-autorest/autorest/adal v0.9.14 + github.com/Azure/azure-sdk-for-go v57.1.0+incompatible + github.com/Azure/go-autorest/autorest v0.11.20 + github.com/Azure/go-autorest/autorest/adal v0.9.15 github.com/Azure/go-autorest/autorest/to v0.4.0 // indirect github.com/Azure/go-autorest/autorest/validation v0.3.1 // indirect - github.com/alecthomas/units v0.0.0-20210208195552-ff826a37aa15 - github.com/aws/aws-sdk-go v1.40.10 - github.com/cespare/xxhash/v2 v2.1.1 + github.com/alecthomas/units v0.0.0-20210912230133-d1bdfacee922 + github.com/aws/aws-sdk-go v1.40.37 + github.com/cespare/xxhash/v2 v2.1.2 github.com/containerd/containerd v1.5.4 // indirect github.com/dennwc/varint v1.0.0 github.com/dgryski/go-sip13 v0.0.0-20200911182023-62edffca9245 - github.com/digitalocean/godo v1.64.2 - github.com/docker/docker v20.10.7+incompatible + github.com/digitalocean/godo v1.65.0 + github.com/docker/docker v20.10.8+incompatible github.com/docker/go-connections v0.4.0 // indirect github.com/edsrzf/mmap-go v1.0.0 github.com/envoyproxy/go-control-plane v0.9.9 github.com/envoyproxy/protoc-gen-validate v0.6.1 github.com/go-kit/log v0.1.0 - github.com/go-logfmt/logfmt v0.5.0 - github.com/go-openapi/strfmt v0.20.1 + github.com/go-logfmt/logfmt v0.5.1 + github.com/go-openapi/strfmt v0.20.2 github.com/go-zookeeper/zk v1.0.2 github.com/gogo/protobuf v1.3.2 github.com/golang/snappy v0.0.4 - github.com/google/pprof v0.0.0-20210726183535-c50bf4fe5303 - github.com/gophercloud/gophercloud v0.19.0 + github.com/google/pprof v0.0.0-20210827144239-02619b876842 + github.com/gophercloud/gophercloud v0.20.0 github.com/grpc-ecosystem/grpc-gateway v1.16.0 - github.com/hashicorp/consul/api v1.9.1 - github.com/hetznercloud/hcloud-go v1.28.0 + github.com/hashicorp/consul/api v1.10.1 + github.com/hetznercloud/hcloud-go v1.32.0 github.com/influxdata/influxdb v1.9.3 github.com/json-iterator/go v1.1.11 - github.com/linode/linodego v0.31.0 + github.com/linode/linodego v0.32.0 github.com/miekg/dns v1.1.43 github.com/moby/term v0.0.0-20201216013528-df9cb8a40635 // indirect github.com/morikuni/aec v1.0.0 // indirect @@ -43,10 +43,11 @@ require ( github.com/opentracing-contrib/go-stdlib v1.0.0 github.com/opentracing/opentracing-go v1.2.0 github.com/pkg/errors v0.9.1 - github.com/prometheus/alertmanager v0.22.2 + github.com/prometheus/alertmanager v0.23.0 github.com/prometheus/client_golang v1.11.0 github.com/prometheus/client_model v0.2.0 - github.com/prometheus/common v0.30.0 + github.com/prometheus/common v0.31.1 + github.com/prometheus/common/sigv4 v0.1.0 github.com/prometheus/exporter-toolkit v0.6.1 github.com/scaleway/scaleway-sdk-go v1.0.0-beta.7.0.20210223165440-c65ae3540d44 github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749 @@ -56,22 +57,22 @@ require ( github.com/uber/jaeger-lib v2.4.1+incompatible go.uber.org/atomic v1.9.0 go.uber.org/goleak v1.1.10 - golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985 - golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914 + golang.org/x/net v0.0.0-20210903162142-ad29c8ab022f + golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f golang.org/x/sync v0.0.0-20210220032951-036812b2e83c - golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c + golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34 golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac golang.org/x/tools v0.1.5 - google.golang.org/api v0.51.0 - google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea + google.golang.org/api v0.56.0 + google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83 google.golang.org/protobuf v1.27.1 gopkg.in/alecthomas/kingpin.v2 v2.2.6 gopkg.in/fsnotify/fsnotify.v1 v1.4.7 gopkg.in/yaml.v2 v2.4.0 gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b - k8s.io/api v0.21.3 - k8s.io/apimachinery v0.21.3 - k8s.io/client-go v0.21.3 + k8s.io/api v0.22.1 + k8s.io/apimachinery v0.22.1 + k8s.io/client-go v0.22.1 k8s.io/klog v1.0.0 k8s.io/klog/v2 v2.10.0 ) diff --git a/go.sum b/go.sum index 1d9c4a7f0..b1fc5326c 100644 --- a/go.sum +++ b/go.sum @@ -22,8 +22,10 @@ cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= -cloud.google.com/go v0.87.0 h1:8ZtzmY4a2JIO2sljMbpqkDYxA8aJQveYr3AMa+X40oc= cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= +cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= +cloud.google.com/go v0.93.3 h1:wPBktZFzYBcCZVARvwVKqH1uEj+aLXofJEtrb4oOsio= +cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= @@ -47,8 +49,8 @@ collectd.org v0.3.0/go.mod h1:A/8DzQBkF6abtvrT2j/AU/4tiBgJWYyh0y/oB/4MlWE= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v41.3.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go v55.8.0+incompatible h1:EuccMPzxu67cIE95/mrtwQivLv7ETmURi5IUgLNVug8= -github.com/Azure/azure-sdk-for-go v55.8.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v57.1.0+incompatible h1:TKQ3ieyB0vVKkF6t9dsWbMjq56O1xU3eh3Ec09v6ajM= +github.com/Azure/azure-sdk-for-go v57.1.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 h1:w+iIsaOQNcT7OZ575w+acHgRric5iCyQh+xv+KJ4HB8= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-autorest v10.8.1+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= @@ -59,9 +61,9 @@ github.com/Azure/go-autorest/autorest v0.9.3/go.mod h1:GsRuLYvwzLjjjRoWEIyMUaYq8 github.com/Azure/go-autorest/autorest v0.10.0/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630= github.com/Azure/go-autorest/autorest v0.10.1/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630= github.com/Azure/go-autorest/autorest v0.11.1/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw= -github.com/Azure/go-autorest/autorest v0.11.12/go.mod h1:eipySxLmqSyC5s5k1CLupqet0PSENBEDP93LQ9a8QYw= -github.com/Azure/go-autorest/autorest v0.11.19 h1:7/IqD2fEYVha1EPeaiytVKhzmPV223pfkRIQUGOK2IE= -github.com/Azure/go-autorest/autorest v0.11.19/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= +github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= +github.com/Azure/go-autorest/autorest v0.11.20 h1:s8H1PbCZSqg/DH7JMlOz6YMig6htWLNPsjDdlLqCx3M= +github.com/Azure/go-autorest/autorest v0.11.20/go.mod h1:o3tqFY+QR40VOlk+pV4d77mORO64jOXSgEnPQgLK6JY= github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc= github.com/Azure/go-autorest/autorest/adal v0.8.1/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= @@ -70,8 +72,8 @@ github.com/Azure/go-autorest/autorest/adal v0.8.3/go.mod h1:ZjhuQClTqx435SRJ2iMl github.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQWWNcK9YU+MH96NgK+jErpbcg= github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= -github.com/Azure/go-autorest/autorest/adal v0.9.14 h1:G8hexQdV5D4khOXrWG2YuLCFKhWYmWD8bHYaXN5ophk= -github.com/Azure/go-autorest/autorest/adal v0.9.14/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= +github.com/Azure/go-autorest/autorest/adal v0.9.15 h1:X+p2GF0GWyOiSmqohIaEeuNFNDY4I4EOlVuUQvFdWMk= +github.com/Azure/go-autorest/autorest/adal v0.9.15/go.mod h1:tGMin8I49Yij6AQ+rvV+Xa/zwxYQB5hmsd6DkfAx2+A= github.com/Azure/go-autorest/autorest/azure/auth v0.4.2/go.mod h1:90gmfKdlmKgfjUpnCEpOJzsUEjrWDSLwHIG73tSXddM= github.com/Azure/go-autorest/autorest/azure/cli v0.3.1/go.mod h1:ZG5p860J94/0kI9mNJVoIoLgXcirM2gF5i2kWloofxw= github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= @@ -149,8 +151,9 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuy github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/alecthomas/units v0.0.0-20210208195552-ff826a37aa15 h1:AUNCr9CiJuwrRYS3XieqF+Z9B9gNxo/eANAJCF2eiN4= github.com/alecthomas/units v0.0.0-20210208195552-ff826a37aa15/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= +github.com/alecthomas/units v0.0.0-20210912230133-d1bdfacee922 h1:8ypNbf5sd3Sm3cKJ9waOGoQv6dKAFiFty9L6NP1AqJ4= +github.com/alecthomas/units v0.0.0-20210912230133-d1bdfacee922/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= github.com/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae/go.mod h1:CgnQgUtFrFz9mxFNtED3jI5tLDjKlOM+oUF/sTk6ps0= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= @@ -180,8 +183,10 @@ github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN github.com/aws/aws-sdk-go v1.29.16/go.mod h1:1KvfttTE3SPKMpo8g2c6jL3ZKfXtFvKscTgahTma5Xg= github.com/aws/aws-sdk-go v1.30.12/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= github.com/aws/aws-sdk-go v1.34.28/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/+8rV9s48= -github.com/aws/aws-sdk-go v1.40.10 h1:h+xUINuuH/9CwxE7O8mAuW7Aj9E5agfE9jQ3DrJsnA8= -github.com/aws/aws-sdk-go v1.40.10/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= +github.com/aws/aws-sdk-go v1.38.35/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= +github.com/aws/aws-sdk-go v1.40.11/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= +github.com/aws/aws-sdk-go v1.40.37 h1:I+Q6cLctkFyMMrKukcDnj+i2kjrQ37LGiOM6xmsxC48= +github.com/aws/aws-sdk-go v1.40.37/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/benbjohnson/immutable v0.2.1/go.mod h1:uc6OHo6PN2++n98KHLxW8ef4W42ylHiQSENghE1ezxI= github.com/benbjohnson/tmpl v1.0.0/go.mod h1:igT620JFIi44B6awvU9IsDhR77IXWtFigTLil/RPdps= @@ -208,13 +213,14 @@ github.com/cactus/go-statsd-client/statsd v0.0.0-20191106001114-12b4e2b38748/go. github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/cenkalti/backoff v0.0.0-20181003080854-62661b46c409/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= -github.com/cenkalti/backoff/v4 v4.1.0/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.0/go.mod h1:dgIUBU3pDso/gPgZ1osOZ0iQf77oPR28Tjxl5dIMyVM= -github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= +github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/checkpoint-restore/go-criu/v4 v4.1.0/go.mod h1:xUQBLp4RLc5zJtWY++yjOoMoB5lihDt7fai+75m+rGw= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= @@ -360,8 +366,8 @@ github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8 github.com/dgryski/go-sip13 v0.0.0-20190329191031-25c5027a8c7b/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dgryski/go-sip13 v0.0.0-20200911182023-62edffca9245 h1:9cOfvEwjQxdwKuNDTQSaMKNRvwKwgZG+U4HrjeRKHso= github.com/dgryski/go-sip13 v0.0.0-20200911182023-62edffca9245/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/digitalocean/godo v1.64.2 h1:lJEB2TVIkJydFWJMPtdYOPa2Xwib+smZqq/oUZF8/iA= -github.com/digitalocean/godo v1.64.2/go.mod h1:p7dOjjtSBqCTUksqtA5Fd3uaKs9kyTq2xcz76ulEJRU= +github.com/digitalocean/godo v1.65.0 h1:3SywGJBC18HaYtPQF+T36jYzXBi+a6eIMonSjDll7TA= +github.com/digitalocean/godo v1.65.0/go.mod h1:p7dOjjtSBqCTUksqtA5Fd3uaKs9kyTq2xcz76ulEJRU= github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= github.com/dnaeon/go-vcr v1.0.1 h1:r8L/HqC0Hje5AXMu1ooW8oyQyOFv4GxqpL0nRP7SLLY= github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= @@ -369,8 +375,8 @@ github.com/docker/distribution v0.0.0-20190905152932-14b96e55d84c/go.mod h1:0+TT github.com/docker/distribution v2.7.1-0.20190205005809-0d3efadf0154+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/distribution v2.7.1+incompatible h1:a5mlkVzth6W5A4fOsS3D2EO5BUmsJpcB+cRlLU7cSug= github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v20.10.7+incompatible h1:Z6O9Nhsjv+ayUEeI1IojKbYcsGdgYSNqxe1s2MYzUhQ= -github.com/docker/docker v20.10.7+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v20.10.8+incompatible h1:RVqD337BgQicVCzYrrlhLDWhq6OAD2PJDUg2LsEUvKM= +github.com/docker/docker v20.10.8+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-events v0.0.0-20170721190031-9461782956ad/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= @@ -409,14 +415,15 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 github.com/envoyproxy/protoc-gen-validate v0.6.1 h1:4CF52PCseTFt4bE+Yk3dIpdVi7XWuPVMhPtm4FaIJPM= github.com/envoyproxy/protoc-gen-validate v0.6.1/go.mod h1:txg5va2Qkip90uYoSKH+nkAAmXrb2j3iq4FLwdrCbXQ= github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v4.9.0+incompatible h1:kLcOMZeuLAJvL2BPWLMIj5oaZQobrkAqrL+WFZwQses= github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v4.11.0+incompatible h1:glyUF9yIYtMHzn8xaKw5rMhdWcwsYV8dZHIq5567/xs= +github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0 h1:8xPHl4/q1VyqGIPif1F+1V3Y3lSmrq01EabUW3CoW5s= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= -github.com/form3tech-oss/jwt-go v3.2.2+incompatible h1:TcekIExNqud5crz4xD2pavyTgWiPvpYe4Xau31I0PRk= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= +github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/foxcpp/go-mockdns v0.0.0-20201212160233-ede2f9158d15/go.mod h1:tPg4cp4nseejPd+UKxtCVQ2hUxNTZ7qQZJa7CLriIeo= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= @@ -430,6 +437,8 @@ github.com/getkin/kin-openapi v0.53.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.5.0/go.mod h1:Nd6IXA8m5kNZdNEHMBd93KT+mdY3+bewLgRvmCsR2Do= github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= @@ -448,8 +457,9 @@ github.com/go-kit/log v0.1.0 h1:DGJh0Sm43HbOeYDNnVZFl8BvcYVvjD5bqYJvp0REbwQ= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logfmt/logfmt v0.5.0 h1:TrB8swr/68K7m9CcGut2g3UOihhbcbiMAYiuTXdEih4= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA= +github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= @@ -504,8 +514,8 @@ github.com/go-openapi/runtime v0.19.4/go.mod h1:X277bwSUBxVlCYR3r7xgZZGKVvBd/29g github.com/go-openapi/runtime v0.19.15/go.mod h1:dhGWCTKRXlAfGnQG0ONViOZpjfg0m2gUt9nTQPQZuoo= github.com/go-openapi/runtime v0.19.16/go.mod h1:5P9104EJgYcizotuXhEuUrzVc+j1RiSjahULvYmlv98= github.com/go-openapi/runtime v0.19.24/go.mod h1:Lm9YGCeecBnUUkFTxPC4s1+lwrkJ0pthx8YvyjCfkgk= -github.com/go-openapi/runtime v0.19.28 h1:9lYu6axek8LJrVkMVViVirRcpoaCxXX7+sSvmizGVnA= -github.com/go-openapi/runtime v0.19.28/go.mod h1:BvrQtn6iVb2QmiVXRsFAm6ZCAZBpbVKFfN6QWCp582M= +github.com/go-openapi/runtime v0.19.29 h1:5IIvCaIDbxetN674vX9eOxvoZ9mYGQ16fV1Q0VSG+NA= +github.com/go-openapi/runtime v0.19.29/go.mod h1:BvrQtn6iVb2QmiVXRsFAm6ZCAZBpbVKFfN6QWCp582M= github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= github.com/go-openapi/spec v0.18.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= @@ -528,8 +538,9 @@ github.com/go-openapi/strfmt v0.19.4/go.mod h1:eftuHTlB/dI8Uq8JJOyRlieZf+WkkxUuk github.com/go-openapi/strfmt v0.19.5/go.mod h1:eftuHTlB/dI8Uq8JJOyRlieZf+WkkxUuk0dgdHXr2Qk= github.com/go-openapi/strfmt v0.19.11/go.mod h1:UukAYgTaQfqJuAFlNxxMWNvMYiwiXtLsF2VwmoFtbtc= github.com/go-openapi/strfmt v0.20.0/go.mod h1:UukAYgTaQfqJuAFlNxxMWNvMYiwiXtLsF2VwmoFtbtc= -github.com/go-openapi/strfmt v0.20.1 h1:1VgxvehFne1mbChGeCmZ5pc0LxUf6yaACVSIYAR91Xc= github.com/go-openapi/strfmt v0.20.1/go.mod h1:43urheQI9dNtE5lTZQfuFJvjYJKPrxicATpEfZwHUNk= +github.com/go-openapi/strfmt v0.20.2 h1:6XZL+fF4VZYFxKQGLAUB358hOrRh/wS51uWEtlONADE= +github.com/go-openapi/strfmt v0.20.2/go.mod h1:43urheQI9dNtE5lTZQfuFJvjYJKPrxicATpEfZwHUNk= github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= @@ -552,6 +563,8 @@ github.com/go-openapi/validate v0.19.15/go.mod h1:tbn/fdOwYHgrhPBzidZfJC2MIVvs9G github.com/go-openapi/validate v0.20.1/go.mod h1:b60iJT+xNNLfaQJUqLI7946tYiFEOuE9E4k54HpKcJ0= github.com/go-openapi/validate v0.20.2 h1:AhqDegYV3J3iQkMPJSXkvzymHKMTw0BST3RK3hTT4ts= github.com/go-openapi/validate v0.20.2/go.mod h1:e7OJoKNgd0twXZwIn0A43tHbvIcr/rZIVCbJBpTUoY0= +github.com/go-playground/locales v0.12.1/go.mod h1:IUMDtCfWo/w/mtMfIE/IG2K+Ey3ygWanZIBtBW0W2TM= +github.com/go-playground/universal-translator v0.16.0/go.mod h1:1AnU7NaIRDWWzGEKwgtJRd2xk99HeFyHw3yid4rvQIY= github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48 h1:JVrqSeQfdhYRFk24TvhTZWU0q8lfCojxZQFi3Ou7+uY= github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48/go.mod h1:dZGr0i9PLlaaTD4H/hoZIDjQ+r6xq8mgbRzHZf7f2J8= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= @@ -603,6 +616,8 @@ github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXP github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang-jwt/jwt/v4 v4.0.0 h1:RAqyYixv1p7uEnocuy8P1nru5wprCh/MH2BIlW5z5/o= +github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/geo v0.0.0-20190916061304-5b978397cfec/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI= @@ -612,8 +627,9 @@ github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4er github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= @@ -649,8 +665,9 @@ github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= +github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= github.com/google/flatbuffers v1.11.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/flatbuffers v2.0.0+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -689,8 +706,9 @@ github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210726183535-c50bf4fe5303 h1:UP+GUfRSErTzM7UtTMt4TjnfXKK3ybrGQasgSOp7vLY= -github.com/google/pprof v0.0.0-20210726183535-c50bf4fe5303/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210827144239-02619b876842 h1:JCrt5MIE1fHQtdy1825HwJ45oVQaqHE6lgssRhjcg/o= +github.com/google/pprof v0.0.0-20210827144239-02619b876842/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -698,16 +716,19 @@ github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/google/uuid v1.2.0 h1:qJYtXnJRWmpe7m/3XlyhrsLrEURqHRM2kxzoxXqyUDs= github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gax-go/v2 v2.1.0 h1:6DWmvNpomjL1+3liNSZbVns3zsYzzCjm6pRBO1tLeso= +github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/gnostic v0.4.0/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= -github.com/googleapis/gnostic v0.4.1 h1:DLJCy1n/vrD4HPjOvYcT8aYQXpPIzoRZONaYwyycI+I= github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= +github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= +github.com/googleapis/gnostic v0.5.5 h1:9fHAtK0uDfpveeqqo1hkEZJcFvYXAiCN3UutL8F9xHw= +github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA= github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= github.com/gophercloud/gophercloud v0.10.0/go.mod h1:gmC5oQqMDOMO1t1gq5DquX/yAU808e/4mzjjDA76+Ss= -github.com/gophercloud/gophercloud v0.19.0 h1:zzaIh8W2K5M4AkJhPV1z6O4Sp0FOObzXm61NUmFz3Kw= -github.com/gophercloud/gophercloud v0.19.0/go.mod h1:wRtmUelyIIv3CSSDI47aUwbs075O6i+LY+pXsKCBsb4= +github.com/gophercloud/gophercloud v0.20.0 h1:1+4jrsjVhdX5omlAo4jkmFc6ftLbuXLzgFo4i6lH+Gk= +github.com/gophercloud/gophercloud v0.20.0/go.mod h1:wRtmUelyIIv3CSSDI47aUwbs075O6i+LY+pXsKCBsb4= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= @@ -730,8 +751,8 @@ github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4 github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= github.com/hashicorp/consul/api v1.4.0/go.mod h1:xc8u05kyMa3Wjr9eEAsIAo3dg8+LywT5E/Cl7cNS5nU= -github.com/hashicorp/consul/api v1.9.1 h1:SngrdG2L62qqLsUz85qcPhFZ78rPf8tcD5qjMgs6MME= -github.com/hashicorp/consul/api v1.9.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= +github.com/hashicorp/consul/api v1.10.1 h1:MwZJp86nlnL+6+W1Zly4JUuVn9YHhMggBirMpHGD7kw= +github.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/consul/sdk v0.4.0/go.mod h1:fY08Y9z5SvJqevyZNy6WWPXiG3KwBPAvlcdx16zZ0fM= github.com/hashicorp/consul/sdk v0.8.0 h1:OJtKBtEjboEZvG6AOUdh4Z1Zbyu0WcxQ0qatRrZHTVU= @@ -779,14 +800,14 @@ github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2p github.com/hashicorp/memberlist v0.1.4/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/memberlist v0.2.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= -github.com/hashicorp/memberlist v0.2.3 h1:BwZa5IjREr75J0am7nblP+X5i95Rmp8EEbMI5vkUWdA= -github.com/hashicorp/memberlist v0.2.3/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= +github.com/hashicorp/memberlist v0.2.4 h1:OOhYzSvFnkFQXm1ysE8RjXTHsqSRDyP4emusC9K7DYg= +github.com/hashicorp/memberlist v0.2.4/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hashicorp/serf v0.9.0/go.mod h1:YL0HO+FifKOW2u1ke99DGVu1zhcpZzNwrLIqBC7vbYU= github.com/hashicorp/serf v0.9.5 h1:EBWvyu9tcRszt3Bxp3KNssBMP1KuHWyO51lz9+786iM= github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= -github.com/hetznercloud/hcloud-go v1.28.0 h1:T2a0CVGETf7BoWIdZ/TACqmTZAa/ROutcfdUHYiPAQ4= -github.com/hetznercloud/hcloud-go v1.28.0/go.mod h1:2C5uMtBiMoFr3m7lBFPf7wXTdh33CevmZpQIIDPGYJI= +github.com/hetznercloud/hcloud-go v1.32.0 h1:7zyN2V7hMlhm3HZdxOarmOtvzKvkcYKjM0hcwYMQZz0= +github.com/hetznercloud/hcloud-go v1.32.0/go.mod h1:XX/TQub3ge0yWR2yHWmnDVIrB+MQbda1pHxkUmDlUME= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= @@ -882,11 +903,12 @@ github.com/kylelemons/godebug v0.0.0-20160406211939-eadb3ce320cb/go.mod h1:B69LE github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/labstack/echo/v4 v4.2.1/go.mod h1:AA49e0DZ8kk5jTOOCKNuPR6oTnBS0dYiM4FW1e6jwpg= github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= +github.com/leodido/go-urn v1.1.0/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdAPozLkw= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= -github.com/linode/linodego v0.31.0 h1:99+t6GtTaIsL+ncz5BpCbkh8Y90rC7qW1Not8MFe0Gw= -github.com/linode/linodego v0.31.0/go.mod h1:BR0gVkCJffEdIGJSl6bHR80Ty+Uvg/2jkjmrWaFectM= +github.com/linode/linodego v0.32.0 h1:IK04cx2b/IwAAd6XLruf1Dl/n3dRXj87Uw/5qo6afVU= +github.com/linode/linodego v0.32.0/go.mod h1:BR0gVkCJffEdIGJSl6bHR80Ty+Uvg/2jkjmrWaFectM= github.com/lyft/protoc-gen-star v0.5.1/go.mod h1:9toiA3cC7z5uVbODF7kEQ91Xn7XNFkVUl+SrEe+ZORU= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= @@ -1005,13 +1027,15 @@ github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+W github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.1 h1:mFwc4LvZ0xpSvDZ3E+k8Yte0hLOMxXUlP+yXtJqkYfQ= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA= +github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/gomega v0.0.0-20151007035656-2152b45fa28a/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.10.3 h1:gph6h/qe9GSUw1NhH1gp+qb+h8rXD8Cy60Z32Qw3ELA= github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= @@ -1082,8 +1106,8 @@ github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndr github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= github.com/prometheus/alertmanager v0.20.0/go.mod h1:9g2i48FAyZW6BtbsnvHtMHQXl2aVtrORKwKVCQ+nbrg= -github.com/prometheus/alertmanager v0.22.2 h1:JrDZalSEMb2/2bqGAhls6ZnvOxbC5jMIu29JV+uWTC0= -github.com/prometheus/alertmanager v0.22.2/go.mod h1:rYinOWxFuCnNssc3iOjn2oMTlhLaPcUuqV5yk5JKUAE= +github.com/prometheus/alertmanager v0.23.0 h1:KIb9IChC3kg+1CC388qfr7bsT+tARpQqdsCMoatdObA= +github.com/prometheus/alertmanager v0.23.0/go.mod h1:0MLTrjQI8EuVmvykEhcfr/7X0xmaDAZrqMgxIq3OXHk= github.com/prometheus/client_golang v0.0.0-20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= @@ -1095,7 +1119,6 @@ github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeD github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.5.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.10.0/go.mod h1:WJM3cc3yu7XKBKa/I8WeZm+V3eltZnBwfENSU7mdogU= github.com/prometheus/client_golang v1.11.0 h1:HNkLOAEQMIDv/K+04rukrLx6ch7msSRwf3/SASFAGtQ= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_model v0.0.0-20171117100541-99fa1f4be8e5/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= @@ -1115,14 +1138,13 @@ github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.18.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.23.0/go.mod h1:H6QK/N6XVT42whUeIdI3dp36w49c+/iMDk7UAI2qm7Q= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= github.com/prometheus/common v0.29.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.30.0 h1:JEkYlQnpzrzQFxi6gnukFPdQ+ac82oRhzMcIduJu/Ug= github.com/prometheus/common v0.30.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/exporter-toolkit v0.5.1/go.mod h1:OCkM4805mmisBhLmVFw858QYi3v0wKdY6/UxrT0pZVg= +github.com/prometheus/common v0.31.1 h1:d18hG4PkHnNAKNMOmFuXFaiY8Us0nird/2m60uS1AMs= +github.com/prometheus/common v0.31.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/common/sigv4 v0.1.0 h1:qoVebwtwwEhS85Czm2dSROY5fTo2PAPEVdDeppTwGX4= +github.com/prometheus/common/sigv4 v0.1.0/go.mod h1:2Jkxxk9yYvCkE5G1sQT7GuEXm57JrvHu9k5YwTjsNtI= github.com/prometheus/exporter-toolkit v0.6.1 h1:Aqk75wQD92N9CqmTlZwjKwq6272nOGrWIbc8Z7+xQO0= github.com/prometheus/exporter-toolkit v0.6.1/go.mod h1:ZUBIj498ePooX9t/2xtDjeQYwvRpiPP2lh5u4iblj2g= github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= @@ -1149,7 +1171,7 @@ github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rs/cors v1.6.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= -github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= +github.com/rs/cors v1.8.0/go.mod h1:EBwu+T5AvHOcXwvZIkQFjUN6s8Czyqw12GL/Y0tUyRM= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= @@ -1209,6 +1231,7 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980/go.mod h1:AO3tvPzVZ/ayst6UlUKUv6rcPQInYe3IknH3jYhAKu8= +github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= @@ -1247,6 +1270,8 @@ github.com/uber/jaeger-lib v2.2.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6 github.com/uber/jaeger-lib v2.4.1+incompatible h1:td4jdvLcExb4cBISKIpHuGoVXh+dVKhn2Um6rjCsSsg= github.com/uber/jaeger-lib v2.4.1+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= @@ -1361,7 +1386,6 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201208171446-5f87f3452ae9/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= @@ -1451,6 +1475,7 @@ golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= @@ -1464,16 +1489,16 @@ golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210224082022-3d97a244fca7/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985 h1:4CSI6oo7cOjJKajidEljs9h+uP0rRZBPPPhcCbj5mw8= golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210903162142-ad29c8ab022f h1:w6wWR0H+nyVpbSAQbzVEIACVyr/h8l/BEkY6Sokc7Eg= +golang.org/x/net v0.0.0-20210903162142-ad29c8ab022f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1486,8 +1511,10 @@ golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914 h1:3B43BWw0xEBsLZ/NO1VALz6fppU3481pik+2Ksv45z8= golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f h1:Qmd2pbz05z7z6lm0DrgQVVPuBm92jqujBKMHMOlOQEw= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1569,6 +1596,7 @@ golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1593,22 +1621,22 @@ golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210309074719-68d13333faf2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c h1:F1jZWGFhYfh0Ci55sIpILtKKK8p3i2/krTr0H1rg74I= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34 h1:GkvMjFtXUmahfDtashnc1mnrCtuBVcwse5QV2lUk/tI= +golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d h1:SZxvLBoTP5yHO3Frd4z4vrF+DBX9vMVanchswa69toE= @@ -1751,8 +1779,10 @@ google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= -google.golang.org/api v0.51.0 h1:SQaA2Cx57B+iPw2MBgyjEkoeMkRK2IenSGoia0U3lCk= google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= +google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= +google.golang.org/api v0.56.0 h1:08F9XVYTLOGeSQb3xI9C0gXMuQanhdGed0cWFhDozbI= +google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1799,6 +1829,7 @@ google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEY google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201110150050-8816d57aaa9a/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -1815,8 +1846,14 @@ google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxH google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea h1:8ZyCcgugUqamxp/vZSEJw9CMy7VZlSWYJLLJPi/dSDA= google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= +google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83 h1:3V2dxSZpz4zozWWUq36vUxXEKnSYitEH2LdsAx+RUmg= +google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -1847,8 +1884,10 @@ google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAG google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.39.0 h1:Klz8I9kdtkIN6EpHHUOMLCYhTn/2WAe5a0s1hcBkdTI= google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.40.0 h1:AGJ0Ih4mHjSeibYkFGh1dD9KJ/eOtZ93I6hoHhukQ5Q= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -1880,6 +1919,8 @@ gopkg.in/fsnotify/fsnotify.v1 v1.4.7 h1:XNNYLJHt73EyYiCZi6+xjupS9CpvmiDgjPTAjrBl gopkg.in/fsnotify/fsnotify.v1 v1.4.7/go.mod h1:Fyux9zXlo4rWoMSIzpn9fDAYjalPqJ/K1qJ27s+7ltE= gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= +gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= +gopkg.in/go-playground/validator.v9 v9.29.1/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= @@ -1923,14 +1964,14 @@ k8s.io/api v0.17.5/go.mod h1:0zV5/ungglgy2Rlm3QK8fbxkXVs+BSJWpJP/+8gUVLY= k8s.io/api v0.20.1/go.mod h1:KqwcCVogGxQY3nBlRpwt+wpAMF/KjaCc7RpywacvqUo= k8s.io/api v0.20.4/go.mod h1:++lNL1AJMkDymriNniQsWRkMDzRaX2Y/POTUi8yvqYQ= k8s.io/api v0.20.6/go.mod h1:X9e8Qag6JV/bL5G6bU8sdVRltWKmdHsFUGS3eVndqE8= -k8s.io/api v0.21.3 h1:cblWILbLO8ar+Fj6xdDGr603HRsf8Wu9E9rngJeprZQ= -k8s.io/api v0.21.3/go.mod h1:hUgeYHUbBp23Ue4qdX9tR8/ANi/g3ehylAqDn9NWVOg= +k8s.io/api v0.22.1 h1:ISu3tD/jRhYfSW8jI/Q1e+lRxkR7w9UwQEZ7FgslrwY= +k8s.io/api v0.22.1/go.mod h1:bh13rkTp3F1XEaLGykbyRD2QaTTzPm0e/BMd8ptFONY= k8s.io/apimachinery v0.17.5/go.mod h1:ioIo1G/a+uONV7Tv+ZmCbMG1/a3kVw5YcDdncd8ugQ0= k8s.io/apimachinery v0.20.1/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= k8s.io/apimachinery v0.20.4/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= k8s.io/apimachinery v0.20.6/go.mod h1:ejZXtW1Ra6V1O5H8xPBGz+T3+4gfkTCeExAHKU57MAc= -k8s.io/apimachinery v0.21.3 h1:3Ju4nvjCngxxMYby0BimUk+pQHPOQp3eCGChk5kfVII= -k8s.io/apimachinery v0.21.3/go.mod h1:H/IM+5vH9kZRNJ4l3x/fXP/5bOPJaVP/guptnZPeCFI= +k8s.io/apimachinery v0.22.1 h1:DTARnyzmdHMz7bFWFDDm22AM4pLWTQECMpRTFu2d2OM= +k8s.io/apimachinery v0.22.1/go.mod h1:O3oNtNadZdeOMxHFVxOreoznohCpy0z6mocxbZr7oJ0= k8s.io/apiserver v0.20.1/go.mod h1:ro5QHeQkgMS7ZGpvf4tSMx6bBOgPfE+f52KwvXfScaU= k8s.io/apiserver v0.20.4/go.mod h1:Mc80thBKOyy7tbvFtB4kJv1kbdD0eIH8k8vianJcbFM= k8s.io/apiserver v0.20.6/go.mod h1:QIJXNt6i6JB+0YQRNcS0hdRHJlMhflFmsBDeSgT1r8Q= @@ -1938,8 +1979,8 @@ k8s.io/client-go v0.17.5/go.mod h1:S8uZpBpjJJdEH/fEyxcqg7Rn0P5jH+ilkgBHjriSmNo= k8s.io/client-go v0.20.1/go.mod h1:/zcHdt1TeWSd5HoUe6elJmHSQ6uLLgp4bIJHVEuy+/Y= k8s.io/client-go v0.20.4/go.mod h1:LiMv25ND1gLUdBeYxBIwKpkSC5IsozMMmOOeSJboP+k= k8s.io/client-go v0.20.6/go.mod h1:nNQMnOvEUEsOzRRFIIkdmYOjAZrC8bgq0ExboWSU1I0= -k8s.io/client-go v0.21.3 h1:J9nxZTOmvkInRDCzcSNQmPJbDYN/PjlxXT9Mos3HcLg= -k8s.io/client-go v0.21.3/go.mod h1:+VPhCgTsaFmGILxR/7E1N0S+ryO010QBeNCv5JwRGYU= +k8s.io/client-go v0.22.1 h1:jW0ZSHi8wW260FvcXHkIa0NLxFBQszTlhiAVsU5mopw= +k8s.io/client-go v0.22.1/go.mod h1:BquC5A4UOo4qVDUtoc04/+Nxp1MeHcVc1HJm1KmG8kk= k8s.io/component-base v0.20.1/go.mod h1:guxkoJnNoh8LNrbtiQOlyp2Y2XFCZQmrcg2n/DeYNLk= k8s.io/component-base v0.20.4/go.mod h1:t4p9EdiagbVCJKrQ1RsA5/V4rFQNDfRlevJajlGwgjI= k8s.io/component-base v0.20.6/go.mod h1:6f1MPBAeI+mvuts3sIdtpjljHWBQ2cIy38oBIWMYnrM= @@ -1951,13 +1992,14 @@ k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8 k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/kube-openapi v0.0.0-20200316234421-82d701f24f9d/go.mod h1:F+5wygcW0wmRTnM3cOgIqGivxkwSWIWT5YdsDbeAOaU= k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM= -k8s.io/kube-openapi v0.0.0-20210305001622-591a79e4bda7 h1:vEx13qjvaZ4yfObSSXW7BrMc/KQBBT/Jyee8XtLf4x0= -k8s.io/kube-openapi v0.0.0-20210305001622-591a79e4bda7/go.mod h1:wXW5VT87nVfh/iLV8FpR2uDvrFyomxbtb1KivDbvPTE= +k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e h1:KLHHjkdQFomZy8+06csTWZ0m1343QqxZhR2LJ1OxCYM= +k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= k8s.io/utils v0.0.0-20191114184206-e782cd3c129f/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= k8s.io/utils v0.0.0-20200414100711-2df71ebbae66/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20201110183641-67b214c5f920 h1:CbnUZsM497iRC5QMVkHwyl8s2tB3g7yaSHkYPkpgelw= k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20210707171843-4b05e18ac7d9 h1:imL9YgXQ9p7xmPzHFm/vVd/cF78jad+n4wK1ABwYtMM= +k8s.io/utils v0.0.0-20210707171843-4b05e18ac7d9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= diff --git a/notifier/notifier.go b/notifier/notifier.go index 7af21c565..97086d562 100644 --- a/notifier/notifier.go +++ b/notifier/notifier.go @@ -634,7 +634,7 @@ type alertmanagerSet struct { } func newAlertmanagerSet(cfg *config.AlertmanagerConfig, logger log.Logger, metrics *alertMetrics) (*alertmanagerSet, error) { - client, err := config_util.NewClientFromConfig(cfg.HTTPClientConfig, "alertmanager", config_util.WithHTTP2Disabled()) + client, err := config_util.NewClientFromConfig(cfg.HTTPClientConfig, "alertmanager") if err != nil { return nil, err } diff --git a/notifier/notifier_test.go b/notifier/notifier_test.go index 1e7854ba1..e4a7f26cd 100644 --- a/notifier/notifier_test.go +++ b/notifier/notifier_test.go @@ -154,7 +154,7 @@ func TestHandlerSendAll(t *testing.T) { Username: "prometheus", Password: "testing_password", }, - }, "auth_alertmanager", config_util.WithHTTP2Disabled()) + }, "auth_alertmanager") h.alertmanagers = make(map[string]*alertmanagerSet) @@ -392,7 +392,7 @@ func TestHandlerQueuing(t *testing.T) { require.NoError(t, err) return case <-time.After(5 * time.Second): - t.Fatalf("Alerts were not pushed") + require.FailNow(t, "Alerts were not pushed.") } } } @@ -424,7 +424,7 @@ func TestHandlerQueuing(t *testing.T) { case err := <-errc: require.NoError(t, err) case <-time.After(5 * time.Second): - t.Fatalf("Alerts were not pushed") + require.FailNow(t, "Alerts were not pushed.") } // Verify that we receive the last 3 batches. @@ -480,14 +480,12 @@ alerting: alertmanagers: - static_configs: ` - if err := yaml.UnmarshalStrict([]byte(s), cfg); err != nil { - t.Fatalf("Unable to load YAML config: %s", err) - } + err := yaml.UnmarshalStrict([]byte(s), cfg) + require.NoError(t, err, "Unable to load YAML config.") require.Equal(t, 1, len(cfg.AlertingConfig.AlertmanagerConfigs)) - if err := n.ApplyConfig(cfg); err != nil { - t.Fatalf("Error Applying the config:%v", err) - } + err = n.ApplyConfig(cfg) + require.NoError(t, err, "Error applying the config.") tgs := make(map[string][]*targetgroup.Group) for _, tt := range tests { @@ -534,14 +532,12 @@ alerting: regex: 'alertmanager:9093' action: drop ` - if err := yaml.UnmarshalStrict([]byte(s), cfg); err != nil { - t.Fatalf("Unable to load YAML config: %s", err) - } + err := yaml.UnmarshalStrict([]byte(s), cfg) + require.NoError(t, err, "Unable to load YAML config.") require.Equal(t, 1, len(cfg.AlertingConfig.AlertmanagerConfigs)) - if err := n.ApplyConfig(cfg); err != nil { - t.Fatalf("Error Applying the config:%v", err) - } + err = n.ApplyConfig(cfg) + require.NoError(t, err, "Error applying the config.") tgs := make(map[string][]*targetgroup.Group) for _, tt := range tests { diff --git a/pkg/labels/labels_test.go b/pkg/labels/labels_test.go index 961c89938..57f28224e 100644 --- a/pkg/labels/labels_test.go +++ b/pkg/labels/labels_test.go @@ -546,6 +546,46 @@ func TestLabels_Get(t *testing.T) { require.Equal(t, "111", Labels{{"aaa", "111"}, {"bbb", "222"}}.Get("aaa")) } +// BenchmarkLabels_Get was written to check whether a binary search can improve the performance vs the linear search implementation +// The results have shown that binary search would only be better when searching last labels in scenarios with more than 10 labels. +// In the following list, `old` is the linear search while `new` is the binary search implementaiton (without calling sort.Search, which performs even worse here) +// name old time/op new time/op delta +// Labels_Get/with_5_labels/get_first_label 5.12ns ± 0% 14.24ns ± 0% ~ (p=1.000 n=1+1) +// Labels_Get/with_5_labels/get_middle_label 13.5ns ± 0% 18.5ns ± 0% ~ (p=1.000 n=1+1) +// Labels_Get/with_5_labels/get_last_label 21.9ns ± 0% 18.9ns ± 0% ~ (p=1.000 n=1+1) +// Labels_Get/with_10_labels/get_first_label 5.11ns ± 0% 19.47ns ± 0% ~ (p=1.000 n=1+1) +// Labels_Get/with_10_labels/get_middle_label 26.2ns ± 0% 19.3ns ± 0% ~ (p=1.000 n=1+1) +// Labels_Get/with_10_labels/get_last_label 42.8ns ± 0% 23.4ns ± 0% ~ (p=1.000 n=1+1) +// Labels_Get/with_30_labels/get_first_label 5.10ns ± 0% 24.63ns ± 0% ~ (p=1.000 n=1+1) +// Labels_Get/with_30_labels/get_middle_label 75.8ns ± 0% 29.7ns ± 0% ~ (p=1.000 n=1+1) +// Labels_Get/with_30_labels/get_last_label 169ns ± 0% 29ns ± 0% ~ (p=1.000 n=1+1) +func BenchmarkLabels_Get(b *testing.B) { + maxLabels := 30 + allLabels := make(Labels, maxLabels) + for i := 0; i < maxLabels; i++ { + allLabels[i] = Label{Name: strings.Repeat(string('a'+byte(i)), 5)} + } + for _, size := range []int{5, 10, maxLabels} { + b.Run(fmt.Sprintf("with %d labels", size), func(b *testing.B) { + labels := allLabels[:size] + for _, scenario := range []struct { + desc, label string + }{ + {"get first label", labels[0].Name}, + {"get middle label", labels[size/2].Name}, + {"get last label", labels[size-1].Name}, + } { + b.Run(scenario.desc, func(b *testing.B) { + b.ResetTimer() + for i := 0; i < b.N; i++ { + _ = labels.Get(scenario.label) + } + }) + } + }) + } +} + func TestLabels_Copy(t *testing.T) { require.Equal(t, Labels{{"aaa", "111"}, {"bbb", "222"}}, Labels{{"aaa", "111"}, {"bbb", "222"}}.Copy()) } diff --git a/pkg/labels/matcher.go b/pkg/labels/matcher.go index 88d463233..f299c40f6 100644 --- a/pkg/labels/matcher.go +++ b/pkg/labels/matcher.go @@ -28,17 +28,18 @@ const ( MatchNotRegexp ) +var matchTypeToStr = [...]string{ + MatchEqual: "=", + MatchNotEqual: "!=", + MatchRegexp: "=~", + MatchNotRegexp: "!~", +} + func (m MatchType) String() string { - typeToStr := map[MatchType]string{ - MatchEqual: "=", - MatchNotEqual: "!=", - MatchRegexp: "=~", - MatchNotRegexp: "!~", + if m < MatchEqual || m > MatchNotRegexp { + panic("unknown match type") } - if str, ok := typeToStr[m]; ok { - return str - } - panic("unknown match type") + return matchTypeToStr[m] } // Matcher models the matching of a label. diff --git a/pkg/labels/matcher_test.go b/pkg/labels/matcher_test.go index 4c85ac2ab..14615a50d 100644 --- a/pkg/labels/matcher_test.go +++ b/pkg/labels/matcher_test.go @@ -117,3 +117,9 @@ func TestInverse(t *testing.T) { require.Equal(t, test.expected.Type, result.Type) } } + +func BenchmarkMatchType_String(b *testing.B) { + for i := 0; i <= b.N; i++ { + _ = MatchType(i % int(MatchNotRegexp+1)).String() + } +} diff --git a/pkg/relabel/relabel.go b/pkg/relabel/relabel.go index 0bd00fe8a..ec452f5b5 100644 --- a/pkg/relabel/relabel.go +++ b/pkg/relabel/relabel.go @@ -100,6 +100,9 @@ func (c *Config) UnmarshalYAML(unmarshal func(interface{}) error) error { if c.Regex.Regexp == nil { c.Regex = MustNewRegexp("") } + if c.Action == "" { + return errors.Errorf("relabel action cannot be empty") + } if c.Modulus == 0 && c.Action == HashMod { return errors.Errorf("relabel configuration for hashmod requires non-zero modulus") } diff --git a/pkg/rulefmt/rulefmt.go b/pkg/rulefmt/rulefmt.go index 920c7a203..62cd6de09 100644 --- a/pkg/rulefmt/rulefmt.go +++ b/pkg/rulefmt/rulefmt.go @@ -107,6 +107,7 @@ func (g *RuleGroups) Validate(node ruleGroups) (errs []error) { type RuleGroup struct { Name string `yaml:"name"` Interval model.Duration `yaml:"interval,omitempty"` + Limit int `yaml:"limit,omitempty"` Rules []RuleNode `yaml:"rules"` } @@ -239,6 +240,7 @@ func testTemplateParsing(rl *RuleNode) (errs []error) { model.Time(timestamp.FromTime(time.Now())), nil, nil, + nil, ) return tmpl.ParseTest() } diff --git a/pkg/rulefmt/rulefmt_test.go b/pkg/rulefmt/rulefmt_test.go index 2aad6d228..6f5ce51ed 100644 --- a/pkg/rulefmt/rulefmt_test.go +++ b/pkg/rulefmt/rulefmt_test.go @@ -15,19 +15,14 @@ package rulefmt import ( "path/filepath" - "strings" "testing" "github.com/stretchr/testify/require" ) func TestParseFileSuccess(t *testing.T) { - if _, errs := ParseFile("testdata/test.yaml"); len(errs) > 0 { - t.Errorf("unexpected errors parsing file") - for _, err := range errs { - t.Error(err) - } - } + _, errs := ParseFile("testdata/test.yaml") + require.Empty(t, errs, "unexpected errors parsing file") } func TestParseFileFailure(t *testing.T) { @@ -79,15 +74,9 @@ func TestParseFileFailure(t *testing.T) { for _, c := range table { _, errs := ParseFile(filepath.Join("testdata", c.filename)) - if errs == nil { - t.Errorf("Expected error parsing %s but got none", c.filename) - continue - } - if !strings.Contains(errs[0].Error(), c.errMsg) { - t.Errorf("Expected error for %s to contain %q but got: %s", c.filename, c.errMsg, errs) - } + require.NotNil(t, errs, "Expected error parsing %s but got none", c.filename) + require.Error(t, errs[0], c.errMsg, "Expected error for %s.", c.filename) } - } func TestTemplateParsing(t *testing.T) { diff --git a/pkg/runtime/limits_default.go b/pkg/runtime/limits_default.go index 4f59b1c55..c3e0b4701 100644 --- a/pkg/runtime/limits_default.go +++ b/pkg/runtime/limits_default.go @@ -11,6 +11,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +//go:build !windows // +build !windows package runtime diff --git a/pkg/runtime/limits_windows.go b/pkg/runtime/limits_windows.go index d947e132e..ce514949e 100644 --- a/pkg/runtime/limits_windows.go +++ b/pkg/runtime/limits_windows.go @@ -11,6 +11,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +//go:build windows // +build windows package runtime diff --git a/pkg/runtime/statfs.go b/pkg/runtime/statfs.go index 06522094e..2e5a624b6 100644 --- a/pkg/runtime/statfs.go +++ b/pkg/runtime/statfs.go @@ -11,6 +11,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +//go:build openbsd || windows || netbsd || solaris // +build openbsd windows netbsd solaris package runtime diff --git a/pkg/runtime/statfs_default.go b/pkg/runtime/statfs_default.go index 8ce7d8339..a493a5cbb 100644 --- a/pkg/runtime/statfs_default.go +++ b/pkg/runtime/statfs_default.go @@ -11,8 +11,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -// +build !windows,!openbsd,!netbsd,!solaris -// +build !386 +//go:build !windows && !openbsd && !netbsd && !solaris && !386 +// +build !windows,!openbsd,!netbsd,!solaris,!386 package runtime diff --git a/pkg/runtime/statfs_linux_386.go b/pkg/runtime/statfs_linux_386.go index ba90ca8a6..b45eecdd3 100644 --- a/pkg/runtime/statfs_linux_386.go +++ b/pkg/runtime/statfs_linux_386.go @@ -11,6 +11,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +//go:build linux && 386 // +build linux,386 package runtime diff --git a/pkg/runtime/statfs_uint32.go b/pkg/runtime/statfs_uint32.go index 1a5557a8c..fa10ebc96 100644 --- a/pkg/runtime/statfs_uint32.go +++ b/pkg/runtime/statfs_uint32.go @@ -11,6 +11,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +//go:build (386 && darwin) || (386 && freebsd) // +build 386,darwin 386,freebsd package runtime diff --git a/pkg/runtime/uname_default.go b/pkg/runtime/uname_default.go index 595a4a28c..161337121 100644 --- a/pkg/runtime/uname_default.go +++ b/pkg/runtime/uname_default.go @@ -11,6 +11,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +//go:build !linux // +build !linux package runtime diff --git a/pkg/runtime/vmlimits_default.go b/pkg/runtime/vmlimits_default.go index 47c4dd7c9..bf35b48fe 100644 --- a/pkg/runtime/vmlimits_default.go +++ b/pkg/runtime/vmlimits_default.go @@ -11,8 +11,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -// +build !windows -// +build !openbsd +//go:build !windows && !openbsd +// +build !windows,!openbsd package runtime diff --git a/pkg/runtime/vmlimits_openbsd.go b/pkg/runtime/vmlimits_openbsd.go index f2117fe06..e33ab4802 100644 --- a/pkg/runtime/vmlimits_openbsd.go +++ b/pkg/runtime/vmlimits_openbsd.go @@ -11,6 +11,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +//go:build openbsd // +build openbsd package runtime diff --git a/pkg/textparse/openmetricsparse.go b/pkg/textparse/openmetricsparse.go index 81a6bd7df..ef1719321 100644 --- a/pkg/textparse/openmetricsparse.go +++ b/pkg/textparse/openmetricsparse.go @@ -313,11 +313,10 @@ func (p *OpenMetricsParser) Next() (Entry, error) { t2 := p.nextToken() if t2 == tBraceOpen { - offsets, err := p.parseLVals() + p.offsets, err = p.parseLVals(p.offsets) if err != nil { return EntryInvalid, err } - p.offsets = append(p.offsets, offsets...) p.series = p.l.b[p.start:p.l.i] t2 = p.nextToken() } @@ -374,12 +373,12 @@ func (p *OpenMetricsParser) parseComment() error { return err } + var err error // Parse the labels. - offsets, err := p.parseLVals() + p.eOffsets, err = p.parseLVals(p.eOffsets) if err != nil { return err } - p.eOffsets = append(p.eOffsets, offsets...) p.exemplar = p.l.b[p.start:p.l.i] // Get the value. @@ -417,8 +416,7 @@ func (p *OpenMetricsParser) parseComment() error { return nil } -func (p *OpenMetricsParser) parseLVals() ([]int, error) { - var offsets []int +func (p *OpenMetricsParser) parseLVals(offsets []int) ([]int, error) { first := true for { t := p.nextToken() diff --git a/promql/bench_test.go b/promql/bench_test.go index aac2be716..eb020d2f1 100644 --- a/promql/bench_test.go +++ b/promql/bench_test.go @@ -71,7 +71,7 @@ func BenchmarkRangeQuery(b *testing.B) { a := storage.Appender(context.Background()) ts := int64(s * 10000) // 10s interval. for i, metric := range metrics { - ref, _ := a.Append(refs[i], metric, ts, float64(s)) + ref, _ := a.Append(refs[i], metric, ts, float64(s)+float64(i)/float64(len(metrics))) refs[i] = ref } if err := a.Commit(); err != nil { @@ -130,6 +130,9 @@ func BenchmarkRangeQuery(b *testing.B) { { expr: "a_X unless b_X{l=~'.*[0-4]$'}", }, + { + expr: "a_X and b_X{l='notfound'}", + }, // Simple functions. { expr: "abs(a_X)", @@ -159,6 +162,9 @@ func BenchmarkRangeQuery(b *testing.B) { { expr: "count_values('value', h_X)", }, + { + expr: "topk(1, a_X)", + }, // Combinations. { expr: "rate(a_X[1m]) + rate(b_X[1m])", @@ -172,6 +178,10 @@ func BenchmarkRangeQuery(b *testing.B) { { expr: "histogram_quantile(0.9, rate(h_X[5m]))", }, + // Many-to-one join. + { + expr: "a_X + on(l) group_right a_one", + }, } // X in an expr will be replaced by different metric sizes. diff --git a/promql/engine.go b/promql/engine.go index 44290f163..e5dbcd2d7 100644 --- a/promql/engine.go +++ b/promql/engine.go @@ -913,6 +913,8 @@ func (ev *evaluator) Eval(expr parser.Expr) (v parser.Value, ws storage.Warnings type EvalSeriesHelper struct { // The grouping key used by aggregation. groupingKey uint64 + // Used to map left-hand to right-hand in binary operations. + signature string } // EvalNodeHelper stores extra information and caches for evaluating a single node across steps. @@ -925,8 +927,6 @@ type EvalNodeHelper struct { // Caches. // DropMetricName and label_*. Dmn map[uint64]labels.Labels - // signatureFunc. - sigf map[string]string // funcHistogramQuantile. signatureToMetricWithBuckets map[string]*metricWithBuckets // label_replace. @@ -957,23 +957,6 @@ func (enh *EvalNodeHelper) DropMetricName(l labels.Labels) labels.Labels { return ret } -func (enh *EvalNodeHelper) signatureFunc(on bool, names ...string) func(labels.Labels) string { - if enh.sigf == nil { - enh.sigf = make(map[string]string, len(enh.Out)) - } - f := signatureFunc(on, enh.lblBuf, names...) - return func(l labels.Labels) string { - enh.lblBuf = l.Bytes(enh.lblBuf) - ret, ok := enh.sigf[string(enh.lblBuf)] - if ok { - return ret - } - ret = f(l) - enh.sigf[string(enh.lblBuf)] = ret - return ret - } -} - // rangeEval evaluates the given expressions, and then for each step calls // the given funcCall with the values computed for each expression at that // step. The return value is the combination into time series of all the @@ -1432,22 +1415,28 @@ func (ev *evaluator) eval(expr parser.Expr) (parser.Value, storage.Warnings) { return append(enh.Out, Sample{Point: Point{V: val}}), nil }, e.LHS, e.RHS) case lt == parser.ValueTypeVector && rt == parser.ValueTypeVector: + // Function to compute the join signature for each series. + buf := make([]byte, 0, 1024) + sigf := signatureFunc(e.VectorMatching.On, buf, e.VectorMatching.MatchingLabels...) + initSignatures := func(series labels.Labels, h *EvalSeriesHelper) { + h.signature = sigf(series) + } switch e.Op { case parser.LAND: - return ev.rangeEval(nil, func(v []parser.Value, _ [][]EvalSeriesHelper, enh *EvalNodeHelper) (Vector, storage.Warnings) { - return ev.VectorAnd(v[0].(Vector), v[1].(Vector), e.VectorMatching, enh), nil + return ev.rangeEval(initSignatures, func(v []parser.Value, sh [][]EvalSeriesHelper, enh *EvalNodeHelper) (Vector, storage.Warnings) { + return ev.VectorAnd(v[0].(Vector), v[1].(Vector), e.VectorMatching, sh[0], sh[1], enh), nil }, e.LHS, e.RHS) case parser.LOR: - return ev.rangeEval(nil, func(v []parser.Value, _ [][]EvalSeriesHelper, enh *EvalNodeHelper) (Vector, storage.Warnings) { - return ev.VectorOr(v[0].(Vector), v[1].(Vector), e.VectorMatching, enh), nil + return ev.rangeEval(initSignatures, func(v []parser.Value, sh [][]EvalSeriesHelper, enh *EvalNodeHelper) (Vector, storage.Warnings) { + return ev.VectorOr(v[0].(Vector), v[1].(Vector), e.VectorMatching, sh[0], sh[1], enh), nil }, e.LHS, e.RHS) case parser.LUNLESS: - return ev.rangeEval(nil, func(v []parser.Value, _ [][]EvalSeriesHelper, enh *EvalNodeHelper) (Vector, storage.Warnings) { - return ev.VectorUnless(v[0].(Vector), v[1].(Vector), e.VectorMatching, enh), nil + return ev.rangeEval(initSignatures, func(v []parser.Value, sh [][]EvalSeriesHelper, enh *EvalNodeHelper) (Vector, storage.Warnings) { + return ev.VectorUnless(v[0].(Vector), v[1].(Vector), e.VectorMatching, sh[0], sh[1], enh), nil }, e.LHS, e.RHS) default: - return ev.rangeEval(nil, func(v []parser.Value, _ [][]EvalSeriesHelper, enh *EvalNodeHelper) (Vector, storage.Warnings) { - return ev.VectorBinop(e.Op, v[0].(Vector), v[1].(Vector), e.VectorMatching, e.ReturnBool, enh), nil + return ev.rangeEval(initSignatures, func(v []parser.Value, sh [][]EvalSeriesHelper, enh *EvalNodeHelper) (Vector, storage.Warnings) { + return ev.VectorBinop(e.Op, v[0].(Vector), v[1].(Vector), e.VectorMatching, e.ReturnBool, sh[0], sh[1], enh), nil }, e.LHS, e.RHS) } @@ -1774,62 +1763,72 @@ func (ev *evaluator) matrixIterSlice(it *storage.BufferedSeriesIterator, mint, m return out } -func (ev *evaluator) VectorAnd(lhs, rhs Vector, matching *parser.VectorMatching, enh *EvalNodeHelper) Vector { +func (ev *evaluator) VectorAnd(lhs, rhs Vector, matching *parser.VectorMatching, lhsh, rhsh []EvalSeriesHelper, enh *EvalNodeHelper) Vector { if matching.Card != parser.CardManyToMany { panic("set operations must only use many-to-many matching") } - sigf := enh.signatureFunc(matching.On, matching.MatchingLabels...) + if len(lhs) == 0 || len(rhs) == 0 { + return nil // Short-circuit: AND with nothing is nothing. + } // The set of signatures for the right-hand side Vector. rightSigs := map[string]struct{}{} // Add all rhs samples to a map so we can easily find matches later. - for _, rs := range rhs { - rightSigs[sigf(rs.Metric)] = struct{}{} + for _, sh := range rhsh { + rightSigs[sh.signature] = struct{}{} } - for _, ls := range lhs { + for i, ls := range lhs { // If there's a matching entry in the right-hand side Vector, add the sample. - if _, ok := rightSigs[sigf(ls.Metric)]; ok { + if _, ok := rightSigs[lhsh[i].signature]; ok { enh.Out = append(enh.Out, ls) } } return enh.Out } -func (ev *evaluator) VectorOr(lhs, rhs Vector, matching *parser.VectorMatching, enh *EvalNodeHelper) Vector { +func (ev *evaluator) VectorOr(lhs, rhs Vector, matching *parser.VectorMatching, lhsh, rhsh []EvalSeriesHelper, enh *EvalNodeHelper) Vector { if matching.Card != parser.CardManyToMany { panic("set operations must only use many-to-many matching") } - sigf := enh.signatureFunc(matching.On, matching.MatchingLabels...) + if len(lhs) == 0 { // Short-circuit. + return rhs + } else if len(rhs) == 0 { + return lhs + } leftSigs := map[string]struct{}{} // Add everything from the left-hand-side Vector. - for _, ls := range lhs { - leftSigs[sigf(ls.Metric)] = struct{}{} + for i, ls := range lhs { + leftSigs[lhsh[i].signature] = struct{}{} enh.Out = append(enh.Out, ls) } // Add all right-hand side elements which have not been added from the left-hand side. - for _, rs := range rhs { - if _, ok := leftSigs[sigf(rs.Metric)]; !ok { + for j, rs := range rhs { + if _, ok := leftSigs[rhsh[j].signature]; !ok { enh.Out = append(enh.Out, rs) } } return enh.Out } -func (ev *evaluator) VectorUnless(lhs, rhs Vector, matching *parser.VectorMatching, enh *EvalNodeHelper) Vector { +func (ev *evaluator) VectorUnless(lhs, rhs Vector, matching *parser.VectorMatching, lhsh, rhsh []EvalSeriesHelper, enh *EvalNodeHelper) Vector { if matching.Card != parser.CardManyToMany { panic("set operations must only use many-to-many matching") } - sigf := enh.signatureFunc(matching.On, matching.MatchingLabels...) - - rightSigs := map[string]struct{}{} - for _, rs := range rhs { - rightSigs[sigf(rs.Metric)] = struct{}{} + // Short-circuit: empty rhs means we will return everything in lhs; + // empty lhs means we will return empty - don't need to build a map. + if len(lhs) == 0 || len(rhs) == 0 { + return lhs } - for _, ls := range lhs { - if _, ok := rightSigs[sigf(ls.Metric)]; !ok { + rightSigs := map[string]struct{}{} + for _, sh := range rhsh { + rightSigs[sh.signature] = struct{}{} + } + + for i, ls := range lhs { + if _, ok := rightSigs[lhsh[i].signature]; !ok { enh.Out = append(enh.Out, ls) } } @@ -1837,17 +1836,20 @@ func (ev *evaluator) VectorUnless(lhs, rhs Vector, matching *parser.VectorMatchi } // VectorBinop evaluates a binary operation between two Vectors, excluding set operators. -func (ev *evaluator) VectorBinop(op parser.ItemType, lhs, rhs Vector, matching *parser.VectorMatching, returnBool bool, enh *EvalNodeHelper) Vector { +func (ev *evaluator) VectorBinop(op parser.ItemType, lhs, rhs Vector, matching *parser.VectorMatching, returnBool bool, lhsh, rhsh []EvalSeriesHelper, enh *EvalNodeHelper) Vector { if matching.Card == parser.CardManyToMany { panic("many-to-many only allowed for set operators") } - sigf := enh.signatureFunc(matching.On, matching.MatchingLabels...) + if len(lhs) == 0 || len(rhs) == 0 { + return nil // Short-circuit: nothing is going to match. + } // The control flow below handles one-to-one or many-to-one matching. // For one-to-many, swap sidedness and account for the swap when calculating // values. if matching.Card == parser.CardOneToMany { lhs, rhs = rhs, lhs + lhsh, rhsh = rhsh, lhsh } // All samples from the rhs hashed by the matching label/values. @@ -1861,8 +1863,8 @@ func (ev *evaluator) VectorBinop(op parser.ItemType, lhs, rhs Vector, matching * rightSigs := enh.rightSigs // Add all rhs samples to a map so we can easily find matches later. - for _, rs := range rhs { - sig := sigf(rs.Metric) + for i, rs := range rhs { + sig := rhsh[i].signature // The rhs is guaranteed to be the 'one' side. Having multiple samples // with the same signature means that the matching is many-to-many. if duplSample, found := rightSigs[sig]; found { @@ -1892,8 +1894,8 @@ func (ev *evaluator) VectorBinop(op parser.ItemType, lhs, rhs Vector, matching * // For all lhs samples find a respective rhs sample and perform // the binary operation. - for _, ls := range lhs { - sig := sigf(ls.Metric) + for i, ls := range lhs { + sig := lhsh[i].signature rs, found := rightSigs[sig] // Look for a match in the rhs Vector. if !found { @@ -2114,6 +2116,8 @@ func vectorElemBinop(op parser.ItemType, lhs, rhs float64) (float64, bool) { return lhs, lhs >= rhs case parser.LTE: return lhs, lhs <= rhs + case parser.ATAN2: + return math.Atan2(lhs, rhs), true } panic(errors.Errorf("operator %q not allowed for operations between Vectors", op)) } @@ -2210,22 +2214,24 @@ func (ev *evaluator) aggregation(op parser.ItemType, grouping []string, without resultSize := k if k > inputVecLen { resultSize = inputVecLen + } else if k == 0 { + resultSize = 1 } switch op { case parser.STDVAR, parser.STDDEV: result[groupingKey].value = 0 case parser.TOPK, parser.QUANTILE: - result[groupingKey].heap = make(vectorByValueHeap, 0, resultSize) - heap.Push(&result[groupingKey].heap, &Sample{ + result[groupingKey].heap = make(vectorByValueHeap, 1, resultSize) + result[groupingKey].heap[0] = Sample{ Point: Point{V: s.V}, Metric: s.Metric, - }) + } case parser.BOTTOMK: - result[groupingKey].reverseHeap = make(vectorByReverseValueHeap, 0, resultSize) - heap.Push(&result[groupingKey].reverseHeap, &Sample{ + result[groupingKey].reverseHeap = make(vectorByReverseValueHeap, 1, resultSize) + result[groupingKey].reverseHeap[0] = Sample{ Point: Point{V: s.V}, Metric: s.Metric, - }) + } case parser.GROUP: result[groupingKey].value = 1 } @@ -2283,6 +2289,13 @@ func (ev *evaluator) aggregation(op parser.ItemType, grouping []string, without case parser.TOPK: if int64(len(group.heap)) < k || group.heap[0].V < s.V || math.IsNaN(group.heap[0].V) { if int64(len(group.heap)) == k { + if k == 1 { // For k==1 we can replace in-situ. + group.heap[0] = Sample{ + Point: Point{V: s.V}, + Metric: s.Metric, + } + break + } heap.Pop(&group.heap) } heap.Push(&group.heap, &Sample{ @@ -2294,6 +2307,13 @@ func (ev *evaluator) aggregation(op parser.ItemType, grouping []string, without case parser.BOTTOMK: if int64(len(group.reverseHeap)) < k || group.reverseHeap[0].V > s.V || math.IsNaN(group.reverseHeap[0].V) { if int64(len(group.reverseHeap)) == k { + if k == 1 { // For k==1 we can replace in-situ. + group.reverseHeap[0] = Sample{ + Point: Point{V: s.V}, + Metric: s.Metric, + } + break + } heap.Pop(&group.reverseHeap) } heap.Push(&group.reverseHeap, &Sample{ @@ -2327,7 +2347,9 @@ func (ev *evaluator) aggregation(op parser.ItemType, grouping []string, without case parser.TOPK: // The heap keeps the lowest value on top, so reverse it. - sort.Sort(sort.Reverse(aggr.heap)) + if len(aggr.heap) > 1 { + sort.Sort(sort.Reverse(aggr.heap)) + } for _, v := range aggr.heap { enh.Out = append(enh.Out, Sample{ Metric: v.Metric, @@ -2338,7 +2360,9 @@ func (ev *evaluator) aggregation(op parser.ItemType, grouping []string, without case parser.BOTTOMK: // The heap keeps the highest value on top, so reverse it. - sort.Sort(sort.Reverse(aggr.reverseHeap)) + if len(aggr.reverseHeap) > 1 { + sort.Sort(sort.Reverse(aggr.reverseHeap)) + } for _, v := range aggr.reverseHeap { enh.Out = append(enh.Out, Sample{ Metric: v.Metric, diff --git a/promql/engine_test.go b/promql/engine_test.go index d5734439d..c4eb07d52 100644 --- a/promql/engine_test.go +++ b/promql/engine_test.go @@ -72,7 +72,7 @@ func TestQueryConcurrency(t *testing.T) { case <-processing: // Expected. case <-time.After(20 * time.Millisecond): - t.Fatalf("Query within concurrency threshold not being executed") + require.Fail(t, "Query within concurrency threshold not being executed") } } @@ -81,7 +81,7 @@ func TestQueryConcurrency(t *testing.T) { select { case <-processing: - t.Fatalf("Query above concurrency threshold being executed") + require.Fail(t, "Query above concurrency threshold being executed") case <-time.After(20 * time.Millisecond): // Expected. } @@ -93,7 +93,7 @@ func TestQueryConcurrency(t *testing.T) { case <-processing: // Expected. case <-time.After(20 * time.Millisecond): - t.Fatalf("Query within concurrency threshold not being executed") + require.Fail(t, "Query within concurrency threshold not being executed") } // Terminate remaining queries. @@ -604,7 +604,7 @@ func TestEngineShutdown(t *testing.T) { require.Equal(t, errQueryCanceled, res.Err) query2 := engine.newTestQuery(func(context.Context) error { - t.Fatalf("reached query execution unexpectedly") + require.FailNow(t, "reached query execution unexpectedly") return nil }) @@ -1121,9 +1121,7 @@ func TestRecoverEvaluatorRuntime(t *testing.T) { //nolint:govet a[123] = 1 - if err.Error() != "unexpected error" { - t.Fatalf("wrong error message: %q, expected %q", err, "unexpected error") - } + require.EqualError(t, err, "unexpected error") } func TestRecoverEvaluatorError(t *testing.T) { @@ -1133,9 +1131,7 @@ func TestRecoverEvaluatorError(t *testing.T) { e := errors.New("custom error") defer func() { - if err.Error() != e.Error() { - t.Fatalf("wrong error message: %q, expected %q", err, e) - } + require.EqualError(t, err, e.Error()) }() defer ev.recover(nil, &err) @@ -1154,12 +1150,8 @@ func TestRecoverEvaluatorErrorWithWarnings(t *testing.T) { } defer func() { - if err.Error() != e.Error() { - t.Fatalf("wrong error message: %q, expected %q", err, e) - } - if len(ws) != len(warnings) && ws[0] != warnings[0] { - t.Fatalf("wrong warning message: %q, expected %q", ws[0], warnings[0]) - } + require.EqualError(t, err, e.Error()) + require.Equal(t, warnings, ws, "wrong warning message") }() defer ev.recover(&ws, &err) diff --git a/promql/functions.go b/promql/functions.go index d72b4caf6..50594503d 100644 --- a/promql/functions.go +++ b/promql/functions.go @@ -570,6 +570,87 @@ func funcLog10(vals []parser.Value, args parser.Expressions, enh *EvalNodeHelper return simpleFunc(vals, enh, math.Log10) } +// === sin(Vector parser.ValueTypeVector) Vector === +func funcSin(vals []parser.Value, args parser.Expressions, enh *EvalNodeHelper) Vector { + return simpleFunc(vals, enh, math.Sin) +} + +// === cos(Vector parser.ValueTypeVector) Vector === +func funcCos(vals []parser.Value, args parser.Expressions, enh *EvalNodeHelper) Vector { + return simpleFunc(vals, enh, math.Cos) +} + +// === tan(Vector parser.ValueTypeVector) Vector === +func funcTan(vals []parser.Value, args parser.Expressions, enh *EvalNodeHelper) Vector { + return simpleFunc(vals, enh, math.Tan) +} + +// == asin(Vector parser.ValueTypeVector) Vector === +func funcAsin(vals []parser.Value, args parser.Expressions, enh *EvalNodeHelper) Vector { + return simpleFunc(vals, enh, math.Asin) +} + +// == acos(Vector parser.ValueTypeVector) Vector === +func funcAcos(vals []parser.Value, args parser.Expressions, enh *EvalNodeHelper) Vector { + return simpleFunc(vals, enh, math.Acos) +} + +// == atan(Vector parser.ValueTypeVector) Vector === +func funcAtan(vals []parser.Value, args parser.Expressions, enh *EvalNodeHelper) Vector { + return simpleFunc(vals, enh, math.Atan) +} + +// == sinh(Vector parser.ValueTypeVector) Vector === +func funcSinh(vals []parser.Value, args parser.Expressions, enh *EvalNodeHelper) Vector { + return simpleFunc(vals, enh, math.Sinh) +} + +// == cosh(Vector parser.ValueTypeVector) Vector === +func funcCosh(vals []parser.Value, args parser.Expressions, enh *EvalNodeHelper) Vector { + return simpleFunc(vals, enh, math.Cosh) +} + +// == tanh(Vector parser.ValueTypeVector) Vector === +func funcTanh(vals []parser.Value, args parser.Expressions, enh *EvalNodeHelper) Vector { + return simpleFunc(vals, enh, math.Tanh) +} + +// == asinh(Vector parser.ValueTypeVector) Vector === +func funcAsinh(vals []parser.Value, args parser.Expressions, enh *EvalNodeHelper) Vector { + return simpleFunc(vals, enh, math.Asinh) +} + +// == acosh(Vector parser.ValueTypeVector) Vector === +func funcAcosh(vals []parser.Value, args parser.Expressions, enh *EvalNodeHelper) Vector { + return simpleFunc(vals, enh, math.Acosh) +} + +// == atanh(Vector parser.ValueTypeVector) Vector === +func funcAtanh(vals []parser.Value, args parser.Expressions, enh *EvalNodeHelper) Vector { + return simpleFunc(vals, enh, math.Atanh) +} + +// === rad(Vector parser.ValueTypeVector) Vector === +func funcRad(vals []parser.Value, args parser.Expressions, enh *EvalNodeHelper) Vector { + return simpleFunc(vals, enh, func(v float64) float64 { + return v * math.Pi / 180 + }) +} + +// === deg(Vector parser.ValueTypeVector) Vector === +func funcDeg(vals []parser.Value, args parser.Expressions, enh *EvalNodeHelper) Vector { + return simpleFunc(vals, enh, func(v float64) float64 { + return v * 180 / math.Pi + }) +} + +// === pi() Scalar === +func funcPi(vals []parser.Value, args parser.Expressions, enh *EvalNodeHelper) Vector { + return Vector{Sample{Point: Point{ + V: math.Pi, + }}} +} + // === sgn(Vector parser.ValueTypeVector) Vector === func funcSgn(vals []parser.Value, args parser.Expressions, enh *EvalNodeHelper) Vector { return simpleFunc(vals, enh, func(v float64) float64 { @@ -935,16 +1016,25 @@ var FunctionCalls = map[string]FunctionCall{ "abs": funcAbs, "absent": funcAbsent, "absent_over_time": funcAbsentOverTime, + "acos": funcAcos, + "acosh": funcAcosh, + "asin": funcAsin, + "asinh": funcAsinh, + "atan": funcAtan, + "atanh": funcAtanh, "avg_over_time": funcAvgOverTime, "ceil": funcCeil, "changes": funcChanges, "clamp": funcClamp, "clamp_max": funcClampMax, "clamp_min": funcClampMin, + "cos": funcCos, + "cosh": funcCosh, "count_over_time": funcCountOverTime, "days_in_month": funcDaysInMonth, "day_of_month": funcDayOfMonth, "day_of_week": funcDayOfWeek, + "deg": funcDeg, "delta": funcDelta, "deriv": funcDeriv, "exp": funcExp, @@ -965,20 +1055,26 @@ var FunctionCalls = map[string]FunctionCall{ "min_over_time": funcMinOverTime, "minute": funcMinute, "month": funcMonth, + "pi": funcPi, "predict_linear": funcPredictLinear, "present_over_time": funcPresentOverTime, "quantile_over_time": funcQuantileOverTime, + "rad": funcRad, "rate": funcRate, "resets": funcResets, "round": funcRound, "scalar": funcScalar, "sgn": funcSgn, + "sin": funcSin, + "sinh": funcSinh, "sort": funcSort, "sort_desc": funcSortDesc, "sqrt": funcSqrt, "stddev_over_time": funcStddevOverTime, "stdvar_over_time": funcStdvarOverTime, "sum_over_time": funcSumOverTime, + "tan": funcTan, + "tanh": funcTanh, "time": funcTime, "timestamp": funcTimestamp, "vector": funcVector, diff --git a/promql/fuzz.go b/promql/fuzz.go index eeb1fede8..b34fbbc66 100644 --- a/promql/fuzz.go +++ b/promql/fuzz.go @@ -12,6 +12,7 @@ // limitations under the License. // Only build when go-fuzz is in use +//go:build gofuzz // +build gofuzz package promql diff --git a/promql/parser/functions.go b/promql/parser/functions.go index da5d279f3..c4bc5ddb8 100644 --- a/promql/parser/functions.go +++ b/promql/parser/functions.go @@ -39,9 +39,34 @@ var Functions = map[string]*Function{ ArgTypes: []ValueType{ValueTypeMatrix}, ReturnType: ValueTypeVector, }, - "present_over_time": { - Name: "present_over_time", - ArgTypes: []ValueType{ValueTypeMatrix}, + "acos": { + Name: "acos", + ArgTypes: []ValueType{ValueTypeVector}, + ReturnType: ValueTypeVector, + }, + "acosh": { + Name: "acosh", + ArgTypes: []ValueType{ValueTypeVector}, + ReturnType: ValueTypeVector, + }, + "asin": { + Name: "asin", + ArgTypes: []ValueType{ValueTypeVector}, + ReturnType: ValueTypeVector, + }, + "asinh": { + Name: "asinh", + ArgTypes: []ValueType{ValueTypeVector}, + ReturnType: ValueTypeVector, + }, + "atan": { + Name: "atan", + ArgTypes: []ValueType{ValueTypeVector}, + ReturnType: ValueTypeVector, + }, + "atanh": { + Name: "atanh", + ArgTypes: []ValueType{ValueTypeVector}, ReturnType: ValueTypeVector, }, "avg_over_time": { @@ -74,6 +99,16 @@ var Functions = map[string]*Function{ ArgTypes: []ValueType{ValueTypeVector, ValueTypeScalar}, ReturnType: ValueTypeVector, }, + "cos": { + Name: "cos", + ArgTypes: []ValueType{ValueTypeVector}, + ReturnType: ValueTypeVector, + }, + "cosh": { + Name: "cosh", + ArgTypes: []ValueType{ValueTypeVector}, + ReturnType: ValueTypeVector, + }, "count_over_time": { Name: "count_over_time", ArgTypes: []ValueType{ValueTypeMatrix}, @@ -97,6 +132,11 @@ var Functions = map[string]*Function{ Variadic: 1, ReturnType: ValueTypeVector, }, + "deg": { + Name: "deg", + ArgTypes: []ValueType{ValueTypeVector}, + ReturnType: ValueTypeVector, + }, "delta": { Name: "delta", ArgTypes: []ValueType{ValueTypeMatrix}, @@ -201,16 +241,31 @@ var Functions = map[string]*Function{ Variadic: 1, ReturnType: ValueTypeVector, }, + "pi": { + Name: "pi", + ArgTypes: []ValueType{}, + ReturnType: ValueTypeScalar, + }, "predict_linear": { Name: "predict_linear", ArgTypes: []ValueType{ValueTypeMatrix, ValueTypeScalar}, ReturnType: ValueTypeVector, }, + "present_over_time": { + Name: "present_over_time", + ArgTypes: []ValueType{ValueTypeMatrix}, + ReturnType: ValueTypeVector, + }, "quantile_over_time": { Name: "quantile_over_time", ArgTypes: []ValueType{ValueTypeScalar, ValueTypeMatrix}, ReturnType: ValueTypeVector, }, + "rad": { + Name: "rad", + ArgTypes: []ValueType{ValueTypeVector}, + ReturnType: ValueTypeVector, + }, "rate": { Name: "rate", ArgTypes: []ValueType{ValueTypeMatrix}, @@ -237,6 +292,16 @@ var Functions = map[string]*Function{ ArgTypes: []ValueType{ValueTypeVector}, ReturnType: ValueTypeVector, }, + "sin": { + Name: "sin", + ArgTypes: []ValueType{ValueTypeVector}, + ReturnType: ValueTypeVector, + }, + "sinh": { + Name: "sinh", + ArgTypes: []ValueType{ValueTypeVector}, + ReturnType: ValueTypeVector, + }, "sort": { Name: "sort", ArgTypes: []ValueType{ValueTypeVector}, @@ -267,6 +332,16 @@ var Functions = map[string]*Function{ ArgTypes: []ValueType{ValueTypeMatrix}, ReturnType: ValueTypeVector, }, + "tan": { + Name: "tan", + ArgTypes: []ValueType{ValueTypeVector}, + ReturnType: ValueTypeVector, + }, + "tanh": { + Name: "tanh", + ArgTypes: []ValueType{ValueTypeVector}, + ReturnType: ValueTypeVector, + }, "time": { Name: "time", ArgTypes: []ValueType{}, diff --git a/promql/parser/generated_parser.y b/promql/parser/generated_parser.y index 3f914e4ac..fcf504aca 100644 --- a/promql/parser/generated_parser.y +++ b/promql/parser/generated_parser.y @@ -84,6 +84,7 @@ NEQ_REGEX POW SUB AT +ATAN2 %token operatorsEnd // Aggregators. @@ -156,7 +157,7 @@ START_METRIC_SELECTOR %left LAND LUNLESS %left EQLC GTE GTR LSS LTE NEQ %left ADD SUB -%left MUL DIV MOD +%left MUL DIV MOD ATAN2 %right POW // Offset modifiers do not have associativity. @@ -237,6 +238,7 @@ aggregate_modifier: // Operator precedence only works if each of those is listed separately. binary_expr : expr ADD bin_modifier expr { $$ = yylex.(*parser).newBinaryExpression($1, $2, $3, $4) } + | expr ATAN2 bin_modifier expr { $$ = yylex.(*parser).newBinaryExpression($1, $2, $3, $4) } | expr DIV bin_modifier expr { $$ = yylex.(*parser).newBinaryExpression($1, $2, $3, $4) } | expr EQLC bin_modifier expr { $$ = yylex.(*parser).newBinaryExpression($1, $2, $3, $4) } | expr GTE bin_modifier expr { $$ = yylex.(*parser).newBinaryExpression($1, $2, $3, $4) } @@ -571,7 +573,7 @@ metric : metric_identifier label_set ; -metric_identifier: AVG | BOTTOMK | BY | COUNT | COUNT_VALUES | GROUP | IDENTIFIER | LAND | LOR | LUNLESS | MAX | METRIC_IDENTIFIER | MIN | OFFSET | QUANTILE | STDDEV | STDVAR | SUM | TOPK | WITHOUT; +metric_identifier: AVG | BOTTOMK | BY | COUNT | COUNT_VALUES | GROUP | IDENTIFIER | LAND | LOR | LUNLESS | MAX | METRIC_IDENTIFIER | MIN | OFFSET | QUANTILE | STDDEV | STDVAR | SUM | TOPK | WITHOUT | START | END; label_set : LEFT_BRACE label_set_list RIGHT_BRACE { $$ = labels.New($2...) } @@ -674,7 +676,7 @@ series_value : IDENTIFIER aggregate_op : AVG | BOTTOMK | COUNT | COUNT_VALUES | GROUP | MAX | MIN | QUANTILE | STDDEV | STDVAR | SUM | TOPK ; // inside of grouping options label names can be recognized as keywords by the lexer. This is a list of keywords that could also be a label name. -maybe_label : AVG | BOOL | BOTTOMK | BY | COUNT | COUNT_VALUES | GROUP | GROUP_LEFT | GROUP_RIGHT | IDENTIFIER | IGNORING | LAND | LOR | LUNLESS | MAX | METRIC_IDENTIFIER | MIN | OFFSET | ON | QUANTILE | STDDEV | STDVAR | SUM | TOPK; +maybe_label : AVG | BOOL | BOTTOMK | BY | COUNT | COUNT_VALUES | GROUP | GROUP_LEFT | GROUP_RIGHT | IDENTIFIER | IGNORING | LAND | LOR | LUNLESS | MAX | METRIC_IDENTIFIER | MIN | OFFSET | ON | QUANTILE | STDDEV | STDVAR | SUM | TOPK | START | END | ATAN2; unary_op : ADD | SUB; diff --git a/promql/parser/generated_parser.y.go b/promql/parser/generated_parser.y.go index e0c5ceac5..71614913a 100644 --- a/promql/parser/generated_parser.y.go +++ b/promql/parser/generated_parser.y.go @@ -1,11 +1,11 @@ -// Code generated by goyacc -o generated_parser.y.go generated_parser.y. DO NOT EDIT. +// Code generated by goyacc -o promql/parser/generated_parser.y.go promql/parser/generated_parser.y. DO NOT EDIT. -//line generated_parser.y:15 +//line promql/parser/generated_parser.y:15 package parser import __yyfmt__ "fmt" -//line generated_parser.y:15 +//line promql/parser/generated_parser.y:15 import ( "math" @@ -17,7 +17,7 @@ import ( "github.com/prometheus/prometheus/pkg/value" ) -//line generated_parser.y:28 +//line promql/parser/generated_parser.y:28 type yySymType struct { yys int node Node @@ -73,41 +73,42 @@ const NEQ_REGEX = 57382 const POW = 57383 const SUB = 57384 const AT = 57385 -const operatorsEnd = 57386 -const aggregatorsStart = 57387 -const AVG = 57388 -const BOTTOMK = 57389 -const COUNT = 57390 -const COUNT_VALUES = 57391 -const GROUP = 57392 -const MAX = 57393 -const MIN = 57394 -const QUANTILE = 57395 -const STDDEV = 57396 -const STDVAR = 57397 -const SUM = 57398 -const TOPK = 57399 -const aggregatorsEnd = 57400 -const keywordsStart = 57401 -const BOOL = 57402 -const BY = 57403 -const GROUP_LEFT = 57404 -const GROUP_RIGHT = 57405 -const IGNORING = 57406 -const OFFSET = 57407 -const ON = 57408 -const WITHOUT = 57409 -const keywordsEnd = 57410 -const preprocessorStart = 57411 -const START = 57412 -const END = 57413 -const preprocessorEnd = 57414 -const startSymbolsStart = 57415 -const START_METRIC = 57416 -const START_SERIES_DESCRIPTION = 57417 -const START_EXPRESSION = 57418 -const START_METRIC_SELECTOR = 57419 -const startSymbolsEnd = 57420 +const ATAN2 = 57386 +const operatorsEnd = 57387 +const aggregatorsStart = 57388 +const AVG = 57389 +const BOTTOMK = 57390 +const COUNT = 57391 +const COUNT_VALUES = 57392 +const GROUP = 57393 +const MAX = 57394 +const MIN = 57395 +const QUANTILE = 57396 +const STDDEV = 57397 +const STDVAR = 57398 +const SUM = 57399 +const TOPK = 57400 +const aggregatorsEnd = 57401 +const keywordsStart = 57402 +const BOOL = 57403 +const BY = 57404 +const GROUP_LEFT = 57405 +const GROUP_RIGHT = 57406 +const IGNORING = 57407 +const OFFSET = 57408 +const ON = 57409 +const WITHOUT = 57410 +const keywordsEnd = 57411 +const preprocessorStart = 57412 +const START = 57413 +const END = 57414 +const preprocessorEnd = 57415 +const startSymbolsStart = 57416 +const START_METRIC = 57417 +const START_SERIES_DESCRIPTION = 57418 +const START_EXPRESSION = 57419 +const START_METRIC_SELECTOR = 57420 +const startSymbolsEnd = 57421 var yyToknames = [...]string{ "$end", @@ -153,6 +154,7 @@ var yyToknames = [...]string{ "POW", "SUB", "AT", + "ATAN2", "operatorsEnd", "aggregatorsStart", "AVG", @@ -196,259 +198,266 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -//line generated_parser.y:747 +//line promql/parser/generated_parser.y:749 //line yacctab:1 var yyExca = [...]int{ -1, 1, 1, -1, -2, 0, - -1, 33, - 1, 128, - 10, 128, - 22, 128, + -1, 35, + 1, 131, + 10, 131, + 22, 131, -2, 0, - -1, 56, - 2, 140, - 15, 140, - 61, 140, - 67, 140, - -2, 96, - -1, 57, - 2, 141, - 15, 141, - 61, 141, - 67, 141, - -2, 97, -1, 58, - 2, 142, - 15, 142, - 61, 142, - 67, 142, - -2, 99, - -1, 59, 2, 143, 15, 143, - 61, 143, - 67, 143, - -2, 100, - -1, 60, + 62, 143, + 68, 143, + -2, 97, + -1, 59, 2, 144, 15, 144, - 61, 144, - 67, 144, - -2, 101, - -1, 61, + 62, 144, + 68, 144, + -2, 98, + -1, 60, 2, 145, 15, 145, - 61, 145, - 67, 145, - -2, 106, - -1, 62, + 62, 145, + 68, 145, + -2, 100, + -1, 61, 2, 146, 15, 146, - 61, 146, - 67, 146, - -2, 108, - -1, 63, + 62, 146, + 68, 146, + -2, 101, + -1, 62, 2, 147, 15, 147, - 61, 147, - 67, 147, - -2, 110, - -1, 64, + 62, 147, + 68, 147, + -2, 102, + -1, 63, 2, 148, 15, 148, - 61, 148, - 67, 148, - -2, 111, - -1, 65, + 62, 148, + 68, 148, + -2, 107, + -1, 64, 2, 149, 15, 149, - 61, 149, - 67, 149, - -2, 112, - -1, 66, + 62, 149, + 68, 149, + -2, 109, + -1, 65, 2, 150, 15, 150, - 61, 150, - 67, 150, - -2, 113, - -1, 67, + 62, 150, + 68, 150, + -2, 111, + -1, 66, 2, 151, 15, 151, - 61, 151, - 67, 151, + 62, 151, + 68, 151, + -2, 112, + -1, 67, + 2, 152, + 15, 152, + 62, 152, + 68, 152, + -2, 113, + -1, 68, + 2, 153, + 15, 153, + 62, 153, + 68, 153, -2, 114, - -1, 186, - 12, 193, - 13, 193, - 16, 193, - 17, 193, - 23, 193, - 26, 193, - 32, 193, - 33, 193, - 36, 193, - 42, 193, - 46, 193, - 47, 193, - 48, 193, - 49, 193, - 50, 193, - 51, 193, - 52, 193, - 53, 193, - 54, 193, - 55, 193, - 56, 193, - 57, 193, - 61, 193, - 65, 193, - 67, 193, + -1, 69, + 2, 154, + 15, 154, + 62, 154, + 68, 154, + -2, 115, + -1, 190, + 12, 199, + 13, 199, + 16, 199, + 17, 199, + 23, 199, + 26, 199, + 32, 199, + 33, 199, + 36, 199, + 42, 199, + 47, 199, + 48, 199, + 49, 199, + 50, 199, + 51, 199, + 52, 199, + 53, 199, + 54, 199, + 55, 199, + 56, 199, + 57, 199, + 58, 199, + 62, 199, + 66, 199, + 68, 199, + 71, 199, + 72, 199, -2, 0, - -1, 187, - 12, 193, - 13, 193, - 16, 193, - 17, 193, - 23, 193, - 26, 193, - 32, 193, - 33, 193, - 36, 193, - 42, 193, - 46, 193, - 47, 193, - 48, 193, - 49, 193, - 50, 193, - 51, 193, - 52, 193, - 53, 193, - 54, 193, - 55, 193, - 56, 193, - 57, 193, - 61, 193, - 65, 193, - 67, 193, + -1, 191, + 12, 199, + 13, 199, + 16, 199, + 17, 199, + 23, 199, + 26, 199, + 32, 199, + 33, 199, + 36, 199, + 42, 199, + 47, 199, + 48, 199, + 49, 199, + 50, 199, + 51, 199, + 52, 199, + 53, 199, + 54, 199, + 55, 199, + 56, 199, + 57, 199, + 58, 199, + 62, 199, + 66, 199, + 68, 199, + 71, 199, + 72, 199, -2, 0, - -1, 207, - 19, 191, + -1, 212, + 19, 197, -2, 0, - -1, 254, - 19, 192, + -1, 262, + 19, 198, -2, 0, } const yyPrivate = 57344 -const yyLast = 638 +const yyLast = 659 var yyAct = [...]int{ - 260, 35, 211, 138, 250, 249, 146, 110, 75, 99, - 98, 101, 144, 184, 6, 185, 123, 102, 140, 100, - 186, 187, 55, 145, 245, 141, 150, 149, 263, 244, - 49, 70, 103, 51, 22, 50, 150, 118, 161, 252, - 243, 52, 151, 239, 68, 264, 261, 112, 149, 203, - 18, 19, 151, 105, 20, 106, 238, 111, 139, 104, - 69, 242, 119, 240, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 176, 107, 101, 13, - 147, 148, 158, 24, 102, 30, 2, 3, 4, 5, - 97, 258, 103, 7, 208, 157, 257, 175, 207, 166, - 70, 152, 80, 81, 165, 162, 156, 159, 154, 256, - 155, 206, 31, 90, 91, 164, 141, 93, 94, 96, - 117, 183, 116, 174, 265, 182, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 79, 95, 181, 202, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 255, 10, - 168, 77, 169, 153, 54, 141, 112, 9, 9, 72, - 141, 76, 32, 241, 204, 205, 111, 173, 34, 97, - 49, 70, 109, 51, 22, 50, 246, 171, 1, 247, - 248, 52, 81, 251, 68, 8, 253, 170, 172, 33, - 18, 19, 90, 91, 20, 97, 93, 46, 96, 45, - 69, 254, 44, 71, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 43, 77, 42, 13, - 95, 122, 93, 24, 96, 30, 41, 76, 40, 39, - 120, 259, 178, 74, 160, 38, 262, 49, 70, 180, - 51, 22, 50, 121, 149, 37, 95, 115, 52, 36, - 267, 68, 114, 150, 268, 47, 142, 18, 19, 179, - 78, 20, 177, 113, 209, 73, 143, 69, 53, 151, - 212, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 213, 167, 48, 13, 108, 0, 0, - 24, 0, 30, 223, 0, 0, 0, 229, 0, 0, - 0, 266, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 225, 226, 0, 0, 227, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 214, 216, 218, - 219, 220, 228, 230, 233, 234, 235, 236, 237, 213, - 0, 215, 217, 221, 222, 224, 231, 232, 0, 223, - 0, 0, 0, 229, 0, 0, 0, 210, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, - 226, 0, 0, 227, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 214, 216, 218, 219, 220, 228, 230, - 233, 234, 235, 236, 237, 0, 0, 215, 217, 221, - 222, 224, 231, 232, 17, 70, 0, 0, 22, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 18, 19, 0, 0, 20, 0, - 17, 31, 0, 0, 22, 0, 0, 0, 11, 12, + 268, 37, 216, 142, 258, 257, 150, 113, 77, 102, + 101, 104, 188, 271, 189, 190, 191, 105, 6, 126, + 218, 57, 253, 149, 154, 252, 251, 266, 180, 121, + 228, 260, 265, 272, 234, 103, 269, 144, 274, 247, + 155, 72, 213, 162, 145, 264, 212, 250, 106, 179, + 230, 231, 246, 153, 232, 108, 161, 109, 208, 211, + 106, 107, 245, 33, 122, 219, 221, 223, 224, 225, + 233, 235, 238, 239, 240, 241, 242, 143, 110, 220, + 222, 226, 227, 229, 236, 237, 115, 79, 7, 243, + 244, 2, 3, 4, 5, 104, 114, 78, 145, 263, + 170, 105, 248, 177, 156, 169, 145, 118, 166, 160, + 163, 158, 117, 159, 157, 10, 168, 100, 120, 273, + 119, 145, 81, 116, 187, 74, 178, 34, 186, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 96, 185, 99, 207, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 182, 56, 1, 115, 9, 9, 98, + 184, 148, 172, 218, 173, 153, 114, 249, 209, 210, + 261, 8, 112, 228, 154, 35, 153, 234, 47, 46, + 254, 215, 79, 255, 256, 154, 45, 259, 44, 175, + 155, 125, 78, 230, 231, 43, 48, 232, 76, 174, + 176, 155, 73, 42, 41, 245, 262, 123, 219, 221, + 223, 224, 225, 233, 235, 238, 239, 240, 241, 242, + 164, 40, 220, 222, 226, 227, 229, 236, 237, 124, + 151, 152, 243, 244, 39, 38, 49, 146, 183, 267, + 80, 181, 214, 75, 270, 51, 72, 147, 53, 22, + 52, 55, 217, 165, 171, 50, 54, 111, 275, 70, + 0, 0, 276, 0, 0, 18, 19, 0, 0, 20, + 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 0, 0, 0, 13, 0, 0, 0, 24, + 0, 30, 0, 0, 31, 32, 36, 100, 51, 72, + 0, 53, 22, 52, 0, 0, 0, 0, 0, 54, + 84, 0, 70, 0, 0, 0, 0, 0, 18, 19, + 93, 94, 20, 0, 96, 0, 99, 83, 71, 0, + 0, 0, 0, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 0, 0, 0, 13, 98, + 0, 0, 24, 0, 30, 0, 0, 31, 32, 51, + 72, 0, 53, 22, 52, 0, 0, 0, 0, 0, + 54, 0, 0, 70, 0, 0, 0, 0, 0, 18, + 19, 0, 0, 20, 0, 0, 17, 72, 0, 71, + 22, 0, 0, 0, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 18, 19, 0, 13, + 20, 0, 0, 24, 0, 30, 0, 0, 31, 32, + 0, 11, 12, 14, 15, 16, 21, 23, 25, 26, + 27, 28, 29, 17, 33, 0, 13, 22, 0, 0, + 24, 0, 30, 0, 0, 31, 32, 0, 0, 0, + 0, 0, 0, 18, 19, 0, 0, 20, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 11, 12, 14, 15, 16, 21, 23, 25, 26, 27, 28, 29, - 18, 19, 0, 13, 20, 0, 0, 24, 0, 30, - 0, 0, 0, 0, 11, 12, 14, 15, 16, 21, - 23, 25, 26, 27, 28, 29, 97, 0, 0, 13, - 0, 0, 163, 24, 0, 30, 0, 0, 80, 81, - 82, 0, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 0, 93, 94, 96, 0, 0, 0, 0, - 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 80, 81, 82, 95, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 0, 93, - 94, 96, 0, 0, 97, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 80, 81, 82, 0, - 83, 84, 85, 95, 87, 88, 89, 90, 91, 92, - 0, 93, 94, 96, 0, 0, 97, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 81, - 82, 0, 83, 84, 0, 95, 87, 88, 0, 90, - 91, 92, 0, 93, 94, 96, 0, 0, 0, 0, + 0, 0, 100, 13, 0, 0, 0, 24, 167, 30, + 0, 0, 31, 32, 82, 84, 85, 0, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 100, 96, + 97, 99, 83, 0, 0, 0, 0, 0, 0, 0, + 82, 84, 85, 0, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 98, 96, 97, 99, 83, 0, + 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 82, 84, 85, 0, 86, 87, 88, + 98, 90, 91, 92, 93, 94, 95, 100, 96, 97, + 99, 83, 0, 0, 0, 0, 0, 0, 0, 82, + 84, 85, 0, 86, 87, 0, 100, 90, 91, 0, + 93, 94, 95, 98, 96, 97, 99, 83, 82, 84, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, + 94, 0, 0, 96, 97, 99, 83, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 95, + 0, 0, 0, 0, 0, 0, 0, 0, 98, } var yyPact = [...]int{ - 12, 83, 428, 428, 168, 402, -1000, -1000, -1000, 99, + 16, 78, 441, 441, 306, 394, -1000, -1000, -1000, 50, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 225, -1000, 138, -1000, 508, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 17, 77, - -1000, 235, -1000, 235, 87, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 190, -1000, 120, -1000, 514, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 164, -1000, -1000, 255, -1000, -1000, 118, -1000, 15, -1000, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, 16, 10, 161, 77, -50, - -1000, 80, 80, 18, -1000, 472, 191, -1000, 97, -1000, - -1000, 158, -1000, -1000, 159, -1000, 74, -1000, 237, 235, - -1000, -51, -42, -1000, 235, 235, 235, 235, 235, 235, - 235, 235, 235, 235, 235, 235, 235, 235, -1000, 107, - -1000, -1000, -1000, 34, -1000, -1000, -1000, -1000, -1000, -1000, - 31, 31, 92, -1000, -1000, -1000, -1000, 347, -1000, -1000, - 36, -1000, 508, -1000, -1000, 45, -1000, 38, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 5, 0, - -1000, -1000, -1000, 165, 80, 80, 80, 80, 191, 76, - 76, 76, 572, 540, 76, 76, 572, 191, 191, 76, - 191, 165, -1000, 19, -1000, -1000, -1000, 156, -1000, 89, + 33, 45, -1000, 367, -1000, 367, 28, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 164, -1000, -1000, 105, -1000, -1000, 116, -1000, + 7, -1000, -42, -42, -42, -42, -42, -42, -42, -42, + -42, -42, -42, -42, -42, -42, -42, -42, 35, 169, + 112, 45, -51, -1000, 41, 41, 243, -1000, 488, 103, + -1000, 98, -1000, -1000, 170, -1000, -1000, 85, -1000, 26, + -1000, 158, 367, -1000, -53, -48, -1000, 367, 367, 367, + 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, + 367, 367, -1000, 89, -1000, -1000, -1000, 43, -1000, -1000, + -1000, -1000, -1000, -1000, 36, 36, 40, -1000, -1000, -1000, + -1000, 171, -1000, -1000, 32, -1000, 514, -1000, -1000, 84, + -1000, 24, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 1, -2, -1000, -1000, -1000, 303, 41, 41, + 41, 41, 103, 103, 592, 592, 592, 573, 547, 592, + 592, 573, 103, 103, 592, 103, 303, -1000, 11, -1000, + -1000, -1000, 97, -1000, 25, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 235, - -1000, -1000, -1000, -1000, 29, 29, 4, -1000, -1000, -1000, - -1000, -1000, -1000, 26, 122, -1000, -1000, 291, -1000, 508, - -1000, -1000, -1000, 29, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 367, -1000, -1000, + -1000, -1000, 19, 19, -11, -1000, -1000, -1000, -1000, -1000, + -1000, 14, 117, -1000, -1000, 18, -1000, 514, -1000, -1000, + -1000, 19, -1000, -1000, -1000, -1000, -1000, } var yyPgo = [...]int{ - 0, 297, 7, 295, 2, 294, 280, 164, 278, 276, - 159, 275, 195, 8, 274, 4, 5, 272, 270, 0, - 23, 269, 6, 266, 265, 259, 10, 62, 255, 253, - 1, 245, 244, 9, 240, 22, 239, 238, 236, 231, - 228, 226, 212, 209, 207, 3, 196, 188, 172, + 0, 267, 7, 265, 2, 264, 262, 164, 261, 257, + 115, 253, 181, 8, 252, 4, 5, 251, 250, 0, + 23, 248, 6, 247, 246, 245, 10, 64, 244, 239, + 1, 231, 230, 9, 217, 21, 214, 213, 205, 201, + 198, 196, 189, 188, 206, 3, 180, 165, 127, } var yyR1 = [...]int{ @@ -456,22 +465,23 @@ var yyR1 = [...]int{ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 25, 25, 25, 25, 26, 26, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, - 28, 27, 29, 29, 39, 39, 34, 34, 34, 34, - 15, 15, 15, 15, 14, 14, 14, 4, 4, 31, - 33, 33, 32, 32, 32, 40, 38, 38, 38, 24, - 24, 24, 9, 9, 36, 42, 42, 42, 42, 42, - 43, 44, 44, 44, 35, 35, 35, 1, 1, 1, - 2, 2, 2, 2, 12, 12, 7, 7, 7, 7, + 28, 28, 27, 29, 29, 39, 39, 34, 34, 34, + 34, 15, 15, 15, 15, 14, 14, 14, 4, 4, + 31, 33, 33, 32, 32, 32, 40, 38, 38, 38, + 24, 24, 24, 9, 9, 36, 42, 42, 42, 42, + 42, 43, 44, 44, 44, 35, 35, 35, 1, 1, + 1, 2, 2, 2, 2, 12, 12, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 10, 10, 10, 10, - 11, 11, 11, 13, 13, 13, 13, 48, 18, 18, - 18, 18, 17, 17, 17, 17, 17, 21, 21, 21, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 6, 6, 6, 6, 6, 6, 6, 6, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 10, + 10, 10, 10, 11, 11, 11, 13, 13, 13, 13, + 48, 18, 18, 18, 18, 17, 17, 17, 17, 17, + 21, 21, 21, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 8, 8, 5, 5, - 5, 5, 37, 20, 22, 22, 23, 23, 19, 45, - 41, 46, 46, 16, 16, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 8, 8, 5, 5, 5, 5, 37, 20, + 22, 22, 23, 23, 19, 45, 41, 46, 46, 16, + 16, } var yyR2 = [...]int{ @@ -479,82 +489,85 @@ var yyR2 = [...]int{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 2, 2, 2, 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 1, 0, 1, 3, 3, 1, 1, 3, 3, - 3, 4, 2, 1, 3, 1, 2, 1, 1, 2, - 3, 2, 3, 1, 2, 3, 3, 4, 3, 3, - 5, 3, 1, 1, 4, 6, 6, 5, 4, 3, - 2, 2, 1, 1, 3, 4, 2, 3, 1, 2, - 3, 3, 2, 1, 2, 1, 1, 1, 1, 1, + 4, 4, 1, 0, 1, 3, 3, 1, 1, 3, + 3, 3, 4, 2, 1, 3, 1, 2, 1, 1, + 2, 3, 2, 3, 1, 2, 3, 3, 4, 3, + 3, 5, 3, 1, 1, 4, 6, 6, 5, 4, + 3, 2, 2, 1, 1, 3, 4, 2, 3, 1, + 2, 3, 3, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 3, 4, 2, 0, - 3, 1, 2, 3, 3, 2, 1, 2, 0, 3, - 2, 1, 1, 3, 1, 3, 4, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, + 4, 2, 0, 3, 1, 2, 3, 3, 2, 1, + 2, 0, 3, 2, 1, 1, 3, 1, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, - 1, 0, 1, 0, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 1, 1, 1, 1, 1, 0, 1, 0, + 1, } var yyChk = [...]int{ - -1000, -47, 74, 75, 76, 77, 2, 10, -12, -7, - -10, 46, 47, 61, 48, 49, 50, 12, 32, 33, - 36, 51, 16, 52, 65, 53, 54, 55, 56, 57, - 67, 13, -48, -12, 10, -30, -25, -28, -31, -36, - -37, -38, -40, -41, -42, -43, -44, -24, -3, 12, - 17, 15, 23, -8, -7, -35, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 26, 42, - 13, -44, -10, -11, 18, -13, 12, 2, -18, 2, - 26, 27, 28, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 41, 42, 65, 43, 14, -26, -33, - 2, 61, 67, 15, -33, -30, -30, -35, -1, 18, - -2, 12, 2, 18, 7, 2, 4, 2, 22, -27, - -34, -29, -39, 60, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -45, 42, - 2, 9, -23, -9, 2, -20, -22, 70, 71, 17, - 26, 42, -45, 2, -33, -26, -15, 15, 2, -15, - -32, 20, -30, 20, 18, 7, 2, -5, 2, 4, - 39, 29, 40, 18, -13, 23, 2, -17, 5, -21, - 12, -20, -22, -30, 64, 66, 62, 63, -30, -30, - -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, - -30, -30, -45, 15, -20, -20, 19, 6, 2, -14, - 20, -4, -6, 2, 46, 60, 47, 61, 48, 49, - 50, 62, 63, 12, 64, 32, 33, 36, 51, 16, - 52, 65, 66, 53, 54, 55, 56, 57, 20, 7, - 18, -2, 23, 2, 24, 24, -22, -15, -15, -16, - -15, -16, 20, -46, -45, 2, 20, 7, 2, -30, - -19, 17, -19, 24, 19, 2, 20, -4, -19, + -1000, -47, 75, 76, 77, 78, 2, 10, -12, -7, + -10, 47, 48, 62, 49, 50, 51, 12, 32, 33, + 36, 52, 16, 53, 66, 54, 55, 56, 57, 58, + 68, 71, 72, 13, -48, -12, 10, -30, -25, -28, + -31, -36, -37, -38, -40, -41, -42, -43, -44, -24, + -3, 12, 17, 15, 23, -8, -7, -35, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 26, 42, 13, -44, -10, -11, 18, -13, 12, 2, + -18, 2, 26, 44, 27, 28, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 41, 42, 66, 43, + 14, -26, -33, 2, 62, 68, 15, -33, -30, -30, + -35, -1, 18, -2, 12, 2, 18, 7, 2, 4, + 2, 22, -27, -34, -29, -39, 61, -27, -27, -27, + -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, + -27, -27, -45, 42, 2, 9, -23, -9, 2, -20, + -22, 71, 72, 17, 26, 42, -45, 2, -33, -26, + -15, 15, 2, -15, -32, 20, -30, 20, 18, 7, + 2, -5, 2, 4, 39, 29, 40, 18, -13, 23, + 2, -17, 5, -21, 12, -20, -22, -30, 65, 67, + 63, 64, -30, -30, -30, -30, -30, -30, -30, -30, + -30, -30, -30, -30, -30, -30, -30, -45, 15, -20, + -20, 19, 6, 2, -14, 20, -4, -6, 2, 47, + 61, 48, 62, 49, 50, 51, 63, 64, 12, 65, + 32, 33, 36, 52, 16, 53, 66, 67, 54, 55, + 56, 57, 58, 71, 72, 44, 20, 7, 18, -2, + 23, 2, 24, 24, -22, -15, -15, -16, -15, -16, + 20, -46, -45, 2, 20, 7, 2, -30, -19, 17, + -19, 24, 19, 2, 20, -4, -19, } var yyDef = [...]int{ - 0, -2, 119, 119, 0, 0, 7, 6, 1, 119, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 0, 2, -2, 3, 4, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 0, 102, - 182, 0, 190, 0, 82, 83, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -2, -2, 176, 177, - 0, 5, 94, 0, 118, 121, 0, 126, 127, 131, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 0, 0, 0, 0, 22, - 23, 0, 0, 0, 59, 0, 80, 81, 0, 86, - 88, 0, 93, 116, 0, 122, 0, 125, 130, 0, - 41, 46, 47, 43, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, - 68, 189, 69, 0, 71, 186, 187, 72, 73, 183, - 0, 0, 0, 79, 20, 21, 24, 0, 53, 25, - 0, 61, 63, 65, 84, 0, 89, 0, 92, 178, - 179, 180, 181, 117, 120, 123, 124, 129, 132, 134, - 137, 138, 139, 26, 0, 0, -2, -2, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 67, 0, 184, 185, 74, -2, 78, 0, - 52, 55, 57, 58, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 60, 64, - 85, 87, 90, 91, 0, 0, 0, 44, 45, 48, - 194, 49, 70, 0, -2, 77, 50, 0, 56, 62, - 133, 188, 135, 0, 75, 76, 51, 54, 136, + 0, -2, 122, 122, 0, 0, 7, 6, 1, 122, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 0, 2, -2, 3, 4, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 0, 103, 188, 0, 196, 0, 83, 84, -2, -2, + -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, + 182, 183, 0, 5, 95, 0, 121, 124, 0, 129, + 130, 134, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 0, 0, + 0, 0, 22, 23, 0, 0, 0, 60, 0, 81, + 82, 0, 87, 89, 0, 94, 119, 0, 125, 0, + 128, 133, 0, 42, 47, 48, 44, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 67, 0, 69, 195, 70, 0, 72, 192, + 193, 73, 74, 189, 0, 0, 0, 80, 20, 21, + 24, 0, 54, 25, 0, 62, 64, 66, 85, 0, + 90, 0, 93, 184, 185, 186, 187, 120, 123, 126, + 127, 132, 135, 137, 140, 141, 142, 26, 0, 0, + -2, -2, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 68, 0, 190, + 191, 75, -2, 79, 0, 53, 56, 58, 59, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 61, 65, 86, 88, + 91, 92, 0, 0, 0, 45, 46, 49, 200, 50, + 71, 0, -2, 78, 51, 0, 57, 63, 136, 194, + 138, 0, 76, 77, 52, 55, 139, } var yyTok1 = [...]int{ @@ -569,7 +582,7 @@ var yyTok2 = [...]int{ 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, + 72, 73, 74, 75, 76, 77, 78, 79, } var yyTok3 = [...]int{ @@ -915,62 +928,62 @@ yydefault: case 1: yyDollar = yyS[yypt-2 : yypt+1] -//line generated_parser.y:173 +//line promql/parser/generated_parser.y:174 { yylex.(*parser).generatedParserResult = yyDollar[2].labels } case 3: yyDollar = yyS[yypt-2 : yypt+1] -//line generated_parser.y:176 +//line promql/parser/generated_parser.y:177 { yylex.(*parser).addParseErrf(PositionRange{}, "no expression found in input") } case 4: yyDollar = yyS[yypt-2 : yypt+1] -//line generated_parser.y:178 +//line promql/parser/generated_parser.y:179 { yylex.(*parser).generatedParserResult = yyDollar[2].node } case 5: yyDollar = yyS[yypt-2 : yypt+1] -//line generated_parser.y:180 +//line promql/parser/generated_parser.y:181 { yylex.(*parser).generatedParserResult = yyDollar[2].node } case 7: yyDollar = yyS[yypt-1 : yypt+1] -//line generated_parser.y:183 +//line promql/parser/generated_parser.y:184 { yylex.(*parser).unexpected("", "") } case 20: yyDollar = yyS[yypt-3 : yypt+1] -//line generated_parser.y:206 +//line promql/parser/generated_parser.y:207 { yyVAL.node = yylex.(*parser).newAggregateExpr(yyDollar[1].item, yyDollar[2].node, yyDollar[3].node) } case 21: yyDollar = yyS[yypt-3 : yypt+1] -//line generated_parser.y:208 +//line promql/parser/generated_parser.y:209 { yyVAL.node = yylex.(*parser).newAggregateExpr(yyDollar[1].item, yyDollar[3].node, yyDollar[2].node) } case 22: yyDollar = yyS[yypt-2 : yypt+1] -//line generated_parser.y:210 +//line promql/parser/generated_parser.y:211 { yyVAL.node = yylex.(*parser).newAggregateExpr(yyDollar[1].item, &AggregateExpr{}, yyDollar[2].node) } case 23: yyDollar = yyS[yypt-2 : yypt+1] -//line generated_parser.y:212 +//line promql/parser/generated_parser.y:213 { yylex.(*parser).unexpected("aggregation", "") yyVAL.node = yylex.(*parser).newAggregateExpr(yyDollar[1].item, &AggregateExpr{}, Expressions{}) } case 24: yyDollar = yyS[yypt-2 : yypt+1] -//line generated_parser.y:220 +//line promql/parser/generated_parser.y:221 { yyVAL.node = &AggregateExpr{ Grouping: yyDollar[2].strings, @@ -978,7 +991,7 @@ yydefault: } case 25: yyDollar = yyS[yypt-2 : yypt+1] -//line generated_parser.y:226 +//line promql/parser/generated_parser.y:227 { yyVAL.node = &AggregateExpr{ Grouping: yyDollar[2].strings, @@ -987,205 +1000,211 @@ yydefault: } case 26: yyDollar = yyS[yypt-4 : yypt+1] -//line generated_parser.y:239 +//line promql/parser/generated_parser.y:240 { yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node) } case 27: yyDollar = yyS[yypt-4 : yypt+1] -//line generated_parser.y:240 +//line promql/parser/generated_parser.y:241 { yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node) } case 28: yyDollar = yyS[yypt-4 : yypt+1] -//line generated_parser.y:241 +//line promql/parser/generated_parser.y:242 { yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node) } case 29: yyDollar = yyS[yypt-4 : yypt+1] -//line generated_parser.y:242 +//line promql/parser/generated_parser.y:243 { yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node) } case 30: yyDollar = yyS[yypt-4 : yypt+1] -//line generated_parser.y:243 +//line promql/parser/generated_parser.y:244 { yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node) } case 31: yyDollar = yyS[yypt-4 : yypt+1] -//line generated_parser.y:244 +//line promql/parser/generated_parser.y:245 { yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node) } case 32: yyDollar = yyS[yypt-4 : yypt+1] -//line generated_parser.y:245 +//line promql/parser/generated_parser.y:246 { yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node) } case 33: yyDollar = yyS[yypt-4 : yypt+1] -//line generated_parser.y:246 +//line promql/parser/generated_parser.y:247 { yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node) } case 34: yyDollar = yyS[yypt-4 : yypt+1] -//line generated_parser.y:247 +//line promql/parser/generated_parser.y:248 { yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node) } case 35: yyDollar = yyS[yypt-4 : yypt+1] -//line generated_parser.y:248 +//line promql/parser/generated_parser.y:249 { yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node) } case 36: yyDollar = yyS[yypt-4 : yypt+1] -//line generated_parser.y:249 +//line promql/parser/generated_parser.y:250 { yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node) } case 37: yyDollar = yyS[yypt-4 : yypt+1] -//line generated_parser.y:250 +//line promql/parser/generated_parser.y:251 { yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node) } case 38: yyDollar = yyS[yypt-4 : yypt+1] -//line generated_parser.y:251 +//line promql/parser/generated_parser.y:252 { yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node) } case 39: yyDollar = yyS[yypt-4 : yypt+1] -//line generated_parser.y:252 +//line promql/parser/generated_parser.y:253 { yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node) } case 40: yyDollar = yyS[yypt-4 : yypt+1] -//line generated_parser.y:253 +//line promql/parser/generated_parser.y:254 { yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node) } - case 42: + case 41: + yyDollar = yyS[yypt-4 : yypt+1] +//line promql/parser/generated_parser.y:255 + { + yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node) + } + case 43: yyDollar = yyS[yypt-0 : yypt+1] -//line generated_parser.y:261 +//line promql/parser/generated_parser.y:263 { yyVAL.node = &BinaryExpr{ VectorMatching: &VectorMatching{Card: CardOneToOne}, } } - case 43: + case 44: yyDollar = yyS[yypt-1 : yypt+1] -//line generated_parser.y:266 +//line promql/parser/generated_parser.y:268 { yyVAL.node = &BinaryExpr{ VectorMatching: &VectorMatching{Card: CardOneToOne}, ReturnBool: true, } } - case 44: + case 45: yyDollar = yyS[yypt-3 : yypt+1] -//line generated_parser.y:274 +//line promql/parser/generated_parser.y:276 { yyVAL.node = yyDollar[1].node yyVAL.node.(*BinaryExpr).VectorMatching.MatchingLabels = yyDollar[3].strings } - case 45: + case 46: yyDollar = yyS[yypt-3 : yypt+1] -//line generated_parser.y:279 +//line promql/parser/generated_parser.y:281 { yyVAL.node = yyDollar[1].node yyVAL.node.(*BinaryExpr).VectorMatching.MatchingLabels = yyDollar[3].strings yyVAL.node.(*BinaryExpr).VectorMatching.On = true } - case 48: + case 49: yyDollar = yyS[yypt-3 : yypt+1] -//line generated_parser.y:289 +//line promql/parser/generated_parser.y:291 { yyVAL.node = yyDollar[1].node yyVAL.node.(*BinaryExpr).VectorMatching.Card = CardManyToOne yyVAL.node.(*BinaryExpr).VectorMatching.Include = yyDollar[3].strings } - case 49: + case 50: yyDollar = yyS[yypt-3 : yypt+1] -//line generated_parser.y:295 +//line promql/parser/generated_parser.y:297 { yyVAL.node = yyDollar[1].node yyVAL.node.(*BinaryExpr).VectorMatching.Card = CardOneToMany yyVAL.node.(*BinaryExpr).VectorMatching.Include = yyDollar[3].strings } - case 50: - yyDollar = yyS[yypt-3 : yypt+1] -//line generated_parser.y:304 - { - yyVAL.strings = yyDollar[2].strings - } case 51: - yyDollar = yyS[yypt-4 : yypt+1] -//line generated_parser.y:306 + yyDollar = yyS[yypt-3 : yypt+1] +//line promql/parser/generated_parser.y:306 { yyVAL.strings = yyDollar[2].strings } case 52: + yyDollar = yyS[yypt-4 : yypt+1] +//line promql/parser/generated_parser.y:308 + { + yyVAL.strings = yyDollar[2].strings + } + case 53: yyDollar = yyS[yypt-2 : yypt+1] -//line generated_parser.y:308 +//line promql/parser/generated_parser.y:310 { yyVAL.strings = []string{} } - case 53: + case 54: yyDollar = yyS[yypt-1 : yypt+1] -//line generated_parser.y:310 +//line promql/parser/generated_parser.y:312 { yylex.(*parser).unexpected("grouping opts", "\"(\"") yyVAL.strings = nil } - case 54: + case 55: yyDollar = yyS[yypt-3 : yypt+1] -//line generated_parser.y:316 +//line promql/parser/generated_parser.y:318 { yyVAL.strings = append(yyDollar[1].strings, yyDollar[3].item.Val) } - case 55: + case 56: yyDollar = yyS[yypt-1 : yypt+1] -//line generated_parser.y:318 +//line promql/parser/generated_parser.y:320 { yyVAL.strings = []string{yyDollar[1].item.Val} } - case 56: + case 57: yyDollar = yyS[yypt-2 : yypt+1] -//line generated_parser.y:320 +//line promql/parser/generated_parser.y:322 { yylex.(*parser).unexpected("grouping opts", "\",\" or \")\"") yyVAL.strings = yyDollar[1].strings } - case 57: + case 58: yyDollar = yyS[yypt-1 : yypt+1] -//line generated_parser.y:324 +//line promql/parser/generated_parser.y:326 { if !isLabel(yyDollar[1].item.Val) { yylex.(*parser).unexpected("grouping opts", "label") } yyVAL.item = yyDollar[1].item } - case 58: + case 59: yyDollar = yyS[yypt-1 : yypt+1] -//line generated_parser.y:331 +//line promql/parser/generated_parser.y:333 { yylex.(*parser).unexpected("grouping opts", "label") yyVAL.item = Item{} } - case 59: + case 60: yyDollar = yyS[yypt-2 : yypt+1] -//line generated_parser.y:339 +//line promql/parser/generated_parser.y:341 { fn, exist := getFunction(yyDollar[1].item.Val) if !exist { @@ -1200,88 +1219,88 @@ yydefault: }, } } - case 60: + case 61: yyDollar = yyS[yypt-3 : yypt+1] -//line generated_parser.y:356 +//line promql/parser/generated_parser.y:358 { yyVAL.node = yyDollar[2].node } - case 61: + case 62: yyDollar = yyS[yypt-2 : yypt+1] -//line generated_parser.y:358 +//line promql/parser/generated_parser.y:360 { yyVAL.node = Expressions{} } - case 62: + case 63: yyDollar = yyS[yypt-3 : yypt+1] -//line generated_parser.y:362 +//line promql/parser/generated_parser.y:364 { yyVAL.node = append(yyDollar[1].node.(Expressions), yyDollar[3].node.(Expr)) } - case 63: + case 64: yyDollar = yyS[yypt-1 : yypt+1] -//line generated_parser.y:364 +//line promql/parser/generated_parser.y:366 { yyVAL.node = Expressions{yyDollar[1].node.(Expr)} } - case 64: + case 65: yyDollar = yyS[yypt-2 : yypt+1] -//line generated_parser.y:366 +//line promql/parser/generated_parser.y:368 { yylex.(*parser).addParseErrf(yyDollar[2].item.PositionRange(), "trailing commas not allowed in function call args") yyVAL.node = yyDollar[1].node } - case 65: + case 66: yyDollar = yyS[yypt-3 : yypt+1] -//line generated_parser.y:377 +//line promql/parser/generated_parser.y:379 { yyVAL.node = &ParenExpr{Expr: yyDollar[2].node.(Expr), PosRange: mergeRanges(&yyDollar[1].item, &yyDollar[3].item)} } - case 66: + case 67: yyDollar = yyS[yypt-3 : yypt+1] -//line generated_parser.y:385 +//line promql/parser/generated_parser.y:387 { yylex.(*parser).addOffset(yyDollar[1].node, yyDollar[3].duration) yyVAL.node = yyDollar[1].node } - case 67: + case 68: yyDollar = yyS[yypt-4 : yypt+1] -//line generated_parser.y:390 +//line promql/parser/generated_parser.y:392 { yylex.(*parser).addOffset(yyDollar[1].node, -yyDollar[4].duration) yyVAL.node = yyDollar[1].node } - case 68: + case 69: yyDollar = yyS[yypt-3 : yypt+1] -//line generated_parser.y:395 +//line promql/parser/generated_parser.y:397 { yylex.(*parser).unexpected("offset", "duration") yyVAL.node = yyDollar[1].node } - case 69: + case 70: yyDollar = yyS[yypt-3 : yypt+1] -//line generated_parser.y:402 +//line promql/parser/generated_parser.y:404 { yylex.(*parser).setTimestamp(yyDollar[1].node, yyDollar[3].float) yyVAL.node = yyDollar[1].node } - case 70: + case 71: yyDollar = yyS[yypt-5 : yypt+1] -//line generated_parser.y:407 +//line promql/parser/generated_parser.y:409 { yylex.(*parser).setAtModifierPreprocessor(yyDollar[1].node, yyDollar[3].item) yyVAL.node = yyDollar[1].node } - case 71: + case 72: yyDollar = yyS[yypt-3 : yypt+1] -//line generated_parser.y:412 +//line promql/parser/generated_parser.y:414 { yylex.(*parser).unexpected("@", "timestamp") yyVAL.node = yyDollar[1].node } - case 74: + case 75: yyDollar = yyS[yypt-4 : yypt+1] -//line generated_parser.y:422 +//line promql/parser/generated_parser.y:424 { var errMsg string vs, ok := yyDollar[1].node.(*VectorSelector) @@ -1304,9 +1323,9 @@ yydefault: EndPos: yylex.(*parser).lastClosing, } } - case 75: + case 76: yyDollar = yyS[yypt-6 : yypt+1] -//line generated_parser.y:447 +//line promql/parser/generated_parser.y:449 { yyVAL.node = &SubqueryExpr{ Expr: yyDollar[1].node.(Expr), @@ -1316,37 +1335,37 @@ yydefault: EndPos: yyDollar[6].item.Pos + 1, } } - case 76: + case 77: yyDollar = yyS[yypt-6 : yypt+1] -//line generated_parser.y:457 +//line promql/parser/generated_parser.y:459 { yylex.(*parser).unexpected("subquery selector", "\"]\"") yyVAL.node = yyDollar[1].node } - case 77: + case 78: yyDollar = yyS[yypt-5 : yypt+1] -//line generated_parser.y:459 +//line promql/parser/generated_parser.y:461 { yylex.(*parser).unexpected("subquery selector", "duration or \"]\"") yyVAL.node = yyDollar[1].node } - case 78: + case 79: yyDollar = yyS[yypt-4 : yypt+1] -//line generated_parser.y:461 +//line promql/parser/generated_parser.y:463 { yylex.(*parser).unexpected("subquery or range", "\":\" or \"]\"") yyVAL.node = yyDollar[1].node } - case 79: + case 80: yyDollar = yyS[yypt-3 : yypt+1] -//line generated_parser.y:463 +//line promql/parser/generated_parser.y:465 { yylex.(*parser).unexpected("subquery selector", "duration") yyVAL.node = yyDollar[1].node } - case 80: + case 81: yyDollar = yyS[yypt-2 : yypt+1] -//line generated_parser.y:473 +//line promql/parser/generated_parser.y:475 { if nl, ok := yyDollar[2].node.(*NumberLiteral); ok { if yyDollar[1].item.Typ == SUB { @@ -1358,9 +1377,9 @@ yydefault: yyVAL.node = &UnaryExpr{Op: yyDollar[1].item.Typ, Expr: yyDollar[2].node.(Expr), StartPos: yyDollar[1].item.Pos} } } - case 81: + case 82: yyDollar = yyS[yypt-2 : yypt+1] -//line generated_parser.y:491 +//line promql/parser/generated_parser.y:493 { vs := yyDollar[2].node.(*VectorSelector) vs.PosRange = mergeRanges(&yyDollar[1].item, vs) @@ -1368,9 +1387,9 @@ yydefault: yylex.(*parser).assembleVectorSelector(vs) yyVAL.node = vs } - case 82: + case 83: yyDollar = yyS[yypt-1 : yypt+1] -//line generated_parser.y:499 +//line promql/parser/generated_parser.y:501 { vs := &VectorSelector{ Name: yyDollar[1].item.Val, @@ -1380,44 +1399,44 @@ yydefault: yylex.(*parser).assembleVectorSelector(vs) yyVAL.node = vs } - case 83: + case 84: yyDollar = yyS[yypt-1 : yypt+1] -//line generated_parser.y:509 +//line promql/parser/generated_parser.y:511 { vs := yyDollar[1].node.(*VectorSelector) yylex.(*parser).assembleVectorSelector(vs) yyVAL.node = vs } - case 84: + case 85: yyDollar = yyS[yypt-3 : yypt+1] -//line generated_parser.y:517 +//line promql/parser/generated_parser.y:519 { yyVAL.node = &VectorSelector{ LabelMatchers: yyDollar[2].matchers, PosRange: mergeRanges(&yyDollar[1].item, &yyDollar[3].item), } } - case 85: + case 86: yyDollar = yyS[yypt-4 : yypt+1] -//line generated_parser.y:524 +//line promql/parser/generated_parser.y:526 { yyVAL.node = &VectorSelector{ LabelMatchers: yyDollar[2].matchers, PosRange: mergeRanges(&yyDollar[1].item, &yyDollar[4].item), } } - case 86: + case 87: yyDollar = yyS[yypt-2 : yypt+1] -//line generated_parser.y:531 +//line promql/parser/generated_parser.y:533 { yyVAL.node = &VectorSelector{ LabelMatchers: []*labels.Matcher{}, PosRange: mergeRanges(&yyDollar[1].item, &yyDollar[2].item), } } - case 87: + case 88: yyDollar = yyS[yypt-3 : yypt+1] -//line generated_parser.y:540 +//line promql/parser/generated_parser.y:542 { if yyDollar[1].matchers != nil { yyVAL.matchers = append(yyDollar[1].matchers, yyDollar[3].matcher) @@ -1425,196 +1444,196 @@ yydefault: yyVAL.matchers = yyDollar[1].matchers } } - case 88: + case 89: yyDollar = yyS[yypt-1 : yypt+1] -//line generated_parser.y:548 +//line promql/parser/generated_parser.y:550 { yyVAL.matchers = []*labels.Matcher{yyDollar[1].matcher} } - case 89: + case 90: yyDollar = yyS[yypt-2 : yypt+1] -//line generated_parser.y:550 +//line promql/parser/generated_parser.y:552 { yylex.(*parser).unexpected("label matching", "\",\" or \"}\"") yyVAL.matchers = yyDollar[1].matchers } - case 90: + case 91: yyDollar = yyS[yypt-3 : yypt+1] -//line generated_parser.y:554 +//line promql/parser/generated_parser.y:556 { yyVAL.matcher = yylex.(*parser).newLabelMatcher(yyDollar[1].item, yyDollar[2].item, yyDollar[3].item) } - case 91: + case 92: yyDollar = yyS[yypt-3 : yypt+1] -//line generated_parser.y:556 +//line promql/parser/generated_parser.y:558 { yylex.(*parser).unexpected("label matching", "string") yyVAL.matcher = nil } - case 92: + case 93: yyDollar = yyS[yypt-2 : yypt+1] -//line generated_parser.y:558 +//line promql/parser/generated_parser.y:560 { yylex.(*parser).unexpected("label matching", "label matching operator") yyVAL.matcher = nil } - case 93: + case 94: yyDollar = yyS[yypt-1 : yypt+1] -//line generated_parser.y:560 +//line promql/parser/generated_parser.y:562 { yylex.(*parser).unexpected("label matching", "identifier or \"}\"") yyVAL.matcher = nil } - case 94: + case 95: yyDollar = yyS[yypt-2 : yypt+1] -//line generated_parser.y:568 +//line promql/parser/generated_parser.y:570 { yyVAL.labels = append(yyDollar[2].labels, labels.Label{Name: labels.MetricName, Value: yyDollar[1].item.Val}) sort.Sort(yyVAL.labels) } - case 95: + case 96: yyDollar = yyS[yypt-1 : yypt+1] -//line generated_parser.y:570 +//line promql/parser/generated_parser.y:572 { yyVAL.labels = yyDollar[1].labels } - case 116: - yyDollar = yyS[yypt-3 : yypt+1] -//line generated_parser.y:577 - { - yyVAL.labels = labels.New(yyDollar[2].labels...) - } - case 117: - yyDollar = yyS[yypt-4 : yypt+1] -//line generated_parser.y:579 - { - yyVAL.labels = labels.New(yyDollar[2].labels...) - } - case 118: - yyDollar = yyS[yypt-2 : yypt+1] -//line generated_parser.y:581 - { - yyVAL.labels = labels.New() - } case 119: - yyDollar = yyS[yypt-0 : yypt+1] -//line generated_parser.y:583 + yyDollar = yyS[yypt-3 : yypt+1] +//line promql/parser/generated_parser.y:579 { - yyVAL.labels = labels.New() + yyVAL.labels = labels.New(yyDollar[2].labels...) } case 120: + yyDollar = yyS[yypt-4 : yypt+1] +//line promql/parser/generated_parser.y:581 + { + yyVAL.labels = labels.New(yyDollar[2].labels...) + } + case 121: + yyDollar = yyS[yypt-2 : yypt+1] +//line promql/parser/generated_parser.y:583 + { + yyVAL.labels = labels.New() + } + case 122: + yyDollar = yyS[yypt-0 : yypt+1] +//line promql/parser/generated_parser.y:585 + { + yyVAL.labels = labels.New() + } + case 123: yyDollar = yyS[yypt-3 : yypt+1] -//line generated_parser.y:587 +//line promql/parser/generated_parser.y:589 { yyVAL.labels = append(yyDollar[1].labels, yyDollar[3].label) } - case 121: + case 124: yyDollar = yyS[yypt-1 : yypt+1] -//line generated_parser.y:589 +//line promql/parser/generated_parser.y:591 { yyVAL.labels = []labels.Label{yyDollar[1].label} } - case 122: + case 125: yyDollar = yyS[yypt-2 : yypt+1] -//line generated_parser.y:591 +//line promql/parser/generated_parser.y:593 { yylex.(*parser).unexpected("label set", "\",\" or \"}\"") yyVAL.labels = yyDollar[1].labels } - case 123: + case 126: yyDollar = yyS[yypt-3 : yypt+1] -//line generated_parser.y:596 +//line promql/parser/generated_parser.y:598 { yyVAL.label = labels.Label{Name: yyDollar[1].item.Val, Value: yylex.(*parser).unquoteString(yyDollar[3].item.Val)} } - case 124: + case 127: yyDollar = yyS[yypt-3 : yypt+1] -//line generated_parser.y:598 +//line promql/parser/generated_parser.y:600 { yylex.(*parser).unexpected("label set", "string") yyVAL.label = labels.Label{} } - case 125: + case 128: yyDollar = yyS[yypt-2 : yypt+1] -//line generated_parser.y:600 +//line promql/parser/generated_parser.y:602 { yylex.(*parser).unexpected("label set", "\"=\"") yyVAL.label = labels.Label{} } - case 126: + case 129: yyDollar = yyS[yypt-1 : yypt+1] -//line generated_parser.y:602 +//line promql/parser/generated_parser.y:604 { yylex.(*parser).unexpected("label set", "identifier or \"}\"") yyVAL.label = labels.Label{} } - case 127: + case 130: yyDollar = yyS[yypt-2 : yypt+1] -//line generated_parser.y:610 +//line promql/parser/generated_parser.y:612 { yylex.(*parser).generatedParserResult = &seriesDescription{ labels: yyDollar[1].labels, values: yyDollar[2].series, } } - case 128: + case 131: yyDollar = yyS[yypt-0 : yypt+1] -//line generated_parser.y:619 +//line promql/parser/generated_parser.y:621 { yyVAL.series = []SequenceValue{} } - case 129: + case 132: yyDollar = yyS[yypt-3 : yypt+1] -//line generated_parser.y:621 +//line promql/parser/generated_parser.y:623 { yyVAL.series = append(yyDollar[1].series, yyDollar[3].series...) } - case 130: + case 133: yyDollar = yyS[yypt-2 : yypt+1] -//line generated_parser.y:623 +//line promql/parser/generated_parser.y:625 { yyVAL.series = yyDollar[1].series } - case 131: + case 134: yyDollar = yyS[yypt-1 : yypt+1] -//line generated_parser.y:625 +//line promql/parser/generated_parser.y:627 { yylex.(*parser).unexpected("series values", "") yyVAL.series = nil } - case 132: + case 135: yyDollar = yyS[yypt-1 : yypt+1] -//line generated_parser.y:629 +//line promql/parser/generated_parser.y:631 { yyVAL.series = []SequenceValue{{Omitted: true}} } - case 133: + case 136: yyDollar = yyS[yypt-3 : yypt+1] -//line generated_parser.y:631 +//line promql/parser/generated_parser.y:633 { yyVAL.series = []SequenceValue{} for i := uint64(0); i < yyDollar[3].uint; i++ { yyVAL.series = append(yyVAL.series, SequenceValue{Omitted: true}) } } - case 134: + case 137: yyDollar = yyS[yypt-1 : yypt+1] -//line generated_parser.y:638 +//line promql/parser/generated_parser.y:640 { yyVAL.series = []SequenceValue{{Value: yyDollar[1].float}} } - case 135: + case 138: yyDollar = yyS[yypt-3 : yypt+1] -//line generated_parser.y:640 +//line promql/parser/generated_parser.y:642 { yyVAL.series = []SequenceValue{} for i := uint64(0); i <= yyDollar[3].uint; i++ { yyVAL.series = append(yyVAL.series, SequenceValue{Value: yyDollar[1].float}) } } - case 136: + case 139: yyDollar = yyS[yypt-4 : yypt+1] -//line generated_parser.y:647 +//line promql/parser/generated_parser.y:649 { yyVAL.series = []SequenceValue{} for i := uint64(0); i <= yyDollar[4].uint; i++ { @@ -1622,45 +1641,45 @@ yydefault: yyDollar[1].float += yyDollar[2].float } } - case 137: + case 140: yyDollar = yyS[yypt-1 : yypt+1] -//line generated_parser.y:657 +//line promql/parser/generated_parser.y:659 { if yyDollar[1].item.Val != "stale" { yylex.(*parser).unexpected("series values", "number or \"stale\"") } yyVAL.float = math.Float64frombits(value.StaleNaN) } - case 182: + case 188: yyDollar = yyS[yypt-1 : yypt+1] -//line generated_parser.y:688 +//line promql/parser/generated_parser.y:690 { yyVAL.node = &NumberLiteral{ Val: yylex.(*parser).number(yyDollar[1].item.Val), PosRange: yyDollar[1].item.PositionRange(), } } - case 183: + case 189: yyDollar = yyS[yypt-1 : yypt+1] -//line generated_parser.y:696 +//line promql/parser/generated_parser.y:698 { yyVAL.float = yylex.(*parser).number(yyDollar[1].item.Val) } - case 184: + case 190: yyDollar = yyS[yypt-2 : yypt+1] -//line generated_parser.y:698 +//line promql/parser/generated_parser.y:700 { yyVAL.float = yyDollar[2].float } - case 185: + case 191: yyDollar = yyS[yypt-2 : yypt+1] -//line generated_parser.y:699 +//line promql/parser/generated_parser.y:701 { yyVAL.float = -yyDollar[2].float } - case 188: + case 194: yyDollar = yyS[yypt-1 : yypt+1] -//line generated_parser.y:705 +//line promql/parser/generated_parser.y:707 { var err error yyVAL.uint, err = strconv.ParseUint(yyDollar[1].item.Val, 10, 64) @@ -1668,9 +1687,9 @@ yydefault: yylex.(*parser).addParseErrf(yyDollar[1].item.PositionRange(), "invalid repetition in series values: %s", err) } } - case 189: + case 195: yyDollar = yyS[yypt-1 : yypt+1] -//line generated_parser.y:715 +//line promql/parser/generated_parser.y:717 { var err error yyVAL.duration, err = parseDuration(yyDollar[1].item.Val) @@ -1678,24 +1697,24 @@ yydefault: yylex.(*parser).addParseErr(yyDollar[1].item.PositionRange(), err) } } - case 190: + case 196: yyDollar = yyS[yypt-1 : yypt+1] -//line generated_parser.y:726 +//line promql/parser/generated_parser.y:728 { yyVAL.node = &StringLiteral{ Val: yylex.(*parser).unquoteString(yyDollar[1].item.Val), PosRange: yyDollar[1].item.PositionRange(), } } - case 191: + case 197: yyDollar = yyS[yypt-0 : yypt+1] -//line generated_parser.y:739 +//line promql/parser/generated_parser.y:741 { yyVAL.duration = 0 } - case 193: + case 199: yyDollar = yyS[yypt-0 : yypt+1] -//line generated_parser.y:743 +//line promql/parser/generated_parser.y:745 { yyVAL.strings = nil } diff --git a/promql/parser/lex.go b/promql/parser/lex.go index 313bd8f88..e1dee3356 100644 --- a/promql/parser/lex.go +++ b/promql/parser/lex.go @@ -97,6 +97,7 @@ var key = map[string]ItemType{ "and": LAND, "or": LOR, "unless": LUNLESS, + "atan2": ATAN2, // Aggregators. "sum": SUM, diff --git a/promql/parser/lex_test.go b/promql/parser/lex_test.go index 4d8c283b3..95f4d978d 100644 --- a/promql/parser/lex_test.go +++ b/promql/parser/lex_test.go @@ -340,6 +340,10 @@ var tests = []struct { input: "bool", expected: []Item{{BOOL, 0, "bool"}}, }, + { + input: "atan2", + expected: []Item{{ATAN2, 0, "atan2"}}, + }, }, }, { @@ -737,13 +741,13 @@ func TestLexer(t *testing.T) { } if !hasError { t.Logf("%d: input %q", i, test.input) - t.Fatalf("expected lexing error but did not fail") + require.Fail(t, "expected lexing error but did not fail") } continue } if lastItem.Typ == ERROR { t.Logf("%d: input %q", i, test.input) - t.Fatalf("unexpected lexing error at position %d: %s", lastItem.Pos, lastItem) + require.Fail(t, "unexpected lexing error at position %d: %s", lastItem.Pos, lastItem) } eofItem := Item{EOF, Pos(len(test.input)), ""} diff --git a/promql/parser/parse_test.go b/promql/parser/parse_test.go index 9b3a8c84b..b73dfd22a 100644 --- a/promql/parser/parse_test.go +++ b/promql/parser/parse_test.go @@ -3172,11 +3172,123 @@ var testExpr = []struct { }, { input: `start()`, fail: true, - errMsg: `1:1: parse error: unexpected "start"`, + errMsg: `1:6: parse error: unexpected "("`, }, { input: `end()`, fail: true, - errMsg: `1:1: parse error: unexpected "end"`, + errMsg: `1:4: parse error: unexpected "("`, + }, + // Check that start and end functions do not mask metrics. + { + input: `start`, + expected: &VectorSelector{ + Name: "start", + LabelMatchers: []*labels.Matcher{ + MustLabelMatcher(labels.MatchEqual, model.MetricNameLabel, "start"), + }, + PosRange: PositionRange{ + Start: 0, + End: 5, + }, + }, + }, { + input: `end`, + expected: &VectorSelector{ + Name: "end", + LabelMatchers: []*labels.Matcher{ + MustLabelMatcher(labels.MatchEqual, model.MetricNameLabel, "end"), + }, + PosRange: PositionRange{ + Start: 0, + End: 3, + }, + }, + }, { + input: `start{end="foo"}`, + expected: &VectorSelector{ + Name: "start", + LabelMatchers: []*labels.Matcher{ + MustLabelMatcher(labels.MatchEqual, "end", "foo"), + MustLabelMatcher(labels.MatchEqual, model.MetricNameLabel, "start"), + }, + PosRange: PositionRange{ + Start: 0, + End: 16, + }, + }, + }, { + input: `end{start="foo"}`, + expected: &VectorSelector{ + Name: "end", + LabelMatchers: []*labels.Matcher{ + MustLabelMatcher(labels.MatchEqual, "start", "foo"), + MustLabelMatcher(labels.MatchEqual, model.MetricNameLabel, "end"), + }, + PosRange: PositionRange{ + Start: 0, + End: 16, + }, + }, + }, { + input: `foo unless on(start) bar`, + expected: &BinaryExpr{ + Op: LUNLESS, + LHS: &VectorSelector{ + Name: "foo", + LabelMatchers: []*labels.Matcher{ + MustLabelMatcher(labels.MatchEqual, model.MetricNameLabel, "foo"), + }, + PosRange: PositionRange{ + Start: 0, + End: 3, + }, + }, + RHS: &VectorSelector{ + Name: "bar", + LabelMatchers: []*labels.Matcher{ + MustLabelMatcher(labels.MatchEqual, model.MetricNameLabel, "bar"), + }, + PosRange: PositionRange{ + Start: 21, + End: 24, + }, + }, + VectorMatching: &VectorMatching{ + Card: CardManyToMany, + MatchingLabels: []string{"start"}, + On: true, + }, + }, + }, { + input: `foo unless on(end) bar`, + expected: &BinaryExpr{ + Op: LUNLESS, + LHS: &VectorSelector{ + Name: "foo", + LabelMatchers: []*labels.Matcher{ + MustLabelMatcher(labels.MatchEqual, model.MetricNameLabel, "foo"), + }, + PosRange: PositionRange{ + Start: 0, + End: 3, + }, + }, + RHS: &VectorSelector{ + Name: "bar", + LabelMatchers: []*labels.Matcher{ + MustLabelMatcher(labels.MatchEqual, model.MetricNameLabel, "bar"), + }, + PosRange: PositionRange{ + Start: 19, + End: 22, + }, + }, + VectorMatching: &VectorMatching{ + Card: CardManyToMany, + MatchingLabels: []string{"end"}, + On: true, + }, + }, }, } diff --git a/promql/parser/printer.go b/promql/parser/printer.go index c5f80eb0b..f5cfe789b 100644 --- a/promql/parser/printer.go +++ b/promql/parser/printer.go @@ -182,7 +182,10 @@ func (node *UnaryExpr) String() string { } func (node *VectorSelector) String() string { - labelStrings := make([]string, 0, len(node.LabelMatchers)-1) + var labelStrings []string + if len(node.LabelMatchers) > 1 { + labelStrings = make([]string, 0, len(node.LabelMatchers)-1) + } for _, matcher := range node.LabelMatchers { // Only include the __name__ label if its equality matching and matches the name. if matcher.Name == labels.MetricName && matcher.Type == labels.MatchEqual && matcher.Value == node.Name { diff --git a/promql/parser/printer_test.go b/promql/parser/printer_test.go index 1ad48c3d4..e687820c9 100644 --- a/promql/parser/printer_test.go +++ b/promql/parser/printer_test.go @@ -16,6 +16,8 @@ package parser import ( "testing" + "github.com/prometheus/prometheus/pkg/labels" + "github.com/stretchr/testify/require" ) @@ -138,3 +140,76 @@ func TestExprString(t *testing.T) { require.Equal(t, exp, expr.String()) } } + +func TestVectorSelector_String(t *testing.T) { + for _, tc := range []struct { + name string + vs VectorSelector + expected string + }{ + { + name: "empty value", + vs: VectorSelector{}, + expected: ``, + }, + { + name: "no matchers with name", + vs: VectorSelector{Name: "foobar"}, + expected: `foobar`, + }, + { + name: "one matcher with name", + vs: VectorSelector{ + Name: "foobar", + LabelMatchers: []*labels.Matcher{ + labels.MustNewMatcher(labels.MatchEqual, "a", "x"), + }, + }, + expected: `foobar{a="x"}`, + }, + { + name: "two matchers with name", + vs: VectorSelector{ + Name: "foobar", + LabelMatchers: []*labels.Matcher{ + labels.MustNewMatcher(labels.MatchEqual, "a", "x"), + labels.MustNewMatcher(labels.MatchEqual, "b", "y"), + }, + }, + expected: `foobar{a="x",b="y"}`, + }, + { + name: "two matchers without name", + vs: VectorSelector{ + LabelMatchers: []*labels.Matcher{ + labels.MustNewMatcher(labels.MatchEqual, "a", "x"), + labels.MustNewMatcher(labels.MatchEqual, "b", "y"), + }, + }, + expected: `{a="x",b="y"}`, + }, + { + name: "name matcher and name", + vs: VectorSelector{ + Name: "foobar", + LabelMatchers: []*labels.Matcher{ + labels.MustNewMatcher(labels.MatchEqual, labels.MetricName, "foobar"), + }, + }, + expected: `foobar`, + }, + { + name: "name matcher only", + vs: VectorSelector{ + LabelMatchers: []*labels.Matcher{ + labels.MustNewMatcher(labels.MatchEqual, labels.MetricName, "foobar"), + }, + }, + expected: `{__name__="foobar"}`, + }, + } { + t.Run(tc.name, func(t *testing.T) { + require.Equal(t, tc.expected, tc.vs.String()) + }) + } +} diff --git a/promql/query_logger_test.go b/promql/query_logger_test.go index 68401e88f..51c16fdd3 100644 --- a/promql/query_logger_test.go +++ b/promql/query_logger_test.go @@ -55,18 +55,16 @@ func TestQueryLogging(t *testing.T) { queryLogger.Insert(context.Background(), queries[i]) have := string(fileAsBytes[start:end]) - if !regexp.MustCompile(want[i]).MatchString(have) { - t.Fatalf("Query not written correctly: %s.\nHave %s\nWant %s", queries[i], have, want[i]) - } + require.True(t, regexp.MustCompile(want[i]).MatchString(have), + "Query not written correctly: %s", queries[i]) } // Check if all queries have been deleted. for i := 0; i < 4; i++ { queryLogger.Delete(1 + i*entrySize) } - if !regexp.MustCompile(`^\x00+$`).Match(fileAsBytes[1 : 1+entrySize*4]) { - t.Fatalf("All queries not deleted properly. Have %s\nWant only null bytes \\x00", string(fileAsBytes[1:1+entrySize*4])) - } + require.True(t, regexp.MustCompile(`^\x00+$`).Match(fileAsBytes[1:1+entrySize*4]), + "All queries not deleted properly. Want only null bytes \\x00") } func TestIndexReuse(t *testing.T) { @@ -101,9 +99,8 @@ func TestIndexReuse(t *testing.T) { end := start + entrySize have := queryBytes[start:end] - if !regexp.MustCompile(want[i]).Match(have) { - t.Fatalf("Index not reused properly:\nHave %s\nWant %s", string(queryBytes[start:end]), want[i]) - } + require.True(t, regexp.MustCompile(want[i]).Match(have), + "Index not reused properly.") } } @@ -124,14 +121,10 @@ func TestMMapFile(t *testing.T) { bytes := make([]byte, 4) n, err := f.Read(bytes) + require.Equal(t, n, 2) + require.NoError(t, err, "Unexpected error while reading file.") - if n != 2 || err != nil { - t.Fatalf("Error reading file") - } - - if string(bytes[:2]) != string(fileAsBytes) { - t.Fatalf("Mmap failed") - } + require.Equal(t, fileAsBytes, bytes[:2], "Mmap failed") } func TestParseBrokenJSON(t *testing.T) { @@ -163,12 +156,9 @@ func TestParseBrokenJSON(t *testing.T) { } { t.Run("", func(t *testing.T) { out, ok := parseBrokenJSON(tc.b) - if tc.ok != ok { - t.Fatalf("expected %t, got %t", tc.ok, ok) - return - } - if ok && tc.out != out { - t.Fatalf("expected %s, got %s", tc.out, out) + require.Equal(t, tc.ok, ok) + if ok { + require.Equal(t, tc.out, out) } }) } diff --git a/promql/test.go b/promql/test.go index dc67b08bf..d577b25d1 100644 --- a/promql/test.go +++ b/promql/test.go @@ -25,6 +25,7 @@ import ( "github.com/pkg/errors" "github.com/prometheus/common/model" + "github.com/stretchr/testify/require" "github.com/prometheus/prometheus/pkg/exemplar" "github.com/prometheus/prometheus/pkg/labels" @@ -597,9 +598,8 @@ func (t *Test) exec(tc testCommand) error { // clear the current test storage of all inserted samples. func (t *Test) clear() { if t.storage != nil { - if err := t.storage.Close(); err != nil { - t.T.Fatalf("closing test storage: %s", err) - } + err := t.storage.Close() + require.NoError(t.T, err, "Unexpected error while closing test storage.") } if t.cancelCtx != nil { t.cancelCtx() @@ -623,9 +623,8 @@ func (t *Test) clear() { func (t *Test) Close() { t.cancelCtx() - if err := t.storage.Close(); err != nil { - t.T.Fatalf("closing test storage: %s", err) - } + err := t.storage.Close() + require.NoError(t.T, err, "Unexpected error while closing test storage.") } // samplesAlmostEqual returns true if the two sample lines only differ by a @@ -722,9 +721,8 @@ func (ll *LazyLoader) parse(input string) error { // clear the current test storage of all inserted samples. func (ll *LazyLoader) clear() { if ll.storage != nil { - if err := ll.storage.Close(); err != nil { - ll.T.Fatalf("closing test storage: %s", err) - } + err := ll.storage.Close() + require.NoError(ll.T, err, "Unexpected error while closing test storage.") } if ll.cancelCtx != nil { ll.cancelCtx() @@ -798,8 +796,6 @@ func (ll *LazyLoader) Storage() storage.Storage { // Close closes resources associated with the LazyLoader. func (ll *LazyLoader) Close() { ll.cancelCtx() - - if err := ll.storage.Close(); err != nil { - ll.T.Fatalf("closing test storage: %s", err) - } + err := ll.storage.Close() + require.NoError(ll.T, err, "Unexpected error while closing test storage.") } diff --git a/promql/testdata/operators.test b/promql/testdata/operators.test index d5a4d76f5..a6072eef3 100644 --- a/promql/testdata/operators.test +++ b/promql/testdata/operators.test @@ -467,3 +467,17 @@ eval instant at 5m test_total < bool test_smaller {instance="localhost"} 0 eval instant at 5m test_total < test_smaller + +clear + +# Testing atan2. +load 5m + trigy{} 10 + trigx{} 20 + trigNaN{} NaN + +eval instant at 5m trigy atan2 trigx + trigy{} 0.4636476090008061 + +eval instant at 5m trigy atan2 trigNaN + trigy{} NaN diff --git a/promql/testdata/trig_functions.test b/promql/testdata/trig_functions.test new file mode 100644 index 000000000..fa5f94651 --- /dev/null +++ b/promql/testdata/trig_functions.test @@ -0,0 +1,101 @@ +# Testing sin() cos() tan() asin() acos() atan() sinh() cosh() tanh() rad() deg() pi(). + +load 5m + trig{l="x"} 10 + trig{l="y"} 20 + trig{l="NaN"} NaN + +eval instant at 5m sin(trig) + {l="x"} -0.5440211108893699 + {l="y"} 0.9129452507276277 + {l="NaN"} NaN + +eval instant at 5m cos(trig) + {l="x"} -0.8390715290764524 + {l="y"} 0.40808206181339196 + {l="NaN"} NaN + +eval instant at 5m tan(trig) + {l="x"} 0.6483608274590867 + {l="y"} 2.2371609442247427 + {l="NaN"} NaN + +eval instant at 5m asin(trig - 10.1) + {l="x"} -0.10016742116155944 + {l="y"} NaN + {l="NaN"} NaN + +eval instant at 5m acos(trig - 10.1) + {l="x"} 1.670963747956456 + {l="y"} NaN + {l="NaN"} NaN + +eval instant at 5m atan(trig) + {l="x"} 1.4711276743037345 + {l="y"} 1.5208379310729538 + {l="NaN"} NaN + +eval instant at 5m sinh(trig) + {l="x"} 11013.232920103324 + {l="y"} 2.4258259770489514e+08 + {l="NaN"} NaN + +eval instant at 5m cosh(trig) + {l="x"} 11013.232920103324 + {l="y"} 2.4258259770489514e+08 + {l="NaN"} NaN + +eval instant at 5m tanh(trig) + {l="x"} 0.9999999958776927 + {l="y"} 1 + {l="NaN"} NaN + +eval instant at 5m asinh(trig) + {l="x"} 2.99822295029797 + {l="y"} 3.6895038689889055 + {l="NaN"} NaN + +eval instant at 5m acosh(trig) + {l="x"} 2.993222846126381 + {l="y"} 3.6882538673612966 + {l="NaN"} NaN + +eval instant at 5m atanh(trig - 10.1) + {l="x"} -0.10033534773107522 + {l="y"} NaN + {l="NaN"} NaN + +eval instant at 5m rad(trig) + {l="x"} 0.17453292519943295 + {l="y"} 0.3490658503988659 + {l="NaN"} NaN + +eval instant at 5m rad(trig - 10) + {l="x"} 0 + {l="y"} 0.17453292519943295 + {l="NaN"} NaN + +eval instant at 5m rad(trig - 20) + {l="x"} -0.17453292519943295 + {l="y"} 0 + {l="NaN"} NaN + +eval instant at 5m deg(trig) + {l="x"} 572.9577951308232 + {l="y"} 1145.9155902616465 + {l="NaN"} NaN + +eval instant at 5m deg(trig - 10) + {l="x"} 0 + {l="y"} 572.9577951308232 + {l="NaN"} NaN + +eval instant at 5m deg(trig - 20) + {l="x"} -572.9577951308232 + {l="y"} 0 + {l="NaN"} NaN + +clear + +eval instant at 0s pi() + 3.141592653589793 diff --git a/rules/alerting.go b/rules/alerting.go index 122a83c06..5e7b8975c 100644 --- a/rules/alerting.go +++ b/rules/alerting.go @@ -297,11 +297,9 @@ const resolvedRetention = 15 * time.Minute // Eval evaluates the rule expression and then creates pending alerts and fires // or removes previously pending alerts accordingly. -func (r *AlertingRule) Eval(ctx context.Context, ts time.Time, query QueryFunc, externalURL *url.URL) (promql.Vector, error) { +func (r *AlertingRule) Eval(ctx context.Context, ts time.Time, query QueryFunc, externalURL *url.URL, limit int) (promql.Vector, error) { res, err := query(ctx, r.vector.String(), ts) if err != nil { - r.SetHealth(HealthBad) - r.SetLastError(err) return nil, err } @@ -340,6 +338,7 @@ func (r *AlertingRule) Eval(ctx context.Context, ts time.Time, query QueryFunc, model.Time(timestamp.FromTime(ts)), template.QueryFunc(query), externalURL, + nil, ) result, err := tmpl.Expand() if err != nil { @@ -366,12 +365,7 @@ func (r *AlertingRule) Eval(ctx context.Context, ts time.Time, query QueryFunc, resultFPs[h] = struct{}{} if _, ok := alerts[h]; ok { - err = fmt.Errorf("vector contains metrics with the same labelset after applying alert labels") - // We have already acquired the lock above hence using SetHealth and - // SetLastError will deadlock. - r.health = HealthBad - r.lastError = err - return nil, err + return nil, fmt.Errorf("vector contains metrics with the same labelset after applying alert labels") } alerts[h] = &Alert{ @@ -421,10 +415,12 @@ func (r *AlertingRule) Eval(ctx context.Context, ts time.Time, query QueryFunc, } } - // We have already acquired the lock above hence using SetHealth and - // SetLastError will deadlock. - r.health = HealthGood - r.lastError = err + numActive := len(r.active) + if limit != 0 && numActive > limit { + r.active = map[uint64]*Alert{} + return nil, errors.Errorf("exceeded limit of %d with %d alerts", limit, numActive) + } + return vec, nil } diff --git a/rules/alerting_test.go b/rules/alerting_test.go index 1e4617551..94d505445 100644 --- a/rules/alerting_test.go +++ b/rules/alerting_test.go @@ -170,7 +170,7 @@ func TestAlertingRuleLabelsUpdate(t *testing.T) { t.Logf("case %d", i) evalTime := baseTime.Add(time.Duration(i) * time.Minute) result[0].Point.T = timestamp.FromTime(evalTime) - res, err := rule.Eval(suite.Context(), evalTime, EngineQueryFunc(suite.QueryEngine(), suite.Storage()), nil) + res, err := rule.Eval(suite.Context(), evalTime, EngineQueryFunc(suite.QueryEngine(), suite.Storage()), nil, 0) require.NoError(t, err) var filteredRes promql.Vector // After removing 'ALERTS_FOR_STATE' samples. @@ -252,7 +252,7 @@ func TestAlertingRuleExternalLabelsInTemplate(t *testing.T) { var filteredRes promql.Vector // After removing 'ALERTS_FOR_STATE' samples. res, err := ruleWithoutExternalLabels.Eval( - suite.Context(), evalTime, EngineQueryFunc(suite.QueryEngine(), suite.Storage()), nil, + suite.Context(), evalTime, EngineQueryFunc(suite.QueryEngine(), suite.Storage()), nil, 0, ) require.NoError(t, err) for _, smpl := range res { @@ -266,7 +266,7 @@ func TestAlertingRuleExternalLabelsInTemplate(t *testing.T) { } res, err = ruleWithExternalLabels.Eval( - suite.Context(), evalTime, EngineQueryFunc(suite.QueryEngine(), suite.Storage()), nil, + suite.Context(), evalTime, EngineQueryFunc(suite.QueryEngine(), suite.Storage()), nil, 0, ) require.NoError(t, err) for _, smpl := range res { @@ -346,7 +346,7 @@ func TestAlertingRuleExternalURLInTemplate(t *testing.T) { var filteredRes promql.Vector // After removing 'ALERTS_FOR_STATE' samples. res, err := ruleWithoutExternalURL.Eval( - suite.Context(), evalTime, EngineQueryFunc(suite.QueryEngine(), suite.Storage()), nil, + suite.Context(), evalTime, EngineQueryFunc(suite.QueryEngine(), suite.Storage()), nil, 0, ) require.NoError(t, err) for _, smpl := range res { @@ -360,7 +360,7 @@ func TestAlertingRuleExternalURLInTemplate(t *testing.T) { } res, err = ruleWithExternalURL.Eval( - suite.Context(), evalTime, EngineQueryFunc(suite.QueryEngine(), suite.Storage()), nil, + suite.Context(), evalTime, EngineQueryFunc(suite.QueryEngine(), suite.Storage()), nil, 0, ) require.NoError(t, err) for _, smpl := range res { @@ -417,7 +417,7 @@ func TestAlertingRuleEmptyLabelFromTemplate(t *testing.T) { var filteredRes promql.Vector // After removing 'ALERTS_FOR_STATE' samples. res, err := rule.Eval( - suite.Context(), evalTime, EngineQueryFunc(suite.QueryEngine(), suite.Storage()), nil, + suite.Context(), evalTime, EngineQueryFunc(suite.QueryEngine(), suite.Storage()), nil, 0, ) require.NoError(t, err) for _, smpl := range res { @@ -460,7 +460,61 @@ func TestAlertingRuleDuplicate(t *testing.T) { "", true, log.NewNopLogger(), ) - _, err := rule.Eval(ctx, now, EngineQueryFunc(engine, storage), nil) + _, err := rule.Eval(ctx, now, EngineQueryFunc(engine, storage), nil, 0) require.Error(t, err) require.EqualError(t, err, "vector contains metrics with the same labelset after applying alert labels") } + +func TestAlertingRuleLimit(t *testing.T) { + storage := teststorage.New(t) + defer storage.Close() + + opts := promql.EngineOpts{ + Logger: nil, + Reg: nil, + MaxSamples: 10, + Timeout: 10 * time.Second, + } + + engine := promql.NewEngine(opts) + ctx, cancelCtx := context.WithCancel(context.Background()) + defer cancelCtx() + + now := time.Now() + + suite := []struct { + limit int + err string + }{ + { + limit: 0, + }, + { + limit: 1, + }, + { + limit: -1, + err: "exceeded limit of -1 with 1 alerts", + }, + } + + for _, test := range suite { + expr, _ := parser.ParseExpr(`1`) + rule := NewAlertingRule( + "foo", + expr, + time.Minute, + labels.FromStrings("test", "test"), + nil, + nil, + "", + true, log.NewNopLogger(), + ) + _, err := rule.Eval(ctx, now, EngineQueryFunc(engine, storage), nil, test.limit) + if test.err == "" { + require.NoError(t, err) + } else { + require.Equal(t, test.err, err.Error()) + } + } +} diff --git a/rules/manager.go b/rules/manager.go index 837a0741f..fa8cd6763 100644 --- a/rules/manager.go +++ b/rules/manager.go @@ -213,7 +213,7 @@ type Rule interface { // Labels of the rule. Labels() labels.Labels // eval evaluates the rule, including any associated recording or alerting actions. - Eval(context.Context, time.Time, QueryFunc, *url.URL) (promql.Vector, error) + Eval(context.Context, time.Time, QueryFunc, *url.URL, int) (promql.Vector, error) // String returns a human-readable string representation of the rule. String() string // Query returns the rule query expression. @@ -244,6 +244,7 @@ type Group struct { name string file string interval time.Duration + limit int rules []Rule seriesInPreviousEval []map[string]labels.Labels // One per Rule. staleSeries []labels.Labels @@ -267,6 +268,7 @@ type Group struct { type GroupOptions struct { Name, File string Interval time.Duration + Limit int Rules []Rule ShouldRestore bool Opts *ManagerOptions @@ -295,6 +297,7 @@ func NewGroup(o GroupOptions) *Group { name: o.Name, file: o.File, interval: o.Interval, + limit: o.Limit, rules: o.Rules, shouldRestore: o.ShouldRestore, opts: o.Opts, @@ -319,6 +322,9 @@ func (g *Group) Rules() []Rule { return g.rules } // Interval returns the group's interval. func (g *Group) Interval() time.Duration { return g.interval } +// Limit returns the group's limit. +func (g *Group) Limit() int { return g.limit } + func (g *Group) run(ctx context.Context) { defer close(g.terminated) @@ -591,7 +597,7 @@ func (g *Group) Eval(ctx context.Context, ts time.Time) { g.metrics.EvalTotal.WithLabelValues(GroupKey(g.File(), g.Name())).Inc() - vector, err := rule.Eval(ctx, ts, g.opts.QueryFunc, g.opts.ExternalURL) + vector, err := rule.Eval(ctx, ts, g.opts.QueryFunc, g.opts.ExternalURL, g.Limit()) if err != nil { rule.SetHealth(HealthBad) rule.SetLastError(err) @@ -604,6 +610,8 @@ func (g *Group) Eval(ctx context.Context, ts time.Time) { } return } + rule.SetHealth(HealthGood) + rule.SetLastError(nil) samplesTotal += float64(len(vector)) if ar, ok := rule.(*AlertingRule); ok { @@ -848,6 +856,10 @@ func (g *Group) Equals(ng *Group) bool { return false } + if g.limit != ng.limit { + return false + } + if len(g.rules) != len(ng.rules) { return false } @@ -1084,6 +1096,7 @@ func (m *Manager) LoadGroups( Name: rg.Name, File: fn, Interval: itv, + Limit: rg.Limit, Rules: rules, ShouldRestore: shouldRestore, Opts: m.opts, diff --git a/rules/manager_test.go b/rules/manager_test.go index 8f42228df..f3b335070 100644 --- a/rules/manager_test.go +++ b/rules/manager_test.go @@ -156,7 +156,7 @@ func TestAlertingRule(t *testing.T) { evalTime := baseTime.Add(test.time) - res, err := rule.Eval(suite.Context(), evalTime, EngineQueryFunc(suite.QueryEngine(), suite.Storage()), nil) + res, err := rule.Eval(suite.Context(), evalTime, EngineQueryFunc(suite.QueryEngine(), suite.Storage()), nil, 0) require.NoError(t, err) var filteredRes promql.Vector // After removing 'ALERTS_FOR_STATE' samples. @@ -305,7 +305,7 @@ func TestForStateAddSamples(t *testing.T) { forState = float64(value.StaleNaN) } - res, err := rule.Eval(suite.Context(), evalTime, EngineQueryFunc(suite.QueryEngine(), suite.Storage()), nil) + res, err := rule.Eval(suite.Context(), evalTime, EngineQueryFunc(suite.QueryEngine(), suite.Storage()), nil, 0) require.NoError(t, err) var filteredRes promql.Vector // After removing 'ALERTS' samples. @@ -773,6 +773,12 @@ func TestUpdate(t *testing.T) { } reloadAndValidate(rgs, t, tmpFile, ruleManager, expected, ogs) + // Update limit and reload. + for i := range rgs.Groups { + rgs.Groups[i].Limit = 1 + } + reloadAndValidate(rgs, t, tmpFile, ruleManager, expected, ogs) + // Change group rules and reload. for i, g := range rgs.Groups { for j, r := range g.Rules { @@ -791,6 +797,7 @@ type ruleGroupsTest struct { type ruleGroupTest struct { Name string `yaml:"name"` Interval model.Duration `yaml:"interval,omitempty"` + Limit int `yaml:"limit,omitempty"` Rules []rulefmt.Rule `yaml:"rules"` } @@ -812,6 +819,7 @@ func formatRules(r *rulefmt.RuleGroups) ruleGroupsTest { tmp = append(tmp, ruleGroupTest{ Name: g.Name, Interval: g.Interval, + Limit: g.Limit, Rules: rtmp, }) } diff --git a/rules/recording.go b/rules/recording.go index 2665506af..08a7e37ca 100644 --- a/rules/recording.go +++ b/rules/recording.go @@ -73,7 +73,7 @@ func (rule *RecordingRule) Labels() labels.Labels { } // Eval evaluates the rule and then overrides the metric names and labels accordingly. -func (rule *RecordingRule) Eval(ctx context.Context, ts time.Time, query QueryFunc, _ *url.URL) (promql.Vector, error) { +func (rule *RecordingRule) Eval(ctx context.Context, ts time.Time, query QueryFunc, _ *url.URL, limit int) (promql.Vector, error) { vector, err := query(ctx, rule.vector.String(), ts) if err != nil { return nil, err @@ -96,10 +96,12 @@ func (rule *RecordingRule) Eval(ctx context.Context, ts time.Time, query QueryFu // Check that the rule does not produce identical metrics after applying // labels. if vector.ContainsSameLabelset() { - err = fmt.Errorf("vector contains metrics with the same labelset after applying rule labels") - rule.SetHealth(HealthBad) - rule.SetLastError(err) - return nil, err + return nil, fmt.Errorf("vector contains metrics with the same labelset after applying rule labels") + } + + numSamples := len(vector) + if limit != 0 && numSamples > limit { + return nil, fmt.Errorf("exceeded limit %d with %d samples", limit, numSamples) } rule.SetHealth(HealthGood) diff --git a/rules/recording_test.go b/rules/recording_test.go index 5ace5ba77..211b6cda6 100644 --- a/rules/recording_test.go +++ b/rules/recording_test.go @@ -49,7 +49,9 @@ func TestRuleEval(t *testing.T) { name string expr parser.Expr labels labels.Labels + limit int result promql.Vector + err string }{ { name: "nolabels", @@ -69,12 +71,43 @@ func TestRuleEval(t *testing.T) { Point: promql.Point{V: 1, T: timestamp.FromTime(now)}, }}, }, + { + name: "underlimit", + expr: &parser.NumberLiteral{Val: 1}, + labels: labels.FromStrings("foo", "bar"), + limit: 2, + result: promql.Vector{promql.Sample{ + Metric: labels.FromStrings("__name__", "underlimit", "foo", "bar"), + Point: promql.Point{V: 1, T: timestamp.FromTime(now)}, + }}, + }, + { + name: "atlimit", + expr: &parser.NumberLiteral{Val: 1}, + labels: labels.FromStrings("foo", "bar"), + limit: 1, + result: promql.Vector{promql.Sample{ + Metric: labels.FromStrings("__name__", "atlimit", "foo", "bar"), + Point: promql.Point{V: 1, T: timestamp.FromTime(now)}, + }}, + }, + { + name: "overlimit", + expr: &parser.NumberLiteral{Val: 1}, + labels: labels.FromStrings("foo", "bar"), + limit: -1, + err: "exceeded limit -1 with 1 samples", + }, } for _, test := range suite { rule := NewRecordingRule(test.name, test.expr, test.labels) - result, err := rule.Eval(ctx, now, EngineQueryFunc(engine, storage), nil) - require.NoError(t, err) + result, err := rule.Eval(ctx, now, EngineQueryFunc(engine, storage), nil, test.limit) + if test.err == "" { + require.NoError(t, err) + } else { + require.Equal(t, test.err, err.Error()) + } require.Equal(t, test.result, result) } } @@ -114,7 +147,7 @@ func TestRuleEvalDuplicate(t *testing.T) { expr, _ := parser.ParseExpr(`vector(0) or label_replace(vector(0),"test","x","","")`) rule := NewRecordingRule("foo", expr, labels.FromStrings("test", "test")) - _, err := rule.Eval(ctx, now, EngineQueryFunc(engine, storage), nil) + _, err := rule.Eval(ctx, now, EngineQueryFunc(engine, storage), nil, 0) require.Error(t, err) require.EqualError(t, err, "vector contains metrics with the same labelset after applying rule labels") } diff --git a/scrape/manager.go b/scrape/manager.go index e86221c66..a4a7e5a50 100644 --- a/scrape/manager.go +++ b/scrape/manager.go @@ -99,12 +99,16 @@ func (mc *MetadataMetricsCollector) Collect(ch chan<- prometheus.Metric) { } // NewManager is the Manager constructor -func NewManager(logger log.Logger, app storage.Appendable) *Manager { +func NewManager(o *Options, logger log.Logger, app storage.Appendable) *Manager { + if o == nil { + o = &Options{} + } if logger == nil { logger = log.NewNopLogger() } m := &Manager{ append: app, + opts: o, logger: logger, scrapeConfigs: make(map[string]*config.ScrapeConfig), scrapePools: make(map[string]*scrapePool), @@ -116,9 +120,15 @@ func NewManager(logger log.Logger, app storage.Appendable) *Manager { return m } +// Options are the configuration parameters to the scrape manager. +type Options struct { + ExtraMetrics bool +} + // Manager maintains a set of scrape pools and manages start/stop cycles // when receiving new target groups from the discovery manager. type Manager struct { + opts *Options logger log.Logger append storage.Appendable graceShut chan struct{} @@ -181,7 +191,7 @@ func (m *Manager) reload() { level.Error(m.logger).Log("msg", "error reloading target set", "err", "invalid config id:"+setName) continue } - sp, err := newScrapePool(scrapeConfig, m.append, m.jitterSeed, log.With(m.logger, "scrape_pool", setName)) + sp, err := newScrapePool(scrapeConfig, m.append, m.jitterSeed, log.With(m.logger, "scrape_pool", setName), m.opts.ExtraMetrics) if err != nil { level.Error(m.logger).Log("msg", "error creating new scrape pool", "err", err, "scrape_pool", setName) continue diff --git a/scrape/manager_test.go b/scrape/manager_test.go index 7f94e1989..00228932a 100644 --- a/scrape/manager_test.go +++ b/scrape/manager_test.go @@ -44,52 +44,66 @@ func TestPopulateLabels(t *testing.T) { "custom": "value", }), cfg: &config.ScrapeConfig{ - Scheme: "https", - MetricsPath: "/metrics", - JobName: "job", + Scheme: "https", + MetricsPath: "/metrics", + JobName: "job", + ScrapeInterval: model.Duration(time.Second), + ScrapeTimeout: model.Duration(time.Second), }, res: labels.FromMap(map[string]string{ - model.AddressLabel: "1.2.3.4:1000", - model.InstanceLabel: "1.2.3.4:1000", - model.SchemeLabel: "https", - model.MetricsPathLabel: "/metrics", - model.JobLabel: "job", - "custom": "value", + model.AddressLabel: "1.2.3.4:1000", + model.InstanceLabel: "1.2.3.4:1000", + model.SchemeLabel: "https", + model.MetricsPathLabel: "/metrics", + model.JobLabel: "job", + model.ScrapeIntervalLabel: "1s", + model.ScrapeTimeoutLabel: "1s", + "custom": "value", }), resOrig: labels.FromMap(map[string]string{ - model.AddressLabel: "1.2.3.4:1000", - model.SchemeLabel: "https", - model.MetricsPathLabel: "/metrics", - model.JobLabel: "job", - "custom": "value", + model.AddressLabel: "1.2.3.4:1000", + model.SchemeLabel: "https", + model.MetricsPathLabel: "/metrics", + model.JobLabel: "job", + "custom": "value", + model.ScrapeIntervalLabel: "1s", + model.ScrapeTimeoutLabel: "1s", }), }, // Pre-define/overwrite scrape config labels. // Leave out port and expect it to be defaulted to scheme. { in: labels.FromMap(map[string]string{ - model.AddressLabel: "1.2.3.4", - model.SchemeLabel: "http", - model.MetricsPathLabel: "/custom", - model.JobLabel: "custom-job", + model.AddressLabel: "1.2.3.4", + model.SchemeLabel: "http", + model.MetricsPathLabel: "/custom", + model.JobLabel: "custom-job", + model.ScrapeIntervalLabel: "2s", + model.ScrapeTimeoutLabel: "2s", }), cfg: &config.ScrapeConfig{ - Scheme: "https", - MetricsPath: "/metrics", - JobName: "job", + Scheme: "https", + MetricsPath: "/metrics", + JobName: "job", + ScrapeInterval: model.Duration(time.Second), + ScrapeTimeout: model.Duration(time.Second), }, res: labels.FromMap(map[string]string{ - model.AddressLabel: "1.2.3.4:80", - model.InstanceLabel: "1.2.3.4:80", - model.SchemeLabel: "http", - model.MetricsPathLabel: "/custom", - model.JobLabel: "custom-job", + model.AddressLabel: "1.2.3.4:80", + model.InstanceLabel: "1.2.3.4:80", + model.SchemeLabel: "http", + model.MetricsPathLabel: "/custom", + model.JobLabel: "custom-job", + model.ScrapeIntervalLabel: "2s", + model.ScrapeTimeoutLabel: "2s", }), resOrig: labels.FromMap(map[string]string{ - model.AddressLabel: "1.2.3.4", - model.SchemeLabel: "http", - model.MetricsPathLabel: "/custom", - model.JobLabel: "custom-job", + model.AddressLabel: "1.2.3.4", + model.SchemeLabel: "http", + model.MetricsPathLabel: "/custom", + model.JobLabel: "custom-job", + model.ScrapeIntervalLabel: "2s", + model.ScrapeTimeoutLabel: "2s", }), }, // Provide instance label. HTTPS port default for IPv6. @@ -99,32 +113,40 @@ func TestPopulateLabels(t *testing.T) { model.InstanceLabel: "custom-instance", }), cfg: &config.ScrapeConfig{ - Scheme: "https", - MetricsPath: "/metrics", - JobName: "job", + Scheme: "https", + MetricsPath: "/metrics", + JobName: "job", + ScrapeInterval: model.Duration(time.Second), + ScrapeTimeout: model.Duration(time.Second), }, res: labels.FromMap(map[string]string{ - model.AddressLabel: "[::1]:443", - model.InstanceLabel: "custom-instance", - model.SchemeLabel: "https", - model.MetricsPathLabel: "/metrics", - model.JobLabel: "job", + model.AddressLabel: "[::1]:443", + model.InstanceLabel: "custom-instance", + model.SchemeLabel: "https", + model.MetricsPathLabel: "/metrics", + model.JobLabel: "job", + model.ScrapeIntervalLabel: "1s", + model.ScrapeTimeoutLabel: "1s", }), resOrig: labels.FromMap(map[string]string{ - model.AddressLabel: "[::1]", - model.InstanceLabel: "custom-instance", - model.SchemeLabel: "https", - model.MetricsPathLabel: "/metrics", - model.JobLabel: "job", + model.AddressLabel: "[::1]", + model.InstanceLabel: "custom-instance", + model.SchemeLabel: "https", + model.MetricsPathLabel: "/metrics", + model.JobLabel: "job", + model.ScrapeIntervalLabel: "1s", + model.ScrapeTimeoutLabel: "1s", }), }, // Address label missing. { in: labels.FromStrings("custom", "value"), cfg: &config.ScrapeConfig{ - Scheme: "https", - MetricsPath: "/metrics", - JobName: "job", + Scheme: "https", + MetricsPath: "/metrics", + JobName: "job", + ScrapeInterval: model.Duration(time.Second), + ScrapeTimeout: model.Duration(time.Second), }, res: nil, resOrig: nil, @@ -134,9 +156,11 @@ func TestPopulateLabels(t *testing.T) { { in: labels.FromStrings("custom", "host:1234"), cfg: &config.ScrapeConfig{ - Scheme: "https", - MetricsPath: "/metrics", - JobName: "job", + Scheme: "https", + MetricsPath: "/metrics", + JobName: "job", + ScrapeInterval: model.Duration(time.Second), + ScrapeTimeout: model.Duration(time.Second), RelabelConfigs: []*relabel.Config{ { Action: relabel.Replace, @@ -148,27 +172,33 @@ func TestPopulateLabels(t *testing.T) { }, }, res: labels.FromMap(map[string]string{ - model.AddressLabel: "host:1234", - model.InstanceLabel: "host:1234", - model.SchemeLabel: "https", - model.MetricsPathLabel: "/metrics", - model.JobLabel: "job", - "custom": "host:1234", + model.AddressLabel: "host:1234", + model.InstanceLabel: "host:1234", + model.SchemeLabel: "https", + model.MetricsPathLabel: "/metrics", + model.JobLabel: "job", + model.ScrapeIntervalLabel: "1s", + model.ScrapeTimeoutLabel: "1s", + "custom": "host:1234", }), resOrig: labels.FromMap(map[string]string{ - model.SchemeLabel: "https", - model.MetricsPathLabel: "/metrics", - model.JobLabel: "job", - "custom": "host:1234", + model.SchemeLabel: "https", + model.MetricsPathLabel: "/metrics", + model.JobLabel: "job", + model.ScrapeIntervalLabel: "1s", + model.ScrapeTimeoutLabel: "1s", + "custom": "host:1234", }), }, // Address label missing, but added in relabelling. { in: labels.FromStrings("custom", "host:1234"), cfg: &config.ScrapeConfig{ - Scheme: "https", - MetricsPath: "/metrics", - JobName: "job", + Scheme: "https", + MetricsPath: "/metrics", + JobName: "job", + ScrapeInterval: model.Duration(time.Second), + ScrapeTimeout: model.Duration(time.Second), RelabelConfigs: []*relabel.Config{ { Action: relabel.Replace, @@ -180,18 +210,22 @@ func TestPopulateLabels(t *testing.T) { }, }, res: labels.FromMap(map[string]string{ - model.AddressLabel: "host:1234", - model.InstanceLabel: "host:1234", - model.SchemeLabel: "https", - model.MetricsPathLabel: "/metrics", - model.JobLabel: "job", - "custom": "host:1234", + model.AddressLabel: "host:1234", + model.InstanceLabel: "host:1234", + model.SchemeLabel: "https", + model.MetricsPathLabel: "/metrics", + model.JobLabel: "job", + model.ScrapeIntervalLabel: "1s", + model.ScrapeTimeoutLabel: "1s", + "custom": "host:1234", }), resOrig: labels.FromMap(map[string]string{ - model.SchemeLabel: "https", - model.MetricsPathLabel: "/metrics", - model.JobLabel: "job", - "custom": "host:1234", + model.SchemeLabel: "https", + model.MetricsPathLabel: "/metrics", + model.JobLabel: "job", + model.ScrapeIntervalLabel: "1s", + model.ScrapeTimeoutLabel: "1s", + "custom": "host:1234", }), }, // Invalid UTF-8 in label. @@ -201,14 +235,102 @@ func TestPopulateLabels(t *testing.T) { "custom": "\xbd", }), cfg: &config.ScrapeConfig{ - Scheme: "https", - MetricsPath: "/metrics", - JobName: "job", + Scheme: "https", + MetricsPath: "/metrics", + JobName: "job", + ScrapeInterval: model.Duration(time.Second), + ScrapeTimeout: model.Duration(time.Second), }, res: nil, resOrig: nil, err: "invalid label value for \"custom\": \"\\xbd\"", }, + // Invalid duration in interval label. + { + in: labels.FromMap(map[string]string{ + model.AddressLabel: "1.2.3.4:1000", + model.ScrapeIntervalLabel: "2notseconds", + }), + cfg: &config.ScrapeConfig{ + Scheme: "https", + MetricsPath: "/metrics", + JobName: "job", + ScrapeInterval: model.Duration(time.Second), + ScrapeTimeout: model.Duration(time.Second), + }, + res: nil, + resOrig: nil, + err: "error parsing scrape interval: not a valid duration string: \"2notseconds\"", + }, + // Invalid duration in timeout label. + { + in: labels.FromMap(map[string]string{ + model.AddressLabel: "1.2.3.4:1000", + model.ScrapeTimeoutLabel: "2notseconds", + }), + cfg: &config.ScrapeConfig{ + Scheme: "https", + MetricsPath: "/metrics", + JobName: "job", + ScrapeInterval: model.Duration(time.Second), + ScrapeTimeout: model.Duration(time.Second), + }, + res: nil, + resOrig: nil, + err: "error parsing scrape timeout: not a valid duration string: \"2notseconds\"", + }, + // 0 interval in timeout label. + { + in: labels.FromMap(map[string]string{ + model.AddressLabel: "1.2.3.4:1000", + model.ScrapeIntervalLabel: "0s", + }), + cfg: &config.ScrapeConfig{ + Scheme: "https", + MetricsPath: "/metrics", + JobName: "job", + ScrapeInterval: model.Duration(time.Second), + ScrapeTimeout: model.Duration(time.Second), + }, + res: nil, + resOrig: nil, + err: "scrape interval cannot be 0", + }, + // 0 duration in timeout label. + { + in: labels.FromMap(map[string]string{ + model.AddressLabel: "1.2.3.4:1000", + model.ScrapeTimeoutLabel: "0s", + }), + cfg: &config.ScrapeConfig{ + Scheme: "https", + MetricsPath: "/metrics", + JobName: "job", + ScrapeInterval: model.Duration(time.Second), + ScrapeTimeout: model.Duration(time.Second), + }, + res: nil, + resOrig: nil, + err: "scrape timeout cannot be 0", + }, + // Timeout less than interval. + { + in: labels.FromMap(map[string]string{ + model.AddressLabel: "1.2.3.4:1000", + model.ScrapeIntervalLabel: "1s", + model.ScrapeTimeoutLabel: "2s", + }), + cfg: &config.ScrapeConfig{ + Scheme: "https", + MetricsPath: "/metrics", + JobName: "job", + ScrapeInterval: model.Duration(time.Second), + ScrapeTimeout: model.Duration(time.Second), + }, + res: nil, + resOrig: nil, + err: "scrape timeout cannot be greater than scrape interval (\"2s\" > \"1s\")", + }, } for _, c := range cases { in := c.in.Copy() @@ -276,7 +398,8 @@ scrape_configs: ch = make(chan struct{}, 1) ) - scrapeManager := NewManager(nil, nil) + opts := Options{} + scrapeManager := NewManager(&opts, nil, nil) newLoop := func(scrapeLoopOptions) loop { ch <- struct{}{} return noopLoop() @@ -338,7 +461,8 @@ scrape_configs: } func TestManagerTargetsUpdates(t *testing.T) { - m := NewManager(nil, nil) + opts := Options{} + m := NewManager(&opts, nil, nil) ts := make(chan map[string][]*targetgroup.Group) go m.Run(ts) @@ -390,7 +514,8 @@ global: return cfg } - scrapeManager := NewManager(nil, nil) + opts := Options{} + scrapeManager := NewManager(&opts, nil, nil) // Load the first config. cfg1 := getConfig("ha1") diff --git a/scrape/scrape.go b/scrape/scrape.go index 865f01e3d..a6a799658 100644 --- a/scrape/scrape.go +++ b/scrape/scrape.go @@ -50,10 +50,10 @@ import ( "github.com/prometheus/prometheus/storage" ) -// Temporary tolerance for scrape appends timestamps alignment, to enable better -// compression at the TSDB level. +// ScrapeTimestampTolerance is the tolerance for scrape appends timestamps +// alignment, to enable better compression at the TSDB level. // See https://github.com/prometheus/prometheus/issues/7846 -const scrapeTimestampTolerance = 2 * time.Millisecond +var ScrapeTimestampTolerance = 2 * time.Millisecond // AlignScrapeTimestamps enables the tolerance for scrape appends timestamps described above. var AlignScrapeTimestamps = true @@ -254,6 +254,8 @@ type scrapeLoopOptions struct { labelLimits *labelLimits honorLabels bool honorTimestamps bool + interval time.Duration + timeout time.Duration mrc []*relabel.Config cache *scrapeCache } @@ -262,13 +264,13 @@ const maxAheadTime = 10 * time.Minute type labelsMutator func(labels.Labels) labels.Labels -func newScrapePool(cfg *config.ScrapeConfig, app storage.Appendable, jitterSeed uint64, logger log.Logger) (*scrapePool, error) { +func newScrapePool(cfg *config.ScrapeConfig, app storage.Appendable, jitterSeed uint64, logger log.Logger, reportScrapeTimeout bool) (*scrapePool, error) { targetScrapePools.Inc() if logger == nil { logger = log.NewNopLogger() } - client, err := config_util.NewClientFromConfig(cfg.HTTPClientConfig, cfg.JobName, config_util.WithHTTP2Disabled()) + client, err := config_util.NewClientFromConfig(cfg.HTTPClientConfig, cfg.JobName) if err != nil { targetScrapePoolsFailed.Inc() return nil, errors.Wrap(err, "error creating HTTP client") @@ -307,7 +309,11 @@ func newScrapePool(cfg *config.ScrapeConfig, app storage.Appendable, jitterSeed cache, jitterSeed, opts.honorTimestamps, + opts.sampleLimit, opts.labelLimits, + opts.interval, + opts.timeout, + reportScrapeTimeout, ) } @@ -375,7 +381,7 @@ func (sp *scrapePool) reload(cfg *config.ScrapeConfig) error { targetScrapePoolReloads.Inc() start := time.Now() - client, err := config_util.NewClientFromConfig(cfg.HTTPClientConfig, cfg.JobName, config_util.WithHTTP2Disabled()) + client, err := config_util.NewClientFromConfig(cfg.HTTPClientConfig, cfg.JobName) if err != nil { targetScrapePoolReloadsFailed.Inc() return errors.Wrap(err, "error creating HTTP client") @@ -415,6 +421,7 @@ func (sp *scrapePool) reload(cfg *config.ScrapeConfig) error { } else { cache = newScrapeCache() } + var ( t = sp.activeTargets[fp] s = &targetScraper{Target: t, client: sp.client, timeout: timeout, bodySizeLimit: bodySizeLimit} @@ -427,6 +434,8 @@ func (sp *scrapePool) reload(cfg *config.ScrapeConfig) error { honorTimestamps: honorTimestamps, mrc: mrc, cache: cache, + interval: interval, + timeout: timeout, }) ) wg.Add(1) @@ -436,7 +445,7 @@ func (sp *scrapePool) reload(cfg *config.ScrapeConfig) error { wg.Done() newLoop.setForcedError(forcedErr) - newLoop.run(interval, timeout, nil) + newLoop.run(nil) }(oldLoop, newLoop) sp.loops[fp] = newLoop @@ -510,6 +519,12 @@ func (sp *scrapePool) sync(targets []*Target) { hash := t.hash() if _, ok := sp.activeTargets[hash]; !ok { + // The scrape interval and timeout labels are set to the config's values initially, + // so whether changed via relabeling or not, they'll exist and hold the correct values + // for every target. + var err error + interval, timeout, err = t.intervalAndTimeout(interval, timeout) + s := &targetScraper{Target: t, client: sp.client, timeout: timeout, bodySizeLimit: bodySizeLimit} l := sp.newLoop(scrapeLoopOptions{ target: t, @@ -519,7 +534,12 @@ func (sp *scrapePool) sync(targets []*Target) { honorLabels: honorLabels, honorTimestamps: honorTimestamps, mrc: mrc, + interval: interval, + timeout: timeout, }) + if err != nil { + l.setForcedError(err) + } sp.activeTargets[hash] = t sp.loops[hash] = l @@ -561,7 +581,7 @@ func (sp *scrapePool) sync(targets []*Target) { } for _, l := range uniqueLoops { if l != nil { - go l.run(interval, timeout, nil) + go l.run(nil) } } // Wait for all potentially stopped scrapers to terminate. @@ -702,7 +722,7 @@ var errBodySizeLimit = errors.New("body size limit exceeded") const acceptHeader = `application/vnd.google.protobuf; proto=io.prometheus.client.MetricFamily; encoding=delimited,application/openmetrics-text; version=0.0.1;q=0.5,text/plain;version=0.0.4;q=0.2,*/*;q=0.1` -var userAgentHeader = fmt.Sprintf("Prometheus/%s", version.Version) +var UserAgent = fmt.Sprintf("Prometheus/%s", version.Version) func (s *targetScraper) scrape(ctx context.Context, w io.Writer) (string, error) { if s.req == nil { @@ -712,7 +732,7 @@ func (s *targetScraper) scrape(ctx context.Context, w io.Writer) (string, error) } req.Header.Add("Accept", acceptHeader) req.Header.Add("Accept-Encoding", "gzip") - req.Header.Set("User-Agent", userAgentHeader) + req.Header.Set("User-Agent", UserAgent) req.Header.Set("X-Prometheus-Scrape-Timeout-Seconds", strconv.FormatFloat(s.timeout.Seconds(), 'f', -1, 64)) s.req = req @@ -773,7 +793,7 @@ func (s *targetScraper) scrape(ctx context.Context, w io.Writer) (string, error) // A loop can run and be stopped again. It must not be reused after it was stopped. type loop interface { - run(interval, timeout time.Duration, errc chan<- error) + run(errc chan<- error) setForcedError(err error) stop() getCache() *scrapeCache @@ -797,7 +817,10 @@ type scrapeLoop struct { honorTimestamps bool forcedErr error forcedErrMtx sync.Mutex + sampleLimit int labelLimits *labelLimits + interval time.Duration + timeout time.Duration appender func(ctx context.Context) storage.Appender sampleMutator labelsMutator @@ -809,6 +832,8 @@ type scrapeLoop struct { stopped chan struct{} disabledEndOfRunStalenessMarkers bool + + reportScrapeTimeout bool } // scrapeCache tracks mappings of exposed metric strings to label sets and @@ -1065,7 +1090,11 @@ func newScrapeLoop(ctx context.Context, cache *scrapeCache, jitterSeed uint64, honorTimestamps bool, + sampleLimit int, labelLimits *labelLimits, + interval time.Duration, + timeout time.Duration, + reportScrapeTimeout bool, ) *scrapeLoop { if l == nil { l = log.NewNopLogger() @@ -1088,16 +1117,20 @@ func newScrapeLoop(ctx context.Context, l: l, parentCtx: ctx, honorTimestamps: honorTimestamps, + sampleLimit: sampleLimit, labelLimits: labelLimits, + interval: interval, + timeout: timeout, + reportScrapeTimeout: reportScrapeTimeout, } sl.ctx, sl.cancel = context.WithCancel(ctx) return sl } -func (sl *scrapeLoop) run(interval, timeout time.Duration, errc chan<- error) { +func (sl *scrapeLoop) run(errc chan<- error) { select { - case <-time.After(sl.scraper.offset(interval, sl.jitterSeed)): + case <-time.After(sl.scraper.offset(sl.interval, sl.jitterSeed)): // Continue after a scraping offset. case <-sl.ctx.Done(): close(sl.stopped) @@ -1107,7 +1140,7 @@ func (sl *scrapeLoop) run(interval, timeout time.Duration, errc chan<- error) { var last time.Time alignedScrapeTime := time.Now().Round(0) - ticker := time.NewTicker(interval) + ticker := time.NewTicker(sl.interval) defer ticker.Stop() mainLoop: @@ -1127,19 +1160,19 @@ mainLoop: // Calling Round ensures the time used is the wall clock, as otherwise .Sub // and .Add on time.Time behave differently (see time package docs). scrapeTime := time.Now().Round(0) - if AlignScrapeTimestamps && interval > 100*scrapeTimestampTolerance { + if AlignScrapeTimestamps && sl.interval > 100*ScrapeTimestampTolerance { // For some reason, a tick might have been skipped, in which case we // would call alignedScrapeTime.Add(interval) multiple times. - for scrapeTime.Sub(alignedScrapeTime) >= interval { - alignedScrapeTime = alignedScrapeTime.Add(interval) + for scrapeTime.Sub(alignedScrapeTime) >= sl.interval { + alignedScrapeTime = alignedScrapeTime.Add(sl.interval) } // Align the scrape time if we are in the tolerance boundaries. - if scrapeTime.Sub(alignedScrapeTime) <= scrapeTimestampTolerance { + if scrapeTime.Sub(alignedScrapeTime) <= ScrapeTimestampTolerance { scrapeTime = alignedScrapeTime } } - last = sl.scrapeAndReport(interval, timeout, last, scrapeTime, errc) + last = sl.scrapeAndReport(sl.interval, sl.timeout, last, scrapeTime, errc) select { case <-sl.parentCtx.Done(): @@ -1154,7 +1187,7 @@ mainLoop: close(sl.stopped) if !sl.disabledEndOfRunStalenessMarkers { - sl.endOfRunStaleness(last, ticker, interval) + sl.endOfRunStaleness(last, ticker, sl.interval) } } @@ -1193,7 +1226,7 @@ func (sl *scrapeLoop) scrapeAndReport(interval, timeout time.Duration, last, app }() defer func() { - if err = sl.report(app, appendTime, time.Since(start), total, added, seriesAdded, scrapeErr); err != nil { + if err = sl.report(app, appendTime, timeout, time.Since(start), total, added, seriesAdded, scrapeErr); err != nil { level.Warn(sl.l).Log("msg", "Appending scrape report failed", "err", err) } }() @@ -1358,6 +1391,7 @@ func (sl *scrapeLoop) append(app storage.Appender, b []byte, contentType string, defTime = timestamp.FromTime(ts) appErrs = appendErrors{} sampleLimitErr error + e exemplar.Exemplar // escapes to heap so hoisted out of loop ) defer func() { @@ -1378,7 +1412,6 @@ loop: parsedTimestamp *int64 val float64 his histogram.SparseHistogram - e exemplar.Exemplar ) if et, err = p.Next(); err != nil { if err == io.EOF { @@ -1495,6 +1528,7 @@ loop: // Since exemplar storage is still experimental, we don't fail the scrape on ingestion errors. level.Debug(sl.l).Log("msg", "Error while adding exemplar in AddExemplar", "exemplar", fmt.Sprintf("%+v", e), "err", exemplarErr) } + e = exemplar.Exemplar{} // reset for next time round loop } } @@ -1596,9 +1630,11 @@ const ( scrapeSamplesMetricName = "scrape_samples_scraped" + "\xff" samplesPostRelabelMetricName = "scrape_samples_post_metric_relabeling" + "\xff" scrapeSeriesAddedMetricName = "scrape_series_added" + "\xff" + scrapeTimeoutMetricName = "scrape_timeout_seconds" + "\xff" + scrapeSampleLimitMetricName = "scrape_sample_limit" + "\xff" ) -func (sl *scrapeLoop) report(app storage.Appender, start time.Time, duration time.Duration, scraped, added, seriesAdded int, scrapeErr error) (err error) { +func (sl *scrapeLoop) report(app storage.Appender, start time.Time, timeout, duration time.Duration, scraped, added, seriesAdded int, scrapeErr error) (err error) { sl.scraper.Report(start, duration, scrapeErr) ts := timestamp.FromTime(start) @@ -1623,6 +1659,14 @@ func (sl *scrapeLoop) report(app storage.Appender, start time.Time, duration tim if err = sl.addReportSample(app, scrapeSeriesAddedMetricName, ts, float64(seriesAdded)); err != nil { return } + if sl.reportScrapeTimeout { + if err = sl.addReportSample(app, scrapeTimeoutMetricName, ts, timeout.Seconds()); err != nil { + return + } + if err = sl.addReportSample(app, scrapeSampleLimitMetricName, ts, float64(sl.sampleLimit)); err != nil { + return + } + } return } @@ -1646,6 +1690,14 @@ func (sl *scrapeLoop) reportStale(app storage.Appender, start time.Time) (err er if err = sl.addReportSample(app, scrapeSeriesAddedMetricName, ts, stale); err != nil { return } + if sl.reportScrapeTimeout { + if err = sl.addReportSample(app, scrapeTimeoutMetricName, ts, stale); err != nil { + return + } + if err = sl.addReportSample(app, scrapeSampleLimitMetricName, ts, stale); err != nil { + return + } + } return } diff --git a/scrape/scrape_test.go b/scrape/scrape_test.go index e462ffcec..0ff55ec68 100644 --- a/scrape/scrape_test.go +++ b/scrape/scrape_test.go @@ -57,7 +57,7 @@ func TestNewScrapePool(t *testing.T) { var ( app = &nopAppendable{} cfg = &config.ScrapeConfig{} - sp, _ = newScrapePool(cfg, app, 0, nil) + sp, _ = newScrapePool(cfg, app, 0, nil, false) ) if a, ok := sp.appendable.(*nopAppendable); !ok || a != app { @@ -92,8 +92,8 @@ func TestDroppedTargetsList(t *testing.T) { }, }, } - sp, _ = newScrapePool(cfg, app, 0, nil) - expectedLabelSetString = "{__address__=\"127.0.0.1:9090\", job=\"dropMe\"}" + sp, _ = newScrapePool(cfg, app, 0, nil, false) + expectedLabelSetString = "{__address__=\"127.0.0.1:9090\", __scrape_interval__=\"0s\", __scrape_timeout__=\"0s\", job=\"dropMe\"}" expectedLength = 1 ) sp.Sync(tgs) @@ -146,14 +146,16 @@ type testLoop struct { forcedErr error forcedErrMtx sync.Mutex runOnce bool + interval time.Duration + timeout time.Duration } -func (l *testLoop) run(interval, timeout time.Duration, errc chan<- error) { +func (l *testLoop) run(errc chan<- error) { if l.runOnce { panic("loop must be started only once") } l.runOnce = true - l.startFunc(interval, timeout, errc) + l.startFunc(l.interval, l.timeout, errc) } func (l *testLoop) disableEndOfRunStalenessMarkers() { @@ -250,7 +252,7 @@ func TestScrapePoolReload(t *testing.T) { // On starting to run, new loops created on reload check whether their preceding // equivalents have been stopped. newLoop := func(opts scrapeLoopOptions) loop { - l := &testLoop{} + l := &testLoop{interval: time.Duration(reloadCfg.ScrapeInterval), timeout: time.Duration(reloadCfg.ScrapeTimeout)} l.startFunc = func(interval, timeout time.Duration, errc chan<- error) { require.Equal(t, 3*time.Second, interval, "Unexpected scrape interval") require.Equal(t, 2*time.Second, timeout, "Unexpected scrape timeout") @@ -276,8 +278,10 @@ func TestScrapePoolReload(t *testing.T) { // one terminated. for i := 0; i < numTargets; i++ { + labels := labels.FromStrings(model.AddressLabel, fmt.Sprintf("example.com:%d", i)) t := &Target{ - labels: labels.FromStrings(model.AddressLabel, fmt.Sprintf("example.com:%d", i)), + labels: labels, + discoveredLabels: labels, } l := &testLoop{} l.stopFunc = func() { @@ -342,7 +346,7 @@ func TestScrapePoolTargetLimit(t *testing.T) { activeTargets: map[uint64]*Target{}, loops: map[uint64]loop{}, newLoop: newLoop, - logger: nil, + logger: log.NewNopLogger(), client: http.DefaultClient, } @@ -452,7 +456,7 @@ func TestScrapePoolTargetLimit(t *testing.T) { func TestScrapePoolAppender(t *testing.T) { cfg := &config.ScrapeConfig{} app := &nopAppendable{} - sp, _ := newScrapePool(cfg, app, 0, nil) + sp, _ := newScrapePool(cfg, app, 0, nil, false) loop := sp.newLoop(scrapeLoopOptions{ target: &Target{}, @@ -488,12 +492,12 @@ func TestScrapePoolAppender(t *testing.T) { } func TestScrapePoolRaces(t *testing.T) { - interval, _ := model.ParseDuration("500ms") - timeout, _ := model.ParseDuration("1s") + interval, _ := model.ParseDuration("1s") + timeout, _ := model.ParseDuration("500ms") newConfig := func() *config.ScrapeConfig { return &config.ScrapeConfig{ScrapeInterval: interval, ScrapeTimeout: timeout} } - sp, _ := newScrapePool(newConfig(), &nopAppendable{}, 0, nil) + sp, _ := newScrapePool(newConfig(), &nopAppendable{}, 0, nil, false) tgts := []*targetgroup.Group{ { Targets: []model.LabelSet{ @@ -582,7 +586,11 @@ func TestScrapeLoopStopBeforeRun(t *testing.T) { nopMutator, nil, nil, 0, true, + 0, nil, + 1, + 0, + false, ) // The scrape pool synchronizes on stopping scrape loops. However, new scrape @@ -611,7 +619,7 @@ func TestScrapeLoopStopBeforeRun(t *testing.T) { runDone := make(chan struct{}) go func() { - sl.run(1, 0, nil) + sl.run(nil) close(runDone) }() @@ -647,7 +655,11 @@ func TestScrapeLoopStop(t *testing.T) { nil, 0, true, + 0, nil, + 10*time.Millisecond, + time.Hour, + false, ) // Terminate loop after 2 scrapes. @@ -664,7 +676,7 @@ func TestScrapeLoopStop(t *testing.T) { } go func() { - sl.run(10*time.Millisecond, time.Hour, nil) + sl.run(nil) signal <- struct{}{} }() @@ -715,7 +727,11 @@ func TestScrapeLoopRun(t *testing.T) { nil, 0, true, + 0, nil, + time.Second, + time.Hour, + false, ) // The loop must terminate during the initial offset if the context @@ -723,7 +739,7 @@ func TestScrapeLoopRun(t *testing.T) { scraper.offsetDur = time.Hour go func() { - sl.run(time.Second, time.Hour, errc) + sl.run(errc) signal <- struct{}{} }() @@ -763,11 +779,15 @@ func TestScrapeLoopRun(t *testing.T) { nil, 0, true, + 0, nil, + time.Second, + 100*time.Millisecond, + false, ) go func() { - sl.run(time.Second, 100*time.Millisecond, errc) + sl.run(errc) signal <- struct{}{} }() @@ -815,7 +835,11 @@ func TestScrapeLoopForcedErr(t *testing.T) { nil, 0, true, + 0, nil, + time.Second, + time.Hour, + false, ) forcedErr := fmt.Errorf("forced err") @@ -827,7 +851,7 @@ func TestScrapeLoopForcedErr(t *testing.T) { } go func() { - sl.run(time.Second, time.Hour, errc) + sl.run(errc) signal <- struct{}{} }() @@ -866,7 +890,11 @@ func TestScrapeLoopMetadata(t *testing.T) { cache, 0, true, + 0, nil, + 0, + 0, + false, ) defer cancel() @@ -901,10 +929,10 @@ test_metric 1 require.Equal(t, "", md.Unit) } -func TestScrapeLoopSeriesAdded(t *testing.T) { +func simpleTestScrapeLoop(t testing.TB) (context.Context, *scrapeLoop) { // Need a full storage for correct Add/AddFast semantics. s := teststorage.New(t) - defer s.Close() + t.Cleanup(func() { s.Close() }) ctx, cancel := context.WithCancel(context.Background()) sl := newScrapeLoop(ctx, @@ -916,9 +944,19 @@ func TestScrapeLoopSeriesAdded(t *testing.T) { nil, 0, true, + 0, nil, + 0, + 0, + false, ) - defer cancel() + t.Cleanup(func() { cancel() }) + + return ctx, sl +} + +func TestScrapeLoopSeriesAdded(t *testing.T) { + ctx, sl := simpleTestScrapeLoop(t) slApp := sl.appender(ctx) total, added, seriesAdded, err := sl.append(slApp, []byte("test_metric 1\n"), "", time.Time{}) @@ -937,6 +975,46 @@ func TestScrapeLoopSeriesAdded(t *testing.T) { require.Equal(t, 0, seriesAdded) } +func makeTestMetrics(n int) []byte { + // Construct a metrics string to parse + sb := bytes.Buffer{} + for i := 0; i < n; i++ { + fmt.Fprintf(&sb, "# TYPE metric_a gauge\n") + fmt.Fprintf(&sb, "# HELP metric_a help text\n") + fmt.Fprintf(&sb, "metric_a{foo=\"%d\",bar=\"%d\"} 1\n", i, i*100) + } + return sb.Bytes() +} + +func BenchmarkScrapeLoopAppend(b *testing.B) { + ctx, sl := simpleTestScrapeLoop(b) + + slApp := sl.appender(ctx) + metrics := makeTestMetrics(100) + ts := time.Time{} + + b.ResetTimer() + + for i := 0; i < b.N; i++ { + ts = ts.Add(time.Second) + _, _, _, _ = sl.append(slApp, metrics, "", ts) + } +} +func BenchmarkScrapeLoopAppendOM(b *testing.B) { + ctx, sl := simpleTestScrapeLoop(b) + + slApp := sl.appender(ctx) + metrics := makeTestMetrics(100) + ts := time.Time{} + + b.ResetTimer() + + for i := 0; i < b.N; i++ { + ts = ts.Add(time.Second) + _, _, _, _ = sl.append(slApp, metrics, "application/openmetrics-text", ts) + } +} + func TestScrapeLoopRunCreatesStaleMarkersOnFailedScrape(t *testing.T) { appender := &collectResultAppender{} var ( @@ -955,7 +1033,11 @@ func TestScrapeLoopRunCreatesStaleMarkersOnFailedScrape(t *testing.T) { nil, 0, true, + 0, nil, + 10*time.Millisecond, + time.Hour, + false, ) // Succeed once, several failures, then stop. numScrapes := 0 @@ -973,7 +1055,7 @@ func TestScrapeLoopRunCreatesStaleMarkersOnFailedScrape(t *testing.T) { } go func() { - sl.run(10*time.Millisecond, time.Hour, nil) + sl.run(nil) signal <- struct{}{} }() @@ -1010,7 +1092,11 @@ func TestScrapeLoopRunCreatesStaleMarkersOnParseFailure(t *testing.T) { nil, 0, true, + 0, nil, + 10*time.Millisecond, + time.Hour, + false, ) // Succeed once, several failures, then stop. @@ -1030,7 +1116,7 @@ func TestScrapeLoopRunCreatesStaleMarkersOnParseFailure(t *testing.T) { } go func() { - sl.run(10*time.Millisecond, time.Hour, nil) + sl.run(nil) signal <- struct{}{} }() @@ -1069,7 +1155,11 @@ func TestScrapeLoopCache(t *testing.T) { nil, 0, true, + 0, nil, + 10*time.Millisecond, + time.Hour, + false, ) numScrapes := 0 @@ -1106,7 +1196,7 @@ func TestScrapeLoopCache(t *testing.T) { } go func() { - sl.run(10*time.Millisecond, time.Hour, nil) + sl.run(nil) signal <- struct{}{} }() @@ -1144,7 +1234,11 @@ func TestScrapeLoopCacheMemoryExhaustionProtection(t *testing.T) { nil, 0, true, + 0, nil, + 10*time.Millisecond, + time.Hour, + false, ) numScrapes := 0 @@ -1164,7 +1258,7 @@ func TestScrapeLoopCacheMemoryExhaustionProtection(t *testing.T) { } go func() { - sl.run(10*time.Millisecond, time.Hour, nil) + sl.run(nil) signal <- struct{}{} }() @@ -1251,7 +1345,11 @@ func TestScrapeLoopAppend(t *testing.T) { nil, 0, true, + 0, nil, + 0, + 0, + false, ) now := time.Now() @@ -1293,7 +1391,11 @@ func TestScrapeLoopAppendCacheEntryButErrNotFound(t *testing.T) { nil, 0, true, + 0, nil, + 0, + 0, + false, ) fakeRef := uint64(1) @@ -1343,7 +1445,11 @@ func TestScrapeLoopAppendSampleLimit(t *testing.T) { nil, 0, true, + app.limit, nil, + 0, + 0, + false, ) // Get the value of the Counter before performing the append. @@ -1413,7 +1519,11 @@ func TestScrapeLoop_ChangingMetricString(t *testing.T) { nil, 0, true, + 0, nil, + 0, + 0, + false, ) now := time.Now() @@ -1454,7 +1564,11 @@ func TestScrapeLoopAppendStaleness(t *testing.T) { nil, 0, true, + 0, nil, + 0, + 0, + false, ) now := time.Now() @@ -1498,7 +1612,11 @@ func TestScrapeLoopAppendNoStalenessIfTimestamp(t *testing.T) { nil, 0, true, + 0, nil, + 0, + 0, + false, ) now := time.Now() @@ -1600,7 +1718,11 @@ metric_total{n="2"} 2 # {t="2"} 2.0 20000 nil, 0, true, + 0, nil, + 0, + 0, + false, ) now := time.Now() @@ -1658,7 +1780,11 @@ func TestScrapeLoopAppendExemplarSeries(t *testing.T) { nil, 0, true, + 0, nil, + 0, + 0, + false, ) now := time.Now() @@ -1703,7 +1829,11 @@ func TestScrapeLoopRunReportsTargetDownOnScrapeError(t *testing.T) { nil, 0, true, + 0, nil, + 10*time.Millisecond, + time.Hour, + false, ) scraper.scrapeFunc = func(ctx context.Context, w io.Writer) error { @@ -1711,7 +1841,7 @@ func TestScrapeLoopRunReportsTargetDownOnScrapeError(t *testing.T) { return errors.New("scrape failed") } - sl.run(10*time.Millisecond, time.Hour, nil) + sl.run(nil) require.Equal(t, 0.0, appender.result[0].v, "bad 'up' value") } @@ -1732,7 +1862,11 @@ func TestScrapeLoopRunReportsTargetDownOnInvalidUTF8(t *testing.T) { nil, 0, true, + 0, nil, + 10*time.Millisecond, + time.Hour, + false, ) scraper.scrapeFunc = func(ctx context.Context, w io.Writer) error { @@ -1741,7 +1875,7 @@ func TestScrapeLoopRunReportsTargetDownOnInvalidUTF8(t *testing.T) { return nil } - sl.run(10*time.Millisecond, time.Hour, nil) + sl.run(nil) require.Equal(t, 0.0, appender.result[0].v, "bad 'up' value") } @@ -1774,7 +1908,11 @@ func TestScrapeLoopAppendGracefullyIfAmendOrOutOfOrderOrOutOfBounds(t *testing.T nil, 0, true, + 0, nil, + 0, + 0, + false, ) now := time.Unix(1, 0) @@ -1812,7 +1950,11 @@ func TestScrapeLoopOutOfBoundsTimeError(t *testing.T) { nil, 0, true, + 0, nil, + 0, + 0, + false, ) now := time.Now().Add(20 * time.Minute) @@ -2063,7 +2205,11 @@ func TestScrapeLoop_RespectTimestamps(t *testing.T) { func(ctx context.Context) storage.Appender { return capp }, nil, 0, true, + 0, nil, + 0, + 0, + false, ) now := time.Now() @@ -2097,7 +2243,11 @@ func TestScrapeLoop_DiscardTimestamps(t *testing.T) { func(ctx context.Context) storage.Appender { return capp }, nil, 0, false, + 0, nil, + 0, + 0, + false, ) now := time.Now() @@ -2130,7 +2280,11 @@ func TestScrapeLoopDiscardDuplicateLabels(t *testing.T) { nil, 0, true, + 0, nil, + 0, + 0, + false, ) defer cancel() @@ -2181,7 +2335,11 @@ func TestScrapeLoopDiscardUnnamedMetrics(t *testing.T) { nil, 0, true, + 0, nil, + 0, + 0, + false, ) defer cancel() @@ -2274,7 +2432,7 @@ func TestReuseScrapeCache(t *testing.T) { ScrapeInterval: model.Duration(5 * time.Second), MetricsPath: "/metrics", } - sp, _ = newScrapePool(cfg, app, 0, nil) + sp, _ = newScrapePool(cfg, app, 0, nil, false) t1 = &Target{ discoveredLabels: labels.Labels{ labels.Label{ @@ -2399,7 +2557,11 @@ func TestScrapeAddFast(t *testing.T) { nil, 0, true, + 0, nil, + 0, + 0, + false, ) defer cancel() @@ -2429,7 +2591,7 @@ func TestReuseCacheRace(t *testing.T) { ScrapeInterval: model.Duration(5 * time.Second), MetricsPath: "/metrics", } - sp, _ = newScrapePool(cfg, app, 0, nil) + sp, _ = newScrapePool(cfg, app, 0, nil, false) t1 = &Target{ discoveredLabels: labels.Labels{ labels.Label{ @@ -2483,7 +2645,11 @@ func TestScrapeReportSingleAppender(t *testing.T) { nil, 0, true, + 0, nil, + 10*time.Millisecond, + time.Hour, + false, ) numScrapes := 0 @@ -2498,7 +2664,7 @@ func TestScrapeReportSingleAppender(t *testing.T) { } go func() { - sl.run(10*time.Millisecond, time.Hour, nil) + sl.run(nil) signal <- struct{}{} }() @@ -2612,7 +2778,11 @@ func TestScrapeLoopLabelLimit(t *testing.T) { nil, 0, true, + 0, &test.labelLimits, + 0, + 0, + false, ) slApp := sl.appender(context.Background()) @@ -2627,3 +2797,40 @@ func TestScrapeLoopLabelLimit(t *testing.T) { } } } + +func TestTargetScrapeIntervalAndTimeoutRelabel(t *testing.T) { + interval, _ := model.ParseDuration("2s") + timeout, _ := model.ParseDuration("500ms") + config := &config.ScrapeConfig{ + ScrapeInterval: interval, + ScrapeTimeout: timeout, + RelabelConfigs: []*relabel.Config{ + { + SourceLabels: model.LabelNames{model.ScrapeIntervalLabel}, + Regex: relabel.MustNewRegexp("2s"), + Replacement: "3s", + TargetLabel: model.ScrapeIntervalLabel, + Action: relabel.Replace, + }, + { + SourceLabels: model.LabelNames{model.ScrapeTimeoutLabel}, + Regex: relabel.MustNewRegexp("500ms"), + Replacement: "750ms", + TargetLabel: model.ScrapeTimeoutLabel, + Action: relabel.Replace, + }, + }, + } + sp, _ := newScrapePool(config, &nopAppendable{}, 0, nil, false) + tgts := []*targetgroup.Group{ + { + Targets: []model.LabelSet{{model.AddressLabel: "127.0.0.1:9090"}}, + }, + } + + sp.Sync(tgts) + defer sp.stop() + + require.Equal(t, "3s", sp.ActiveTargets()[0].labels.Get(model.ScrapeIntervalLabel)) + require.Equal(t, "750ms", sp.ActiveTargets()[0].labels.Get(model.ScrapeTimeoutLabel)) +} diff --git a/scrape/target.go b/scrape/target.go index 4a7b6eb0f..ada1bcdc5 100644 --- a/scrape/target.go +++ b/scrape/target.go @@ -143,8 +143,18 @@ func (t *Target) SetMetadataStore(s MetricMetadataStore) { // hash returns an identifying hash for the target. func (t *Target) hash() uint64 { h := fnv.New64a() + + // We must build a label set without the scrape interval and timeout + // labels because those aren't defining attributes of a target + // and can be changed without qualifying its parent as a new target, + // therefore they should not effect its unique hash. + l := t.labels.Map() + delete(l, model.ScrapeIntervalLabel) + delete(l, model.ScrapeTimeoutLabel) + lset := labels.FromMap(l) + //nolint: errcheck - h.Write([]byte(fmt.Sprintf("%016d", t.labels.Hash()))) + h.Write([]byte(fmt.Sprintf("%016d", lset.Hash()))) //nolint: errcheck h.Write([]byte(t.URL().String())) @@ -273,6 +283,31 @@ func (t *Target) Health() TargetHealth { return t.health } +// intervalAndTimeout returns the interval and timeout derived from +// the targets labels. +func (t *Target) intervalAndTimeout(defaultInterval, defaultDuration time.Duration) (time.Duration, time.Duration, error) { + t.mtx.RLock() + defer t.mtx.RUnlock() + + intervalLabel := t.labels.Get(model.ScrapeIntervalLabel) + interval, err := model.ParseDuration(intervalLabel) + if err != nil { + return defaultInterval, defaultDuration, errors.Errorf("Error parsing interval label %q: %v", intervalLabel, err) + } + timeoutLabel := t.labels.Get(model.ScrapeTimeoutLabel) + timeout, err := model.ParseDuration(timeoutLabel) + if err != nil { + return defaultInterval, defaultDuration, errors.Errorf("Error parsing timeout label %q: %v", timeoutLabel, err) + } + + return time.Duration(interval), time.Duration(timeout), nil +} + +// GetValue gets a label value from the entire label set. +func (t *Target) GetValue(name string) string { + return t.labels.Get(name) +} + // Targets is a sortable list of targets. type Targets []*Target @@ -329,6 +364,8 @@ func populateLabels(lset labels.Labels, cfg *config.ScrapeConfig) (res, orig lab // Copy labels into the labelset for the target if they are not set already. scrapeLabels := []labels.Label{ {Name: model.JobLabel, Value: cfg.JobName}, + {Name: model.ScrapeIntervalLabel, Value: cfg.ScrapeInterval.String()}, + {Name: model.ScrapeTimeoutLabel, Value: cfg.ScrapeTimeout.String()}, {Name: model.MetricsPathLabel, Value: cfg.MetricsPath}, {Name: model.SchemeLabel, Value: cfg.Scheme}, } @@ -390,6 +427,34 @@ func populateLabels(lset labels.Labels, cfg *config.ScrapeConfig) (res, orig lab return nil, nil, err } + var interval string + var intervalDuration model.Duration + if interval = lset.Get(model.ScrapeIntervalLabel); interval != cfg.ScrapeInterval.String() { + intervalDuration, err = model.ParseDuration(interval) + if err != nil { + return nil, nil, errors.Errorf("error parsing scrape interval: %v", err) + } + if time.Duration(intervalDuration) == 0 { + return nil, nil, errors.New("scrape interval cannot be 0") + } + } + + var timeout string + var timeoutDuration model.Duration + if timeout = lset.Get(model.ScrapeTimeoutLabel); timeout != cfg.ScrapeTimeout.String() { + timeoutDuration, err = model.ParseDuration(timeout) + if err != nil { + return nil, nil, errors.Errorf("error parsing scrape timeout: %v", err) + } + if time.Duration(timeoutDuration) == 0 { + return nil, nil, errors.New("scrape timeout cannot be 0") + } + } + + if timeoutDuration > intervalDuration { + return nil, nil, errors.Errorf("scrape timeout cannot be greater than scrape interval (%q > %q)", timeout, interval) + } + // Meta labels are deleted after relabelling. Other internal labels propagate to // the target which decides whether they will be part of their label set. for _, l := range lset { diff --git a/scrape/target_test.go b/scrape/target_test.go index 6a7a77fec..a578d2760 100644 --- a/scrape/target_test.go +++ b/scrape/target_test.go @@ -149,7 +149,7 @@ func TestNewHTTPBearerToken(t *testing.T) { cfg := config_util.HTTPClientConfig{ BearerToken: "1234", } - c, err := config_util.NewClientFromConfig(cfg, "test", config_util.WithHTTP2Disabled()) + c, err := config_util.NewClientFromConfig(cfg, "test") if err != nil { t.Fatal(err) } @@ -176,7 +176,7 @@ func TestNewHTTPBearerTokenFile(t *testing.T) { cfg := config_util.HTTPClientConfig{ BearerTokenFile: "testdata/bearertoken.txt", } - c, err := config_util.NewClientFromConfig(cfg, "test", config_util.WithHTTP2Disabled()) + c, err := config_util.NewClientFromConfig(cfg, "test") if err != nil { t.Fatal(err) } @@ -205,7 +205,7 @@ func TestNewHTTPBasicAuth(t *testing.T) { Password: "password123", }, } - c, err := config_util.NewClientFromConfig(cfg, "test", config_util.WithHTTP2Disabled()) + c, err := config_util.NewClientFromConfig(cfg, "test") if err != nil { t.Fatal(err) } @@ -233,7 +233,7 @@ func TestNewHTTPCACert(t *testing.T) { CAFile: caCertPath, }, } - c, err := config_util.NewClientFromConfig(cfg, "test", config_util.WithHTTP2Disabled()) + c, err := config_util.NewClientFromConfig(cfg, "test") if err != nil { t.Fatal(err) } @@ -266,7 +266,7 @@ func TestNewHTTPClientCert(t *testing.T) { KeyFile: "testdata/client.key", }, } - c, err := config_util.NewClientFromConfig(cfg, "test", config_util.WithHTTP2Disabled()) + c, err := config_util.NewClientFromConfig(cfg, "test") if err != nil { t.Fatal(err) } @@ -295,7 +295,7 @@ func TestNewHTTPWithServerName(t *testing.T) { ServerName: "prometheus.rocks", }, } - c, err := config_util.NewClientFromConfig(cfg, "test", config_util.WithHTTP2Disabled()) + c, err := config_util.NewClientFromConfig(cfg, "test") if err != nil { t.Fatal(err) } @@ -324,7 +324,7 @@ func TestNewHTTPWithBadServerName(t *testing.T) { ServerName: "badname", }, } - c, err := config_util.NewClientFromConfig(cfg, "test", config_util.WithHTTP2Disabled()) + c, err := config_util.NewClientFromConfig(cfg, "test") if err != nil { t.Fatal(err) } @@ -362,7 +362,7 @@ func TestNewClientWithBadTLSConfig(t *testing.T) { KeyFile: "testdata/nonexistent_client.key", }, } - _, err := config_util.NewClientFromConfig(cfg, "test", config_util.WithHTTP2Disabled()) + _, err := config_util.NewClientFromConfig(cfg, "test") if err == nil { t.Fatalf("Expected error, got nil.") } @@ -382,3 +382,29 @@ func TestTargetsFromGroup(t *testing.T) { t.Fatalf("Expected error %s, got %s", expectedError, failures[0]) } } + +func TestTargetHash(t *testing.T) { + target1 := &Target{ + labels: labels.Labels{ + {Name: model.AddressLabel, Value: "localhost"}, + {Name: model.SchemeLabel, Value: "http"}, + {Name: model.MetricsPathLabel, Value: "/metrics"}, + {Name: model.ScrapeIntervalLabel, Value: "15s"}, + {Name: model.ScrapeTimeoutLabel, Value: "500ms"}, + }, + } + hash1 := target1.hash() + + target2 := &Target{ + labels: labels.Labels{ + {Name: model.AddressLabel, Value: "localhost"}, + {Name: model.SchemeLabel, Value: "http"}, + {Name: model.MetricsPathLabel, Value: "/metrics"}, + {Name: model.ScrapeIntervalLabel, Value: "14s"}, + {Name: model.ScrapeTimeoutLabel, Value: "600ms"}, + }, + } + hash2 := target2.hash() + + require.Equal(t, hash1, hash2, "Scrape interval and duration labels should not effect hash.") +} diff --git a/scripts/build_react_app.sh b/scripts/build_react_app.sh deleted file mode 100755 index 68aea9f42..000000000 --- a/scripts/build_react_app.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env bash -# -# Build React web UI. -# Run from repository root. -set -e -set -u - -if ! [[ "$0" =~ "scripts/build_react_app.sh" ]]; then - echo "must be run from repository root" - exit 255 -fi - -cd web/ui/react-app - -echo "building React app" -PUBLIC_URL=. yarn build -rm -rf ../static/react -mv build ../static/react diff --git a/scripts/genproto.sh b/scripts/genproto.sh index c68df9b46..3c4a26658 100755 --- a/scripts/genproto.sh +++ b/scripts/genproto.sh @@ -15,7 +15,7 @@ if ! [[ $(protoc --version) =~ "3.15.8" ]]; then exit 255 fi -# Since we run go get, go mod download, the go.sum will change. +# Since we run go install, go mod download, the go.sum will change. # Make a backup. cp go.sum go.sum.bak diff --git a/scripts/sync_codemirror.sh b/scripts/sync_codemirror.sh new file mode 100755 index 000000000..82362d2cf --- /dev/null +++ b/scripts/sync_codemirror.sh @@ -0,0 +1,135 @@ +#!/usr/bin/env bash +# vim: ts=2 et +# Setting -x is absolutely forbidden as it could leak the GitHub token. +set -uo pipefail + +# GITHUB_TOKEN required scope: repo.repo_public + +git_mail="prometheus-team@googlegroups.com" +git_user="prombot" +branch="repo_sync_codemirror" +commit_msg="Update codemirror" +pr_title="Synchronize codemirror from prometheus/prometheus" +pr_msg="Propagating changes from prometheus/prometheus default branch." +target_repo="prometheus-community/codemirror-promql" +source_path="web/ui/module/codemirror-promql" + +color_red='\e[31m' +color_green='\e[32m' +color_yellow='\e[33m' +color_none='\e[0m' + +echo_red() { + echo -e "${color_red}$@${color_none}" 1>&2 +} + +echo_green() { + echo -e "${color_green}$@${color_none}" 1>&2 +} + +echo_yellow() { + echo -e "${color_yellow}$@${color_none}" 1>&2 +} + +GITHUB_TOKEN="${GITHUB_TOKEN:-}" +if [ -z "${GITHUB_TOKEN}" ]; then + echo_red 'GitHub token (GITHUB_TOKEN) not set. Terminating.' + exit 1 +fi + +# List of files that should not be synced. +excluded_files="CODE_OF_CONDUCT.md LICENSE Makefile.common SECURITY.md .yamllint MAINTAINERS.md" +excluded_dirs=".github .circleci" + +# Go to the root of the repo +cd "$(git rev-parse --show-cdup)" || exit 1 + +source_dir="$(pwd)/${source_path}" + +tmp_dir="$(mktemp -d)" +trap 'rm -rf "${tmp_dir}"' EXIT + +## Internal functions +github_api() { + local url + url="https://api.github.com/${1}" + shift 1 + curl --retry 5 --silent --fail -u "${git_user}:${GITHUB_TOKEN}" "${url}" "$@" +} + +get_default_branch() { + github_api "repos/${1}" 2> /dev/null | + jq -r .default_branch +} + +push_branch() { + local git_url + git_url="https://${git_user}:${GITHUB_TOKEN}@github.com/${1}" + # stdout and stderr are redirected to /dev/null otherwise git-push could leak + # the token in the logs. + # Delete the remote branch in case it was merged but not deleted. + git push --quiet "${git_url}" ":${branch}" 1>/dev/null 2>&1 + git push --quiet "${git_url}" --set-upstream "${branch}" 1>/dev/null 2>&1 +} + +post_pull_request() { + local repo="$1" + local default_branch="$2" + local post_json + post_json="$(printf '{"title":"%s","base":"%s","head":"%s","body":"%s"}' "${pr_title}" "${default_branch}" "${branch}" "${pr_msg}")" + echo "Posting PR to ${default_branch} on ${repo}" + github_api "repos/${repo}/pulls" --data "${post_json}" --show-error | + jq -r '"PR URL " + .html_url' +} + +process_repo() { + local org_repo + local default_branch + org_repo="$1" + mkdir -p "${tmp_dir}/${org_repo}" + echo_green "Processing '${org_repo}'" + + default_branch="$(get_default_branch "${org_repo}")" + if [[ -z "${default_branch}" ]]; then + echo "Can't get the default branch." + return + fi + echo "Default branch: ${default_branch}" + + # Clone target repo to temporary directory and checkout to new branch + git clone --quiet "https://github.com/${org_repo}.git" "${tmp_dir}/${org_repo}" + cd "${tmp_dir}/${org_repo}" || return 1 + git checkout -b "${branch}" || return 1 + + git rm -r . + + cp -ra ${source_dir}/. . + git add . + + for excluded_dir in ${excluded_dirs}; do + git reset -- "${excluded_dir}/*" + git checkout -- "${excluded_dir}/*" + done + + for excluded_file in ${excluded_files}; do + git reset -- "${excluded_file}" + git checkout -- "${excluded_file}" + done + + if [[ -n "$(git status --porcelain)" ]]; then + git config user.email "${git_mail}" + git config user.name "${git_user}" + git add . + git commit -s -m "${commit_msg}" + if push_branch "${org_repo}"; then + if ! post_pull_request "${org_repo}" "${default_branch}"; then + return 1 + fi + else + echo "Pushing ${branch} to ${org_repo} failed" + return 1 + fi + fi +} + +process_repo ${target_repo} diff --git a/scripts/sync_repo_files.sh b/scripts/sync_repo_files.sh index e686cda2e..910d16faa 100755 --- a/scripts/sync_repo_files.sh +++ b/scripts/sync_repo_files.sh @@ -37,7 +37,7 @@ if [ -z "${GITHUB_TOKEN}" ]; then fi # List of files that should be synced. -SYNC_FILES="CODE_OF_CONDUCT.md LICENSE Makefile.common SECURITY.md .yamllint" +SYNC_FILES="CODE_OF_CONDUCT.md LICENSE Makefile.common SECURITY.md .yamllint .github/workflows/golangci-lint.yml" # Go to the root of the repo cd "$(git rev-parse --show-cdup)" || exit 1 @@ -96,6 +96,15 @@ check_license() { echo "$1" | grep --quiet --no-messages --ignore-case 'Apache License' } +check_go() { + local org_repo + local default_branch + org_repo="$1" + default_branch="$2" + + curl -sLf -o /dev/null "https://raw.githubusercontent.com/${org_repo}/${default_branch}/go.mod" +} + check_circleci_orb() { local org_repo local default_branch @@ -136,10 +145,14 @@ process_repo() { echo "LICENSE in ${org_repo} is not apache, skipping." continue fi + if [[ "${source_file}" == '.github/workflows/golangci-lint.yml' ]] && ! check_go "${org_repo}" "${default_branch}" ; then + echo "${org_repo} is not Go, skipping .github/workflows/golangci-lint.yml." + continue + fi if [[ -z "${target_file}" ]]; then echo "${source_file} doesn't exist in ${org_repo}" case "${source_file}" in - CODE_OF_CONDUCT.md | SECURITY.md) + CODE_OF_CONDUCT.md | SECURITY.md | .github/workflows/golangci-lint.yml) echo "${source_file} missing in ${org_repo}, force updating." needs_update+=("${source_file}") ;; @@ -172,6 +185,9 @@ process_repo() { cd "${tmp_dir}/${org_repo}" || return 1 git checkout -b "${branch}" || return 1 + # If we need to add an Actions file this directory needs to be present. + mkdir -p "./.github/workflows" + # Update the files in target repo by one from prometheus/prometheus. for source_file in "${needs_update[@]}"; do case "${source_file}" in diff --git a/scripts/tools.go b/scripts/tools.go index fda90e16a..52b464911 100644 --- a/scripts/tools.go +++ b/scripts/tools.go @@ -11,6 +11,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +//go:build tools // +build tools // Package tools tracks dependencies for tools that are required to generate the protobuf code. diff --git a/storage/merge.go b/storage/merge.go index 3cf4a8447..3021a7ee8 100644 --- a/storage/merge.go +++ b/storage/merge.go @@ -18,7 +18,6 @@ import ( "container/heap" "math" "sort" - "strings" "sync" "github.com/pkg/errors" @@ -198,15 +197,13 @@ func mergeStrings(a, b []string) []string { res := make([]string, 0, maxl*10/9) for len(a) > 0 && len(b) > 0 { - d := strings.Compare(a[0], b[0]) - - if d == 0 { + if a[0] == b[0] { res = append(res, a[0]) a, b = a[1:], b[1:] - } else if d < 0 { + } else if a[0] < b[0] { res = append(res, a[0]) a = a[1:] - } else if d > 0 { + } else { res = append(res, b[0]) b = b[1:] } diff --git a/storage/remote/client.go b/storage/remote/client.go index 36ea1c903..7539c2c92 100644 --- a/storage/remote/client.go +++ b/storage/remote/client.go @@ -33,9 +33,9 @@ import ( "github.com/prometheus/client_golang/prometheus" config_util "github.com/prometheus/common/config" "github.com/prometheus/common/model" + "github.com/prometheus/common/sigv4" "github.com/prometheus/common/version" - "github.com/prometheus/prometheus/config" "github.com/prometheus/prometheus/prompb" ) @@ -97,7 +97,7 @@ type ClientConfig struct { URL *config_util.URL Timeout model.Duration HTTPClientConfig config_util.HTTPClientConfig - SigV4Config *config.SigV4Config + SigV4Config *sigv4.SigV4Config Headers map[string]string RetryOnRateLimit bool } @@ -110,7 +110,7 @@ type ReadClient interface { // NewReadClient creates a new client for remote read. func NewReadClient(name string, conf *ClientConfig) (ReadClient, error) { - httpClient, err := config_util.NewClientFromConfig(conf.HTTPClientConfig, "remote_storage_read_client", config_util.WithHTTP2Disabled()) + httpClient, err := config_util.NewClientFromConfig(conf.HTTPClientConfig, "remote_storage_read_client") if err != nil { return nil, err } @@ -136,14 +136,14 @@ func NewReadClient(name string, conf *ClientConfig) (ReadClient, error) { // NewWriteClient creates a new client for remote write. func NewWriteClient(name string, conf *ClientConfig) (WriteClient, error) { - httpClient, err := config_util.NewClientFromConfig(conf.HTTPClientConfig, "remote_storage_write_client", config_util.WithHTTP2Disabled()) + httpClient, err := config_util.NewClientFromConfig(conf.HTTPClientConfig, "remote_storage_write_client") if err != nil { return nil, err } t := httpClient.Transport if conf.SigV4Config != nil { - t, err = newSigV4RoundTripper(conf.SigV4Config, httpClient.Transport) + t, err = sigv4.NewSigV4RoundTripper(conf.SigV4Config, httpClient.Transport) if err != nil { return nil, err } diff --git a/storage/remote/client_test.go b/storage/remote/client_test.go index c5ae6b87c..f9162a279 100644 --- a/storage/remote/client_test.go +++ b/storage/remote/client_test.go @@ -111,9 +111,8 @@ func TestClientRetryAfter(t *testing.T) { c := getClient(conf) err = c.Store(context.Background(), []byte{}) - if _, ok := err.(RecoverableError); ok { - t.Fatal("recoverable error not expected") - } + _, ok := err.(RecoverableError) + require.False(t, ok, "Recoverable error not expected.") conf = &ClientConfig{ URL: &config_util.URL{URL: serverURL}, @@ -123,9 +122,8 @@ func TestClientRetryAfter(t *testing.T) { c = getClient(conf) err = c.Store(context.Background(), []byte{}) - if _, ok := err.(RecoverableError); !ok { - t.Fatal("recoverable error was expected") - } + _, ok = err.(RecoverableError) + require.True(t, ok, "Recoverable error was expected.") } func TestRetryAfterDuration(t *testing.T) { diff --git a/storage/remote/codec.go b/storage/remote/codec.go index 9e455db5a..1fffc0a05 100644 --- a/storage/remote/codec.go +++ b/storage/remote/codec.go @@ -26,6 +26,7 @@ import ( "github.com/pkg/errors" "github.com/prometheus/common/model" + "github.com/prometheus/prometheus/pkg/exemplar" "github.com/prometheus/prometheus/pkg/histogram" "github.com/prometheus/prometheus/pkg/labels" "github.com/prometheus/prometheus/pkg/textparse" @@ -459,6 +460,17 @@ func FromLabelMatchers(matchers []*prompb.LabelMatcher) ([]*labels.Matcher, erro return result, nil } +func exemplarProtoToExemplar(ep prompb.Exemplar) exemplar.Exemplar { + timestamp := ep.Timestamp + + return exemplar.Exemplar{ + Labels: labelProtosToLabels(ep.Labels), + Value: ep.Value, + Ts: timestamp, + HasTs: timestamp != 0, + } +} + // LabelProtosToMetric unpack a []*prompb.Label to a model.Metric func LabelProtosToMetric(labelPairs []*prompb.Label) model.Metric { metric := make(model.Metric, len(labelPairs)) diff --git a/storage/remote/codec_test.go b/storage/remote/codec_test.go index 0f6a56bda..68cfe9899 100644 --- a/storage/remote/codec_test.go +++ b/storage/remote/codec_test.go @@ -36,7 +36,8 @@ var writeRequestFixture = &prompb.WriteRequest{ {Name: "d", Value: "e"}, {Name: "foo", Value: "bar"}, }, - Samples: []prompb.Sample{{Value: 1, Timestamp: 0}}, + Samples: []prompb.Sample{{Value: 1, Timestamp: 0}}, + Exemplars: []prompb.Exemplar{{Labels: []prompb.Label{{Name: "f", Value: "g"}}, Value: 1, Timestamp: 0}}, }, { Labels: []prompb.Label{ @@ -46,7 +47,8 @@ var writeRequestFixture = &prompb.WriteRequest{ {Name: "d", Value: "e"}, {Name: "foo", Value: "bar"}, }, - Samples: []prompb.Sample{{Value: 2, Timestamp: 1}}, + Samples: []prompb.Sample{{Value: 2, Timestamp: 1}}, + Exemplars: []prompb.Exemplar{{Labels: []prompb.Label{{Name: "h", Value: "i"}}, Value: 2, Timestamp: 1}}, }, }, } diff --git a/storage/remote/read_handler_test.go b/storage/remote/read_handler_test.go index 2bc8a3429..8962a8ba3 100644 --- a/storage/remote/read_handler_test.go +++ b/storage/remote/read_handler_test.go @@ -78,9 +78,7 @@ func TestSampledReadEndpoint(t *testing.T) { recorder := httptest.NewRecorder() h.ServeHTTP(recorder, request) - if recorder.Code/100 != 2 { - t.Fatal(recorder.Code) - } + require.Equal(t, 2, recorder.Code/100) require.Equal(t, "application/x-protobuf", recorder.Result().Header.Get("Content-Type")) require.Equal(t, "snappy", recorder.Result().Header.Get("Content-Encoding")) @@ -96,9 +94,7 @@ func TestSampledReadEndpoint(t *testing.T) { err = proto.Unmarshal(uncompressed, &resp) require.NoError(t, err) - if len(resp.Results) != 1 { - t.Fatalf("Expected 1 result, got %d", len(resp.Results)) - } + require.Equal(t, 1, len(resp.Results), "Expected 1 result.") require.Equal(t, &prompb.QueryResult{ Timeseries: []*prompb.TimeSeries{ @@ -189,9 +185,7 @@ func TestStreamReadEndpoint(t *testing.T) { recorder := httptest.NewRecorder() api.ServeHTTP(recorder, request) - if recorder.Code/100 != 2 { - t.Fatal(recorder.Code) - } + require.Equal(t, 2, recorder.Code/100) require.Equal(t, "application/x-streamed-protobuf; proto=prometheus.ChunkedReadResponse", recorder.Result().Header.Get("Content-Type")) require.Equal(t, "", recorder.Result().Header.Get("Content-Encoding")) @@ -208,9 +202,7 @@ func TestStreamReadEndpoint(t *testing.T) { results = append(results, res) } - if len(results) != 5 { - t.Fatalf("Expected 5 result, got %d", len(results)) - } + require.Equal(t, 5, len(results), "Expected 5 results.") require.Equal(t, []*prompb.ChunkedReadResponse{ { diff --git a/storage/remote/sigv4.go b/storage/remote/sigv4.go deleted file mode 100644 index 4a8974f71..000000000 --- a/storage/remote/sigv4.go +++ /dev/null @@ -1,138 +0,0 @@ -// Copyright 2021 The Prometheus Authors -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package remote - -import ( - "bytes" - "fmt" - "io" - "io/ioutil" - "net/http" - "net/textproto" - "sync" - "time" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/credentials" - "github.com/aws/aws-sdk-go/aws/credentials/stscreds" - "github.com/aws/aws-sdk-go/aws/session" - signer "github.com/aws/aws-sdk-go/aws/signer/v4" - "github.com/prometheus/prometheus/config" -) - -var sigv4HeaderDenylist = []string{ - "uber-trace-id", -} - -type sigV4RoundTripper struct { - region string - next http.RoundTripper - pool sync.Pool - - signer *signer.Signer -} - -// newSigV4RoundTripper returns a new http.RoundTripper that will sign requests -// using Amazon's Signature Verification V4 signing procedure. The request will -// then be handed off to the next RoundTripper provided by next. If next is nil, -// http.DefaultTransport will be used. -// -// Credentials for signing are retrieved using the the default AWS credential -// chain. If credentials cannot be found, an error will be returned. -func newSigV4RoundTripper(cfg *config.SigV4Config, next http.RoundTripper) (http.RoundTripper, error) { - if next == nil { - next = http.DefaultTransport - } - - creds := credentials.NewStaticCredentials(cfg.AccessKey, string(cfg.SecretKey), "") - if cfg.AccessKey == "" && cfg.SecretKey == "" { - creds = nil - } - - sess, err := session.NewSessionWithOptions(session.Options{ - Config: aws.Config{ - Region: aws.String(cfg.Region), - Credentials: creds, - }, - Profile: cfg.Profile, - }) - if err != nil { - return nil, fmt.Errorf("could not create new AWS session: %w", err) - } - if _, err := sess.Config.Credentials.Get(); err != nil { - return nil, fmt.Errorf("could not get SigV4 credentials: %w", err) - } - if aws.StringValue(sess.Config.Region) == "" { - return nil, fmt.Errorf("region not configured in sigv4 or in default credentials chain") - } - - signerCreds := sess.Config.Credentials - if cfg.RoleARN != "" { - signerCreds = stscreds.NewCredentials(sess, cfg.RoleARN) - } - - rt := &sigV4RoundTripper{ - region: cfg.Region, - next: next, - signer: signer.NewSigner(signerCreds), - } - rt.pool.New = rt.newBuf - return rt, nil -} - -func (rt *sigV4RoundTripper) newBuf() interface{} { - return bytes.NewBuffer(make([]byte, 0, 1024)) -} - -func (rt *sigV4RoundTripper) RoundTrip(req *http.Request) (*http.Response, error) { - // rt.signer.Sign needs a seekable body, so we replace the body with a - // buffered reader filled with the contents of original body. - buf := rt.pool.Get().(*bytes.Buffer) - defer func() { - buf.Reset() - rt.pool.Put(buf) - }() - if _, err := io.Copy(buf, req.Body); err != nil { - return nil, err - } - // Close the original body since we don't need it anymore. - _ = req.Body.Close() - - // Ensure our seeker is back at the start of the buffer once we return. - var seeker io.ReadSeeker = bytes.NewReader(buf.Bytes()) - defer func() { - _, _ = seeker.Seek(0, io.SeekStart) - }() - req.Body = ioutil.NopCloser(seeker) - - // Clone the request and trim out headers that we don't want to sign. - signReq := req.Clone(req.Context()) - for _, header := range sigv4HeaderDenylist { - signReq.Header.Del(header) - } - - headers, err := rt.signer.Sign(signReq, seeker, "aps", rt.region, time.Now().UTC()) - if err != nil { - return nil, fmt.Errorf("failed to sign request: %w", err) - } - - // Copy over signed headers. Authorization header is not returned by - // rt.signer.Sign and needs to be copied separately. - for k, v := range headers { - req.Header[textproto.CanonicalMIMEHeaderKey(k)] = v - } - req.Header.Set("Authorization", signReq.Header.Get("Authorization")) - - return rt.next.RoundTrip(req) -} diff --git a/storage/remote/sigv4_test.go b/storage/remote/sigv4_test.go deleted file mode 100644 index 97d087853..000000000 --- a/storage/remote/sigv4_test.go +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright 2021 The Prometheus Authors -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package remote - -import ( - "net/http" - "os" - "strings" - "testing" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/credentials" - "github.com/aws/aws-sdk-go/aws/session" - signer "github.com/aws/aws-sdk-go/aws/signer/v4" - "github.com/prometheus/client_golang/prometheus/promhttp" - "github.com/stretchr/testify/require" -) - -func TestSigV4_Inferred_Region(t *testing.T) { - os.Setenv("AWS_ACCESS_KEY_ID", "secret") - os.Setenv("AWS_SECRET_ACCESS_KEY", "token") - os.Setenv("AWS_REGION", "us-west-2") - - sess, err := session.NewSession(&aws.Config{ - // Setting to an empty string to demostrate the default value from the yaml - // won't override the environment's region. - Region: aws.String(""), - }) - require.NoError(t, err) - _, err = sess.Config.Credentials.Get() - require.NoError(t, err) - - require.NotNil(t, sess.Config.Region) - require.Equal(t, "us-west-2", *sess.Config.Region) -} - -func TestSigV4RoundTripper(t *testing.T) { - var gotReq *http.Request - - rt := &sigV4RoundTripper{ - region: "us-east-2", - next: promhttp.RoundTripperFunc(func(req *http.Request) (*http.Response, error) { - gotReq = req - return &http.Response{StatusCode: http.StatusOK}, nil - }), - signer: signer.NewSigner(credentials.NewStaticCredentials( - "test-id", - "secret", - "token", - )), - } - rt.pool.New = rt.newBuf - - cli := &http.Client{Transport: rt} - - req, err := http.NewRequest(http.MethodPost, "google.com", strings.NewReader("Hello, world!")) - require.NoError(t, err) - - _, err = cli.Do(req) - require.NoError(t, err) - require.NotNil(t, gotReq) - - origReq := gotReq - require.NotEmpty(t, origReq.Header.Get("Authorization")) - require.NotEmpty(t, origReq.Header.Get("X-Amz-Date")) - - // Perform the same request but with a header that shouldn't included in the - // signature; validate that the Authorization signature matches. - t.Run("Ignored Headers", func(t *testing.T) { - req, err := http.NewRequest(http.MethodPost, "google.com", strings.NewReader("Hello, world!")) - require.NoError(t, err) - - req.Header.Add("Uber-Trace-Id", "some-trace-id") - - _, err = cli.Do(req) - require.NoError(t, err) - require.NotNil(t, gotReq) - - require.Equal(t, origReq.Header.Get("Authorization"), gotReq.Header.Get("Authorization")) - }) -} diff --git a/storage/remote/write.go b/storage/remote/write.go index 5eab6e919..3f7dd8a06 100644 --- a/storage/remote/write.go +++ b/storage/remote/write.go @@ -159,7 +159,10 @@ func (rws *WriteStorage) ApplyConfig(conf *config.Config) error { continue } - endpoint := rwConf.URL.String() + // Redacted to remove any passwords in the URL (that are + // technically accepted but not recommended) since this is + // only used for metric labels. + endpoint := rwConf.URL.Redacted() newQueues[hash] = NewQueueManager( newQueueManagerMetrics(rws.reg, name, endpoint), rws.watcherMetrics, diff --git a/storage/remote/write_handler.go b/storage/remote/write_handler.go index a3dee6136..92637cf47 100644 --- a/storage/remote/write_handler.go +++ b/storage/remote/write_handler.go @@ -15,10 +15,14 @@ package remote import ( "context" + "fmt" "net/http" "github.com/go-kit/log" "github.com/go-kit/log/level" + "github.com/pkg/errors" + + "github.com/prometheus/prometheus/pkg/exemplar" "github.com/prometheus/prometheus/prompb" "github.com/prometheus/prometheus/storage" ) @@ -62,16 +66,35 @@ func (h *writeHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusNoContent) } +// checkAppendExemplarError modifies the AppendExamplar's returned error based on the error cause. +func (h *writeHandler) checkAppendExemplarError(err error, e exemplar.Exemplar, outOfOrderErrs *int) error { + switch errors.Cause(err) { + case storage.ErrNotFound: + return storage.ErrNotFound + case storage.ErrOutOfOrderExemplar: + *outOfOrderErrs++ + level.Debug(h.logger).Log("msg", "Out of order exemplar", "exemplar", fmt.Sprintf("%+v", e)) + return nil + default: + return err + } +} + func (h *writeHandler) write(ctx context.Context, req *prompb.WriteRequest) (err error) { + var ( + outOfOrderExemplarErrs = 0 + ) + app := h.appendable.Appender(ctx) defer func() { if err != nil { - app.Rollback() + _ = app.Rollback() return } err = app.Commit() }() + var exemplarErr error for _, ts := range req.Timeseries { labels := labelProtosToLabels(ts.Labels) for _, s := range ts.Samples { @@ -79,7 +102,23 @@ func (h *writeHandler) write(ctx context.Context, req *prompb.WriteRequest) (err if err != nil { return err } + } + + for _, ep := range ts.Exemplars { + e := exemplarProtoToExemplar(ep) + + _, exemplarErr = app.AppendExemplar(0, labels, e) + exemplarErr = h.checkAppendExemplarError(exemplarErr, e, &outOfOrderExemplarErrs) + if exemplarErr != nil { + // Since exemplar storage is still experimental, we don't fail the request on ingestion errors. + level.Debug(h.logger).Log("msg", "Error while adding exemplar in AddExemplar", "exemplar", fmt.Sprintf("%+v", e), "err", exemplarErr) + } + } + } + + if outOfOrderExemplarErrs > 0 { + _ = level.Warn(h.logger).Log("msg", "Error on ingesting out-of-order exemplars", "num_dropped", outOfOrderExemplarErrs) } return nil diff --git a/storage/remote/write_handler_test.go b/storage/remote/write_handler_test.go index d7698ecdb..7fb61df0f 100644 --- a/storage/remote/write_handler_test.go +++ b/storage/remote/write_handler_test.go @@ -23,12 +23,13 @@ import ( "testing" "github.com/go-kit/log" + "github.com/stretchr/testify/require" + "github.com/prometheus/prometheus/pkg/exemplar" "github.com/prometheus/prometheus/pkg/histogram" "github.com/prometheus/prometheus/pkg/labels" "github.com/prometheus/prometheus/prompb" "github.com/prometheus/prometheus/storage" - "github.com/stretchr/testify/require" ) func TestRemoteWriteHandler(t *testing.T) { @@ -48,16 +49,23 @@ func TestRemoteWriteHandler(t *testing.T) { require.Equal(t, http.StatusNoContent, resp.StatusCode) i := 0 + j := 0 for _, ts := range writeRequestFixture.Timeseries { labels := labelProtosToLabels(ts.Labels) for _, s := range ts.Samples { require.Equal(t, mockSample{labels, s.Timestamp, s.Value}, appendable.samples[i]) i++ } + + for _, e := range ts.Exemplars { + exemplarLabels := labelProtosToLabels(e.Labels) + require.Equal(t, mockExemplar{labels, exemplarLabels, e.Timestamp, e.Value}, appendable.exemplars[j]) + j++ + } } } -func TestOutOfOrder(t *testing.T) { +func TestOutOfOrderSample(t *testing.T) { buf, _, err := buildWriteRequest([]prompb.TimeSeries{{ Labels: []prompb.Label{{Name: "__name__", Value: "test_metric"}}, Samples: []prompb.Sample{{Value: 1, Timestamp: 0}}, @@ -68,7 +76,7 @@ func TestOutOfOrder(t *testing.T) { require.NoError(t, err) appendable := &mockAppendable{ - latest: 100, + latestSample: 100, } handler := NewWriteHandler(log.NewNopLogger(), appendable) @@ -79,6 +87,32 @@ func TestOutOfOrder(t *testing.T) { require.Equal(t, http.StatusBadRequest, resp.StatusCode) } +// This test case currently aims to verify that the WriteHandler endpoint +// don't fail on ingestion errors since the exemplar storage is +// still experimental. +func TestOutOfOrderExemplar(t *testing.T) { + buf, _, err := buildWriteRequest([]prompb.TimeSeries{{ + Labels: []prompb.Label{{Name: "__name__", Value: "test_metric"}}, + Exemplars: []prompb.Exemplar{{Labels: []prompb.Label{{Name: "foo", Value: "bar"}}, Value: 1, Timestamp: 0}}, + }}, nil, nil) + require.NoError(t, err) + + req, err := http.NewRequest("", "", bytes.NewReader(buf)) + require.NoError(t, err) + + appendable := &mockAppendable{ + latestExemplar: 100, + } + handler := NewWriteHandler(log.NewNopLogger(), appendable) + + recorder := httptest.NewRecorder() + handler.ServeHTTP(recorder, req) + + resp := recorder.Result() + // TODO: update to require.Equal(t, http.StatusConflict, resp.StatusCode) once exemplar storage is not experimental. + require.Equal(t, http.StatusNoContent, resp.StatusCode) +} + func TestCommitErr(t *testing.T) { buf, _, err := buildWriteRequest(writeRequestFixture.Timeseries, nil, nil) require.NoError(t, err) @@ -102,9 +136,11 @@ func TestCommitErr(t *testing.T) { } type mockAppendable struct { - latest int64 - samples []mockSample - commitErr error + latestSample int64 + samples []mockSample + latestExemplar int64 + exemplars []mockExemplar + commitErr error } type mockSample struct { @@ -113,16 +149,23 @@ type mockSample struct { v float64 } +type mockExemplar struct { + l labels.Labels + el labels.Labels + t int64 + v float64 +} + func (m *mockAppendable) Appender(_ context.Context) storage.Appender { return m } func (m *mockAppendable) Append(_ uint64, l labels.Labels, t int64, v float64) (uint64, error) { - if t < m.latest { + if t < m.latestSample { return 0, storage.ErrOutOfOrderSample } - m.latest = t + m.latestSample = t m.samples = append(m.samples, mockSample{l, t, v}) return 0, nil } @@ -135,8 +178,13 @@ func (*mockAppendable) Rollback() error { return fmt.Errorf("not implemented") } -func (*mockAppendable) AppendExemplar(ref uint64, l labels.Labels, e exemplar.Exemplar) (uint64, error) { - // noop until we implement exemplars over remote write +func (m *mockAppendable) AppendExemplar(_ uint64, l labels.Labels, e exemplar.Exemplar) (uint64, error) { + if e.Ts < m.latestExemplar { + return 0, storage.ErrOutOfOrderExemplar + } + + m.latestExemplar = e.Ts + m.exemplars = append(m.exemplars, mockExemplar{l, e.Labels, e.Ts, e.Value}) return 0, nil } diff --git a/template/template.go b/template/template.go index b0d8f5cc0..dca5aa432 100644 --- a/template/template.go +++ b/template/template.go @@ -115,6 +115,7 @@ type Expander struct { name string data interface{} funcMap text_template.FuncMap + options []string } // NewTemplateExpander returns a template expander ready to use. @@ -126,7 +127,11 @@ func NewTemplateExpander( timestamp model.Time, queryFunc QueryFunc, externalURL *url.URL, + options []string, ) *Expander { + if options == nil { + options = []string{"missingkey=zero"} + } return &Expander{ text: text, name: name, @@ -291,6 +296,7 @@ func NewTemplateExpander( return externalURL.String() }, }, + options: options, } } @@ -336,7 +342,9 @@ func (te Expander) Expand() (result string, resultErr error) { templateTextExpansionTotal.Inc() - tmpl, err := text_template.New(te.name).Funcs(te.funcMap).Option("missingkey=zero").Parse(te.text) + tmpl := text_template.New(te.name).Funcs(te.funcMap) + tmpl.Option(te.options...) + tmpl, err := tmpl.Parse(te.text) if err != nil { return "", errors.Wrapf(err, "error parsing template %v", te.name) } @@ -361,7 +369,7 @@ func (te Expander) ExpandHTML(templateFiles []string) (result string, resultErr }() tmpl := html_template.New(te.name).Funcs(html_template.FuncMap(te.funcMap)) - tmpl.Option("missingkey=zero") + tmpl.Option(te.options...) tmpl.Funcs(html_template.FuncMap{ "tmpl": func(name string, data interface{}) (html_template.HTML, error) { var buffer bytes.Buffer diff --git a/template/template_test.go b/template/template_test.go index 21583d911..6c67789ad 100644 --- a/template/template_test.go +++ b/template/template_test.go @@ -31,6 +31,7 @@ func TestTemplateExpansion(t *testing.T) { text string output string input interface{} + options []string queryResult promql.Vector shouldFail bool html bool @@ -50,7 +51,7 @@ func TestTemplateExpansion(t *testing.T) { // Non-ASCII space (not allowed in text/template, see https://github.com/golang/go/blob/master/src/text/template/parse/lex.go#L98) text: "{{ }}", shouldFail: true, - errorMsg: "error parsing template test: template: test:1: unexpected unrecognized character in action: U+00A0 in command", + errorMsg: "error parsing template test: template: test:1: unrecognized character in action: U+00A0", }, { // HTML escaping. @@ -153,11 +154,50 @@ func TestTemplateExpansion(t *testing.T) { }}, output: "a:11: b:21: ", }, + { + // Missing value is no value for nil options. + text: "{{ .Foo }}", + output: "", + }, + { + // Missing value is no value for no options. + text: "{{ .Foo }}", + options: make([]string, 0), + output: "", + }, + { + // Assert that missing value returns error with missingkey=error. + text: "{{ .Foo }}", + options: []string{"missingkey=error"}, + shouldFail: true, + errorMsg: `error executing template test: template: test:1:3: executing "test" at <.Foo>: nil data; no entry for key "Foo"`, + }, + { + // Missing value is "" for nil options in ExpandHTML. + text: "{{ .Foo }}", + output: "", + html: true, + }, + { + // Missing value is "" for no options in ExpandHTML. + text: "{{ .Foo }}", + options: make([]string, 0), + output: "", + html: true, + }, + { + // Assert that missing value returns error with missingkey=error in ExpandHTML. + text: "{{ .Foo }}", + options: []string{"missingkey=error"}, + shouldFail: true, + errorMsg: `error executing template test: template: test:1:3: executing "test" at <.Foo>: nil data; no entry for key "Foo"`, + html: true, + }, { // Unparsable template. text: "{{", shouldFail: true, - errorMsg: "error parsing template test: template: test:1: unexpected unclosed action in command", + errorMsg: "error parsing template test: template: test:1: unclosed action", }, { // Error in function. @@ -194,7 +234,7 @@ func TestTemplateExpansion(t *testing.T) { // Humanize - string with error. text: `{{ humanize "one" }}`, shouldFail: true, - errorMsg: `strconv.ParseFloat: parsing "one": invalid syntax`, + errorMsg: `error executing template test: template: test:1:3: executing "test" at : error calling humanize: strconv.ParseFloat: parsing "one": invalid syntax`, }, { // Humanize1024 - float64. @@ -212,7 +252,7 @@ func TestTemplateExpansion(t *testing.T) { // Humanize1024 - string with error. text: `{{ humanize1024 "one" }}`, shouldFail: true, - errorMsg: `strconv.ParseFloat: parsing "one": invalid syntax`, + errorMsg: `error executing template test: template: test:1:3: executing "test" at : error calling humanize1024: strconv.ParseFloat: parsing "one": invalid syntax`, }, { // HumanizeDuration - seconds - float64. @@ -242,7 +282,7 @@ func TestTemplateExpansion(t *testing.T) { // HumanizeDuration - string with error. text: `{{ humanizeDuration "one" }}`, shouldFail: true, - errorMsg: `strconv.ParseFloat: parsing "one": invalid syntax`, + errorMsg: `error executing template test: template: test:1:3: executing "test" at : error calling humanizeDuration: strconv.ParseFloat: parsing "one": invalid syntax`, }, { // Humanize* Inf and NaN - float64. @@ -270,7 +310,7 @@ func TestTemplateExpansion(t *testing.T) { // HumanizePercentage - model.SampleValue input - string with error. text: `{{ "one" | humanizePercentage }}`, shouldFail: true, - errorMsg: `strconv.ParseFloat: parsing "one": invalid syntax`, + errorMsg: `error executing template test: template: test:1:11: executing "test" at : error calling humanizePercentage: strconv.ParseFloat: parsing "one": invalid syntax`, }, { // HumanizeTimestamp - model.SampleValue input - float64. @@ -341,7 +381,7 @@ func TestTemplateExpansion(t *testing.T) { } var result string var err error - expander := NewTemplateExpander(context.Background(), s.text, "test", s.input, 0, queryFunc, extURL) + expander := NewTemplateExpander(context.Background(), s.text, "test", s.input, 0, queryFunc, extURL, s.options) if s.html { result, err = expander.ExpandHTML(nil) } else { @@ -349,13 +389,14 @@ func TestTemplateExpansion(t *testing.T) { } if s.shouldFail { require.Error(t, err, "%v", s.text) + require.EqualError(t, err, s.errorMsg) continue } require.NoError(t, err) if err == nil { - require.Equal(t, result, s.output) + require.Equal(t, s.output, result) } } } diff --git a/tsdb/README.md b/tsdb/README.md index 98443f178..59f800c7a 100644 --- a/tsdb/README.md +++ b/tsdb/README.md @@ -17,4 +17,6 @@ A series of blog posts explaining different components of TSDB: * [WAL and Checkpoint](https://ganeshvernekar.com/blog/prometheus-tsdb-wal-and-checkpoint/) * [Memory Mapping of Head Chunks from Disk](https://ganeshvernekar.com/blog/prometheus-tsdb-mmapping-head-chunks-from-disk/) * [Persistent Block and its Index](https://ganeshvernekar.com/blog/prometheus-tsdb-persistent-block-and-its-index/) -* [Queries](https://ganeshvernekar.com/blog/prometheus-tsdb-queries/) \ No newline at end of file +* [Queries](https://ganeshvernekar.com/blog/prometheus-tsdb-queries/) +* [Compaction and Retention](https://ganeshvernekar.com/blog/prometheus-tsdb-compaction-and-retention/) +* [Snapshot on Shutdown](https://ganeshvernekar.com/blog/prometheus-tsdb-snapshot-on-shutdown/) diff --git a/tsdb/chunks/head_chunks_other.go b/tsdb/chunks/head_chunks_other.go index a1de87370..8b37dd8c2 100644 --- a/tsdb/chunks/head_chunks_other.go +++ b/tsdb/chunks/head_chunks_other.go @@ -11,6 +11,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +//go:build !windows // +build !windows package chunks diff --git a/tsdb/db.go b/tsdb/db.go index 046fb5271..c69f6f464 100644 --- a/tsdb/db.go +++ b/tsdb/db.go @@ -1663,9 +1663,12 @@ func (db *DB) Delete(mint, maxt int64, ms ...*labels.Matcher) error { }(b)) } } - g.Go(func() error { - return db.head.Delete(mint, maxt, ms...) - }) + if db.head.OverlapsClosedInterval(mint, maxt) { + g.Go(func() error { + return db.head.Delete(mint, maxt, ms...) + }) + } + return g.Wait() } diff --git a/tsdb/db_test.go b/tsdb/db_test.go index 876a13920..26ead3fc3 100644 --- a/tsdb/db_test.go +++ b/tsdb/db_test.go @@ -54,7 +54,7 @@ import ( ) func TestMain(m *testing.M) { - goleak.VerifyTestMain(m, goleak.IgnoreTopFunction("github.com/prometheus/prometheus/tsdb.(*SegmentWAL).cut.func2")) + goleak.VerifyTestMain(m, goleak.IgnoreTopFunction("github.com/prometheus/prometheus/tsdb.(*SegmentWAL).cut.func1"), goleak.IgnoreTopFunction("github.com/prometheus/prometheus/tsdb.(*SegmentWAL).cut.func2")) } func openTestDB(t testing.TB, opts *Options, rngs []int64) (db *DB) { diff --git a/tsdb/docs/format/memory_snapshot.md b/tsdb/docs/format/memory_snapshot.md index b6c53cd8d..ce168594c 100644 --- a/tsdb/docs/format/memory_snapshot.md +++ b/tsdb/docs/format/memory_snapshot.md @@ -3,6 +3,11 @@ Memory snapshot uses the WAL package and writes each series as a WAL record. Below are the formats of the individual records. +The order of records in the snapshot is always: +1. Starts with series records, one per series, in an unsorted fashion. +2. After all series are done, we write a tombstone record containing all the tombstones. +3. At the end, we write one or more exemplar records while batching up the exemplars in each record. Exemplars are in the order they were written to the circular buffer. + ### Series records This record is a snapshot of a single series. Only one series exists per record. @@ -60,3 +65,29 @@ as tombstone file in blocks. │ len(Encoded Tombstones) │ Encoded Tombstones │ └───────────────────────────────────┴─────────────────────────────┘ ``` + +### Exemplar record + +A single exemplar record contains one or more exemplars, encoded in the same way as we do in WAL but with changed record type. + +``` +┌───────────────────────────────────────────────────────────────────┐ +│ Record Type │ +├───────────────────────────────────────────────────────────────────┤ +│ ┌────────────────────┬───────────────────────────┐ │ +│ │ series ref <8b> │ timestamp <8b> │ │ +│ └────────────────────┴───────────────────────────┘ │ +│ ┌─────────────────────┬───────────────────────────┬─────────────┐ │ +│ │ ref_delta │ timestamp_delta │ value <8b> │ │ +│ ├─────────────────────┴───────────────────────────┴─────────────┤ │ +│ │ n = len(labels) │ │ +│ ├───────────────────────────────┬───────────────────────────────┤ │ +│ │ len(str_1) │ str_1 │ │ +│ ├───────────────────────────────┴───────────────────────────────┤ │ +│ │ ... │ │ +│ ├───────────────────────────────┬───────────────────────────────┤ │ +│ │ len(str_2n) │ str_2n │ │ +│ ├───────────────────────────────┴───────────────────────────────┤ │ +│ . . . │ +└───────────────────────────────────────────────────────────────────┘ +``` diff --git a/tsdb/exemplar.go b/tsdb/exemplar.go index 3aa9607bb..1e09da21e 100644 --- a/tsdb/exemplar.go +++ b/tsdb/exemplar.go @@ -279,7 +279,7 @@ func (ce *CircularExemplarStorage) Resize(l int64) int { migrated := 0 - if l > 0 { + if l > 0 && len(oldBuffer) > 0 { // Rewind previous next index by count with wrap-around. // This math is essentially looking at nextIndex, where we would write the next exemplar to, // and find the index in the old exemplar buffer that we should start migrating exemplars from. @@ -400,3 +400,23 @@ func (ce *CircularExemplarStorage) computeMetrics() { ce.metrics.lastExemplarsTs.Set(float64(ce.exemplars[0].exemplar.Ts) / 1000) } } + +// IterateExemplars iterates through all the exemplars from oldest to newest appended and calls +// the given function on all of them till the end (or) till the first function call that returns an error. +func (ce *CircularExemplarStorage) IterateExemplars(f func(seriesLabels labels.Labels, e exemplar.Exemplar) error) error { + ce.lock.RLock() + defer ce.lock.RUnlock() + + idx := ce.nextIndex + l := len(ce.exemplars) + for i := 0; i < l; i, idx = i+1, (idx+1)%l { + if ce.exemplars[idx] == nil { + continue + } + err := f(ce.exemplars[idx].ref.seriesLabels, ce.exemplars[idx].exemplar) + if err != nil { + return err + } + } + return nil +} diff --git a/tsdb/exemplar_test.go b/tsdb/exemplar_test.go index c81b3ffce..eb95daa34 100644 --- a/tsdb/exemplar_test.go +++ b/tsdb/exemplar_test.go @@ -413,7 +413,7 @@ func TestResize(t *testing.T) { expectedMigrated: 50, }, { - name: "Zero", + name: "ShrinkToZero", startSize: 100, newCount: 0, expectedSeries: []int{}, @@ -436,6 +436,14 @@ func TestResize(t *testing.T) { notExpectedSeries: []int{}, expectedMigrated: 0, }, + { + name: "GrowFromZero", + startSize: 0, + newCount: 10, + expectedSeries: []int{}, + notExpectedSeries: []int{}, + expectedMigrated: 0, + }, } for _, tc := range testCases { @@ -477,16 +485,27 @@ func TestResize(t *testing.T) { } } -func BenchmarkAddExemplar(t *testing.B) { - exs, err := NewCircularExemplarStorage(int64(t.N), eMetrics) - require.NoError(t, err) - es := exs.(*CircularExemplarStorage) +func BenchmarkAddExemplar(b *testing.B) { + // We need to include these labels since we do length calculation + // before adding. + exLabels := labels.Labels{{Name: "traceID", Value: "89620921"}} - for i := 0; i < t.N; i++ { - l := labels.FromStrings("service", strconv.Itoa(i)) + for _, n := range []int{10000, 100000, 1000000} { + b.Run(fmt.Sprintf("%d", n), func(b *testing.B) { + exs, err := NewCircularExemplarStorage(int64(n), eMetrics) + require.NoError(b, err) + es := exs.(*CircularExemplarStorage) - err = es.AddExemplar(l, exemplar.Exemplar{Value: float64(i), Ts: int64(i)}) - require.NoError(t, err) + b.ResetTimer() + l := labels.Labels{{Name: "service", Value: strconv.Itoa(0)}} + for i := 0; i < n; i++ { + if i%100 == 0 { + l = labels.Labels{{Name: "service", Value: strconv.Itoa(i)}} + } + err = es.AddExemplar(l, exemplar.Exemplar{Value: float64(i), Ts: int64(i), Labels: exLabels}) + require.NoError(b, err) + } + }) } } diff --git a/tsdb/fileutil/dir_unix.go b/tsdb/fileutil/dir_unix.go index 58a77dfc1..db310014e 100644 --- a/tsdb/fileutil/dir_unix.go +++ b/tsdb/fileutil/dir_unix.go @@ -12,6 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +//go:build !windows // +build !windows package fileutil diff --git a/tsdb/fileutil/dir_windows.go b/tsdb/fileutil/dir_windows.go index c123395c0..f67cc74b3 100644 --- a/tsdb/fileutil/dir_windows.go +++ b/tsdb/fileutil/dir_windows.go @@ -12,6 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +//go:build windows // +build windows package fileutil diff --git a/tsdb/fileutil/flock_solaris.go b/tsdb/fileutil/flock_solaris.go index cfff8e42f..f19c184a4 100644 --- a/tsdb/fileutil/flock_solaris.go +++ b/tsdb/fileutil/flock_solaris.go @@ -11,6 +11,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +//go:build solaris // +build solaris package fileutil diff --git a/tsdb/fileutil/flock_unix.go b/tsdb/fileutil/flock_unix.go index f6f78d367..c0aeb6948 100644 --- a/tsdb/fileutil/flock_unix.go +++ b/tsdb/fileutil/flock_unix.go @@ -11,6 +11,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +//go:build darwin || dragonfly || freebsd || linux || netbsd || openbsd // +build darwin dragonfly freebsd linux netbsd openbsd package fileutil diff --git a/tsdb/fileutil/mmap_386.go b/tsdb/fileutil/mmap_386.go index 66b9d3680..591d722d5 100644 --- a/tsdb/fileutil/mmap_386.go +++ b/tsdb/fileutil/mmap_386.go @@ -11,6 +11,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +//go:build windows // +build windows package fileutil diff --git a/tsdb/fileutil/mmap_amd64.go b/tsdb/fileutil/mmap_amd64.go index 4b523bc67..4c9534e93 100644 --- a/tsdb/fileutil/mmap_amd64.go +++ b/tsdb/fileutil/mmap_amd64.go @@ -11,6 +11,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +//go:build windows // +build windows package fileutil diff --git a/tsdb/fileutil/mmap_unix.go b/tsdb/fileutil/mmap_unix.go index 043f4d408..9365c62f7 100644 --- a/tsdb/fileutil/mmap_unix.go +++ b/tsdb/fileutil/mmap_unix.go @@ -11,6 +11,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +//go:build !windows && !plan9 // +build !windows,!plan9 package fileutil diff --git a/tsdb/fileutil/preallocate_other.go b/tsdb/fileutil/preallocate_other.go index 162fbc5f7..2c46dd490 100644 --- a/tsdb/fileutil/preallocate_other.go +++ b/tsdb/fileutil/preallocate_other.go @@ -12,6 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +//go:build !linux && !darwin // +build !linux,!darwin package fileutil diff --git a/tsdb/fileutil/sync.go b/tsdb/fileutil/sync.go index 2e64a4088..5bd18b458 100644 --- a/tsdb/fileutil/sync.go +++ b/tsdb/fileutil/sync.go @@ -12,6 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +//go:build !linux && !darwin // +build !linux,!darwin package fileutil diff --git a/tsdb/fileutil/sync_darwin.go b/tsdb/fileutil/sync_darwin.go index 2af1b0f41..155b94459 100644 --- a/tsdb/fileutil/sync_darwin.go +++ b/tsdb/fileutil/sync_darwin.go @@ -12,6 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +//go:build darwin // +build darwin package fileutil diff --git a/tsdb/fileutil/sync_linux.go b/tsdb/fileutil/sync_linux.go index 8b4fc8268..1c2091ea3 100644 --- a/tsdb/fileutil/sync_linux.go +++ b/tsdb/fileutil/sync_linux.go @@ -12,6 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +//go:build linux // +build linux package fileutil diff --git a/tsdb/goversion/goversion.go b/tsdb/goversion/goversion.go index 93ff6ef8b..02da2639d 100644 --- a/tsdb/goversion/goversion.go +++ b/tsdb/goversion/goversion.go @@ -11,6 +11,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +//go:build go1.12 // +build go1.12 // Package goversion enforces the go version supported by the tsdb module. diff --git a/tsdb/head.go b/tsdb/head.go index 54d889799..6cda5e537 100644 --- a/tsdb/head.go +++ b/tsdb/head.go @@ -15,6 +15,7 @@ package tsdb import ( "fmt" + "io" "math" "path/filepath" "sync" @@ -79,9 +80,6 @@ type Head struct { // All series addressable by their ID or hash. series *stripeSeries - symMtx sync.RWMutex - symbols map[string]struct{} - deletedMtx sync.Mutex deleted map[uint64]int // Deleted series, and what WAL segment they must be kept until. @@ -113,10 +111,15 @@ type ExemplarStorage interface { storage.ExemplarQueryable AddExemplar(labels.Labels, exemplar.Exemplar) error ValidateExemplar(labels.Labels, exemplar.Exemplar) error + IterateExemplars(f func(seriesLabels labels.Labels, e exemplar.Exemplar) error) error } // HeadOptions are parameters for the Head block. type HeadOptions struct { + // Runtime reloadable option. At the top of the struct for 32 bit OS: + // https://pkg.go.dev/sync/atomic#pkg-note-BUG + MaxExemplars atomic.Int64 + ChunkRange int64 // ChunkDirRoot is the parent directory of the chunks directory. ChunkDirRoot string @@ -129,9 +132,6 @@ type HeadOptions struct { SeriesCallback SeriesLifecycleCallback EnableExemplarStorage bool EnableMemorySnapshotOnShutdown bool - - // Runtime reloadable options. - MaxExemplars atomic.Int64 } func DefaultHeadOptions() *HeadOptions { @@ -173,28 +173,18 @@ func NewHead(r prometheus.Registerer, l log.Logger, wal *wal.WAL, opts *HeadOpti opts.SeriesCallback = &noopSeriesLifecycleCallback{} } - em := NewExemplarMetrics(r) - es, err := NewCircularExemplarStorage(opts.MaxExemplars.Load(), em) - if err != nil { - return nil, err - } - if stats == nil { stats = NewHeadStats() } + if !opts.EnableExemplarStorage { + opts.MaxExemplars.Store(0) + } + h := &Head{ - wal: wal, - logger: l, - opts: opts, - exemplarMetrics: em, - exemplars: es, - series: newStripeSeries(opts.StripeSize, opts.SeriesCallback), - symbols: map[string]struct{}{}, - postings: index.NewUnorderedMemPostings(), - tombstones: tombstones.NewMemTombstones(), - iso: newIsolation(), - deleted: map[uint64]int{}, + wal: wal, + logger: l, + opts: opts, memChunkPool: sync.Pool{ New: func() interface{} { return &memChunk{} @@ -203,11 +193,9 @@ func NewHead(r prometheus.Registerer, l log.Logger, wal *wal.WAL, opts *HeadOpti stats: stats, reg: r, } - h.chunkRange.Store(opts.ChunkRange) - h.minTime.Store(math.MaxInt64) - h.maxTime.Store(math.MinInt64) - h.lastWALTruncationTime.Store(math.MinInt64) - h.lastMemoryTruncationTime.Store(math.MinInt64) + if err := h.resetInMemoryState(); err != nil { + return nil, err + } h.metrics = newHeadMetrics(h, r) if opts.ChunkPool == nil { @@ -226,6 +214,38 @@ func NewHead(r prometheus.Registerer, l log.Logger, wal *wal.WAL, opts *HeadOpti return h, nil } +func (h *Head) resetInMemoryState() error { + var err error + var em *ExemplarMetrics + if h.exemplars != nil { + ce, ok := h.exemplars.(*CircularExemplarStorage) + if ok { + em = ce.metrics + } + } + if em == nil { + em = NewExemplarMetrics(h.reg) + } + es, err := NewCircularExemplarStorage(h.opts.MaxExemplars.Load(), em) + if err != nil { + return err + } + + h.exemplarMetrics = em + h.exemplars = es + h.series = newStripeSeries(h.opts.StripeSize, h.opts.SeriesCallback) + h.postings = index.NewUnorderedMemPostings() + h.tombstones = tombstones.NewMemTombstones() + h.iso = newIsolation() + h.deleted = map[uint64]int{} + h.chunkRange.Store(h.opts.ChunkRange) + h.minTime.Store(math.MaxInt64) + h.maxTime.Store(math.MinInt64) + h.lastWALTruncationTime.Store(math.MinInt64) + h.lastMemoryTruncationTime.Store(math.MinInt64) + return nil +} + type headMetrics struct { activeAppenders prometheus.Gauge series prometheus.GaugeFunc @@ -249,6 +269,7 @@ type headMetrics struct { checkpointCreationFail prometheus.Counter checkpointCreationTotal prometheus.Counter mmapChunkCorruptionTotal prometheus.Counter + snapshotReplayErrorTotal prometheus.Counter // Will be either 0 or 1. // Sparse histogram metrics for experiments. // TODO: remove these in the final version. @@ -348,6 +369,10 @@ func newHeadMetrics(h *Head, r prometheus.Registerer) *headMetrics { Name: "prometheus_tsdb_mmap_chunk_corruptions_total", Help: "Total number of memory-mapped chunk corruptions.", }), + snapshotReplayErrorTotal: prometheus.NewCounter(prometheus.CounterOpts{ + Name: "prometheus_tsdb_snapshot_replay_error_total", + Help: "Total number snapshot replays that failed.", + }), sparseHistogramSamplesTotal: prometheus.NewCounter(prometheus.CounterOpts{ Name: "prometheus_tsdb_sparse_histogram_samples_total", Help: "Total number of sparse histograms samples added.", @@ -382,6 +407,7 @@ func newHeadMetrics(h *Head, r prometheus.Registerer) *headMetrics { m.checkpointCreationFail, m.checkpointCreationTotal, m.mmapChunkCorruptionTotal, + m.snapshotReplayErrorTotal, m.sparseHistogramSamplesTotal, m.sparseHistogramSeries, // Metrics bound to functions and not needed in tests @@ -469,11 +495,24 @@ func (h *Head) Init(minValidTime int64) error { level.Info(h.logger).Log("msg", "Replaying on-disk memory mappable chunks if any") start := time.Now() - snapIdx, snapOffset, refSeries, err := h.loadChunkSnapshot() - if err != nil { - return err + snapIdx, snapOffset := -1, 0 + refSeries := make(map[uint64]*memSeries) + + if h.opts.EnableMemorySnapshotOnShutdown { + level.Info(h.logger).Log("msg", "Chunk snapshot is enabled, replaying from the snapshot") + var err error + snapIdx, snapOffset, refSeries, err = h.loadChunkSnapshot() + if err != nil { + snapIdx, snapOffset = -1, 0 + h.metrics.snapshotReplayErrorTotal.Inc() + level.Error(h.logger).Log("msg", "Failed to load chunk snapshot", "err", err) + // We clear the partially loaded data to replay fresh from the WAL. + if err := h.resetInMemoryState(); err != nil { + return err + } + } + level.Info(h.logger).Log("msg", "Chunk snapshot loading time", "duration", time.Since(start).String()) } - level.Info(h.logger).Log("msg", "Chunk snapshot loading time", "duration", time.Since(start).String()) mmapChunkReplayStart := time.Now() mmappedChunks, err := h.loadMmappedChunks(refSeries) @@ -511,7 +550,7 @@ func (h *Head) Init(minValidTime int64) error { h.startWALReplayStatus(startFrom, endAt) multiRef := map[uint64]uint64{} - if err == nil { + if err == nil && startFrom >= snapIdx { sr, err := wal.NewSegmentsReader(dir) if err != nil { return errors.Wrap(err, "open checkpoint") @@ -550,6 +589,10 @@ func (h *Head) Init(minValidTime int64) error { offset = snapOffset } sr, err := wal.NewSegmentBufReaderWithOffset(offset, s) + if errors.Cause(err) == io.EOF { + // File does not exist. + continue + } if err != nil { return errors.Wrapf(err, "segment reader (offset=%d)", offset) } @@ -737,6 +780,11 @@ func (h *Head) Truncate(mint int64) (err error) { return h.truncateWAL(mint) } +// OverlapsClosedInterval returns true if the head overlaps [mint, maxt]. +func (h *Head) OverlapsClosedInterval(mint, maxt int64) bool { + return h.MinTime() <= maxt && mint <= h.MaxTime() +} + // truncateMemory removes old data before mint from the head. func (h *Head) truncateMemory(mint int64) (err error) { h.chunkSnapshotMtx.Lock() @@ -1103,6 +1151,10 @@ func (h *Head) gc() int64 { // Remove deleted series IDs from the postings lists. h.postings.Delete(deleted) + // Remove tombstones referring to the deleted series. + h.tombstones.DeleteTombstones(deleted) + h.tombstones.TruncateBefore(mint) + if h.wal != nil { _, last, _ := wal.Segments(h.wal.Dir()) h.deletedMtx.Lock() @@ -1118,22 +1170,6 @@ func (h *Head) gc() int64 { h.deletedMtx.Unlock() } - // Rebuild symbols and label value indices from what is left in the postings terms. - // symMtx ensures that append of symbols and postings is disabled for rebuild time. - h.symMtx.Lock() - defer h.symMtx.Unlock() - - symbols := make(map[string]struct{}, len(h.symbols)) - if err := h.postings.Iter(func(l labels.Label, _ index.Postings) error { - symbols[l.Name] = struct{}{} - symbols[l.Value] = struct{}{} - return nil - }); err != nil { - // This should never happen, as the iteration function only returns nil. - panic(err) - } - h.symbols = symbols - return actualMint } @@ -1193,6 +1229,9 @@ func (h *Head) Close() error { if h.wal != nil { errs.Add(h.wal.Close()) } + if errs.Err() == nil && h.opts.EnableMemorySnapshotOnShutdown { + errs.Add(h.performChunkSnapshot()) + } return errs.Err() } @@ -1233,14 +1272,6 @@ func (h *Head) getOrCreateWithID(id, hash uint64, lset labels.Labels) (*memSerie h.metrics.seriesCreated.Inc() h.numSeries.Inc() - h.symMtx.Lock() - defer h.symMtx.Unlock() - - for _, l := range lset { - h.symbols[l.Name] = struct{}{} - h.symbols[l.Value] = struct{}{} - } - h.postings.Add(id, lset) return s, true, nil } @@ -1523,10 +1554,13 @@ func (s *memSeries) minTime() int64 { func (s *memSeries) maxTime() int64 { c := s.head() - if c == nil { - return math.MinInt64 + if c != nil { + return c.maxTime } - return c.maxTime + if len(s.mmappedChunks) > 0 { + return s.mmappedChunks[len(s.mmappedChunks)-1].maxTime + } + return math.MinInt64 } // truncateChunksBefore removes all chunks from the series that diff --git a/tsdb/head_append.go b/tsdb/head_append.go index 1c22c86c0..40431d904 100644 --- a/tsdb/head_append.go +++ b/tsdb/head_append.go @@ -97,6 +97,7 @@ func (a *initAppender) GetRef(lset labels.Labels) (uint64, labels.Labels) { func (a *initAppender) Commit() error { if a.app == nil { + a.head.metrics.activeAppenders.Dec() return nil } return a.app.Commit() @@ -104,6 +105,7 @@ func (a *initAppender) Commit() error { func (a *initAppender) Rollback() error { if a.app == nil { + a.head.metrics.activeAppenders.Dec() return nil } return a.app.Rollback() diff --git a/tsdb/head_read.go b/tsdb/head_read.go index a5fc2df1e..2710de8fa 100644 --- a/tsdb/head_read.go +++ b/tsdb/head_read.go @@ -55,16 +55,7 @@ func (h *headIndexReader) Close() error { } func (h *headIndexReader) Symbols() index.StringIter { - h.head.symMtx.RLock() - res := make([]string, 0, len(h.head.symbols)) - - for s := range h.head.symbols { - res = append(res, s) - } - h.head.symMtx.RUnlock() - - sort.Strings(res) - return index.NewStringListIter(res) + return h.head.postings.Symbols() } // SortedLabelValues returns label values present in the head for the @@ -89,8 +80,6 @@ func (h *headIndexReader) LabelValues(name string, matchers ...*labels.Matcher) } if len(matchers) == 0 { - h.head.symMtx.RLock() - defer h.head.symMtx.RUnlock() return h.head.postings.LabelValues(name), nil } @@ -105,10 +94,7 @@ func (h *headIndexReader) LabelNames(matchers ...*labels.Matcher) ([]string, err } if len(matchers) == 0 { - h.head.symMtx.RLock() labelNames := h.head.postings.LabelNames() - h.head.symMtx.RUnlock() - sort.Strings(labelNames) return labelNames, nil } diff --git a/tsdb/head_test.go b/tsdb/head_test.go index 732510229..f9655eff5 100644 --- a/tsdb/head_test.go +++ b/tsdb/head_test.go @@ -21,14 +21,17 @@ import ( "math" "math/rand" "os" + "path" "path/filepath" "sort" "strconv" + "strings" "sync" "testing" "time" "github.com/pkg/errors" + "github.com/prometheus/client_golang/prometheus" prom_testutil "github.com/prometheus/client_golang/prometheus/testutil" "github.com/stretchr/testify/require" "go.uber.org/atomic" @@ -403,6 +406,39 @@ func TestHead_WALMultiRef(t *testing.T) { }}, series) } +func TestHead_ActiveAppenders(t *testing.T) { + head, _ := newTestHead(t, 1000, false) + defer head.Close() + + require.NoError(t, head.Init(0)) + + // First rollback with no samples. + app := head.Appender(context.Background()) + require.Equal(t, 1.0, prom_testutil.ToFloat64(head.metrics.activeAppenders)) + require.NoError(t, app.Rollback()) + require.Equal(t, 0.0, prom_testutil.ToFloat64(head.metrics.activeAppenders)) + + // Then commit with no samples. + app = head.Appender(context.Background()) + require.NoError(t, app.Commit()) + require.Equal(t, 0.0, prom_testutil.ToFloat64(head.metrics.activeAppenders)) + + // Now rollback with one sample. + app = head.Appender(context.Background()) + _, err := app.Append(0, labels.FromStrings("foo", "bar"), 100, 1) + require.NoError(t, err) + require.Equal(t, 1.0, prom_testutil.ToFloat64(head.metrics.activeAppenders)) + require.NoError(t, app.Rollback()) + require.Equal(t, 0.0, prom_testutil.ToFloat64(head.metrics.activeAppenders)) + + // Now commit with one sample. + app = head.Appender(context.Background()) + _, err = app.Append(0, labels.FromStrings("foo", "bar"), 100, 1) + require.NoError(t, err) + require.NoError(t, app.Commit()) + require.Equal(t, 0.0, prom_testutil.ToFloat64(head.metrics.activeAppenders)) +} + func TestHead_UnknownWALRecord(t *testing.T) { head, w := newTestHead(t, 1000, false) w.Log([]byte{255, 42}) @@ -470,13 +506,14 @@ func TestHead_Truncate(t *testing.T) { require.Nil(t, postingsB2) require.Nil(t, postingsC1) - require.Equal(t, map[string]struct{}{ - "": {}, // from 'all' postings list - "a": {}, - "b": {}, - "1": {}, - "2": {}, - }, h.symbols) + iter := h.postings.Symbols() + symbols := []string{} + for iter.Next() { + symbols = append(symbols, iter.At()) + } + require.Equal(t, + []string{"" /* from 'all' postings list */, "1", "2", "a", "b"}, + symbols) values := map[string]map[string]struct{}{} for _, name := range h.postings.LabelNames() { @@ -2611,6 +2648,7 @@ func generateHistograms(n int) (r []histogram.SparseHistogram) { return r } + func TestChunkSnapshot(t *testing.T) { head, _ := newTestHead(t, 120*4, false) defer func() { @@ -2618,9 +2656,88 @@ func TestChunkSnapshot(t *testing.T) { require.NoError(t, head.Close()) }() + type ex struct { + seriesLabels labels.Labels + e exemplar.Exemplar + } + numSeries := 10 expSeries := make(map[string][]tsdbutil.Sample) expTombstones := make(map[uint64]tombstones.Intervals) + expExemplars := make([]ex, 0) + + addExemplar := func(app storage.Appender, ref uint64, lbls labels.Labels, ts int64) { + e := ex{ + seriesLabels: lbls, + e: exemplar.Exemplar{ + Labels: labels.Labels{{Name: "traceID", Value: fmt.Sprintf("%d", rand.Int())}}, + Value: rand.Float64(), + Ts: ts, + }, + } + expExemplars = append(expExemplars, e) + _, err := app.AppendExemplar(ref, e.seriesLabels, e.e) + require.NoError(t, err) + } + + checkSamples := func() { + q, err := NewBlockQuerier(head, math.MinInt64, math.MaxInt64) + require.NoError(t, err) + series := query(t, q, labels.MustNewMatcher(labels.MatchRegexp, "foo", ".*")) + require.Equal(t, expSeries, series) + } + checkTombstones := func() { + tr, err := head.Tombstones() + require.NoError(t, err) + actTombstones := make(map[uint64]tombstones.Intervals) + require.NoError(t, tr.Iter(func(ref uint64, itvs tombstones.Intervals) error { + for _, itv := range itvs { + actTombstones[ref].Add(itv) + } + return nil + })) + require.Equal(t, expTombstones, actTombstones) + } + checkExemplars := func() { + actExemplars := make([]ex, 0, len(expExemplars)) + err := head.exemplars.IterateExemplars(func(seriesLabels labels.Labels, e exemplar.Exemplar) error { + actExemplars = append(actExemplars, ex{ + seriesLabels: seriesLabels, + e: e, + }) + return nil + }) + require.NoError(t, err) + // Verifies both existence of right exemplars and order of exemplars in the buffer. + require.Equal(t, expExemplars, actExemplars) + } + + var ( + wlast, woffset int + err error + ) + + closeHeadAndCheckSnapshot := func() { + require.NoError(t, head.Close()) + + _, sidx, soffset, err := LastChunkSnapshot(head.opts.ChunkDirRoot) + require.NoError(t, err) + require.Equal(t, wlast, sidx) + require.Equal(t, woffset, soffset) + } + + openHeadAndCheckReplay := func() { + w, err := wal.NewSize(nil, nil, head.wal.Dir(), 32768, false) + require.NoError(t, err) + head, err = NewHead(nil, nil, w, head.opts, nil) + require.NoError(t, err) + require.NoError(t, head.Init(math.MinInt64)) + + checkSamples() + checkTombstones() + checkExemplars() + } + { // Initial data that goes into snapshot. // Add some initial samples with >=1 m-map chunk. app := head.Appender(context.Background()) @@ -2631,8 +2748,15 @@ func TestChunkSnapshot(t *testing.T) { for ts := int64(1); ts <= 240; ts++ { val := rand.Float64() expSeries[lblStr] = append(expSeries[lblStr], sample{ts, val}) - _, err := app.Append(0, lbls, ts, val) + ref, err := app.Append(0, lbls, ts, val) require.NoError(t, err) + + // Add an exemplar and to create multiple WAL records. + if ts%10 == 0 { + addExemplar(app, ref, lbls, ts) + require.NoError(t, app.Commit()) + app = head.Appender(context.Background()) + } } } require.NoError(t, app.Commit()) @@ -2657,44 +2781,20 @@ func TestChunkSnapshot(t *testing.T) { } // These references should be the ones used for the snapshot. - wlast, woffset, err := head.wal.LastSegmentAndOffset() + wlast, woffset, err = head.wal.LastSegmentAndOffset() require.NoError(t, err) - - { // Creating snapshot and verifying it. - head.opts.EnableMemorySnapshotOnShutdown = true - require.NoError(t, head.Close()) // This will create a snapshot. - - _, sidx, soffset, err := LastChunkSnapshot(head.opts.ChunkDirRoot) - require.NoError(t, err) - require.Equal(t, wlast, sidx) - require.Equal(t, woffset, soffset) + if woffset != 0 && woffset < 32*1024 { + // The page is always filled before taking the snapshot. + woffset = 32 * 1024 } - { // Test the replay of snapshot. - // Create new Head which should replay this snapshot. - w, err := wal.NewSize(nil, nil, head.wal.Dir(), 32768, false) - require.NoError(t, err) - head, err = NewHead(nil, nil, w, head.opts, nil) - require.NoError(t, err) - require.NoError(t, head.Init(math.MinInt64)) + { + // Creating snapshot and verifying it. + head.opts.EnableMemorySnapshotOnShutdown = true + closeHeadAndCheckSnapshot() // This will create a snapshot. - // Test query for snapshot replay. - q, err := NewBlockQuerier(head, math.MinInt64, math.MaxInt64) - require.NoError(t, err) - series := query(t, q, labels.MustNewMatcher(labels.MatchRegexp, "foo", ".*")) - require.Equal(t, expSeries, series) - - // Check the tombstones. - tr, err := head.Tombstones() - require.NoError(t, err) - actTombstones := make(map[uint64]tombstones.Intervals) - require.NoError(t, tr.Iter(func(ref uint64, itvs tombstones.Intervals) error { - for _, itv := range itvs { - actTombstones[ref].Add(itv) - } - return nil - })) - require.Equal(t, expTombstones, actTombstones) + // Test the replay of snapshot. + openHeadAndCheckReplay() } { // Additional data to only include in WAL and m-mapped chunks and not snapshot. This mimics having an old snapshot on disk. @@ -2708,8 +2808,15 @@ func TestChunkSnapshot(t *testing.T) { for ts := int64(241); ts <= 480; ts++ { val := rand.Float64() expSeries[lblStr] = append(expSeries[lblStr], sample{ts, val}) - _, err := app.Append(0, lbls, ts, val) + ref, err := app.Append(0, lbls, ts, val) require.NoError(t, err) + + // Add an exemplar and to create multiple WAL records. + if ts%10 == 0 { + addExemplar(app, ref, lbls, ts) + require.NoError(t, app.Commit()) + app = head.Appender(context.Background()) + } } } require.NoError(t, app.Commit()) @@ -2732,43 +2839,115 @@ func TestChunkSnapshot(t *testing.T) { require.NoError(t, err) } } - - { // Close Head and verify that new snapshot was not created. + { + // Close Head and verify that new snapshot was not created. head.opts.EnableMemorySnapshotOnShutdown = false - require.NoError(t, head.Close()) // This should not create a snapshot. + closeHeadAndCheckSnapshot() // This should not create a snapshot. - _, sidx, soffset, err := LastChunkSnapshot(head.opts.ChunkDirRoot) - require.NoError(t, err) - require.Equal(t, wlast, sidx) - require.Equal(t, woffset, soffset) + // Test the replay of snapshot, m-map chunks, and WAL. + head.opts.EnableMemorySnapshotOnShutdown = true // Enabled to read from snapshot. + openHeadAndCheckReplay() } - { // Test the replay of snapshot, m-map chunks, and WAL. - // Create new Head to replay snapshot, m-map chunks, and WAL. - w, err := wal.NewSize(nil, nil, head.wal.Dir(), 32768, false) - require.NoError(t, err) - head, err = NewHead(nil, nil, w, head.opts, nil) - require.NoError(t, err) - require.NoError(t, head.Init(math.MinInt64)) + // Creating another snapshot should delete the older snapshot and replay still works fine. + wlast, woffset, err = head.wal.LastSegmentAndOffset() + require.NoError(t, err) + if woffset != 0 && woffset < 32*1024 { + // The page is always filled before taking the snapshot. + woffset = 32 * 1024 + } - // Test query when data is replayed from snapshot, m-map chunks, and WAL. - q, err := NewBlockQuerier(head, math.MinInt64, math.MaxInt64) - require.NoError(t, err) - series := query(t, q, labels.MustNewMatcher(labels.MatchRegexp, "foo", ".*")) - require.Equal(t, expSeries, series) + { + // Close Head and verify that new snapshot was created. + closeHeadAndCheckSnapshot() - // Check the tombstones. - tr, err := head.Tombstones() + // Verify that there is only 1 snapshot. + files, err := ioutil.ReadDir(head.opts.ChunkDirRoot) require.NoError(t, err) - actTombstones := make(map[uint64]tombstones.Intervals) - require.NoError(t, tr.Iter(func(ref uint64, itvs tombstones.Intervals) error { - for _, itv := range itvs { - actTombstones[ref].Add(itv) + snapshots := 0 + for i := len(files) - 1; i >= 0; i-- { + fi := files[i] + if strings.HasPrefix(fi.Name(), chunkSnapshotPrefix) { + snapshots++ + require.Equal(t, chunkSnapshotDir(wlast, woffset), fi.Name()) } - return nil - })) - require.Equal(t, expTombstones, actTombstones) + } + require.Equal(t, 1, snapshots) + + // Test the replay of snapshot. + head.opts.EnableMemorySnapshotOnShutdown = true // Enabled to read from snapshot. + + // Disabling exemplars to check that it does not hard fail replay + // https://github.com/prometheus/prometheus/issues/9437#issuecomment-933285870. + head.opts.EnableExemplarStorage = false + head.opts.MaxExemplars.Store(0) + expExemplars = expExemplars[:0] + + openHeadAndCheckReplay() + + require.Equal(t, 0.0, prom_testutil.ToFloat64(head.metrics.snapshotReplayErrorTotal)) } + +} + +func TestSnapshotError(t *testing.T) { + head, _ := newTestHead(t, 120*4, false) + defer func() { + head.opts.EnableMemorySnapshotOnShutdown = false + require.NoError(t, head.Close()) + }() + + // Add a sample. + app := head.Appender(context.Background()) + lbls := labels.Labels{labels.Label{Name: "foo", Value: "bar"}} + _, err := app.Append(0, lbls, 99, 99) + require.NoError(t, err) + require.NoError(t, app.Commit()) + + // Add some tombstones. + itvs := tombstones.Intervals{ + {Mint: 1234, Maxt: 2345}, + {Mint: 3456, Maxt: 4567}, + } + head.tombstones.AddInterval(1, itvs...) + + // Check existance of data. + require.NotNil(t, head.series.getByHash(lbls.Hash(), lbls)) + tm, err := head.tombstones.Get(1) + require.NoError(t, err) + require.NotEqual(t, 0, len(tm)) + + head.opts.EnableMemorySnapshotOnShutdown = true + require.NoError(t, head.Close()) // This will create a snapshot. + + // Remove the WAL so that we don't load from it. + require.NoError(t, os.RemoveAll(head.wal.Dir())) + + // Corrupt the snapshot. + snapDir, _, _, err := LastChunkSnapshot(head.opts.ChunkDirRoot) + require.NoError(t, err) + files, err := ioutil.ReadDir(snapDir) + require.NoError(t, err) + f, err := os.OpenFile(path.Join(snapDir, files[0].Name()), os.O_RDWR, 0) + require.NoError(t, err) + _, err = f.WriteAt([]byte{0b11111111}, 18) + require.NoError(t, err) + require.NoError(t, f.Close()) + + // Create new Head which should replay this snapshot. + w, err := wal.NewSize(nil, nil, head.wal.Dir(), 32768, false) + require.NoError(t, err) + // Testing https://github.com/prometheus/prometheus/issues/9437 with the registry. + head, err = NewHead(prometheus.NewRegistry(), nil, w, head.opts, nil) + require.NoError(t, err) + require.NoError(t, head.Init(math.MinInt64)) + + // There should be no series in the memory after snapshot error since WAL was removed. + require.Equal(t, 1.0, prom_testutil.ToFloat64(head.metrics.snapshotReplayErrorTotal)) + require.Nil(t, head.series.getByHash(lbls.Hash(), lbls)) + tm, err = head.tombstones.Get(1) + require.NoError(t, err) + require.Equal(t, 0, len(tm)) } func TestSparseHistogramMetrics(t *testing.T) { diff --git a/tsdb/head_wal.go b/tsdb/head_wal.go index 0ff2c275c..b41dc34f3 100644 --- a/tsdb/head_wal.go +++ b/tsdb/head_wal.go @@ -47,6 +47,8 @@ func (h *Head) loadWAL(r *wal.Reader, multiRef map[uint64]uint64, mmappedChunks var unknownRefs atomic.Uint64 var unknownExemplarRefs atomic.Uint64 var unknownHistogramRefs atomic.Uint64 + // Track number of series records that had overlapping m-map chunks. + var mmapOverlappingChunks uint64 // Start workers that each process samples for a partition of the series ID space. // They are connected through a ring of channels which ensures that all sample batches @@ -121,6 +123,7 @@ func (h *Head) loadWAL(r *wal.Reader, multiRef map[uint64]uint64, mmappedChunks wg.Add(1) exemplarsInput = make(chan record.RefExemplar, 300) go func(input <-chan record.RefExemplar) { + var err error defer wg.Done() for e := range input { ms := h.series.getByID(e.Ref) @@ -301,8 +304,6 @@ Outer: } // Checking if the new m-mapped chunks overlap with the already existing ones. - // This should never happen, but we have a check anyway to detect any - // edge cases that we might have missed. if len(mSeries.mmappedChunks) > 0 && len(mmc) > 0 { if overlapsClosedInterval( mSeries.mmappedChunks[0].minTime, @@ -310,9 +311,17 @@ Outer: mmc[0].minTime, mmc[len(mmc)-1].maxTime, ) { - // The m-map chunks for the new series ref overlaps with old m-map chunks. - seriesCreationErr = errors.Errorf("overlapping m-mapped chunks for series %s", mSeries.lset.String()) - break Outer + mmapOverlappingChunks++ + level.Debug(h.logger).Log( + "msg", "M-mapped chunks overlap on a duplicate series record", + "series", mSeries.lset.String(), + "oldref", mSeries.ref, + "oldmint", mSeries.mmappedChunks[0].minTime, + "oldmaxt", mSeries.mmappedChunks[len(mSeries.mmappedChunks)-1].maxTime, + "newref", walSeries.Ref, + "newmint", mmc[0].minTime, + "newmaxt", mmc[len(mmc)-1].maxTime, + ) } } @@ -419,6 +428,9 @@ Outer: if unknownRefs.Load() > 0 || unknownExemplarRefs.Load() > 0 || unknownHistogramRefs.Load() > 0 { level.Warn(h.logger).Log("msg", "Unknown series references", "samples", unknownRefs.Load(), "exemplars", unknownExemplarRefs.Load(), "histograms", unknownHistogramRefs.Load()) } + if mmapOverlappingChunks > 0 { + level.Info(h.logger).Log("msg", "Overlapping m-map chunks on duplicate series records", "count", mmapOverlappingChunks) + } return nil } @@ -481,6 +493,7 @@ func (h *Head) processWALSamples( const ( chunkSnapshotRecordTypeSeries uint8 = 1 chunkSnapshotRecordTypeTombstones uint8 = 2 + chunkSnapshotRecordTypeExemplars uint8 = 3 ) type chunkSnapshotRecord struct { @@ -605,6 +618,10 @@ const chunkSnapshotPrefix = "chunk_snapshot." // The chunk snapshot is stored in a directory named chunk_snapshot.N.M and is written // using the WAL package. N is the last WAL segment present during snapshotting and // M is the offset in segment N upto which data was written. +// +// The snapshot first contains all series (each in individual records and not sorted), followed by +// tombstones (a single record), and finally exemplars (>= 1 record). Exemplars are in the order they +// were written to the circular buffer. func (h *Head) ChunkSnapshot() (*ChunkSnapshotStats, error) { if h.wal == nil { // If we are not storing any WAL, does not make sense to take a snapshot too. @@ -631,7 +648,7 @@ func (h *Head) ChunkSnapshot() (*ChunkSnapshotStats, error) { return stats, nil } - snapshotName := fmt.Sprintf(chunkSnapshotPrefix+"%06d.%010d", wlast, woffset) + snapshotName := chunkSnapshotDir(wlast, woffset) cpdir := filepath.Join(h.opts.ChunkDirRoot, snapshotName) cpdirtmp := cpdir + ".tmp" @@ -655,6 +672,7 @@ func (h *Head) ChunkSnapshot() (*ChunkSnapshotStats, error) { buf []byte recs [][]byte ) + // Add all series to the snapshot. stripeSize := h.series.size for i := 0; i < stripeSize; i++ { h.series.locks[i].RLock() @@ -690,11 +708,61 @@ func (h *Head) ChunkSnapshot() (*ChunkSnapshotStats, error) { return stats, errors.Wrap(err, "encode tombstones") } recs = append(recs, rec) - - // Flush remaining records. + // Flush remaining series records and tombstones. if err := cp.Log(recs...); err != nil { return stats, errors.Wrap(err, "flush records") } + buf = buf[:0] + + // Add exemplars in the snapshot. + // We log in batches, with each record having upto 10000 exemplars. + // Assuming 100 bytes (overestimate) per exemplar, that's ~1MB. + maxExemplarsPerRecord := 10000 + batch := make([]record.RefExemplar, 0, maxExemplarsPerRecord) + enc := record.Encoder{} + flushExemplars := func() error { + if len(batch) == 0 { + return nil + } + buf = buf[:0] + encbuf := encoding.Encbuf{B: buf} + encbuf.PutByte(chunkSnapshotRecordTypeExemplars) + enc.EncodeExemplarsIntoBuffer(batch, &encbuf) + if err := cp.Log(encbuf.Get()); err != nil { + return errors.Wrap(err, "log exemplars") + } + buf, batch = buf[:0], batch[:0] + return nil + } + err = h.exemplars.IterateExemplars(func(seriesLabels labels.Labels, e exemplar.Exemplar) error { + if len(batch) >= maxExemplarsPerRecord { + if err := flushExemplars(); err != nil { + return errors.Wrap(err, "flush exemplars") + } + } + + ms := h.series.getByHash(seriesLabels.Hash(), seriesLabels) + if ms == nil { + // It is possible that exemplar refers to some old series. We discard such exemplars. + return nil + } + batch = append(batch, record.RefExemplar{ + Ref: ms.ref, + T: e.Ts, + V: e.Value, + Labels: e.Labels, + }) + return nil + }) + if err != nil { + return stats, errors.Wrap(err, "iterate exemplars") + } + + // Flush remaining exemplars. + if err := flushExemplars(); err != nil { + return stats, errors.Wrap(err, "flush exemplars at the end") + } + if err := cp.Close(); err != nil { return stats, errors.Wrap(err, "close chunk snapshot") } @@ -702,7 +770,7 @@ func (h *Head) ChunkSnapshot() (*ChunkSnapshotStats, error) { return stats, errors.Wrap(err, "rename chunk snapshot directory") } - if err := DeleteChunkSnapshots(h.opts.ChunkDirRoot, cslast, csoffset); err != nil { + if err := DeleteChunkSnapshots(h.opts.ChunkDirRoot, wlast, woffset); err != nil { // Leftover old chunk snapshots do not cause problems down the line beyond // occupying disk space. // They will just be ignored since a higher chunk snapshot exists. @@ -711,6 +779,10 @@ func (h *Head) ChunkSnapshot() (*ChunkSnapshotStats, error) { return stats, nil } +func chunkSnapshotDir(wlast, woffset int) string { + return fmt.Sprintf(chunkSnapshotPrefix+"%06d.%010d", wlast, woffset) +} + func (h *Head) performChunkSnapshot() error { level.Info(h.logger).Log("msg", "creating chunk snapshot") startTime := time.Now() @@ -735,8 +807,9 @@ func LastChunkSnapshot(dir string) (string, int, int, error) { if err != nil { return "", 0, 0, err } - // Traverse list backwards since there may be multiple chunk snapshots left. - for i := len(files) - 1; i >= 0; i-- { + maxIdx, maxOffset := -1, -1 + maxFileName := "" + for i := 0; i < len(files); i++ { fi := files[i] if !strings.HasPrefix(fi.Name(), chunkSnapshotPrefix) { @@ -761,9 +834,15 @@ func LastChunkSnapshot(dir string) (string, int, int, error) { continue } - return filepath.Join(dir, fi.Name()), idx, offset, nil + if idx > maxIdx || (idx == maxIdx && offset > maxOffset) { + maxIdx, maxOffset = idx, offset + maxFileName = filepath.Join(dir, fi.Name()) + } } - return "", 0, 0, record.ErrNotFound + if maxFileName == "" { + return "", 0, 0, record.ErrNotFound + } + return maxFileName, maxIdx, maxOffset, nil } // DeleteChunkSnapshots deletes all chunk snapshots in a directory below a given index. @@ -794,7 +873,7 @@ func DeleteChunkSnapshots(dir string, maxIndex, maxOffset int) error { continue } - if idx <= maxIndex && offset < maxOffset { + if idx < maxIndex || (idx == maxIndex && offset < maxOffset) { if err := os.RemoveAll(filepath.Join(dir, fi.Name())); err != nil { errs.Add(err) } @@ -804,6 +883,8 @@ func DeleteChunkSnapshots(dir string, maxIndex, maxOffset int) error { return errs.Err() } +// loadChunkSnapshot replays the chunk snapshot and restores the Head state from it. If there was any error returned, +// it is the responsibility of the caller to clear the contents of the Head. func (h *Head) loadChunkSnapshot() (int, int, map[uint64]*memSeries, error) { dir, snapIdx, snapOffset, err := LastChunkSnapshot(h.opts.ChunkDirRoot) if err != nil { @@ -832,6 +913,9 @@ func (h *Head) loadChunkSnapshot() (int, int, map[uint64]*memSeries, error) { recordChan = make(chan chunkSnapshotRecord, 5*n) shardedRefSeries = make([]map[uint64]*memSeries, n) errChan = make(chan error, n) + refSeries map[uint64]*memSeries + exemplarBuf []record.RefExemplar + dec record.Decoder ) wg.Add(n) @@ -918,11 +1002,63 @@ Outer: loopErr = errors.Wrap(err, "iterate tombstones") break Outer } - } + case chunkSnapshotRecordTypeExemplars: + // Exemplars are at the end of snapshot. So all series are loaded at this point. + if len(refSeries) == 0 { + close(recordChan) + wg.Wait() + + refSeries = make(map[uint64]*memSeries, numSeries) + for _, shard := range shardedRefSeries { + for k, v := range shard { + refSeries[k] = v + } + } + } + + if !h.opts.EnableExemplarStorage || h.opts.MaxExemplars.Load() <= 0 { + // Exemplar storage is disabled. + continue Outer + } + + decbuf := encoding.Decbuf{B: rec[1:]} + + exemplarBuf = exemplarBuf[:0] + exemplarBuf, err = dec.ExemplarsFromBuffer(&decbuf, exemplarBuf) + if err != nil { + loopErr = errors.Wrap(err, "exemplars from buffer") + break Outer + } + + for _, e := range exemplarBuf { + ms, ok := refSeries[e.Ref] + if !ok { + unknownRefs++ + continue + } + + if err := h.exemplars.AddExemplar(ms.lset, exemplar.Exemplar{ + Labels: e.Labels, + Value: e.V, + Ts: e.T, + }); err != nil { + loopErr = errors.Wrap(err, "add exemplar") + break Outer + } + } + + default: + // This is a record type we don't understand. It is either and old format from earlier versions, + // or a new format and the code was rolled back to old version. + loopErr = errors.Errorf("unsuported snapshot record type 0b%b", rec[0]) + break Outer + } + } + if len(refSeries) == 0 { + close(recordChan) + wg.Wait() } - close(recordChan) - wg.Wait() close(errChan) merr := tsdb_errors.NewMulti(errors.Wrap(loopErr, "decode loop")) @@ -933,10 +1069,17 @@ Outer: return -1, -1, nil, err } - refSeries := make(map[uint64]*memSeries, numSeries) - for _, shard := range shardedRefSeries { - for k, v := range shard { - refSeries[k] = v + if r.Err() != nil { + return -1, -1, nil, errors.Wrap(r.Err(), "read records") + } + + if len(refSeries) == 0 { + // We had no exemplar record, so we have to build the map here. + refSeries = make(map[uint64]*memSeries, numSeries) + for _, shard := range shardedRefSeries { + for k, v := range shard { + refSeries[k] = v + } } } diff --git a/tsdb/index/index.go b/tsdb/index/index.go index a7b9e57ef..d6f5d6b88 100644 --- a/tsdb/index/index.go +++ b/tsdb/index/index.go @@ -1180,7 +1180,7 @@ func newReader(b ByteSlice, c io.Closer) (*Reader, error) { lastKey = nil valueCount = 0 } - if valueCount%32 == 0 { + if valueCount%symbolFactor == 0 { r.postings[key[0]] = append(r.postings[key[0]], postingOffset{value: key[1], off: off}) lastKey = nil } else { @@ -1335,7 +1335,7 @@ func (s Symbols) ReverseLookup(sym string) (uint32, error) { i-- } d.Skip(s.offsets[i]) - res := i * 32 + res := i * symbolFactor var lastLen int var lastSymbol string for d.Err() == nil && res <= s.seen { @@ -1852,7 +1852,7 @@ func (dec *Decoder) Series(b []byte, lbls *labels.Labels, chks *[]chunks.Meta) e k = d.Uvarint() if k == 0 { - return nil + return d.Err() } t0 := d.Varint64() diff --git a/tsdb/index/postings.go b/tsdb/index/postings.go index a9048e4c6..6c493be1d 100644 --- a/tsdb/index/postings.go +++ b/tsdb/index/postings.go @@ -18,7 +18,6 @@ import ( "encoding/binary" "runtime" "sort" - "strings" "sync" "github.com/prometheus/prometheus/pkg/labels" @@ -58,6 +57,29 @@ func NewUnorderedMemPostings() *MemPostings { } } +// Symbols returns an iterator over all unique name and value strings, in order. +func (p *MemPostings) Symbols() StringIter { + p.mtx.RLock() + + // Add all the strings to a map to de-duplicate. + symbols := make(map[string]struct{}, 512) + for n, e := range p.m { + symbols[n] = struct{}{} + for v := range e { + symbols[v] = struct{}{} + } + } + p.mtx.RUnlock() + + res := make([]string, 0, len(symbols)) + for k := range symbols { + res = append(res, k) + } + + sort.Strings(res) + return NewStringListIter(res) +} + // SortedKeys returns a list of sorted label keys of the postings. func (p *MemPostings) SortedKeys() []labels.Label { p.mtx.RLock() @@ -71,8 +93,8 @@ func (p *MemPostings) SortedKeys() []labels.Label { p.mtx.RUnlock() sort.Slice(keys, func(i, j int) bool { - if d := strings.Compare(keys[i].Name, keys[j].Name); d != 0 { - return d < 0 + if keys[i].Name != keys[j].Name { + return keys[i].Name < keys[j].Name } return keys[i].Value < keys[j].Value }) diff --git a/tsdb/index/postings_test.go b/tsdb/index/postings_test.go index efb00efe9..bbf5332a5 100644 --- a/tsdb/index/postings_test.go +++ b/tsdb/index/postings_test.go @@ -818,10 +818,13 @@ func TestWithoutPostings(t *testing.T) { func BenchmarkPostings_Stats(b *testing.B) { p := NewMemPostings() + var seriesID uint64 + createPostingsLabelValues := func(name, valuePrefix string, count int) { for n := 1; n < count; n++ { value := fmt.Sprintf("%s-%d", valuePrefix, n) - p.Add(uint64(n), labels.FromStrings(name, value)) + p.Add(seriesID, labels.FromStrings(name, value)) + seriesID++ } } diff --git a/tsdb/record/record.go b/tsdb/record/record.go index 2e98fee5e..cd0ff058a 100644 --- a/tsdb/record/record.go +++ b/tsdb/record/record.go @@ -192,6 +192,11 @@ func (d *Decoder) Exemplars(rec []byte, exemplars []RefExemplar) ([]RefExemplar, if t != Exemplars { return nil, errors.New("invalid record type") } + + return d.ExemplarsFromBuffer(&dec, exemplars) +} + +func (d *Decoder) ExemplarsFromBuffer(dec *encoding.Decbuf, exemplars []RefExemplar) ([]RefExemplar, error) { if dec.Len() == 0 { return exemplars, nil } @@ -379,6 +384,12 @@ func (e *Encoder) Exemplars(exemplars []RefExemplar, b []byte) []byte { return buf.Get() } + e.EncodeExemplarsIntoBuffer(exemplars, &buf) + + return buf.Get() +} + +func (e *Encoder) EncodeExemplarsIntoBuffer(exemplars []RefExemplar, buf *encoding.Encbuf) { // Store base timestamp and base reference number of first sample. // All samples encode their timestamp and ref as delta to those. first := exemplars[0] @@ -397,8 +408,6 @@ func (e *Encoder) Exemplars(exemplars []RefExemplar, b []byte) []byte { buf.PutUvarintStr(l.Value) } } - - return buf.Get() } func (e *Encoder) Histograms(hists []RefHistogram, b []byte) []byte { diff --git a/tsdb/tombstones/tombstones.go b/tsdb/tombstones/tombstones.go index 32431886b..8b95481a4 100644 --- a/tsdb/tombstones/tombstones.go +++ b/tsdb/tombstones/tombstones.go @@ -252,6 +252,34 @@ func (t *MemTombstones) Get(ref uint64) (Intervals, error) { return t.intvlGroups[ref], nil } +func (t *MemTombstones) DeleteTombstones(refs map[uint64]struct{}) { + t.mtx.Lock() + defer t.mtx.Unlock() + for ref := range refs { + delete(t.intvlGroups, ref) + } +} + +func (t *MemTombstones) TruncateBefore(beforeT int64) { + t.mtx.Lock() + defer t.mtx.Unlock() + for ref, ivs := range t.intvlGroups { + i := len(ivs) - 1 + for ; i >= 0; i-- { + if beforeT > ivs[i].Maxt { + break + } + } + if len(ivs[i+1:]) == 0 { + delete(t.intvlGroups, ref) + } else { + newIvs := make(Intervals, len(ivs[i+1:])) + copy(newIvs, ivs[i+1:]) + t.intvlGroups[ref] = newIvs + } + } +} + func (t *MemTombstones) Iter(f func(uint64, Intervals) error) error { t.mtx.RLock() defer t.mtx.RUnlock() diff --git a/tsdb/tombstones/tombstones_test.go b/tsdb/tombstones/tombstones_test.go index d34f303ad..fa1825d17 100644 --- a/tsdb/tombstones/tombstones_test.go +++ b/tsdb/tombstones/tombstones_test.go @@ -63,6 +63,66 @@ func TestWriteAndReadbackTombstones(t *testing.T) { require.Equal(t, stones, restr) } +func TestDeletingTombstones(t *testing.T) { + stones := NewMemTombstones() + + ref := uint64(42) + mint := rand.Int63n(time.Now().UnixNano()) + dranges := make(Intervals, 0, 1) + dranges = dranges.Add(Interval{mint, mint + rand.Int63n(1000)}) + stones.AddInterval(ref, dranges...) + stones.AddInterval(uint64(43), dranges...) + + intervals, err := stones.Get(ref) + require.NoError(t, err) + require.Equal(t, intervals, dranges) + + stones.DeleteTombstones(map[uint64]struct{}{ref: struct{}{}}) + + intervals, err = stones.Get(ref) + require.NoError(t, err) + require.Empty(t, intervals) +} + +func TestTruncateBefore(t *testing.T) { + cases := []struct { + before Intervals + beforeT int64 + after Intervals + }{ + { + before: Intervals{{1, 2}, {4, 10}, {12, 100}}, + beforeT: 3, + after: Intervals{{4, 10}, {12, 100}}, + }, + { + before: Intervals{{1, 2}, {4, 10}, {12, 100}, {200, 1000}}, + beforeT: 900, + after: Intervals{{200, 1000}}, + }, + { + before: Intervals{{1, 2}, {4, 10}, {12, 100}, {200, 1000}}, + beforeT: 2000, + after: nil, + }, + { + before: Intervals{{1, 2}, {4, 10}, {12, 100}, {200, 1000}}, + beforeT: 0, + after: Intervals{{1, 2}, {4, 10}, {12, 100}, {200, 1000}}, + }, + } + for _, c := range cases { + ref := uint64(42) + stones := NewMemTombstones() + stones.AddInterval(ref, c.before...) + + stones.TruncateBefore(c.beforeT) + ts, err := stones.Get(ref) + require.NoError(t, err) + require.Equal(t, c.after, ts) + } +} + func TestAddingNewIntervals(t *testing.T) { cases := []struct { exist Intervals diff --git a/tsdb/wal_test.go b/tsdb/wal_test.go index 9667105e1..fdcd6ce52 100644 --- a/tsdb/wal_test.go +++ b/tsdb/wal_test.go @@ -11,6 +11,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +//go:build !windows // +build !windows package tsdb diff --git a/util/httputil/compression_test.go b/util/httputil/compression_test.go index 2204d1364..f490f7e30 100644 --- a/util/httputil/compression_test.go +++ b/util/httputil/compression_test.go @@ -21,6 +21,8 @@ import ( "net/http" "net/http/httptest" "testing" + + "github.com/stretchr/testify/require" ) var ( @@ -60,22 +62,14 @@ func TestCompressionHandler_PlainText(t *testing.T) { } resp, err := client.Get(server.URL + "/foo_endpoint") - - if err != nil { - t.Error("client get failed with unexpected error") - } + require.NoError(t, err, "client get failed with unexpected error") defer resp.Body.Close() contents, err := ioutil.ReadAll(resp.Body) - - if err != nil { - t.Errorf("unexpected error while reading the response body: %s", err.Error()) - } + require.NoError(t, err, "unexpected error while creating the response body reader") expected := "Hello World!" actual := string(contents) - if expected != actual { - t.Errorf("expected response with content %s, but got %s", expected, actual) - } + require.Equal(t, expected, actual, "expected response with content") } func TestCompressionHandler_Gzip(t *testing.T) { @@ -95,34 +89,22 @@ func TestCompressionHandler_Gzip(t *testing.T) { req.Header.Set(acceptEncodingHeader, gzipEncoding) resp, err := client.Do(req) - if err != nil { - t.Error("client get failed with unexpected error") - } + require.NoError(t, err, "client get failed with unexpected error") defer resp.Body.Close() - if err != nil { - t.Errorf("unexpected error while reading the response body: %s", err.Error()) - } - actualHeader := resp.Header.Get(contentEncodingHeader) - - if actualHeader != gzipEncoding { - t.Errorf("expected response with encoding header %s, but got %s", gzipEncoding, actualHeader) - } + require.Equal(t, gzipEncoding, actualHeader, "unexpected encoding header in response") var buf bytes.Buffer - zr, _ := gzip.NewReader(resp.Body) + zr, err := gzip.NewReader(resp.Body) + require.NoError(t, err, "unexpected error while creating the response body reader") _, err = buf.ReadFrom(zr) - if err != nil { - t.Error("unexpected error while reading from response body") - } + require.NoError(t, err, "unexpected error while reading the response body") actual := buf.String() expected := "Hello World!" - if expected != actual { - t.Errorf("expected response with content %s, but got %s", expected, actual) - } + require.Equal(t, expected, actual, "unexpected response content") } func TestCompressionHandler_Deflate(t *testing.T) { @@ -142,35 +124,20 @@ func TestCompressionHandler_Deflate(t *testing.T) { req.Header.Set(acceptEncodingHeader, deflateEncoding) resp, err := client.Do(req) - if err != nil { - t.Error("client get failed with unexpected error") - } + require.NoError(t, err, "client get failed with unexpected error") defer resp.Body.Close() - if err != nil { - t.Errorf("unexpected error while reading the response body: %s", err.Error()) - } - actualHeader := resp.Header.Get(contentEncodingHeader) - - if actualHeader != deflateEncoding { - t.Errorf("expected response with encoding header %s, but got %s", deflateEncoding, actualHeader) - } + require.Equal(t, deflateEncoding, actualHeader, "expected response with encoding header") var buf bytes.Buffer dr, err := zlib.NewReader(resp.Body) - if err != nil { - t.Error("unexpected error while reading from response body") - } + require.NoError(t, err, "unexpected error while creating the response body reader") _, err = buf.ReadFrom(dr) - if err != nil { - t.Error("unexpected error while reading from response body") - } + require.NoError(t, err, "unexpected error while reading the response body") actual := buf.String() expected := "Hello World!" - if expected != actual { - t.Errorf("expected response with content %s, but got %s", expected, actual) - } + require.Equal(t, expected, actual, "expected response with content") } diff --git a/util/httputil/cors_test.go b/util/httputil/cors_test.go index 33b88ffca..363cde19a 100644 --- a/util/httputil/cors_test.go +++ b/util/httputil/cors_test.go @@ -17,6 +17,8 @@ import ( "net/http" "regexp" "testing" + + "github.com/stretchr/testify/require" ) func getCORSHandlerFunc() http.Handler { @@ -40,41 +42,24 @@ func TestCORSHandler(t *testing.T) { // OPTIONS with legit origin req, err := http.NewRequest("OPTIONS", server.URL+"/any_path", nil) - - if err != nil { - t.Error("could not create request") - } + require.NoError(t, err, "could not create request") req.Header.Set("Origin", dummyOrigin) resp, err := client.Do(req) - - if err != nil { - t.Error("client get failed with unexpected error") - } + require.NoError(t, err, "client get failed with unexpected error") AccessControlAllowOrigin := resp.Header.Get("Access-Control-Allow-Origin") - if AccessControlAllowOrigin != dummyOrigin { - t.Fatalf("%q does not match %q", dummyOrigin, AccessControlAllowOrigin) - } + require.Equal(t, dummyOrigin, AccessControlAllowOrigin, "expected Access-Control-Allow-Origin header") // OPTIONS with bad origin req, err = http.NewRequest("OPTIONS", server.URL+"/any_path", nil) - - if err != nil { - t.Error("could not create request") - } + require.NoError(t, err, "could not create request") req.Header.Set("Origin", "https://not-foo.com") resp, err = client.Do(req) - - if err != nil { - t.Error("client get failed with unexpected error") - } + require.NoError(t, err, "client get failed with unexpected error") AccessControlAllowOrigin = resp.Header.Get("Access-Control-Allow-Origin") - - if AccessControlAllowOrigin != "" { - t.Fatalf("Access-Control-Allow-Origin should not exist but it was set to: %q", AccessControlAllowOrigin) - } + require.Empty(t, AccessControlAllowOrigin, "Access-Control-Allow-Origin header should not exist but it was set") } diff --git a/util/stats/stats_test.go b/util/stats/stats_test.go index 15d76e791..34862f6f3 100644 --- a/util/stats/stats_test.go +++ b/util/stats/stats_test.go @@ -20,6 +20,7 @@ import ( "time" "github.com/prometheus/client_golang/prometheus" + "github.com/stretchr/testify/require" "github.com/prometheus/prometheus/util/testutil" ) @@ -27,19 +28,17 @@ import ( func TestTimerGroupNewTimer(t *testing.T) { tg := NewTimerGroup() timer := tg.GetTimer(ExecTotalTime) - if duration := timer.Duration(); duration != 0 { - t.Fatalf("Expected duration of 0, but it was %f instead.", duration) - } + duration := timer.Duration() + require.Equal(t, 0.0, duration, "Expected duration equal 0") minimum := 2 * time.Millisecond timer.Start() time.Sleep(minimum) timer.Stop() - if duration := timer.Duration(); duration == 0 { - t.Fatalf("Expected duration greater than 0, but it was %f instead.", duration) - } - if elapsed := timer.ElapsedTime(); elapsed < minimum { - t.Fatalf("Expected elapsed time to be greater than time slept, elapsed was %d, and time slept was %d.", elapsed.Nanoseconds(), minimum) - } + duration = timer.Duration() + require.Greater(t, duration, 0.0, "Expected duration greater than 0") + elapsed := timer.ElapsedTime() + require.GreaterOrEqual(t, elapsed, minimum, + "Expected elapsed time to be greater than time slept.") } func TestQueryStatsWithTimers(t *testing.T) { @@ -51,17 +50,11 @@ func TestQueryStatsWithTimers(t *testing.T) { qs := NewQueryStats(qt) actual, err := json.Marshal(qs) - if err != nil { - t.Fatalf("Unexpected error during serialization: %v", err) - } + require.NoError(t, err, "unexpected error during serialization") // Timing value is one of multiple fields, unit is seconds (float). match, err := regexp.MatchString(`[,{]"execTotalTime":\d+\.\d+[,}]`, string(actual)) - if err != nil { - t.Fatalf("Unexpected error while matching string: %v", err) - } - if !match { - t.Fatalf("Expected timings with one non-zero entry, but got %s.", actual) - } + require.NoError(t, err, "unexpected error while matching string") + require.True(t, match, "Expected timings with one non-zero entry.") } func TestQueryStatsWithSpanTimers(t *testing.T) { @@ -72,51 +65,28 @@ func TestQueryStatsWithSpanTimers(t *testing.T) { qst.Finish() qs := NewQueryStats(qt) actual, err := json.Marshal(qs) - if err != nil { - t.Fatalf("Unexpected error during serialization: %v", err) - } + require.NoError(t, err, "unexpected error during serialization") // Timing value is one of multiple fields, unit is seconds (float). match, err := regexp.MatchString(`[,{]"execQueueTime":\d+\.\d+[,}]`, string(actual)) - if err != nil { - t.Fatalf("Unexpected error while matching string: %v", err) - } - if !match { - t.Fatalf("Expected timings with one non-zero entry, but got %s.", actual) - } + require.NoError(t, err, "unexpected error while matching string") + require.True(t, match, "Expected timings with one non-zero entry.") } func TestTimerGroup(t *testing.T) { tg := NewTimerGroup() - execTotalTimer := tg.GetTimer(ExecTotalTime) - if tg.GetTimer(ExecTotalTime).String() != "Exec total time: 0s" { - t.Fatalf("Expected string %s, but got %s", "", execTotalTimer.String()) - } - execQueueTimer := tg.GetTimer(ExecQueueTime) - if tg.GetTimer(ExecQueueTime).String() != "Exec queue wait time: 0s" { - t.Fatalf("Expected string %s, but got %s", "", execQueueTimer.String()) - } - innerEvalTimer := tg.GetTimer(InnerEvalTime) - if tg.GetTimer(InnerEvalTime).String() != "Inner eval time: 0s" { - t.Fatalf("Expected string %s, but got %s", "", innerEvalTimer.String()) - } - queryPreparationTimer := tg.GetTimer(QueryPreparationTime) - if tg.GetTimer(QueryPreparationTime).String() != "Query preparation time: 0s" { - t.Fatalf("Expected string %s, but got %s", "", queryPreparationTimer.String()) - } - resultSortTimer := tg.GetTimer(ResultSortTime) - if tg.GetTimer(ResultSortTime).String() != "Result sorting time: 0s" { - t.Fatalf("Expected string %s, but got %s", "", resultSortTimer.String()) - } - evalTotalTimer := tg.GetTimer(EvalTotalTime) - if tg.GetTimer(EvalTotalTime).String() != "Eval total time: 0s" { - t.Fatalf("Expected string %s, but got %s", "", evalTotalTimer.String()) - } + require.Equal(t, "Exec total time: 0s", tg.GetTimer(ExecTotalTime).String()) + + require.Equal(t, "Exec queue wait time: 0s", tg.GetTimer(ExecQueueTime).String()) + + require.Equal(t, "Inner eval time: 0s", tg.GetTimer(InnerEvalTime).String()) + + require.Equal(t, "Query preparation time: 0s", tg.GetTimer(QueryPreparationTime).String()) + + require.Equal(t, "Result sorting time: 0s", tg.GetTimer(ResultSortTime).String()) + + require.Equal(t, "Eval total time: 0s", tg.GetTimer(EvalTotalTime).String()) actual := tg.String() expected := "Exec total time: 0s\nExec queue wait time: 0s\nInner eval time: 0s\nQuery preparation time: 0s\nResult sorting time: 0s\nEval total time: 0s\n" - - if actual != expected { - t.Fatalf("Expected timerGroup string %s, but got %s.", expected, actual) - } - + require.Equal(t, expected, actual) } diff --git a/util/strutil/quote_test.go b/util/strutil/quote_test.go index fa34b42ac..21240ccb5 100644 --- a/util/strutil/quote_test.go +++ b/util/strutil/quote_test.go @@ -15,6 +15,8 @@ package strutil import ( "testing" + + "github.com/stretchr/testify/require" ) var quotetests = []struct { @@ -107,21 +109,22 @@ var misquoted = []string{ func TestUnquote(t *testing.T) { for _, tt := range unquotetests { - if out, err := Unquote(tt.in); err != nil && out != tt.out { - t.Errorf("Unquote(%#q) = %q, %v want %q, nil", tt.in, out, err, tt.out) + out, err := Unquote(tt.in) + if err != nil { + require.Equal(t, tt.out, out, "Unquote(%#q)", tt.in) } } // Run the quote tests too, backward. for _, tt := range quotetests { - if in, err := Unquote(tt.out); in != tt.in { - t.Errorf("Unquote(%#q) = %q, %v, want %q, nil", tt.out, in, err, tt.in) - } + in, err := Unquote(tt.out) + require.Equal(t, tt.in, in, "Unquote(%#q)", tt.out) + require.NoError(t, err) } for _, s := range misquoted { - if out, err := Unquote(s); out != "" || err != ErrSyntax { - t.Errorf("Unquote(%#q) = %q, %v want %q, %v", s, out, err, "", ErrSyntax) - } + out, err := Unquote(s) + require.Empty(t, out, "Unquote(%#q)", s) + require.EqualError(t, err, ErrSyntax.Error(), "Unquote(%#q)", s) } } diff --git a/util/strutil/strconv_test.go b/util/strutil/strconv_test.go index e47bb45e7..05c3eb498 100644 --- a/util/strutil/strconv_test.go +++ b/util/strutil/strconv_test.go @@ -15,6 +15,8 @@ package strutil import ( "testing" + + "github.com/stretchr/testify/require" ) type linkTest struct { @@ -38,28 +40,22 @@ var linkTests = []linkTest{ func TestLink(t *testing.T) { for _, tt := range linkTests { - if graphLink := GraphLinkForExpression(tt.expression); graphLink != tt.expectedGraphLink { - t.Errorf("GraphLinkForExpression failed for expression (%#q), want %q got %q", tt.expression, tt.expectedGraphLink, graphLink) - } + graphLink := GraphLinkForExpression(tt.expression) + require.Equal(t, tt.expectedGraphLink, graphLink, + "GraphLinkForExpression failed for expression (%#q)", tt.expression) - if tableLink := TableLinkForExpression(tt.expression); tableLink != tt.expectedTableLink { - t.Errorf("TableLinkForExpression failed for expression (%#q), want %q got %q", tt.expression, tt.expectedTableLink, tableLink) - } + tableLink := TableLinkForExpression(tt.expression) + require.Equal(t, tt.expectedTableLink, tableLink, + "TableLinkForExpression failed for expression (%#q)", tt.expression) } } func TestSanitizeLabelName(t *testing.T) { actual := SanitizeLabelName("fooClientLABEL") expected := "fooClientLABEL" - - if actual != expected { - t.Errorf("SanitizeLabelName failed for label (%s), want %s got %s", "fooClientLABEL", expected, actual) - } + require.Equal(t, expected, actual, "SanitizeLabelName failed for label (%s)", expected) actual = SanitizeLabelName("barClient.LABEL$$##") expected = "barClient_LABEL____" - - if actual != expected { - t.Errorf("SanitizeLabelName failed for label (%s), want %s got %s", "barClient.LABEL$$##", expected, actual) - } + require.Equal(t, expected, actual, "SanitizeLabelName failed for label (%s)", expected) } diff --git a/util/teststorage/storage.go b/util/teststorage/storage.go index 53c4ece13..39aac596e 100644 --- a/util/teststorage/storage.go +++ b/util/teststorage/storage.go @@ -19,6 +19,8 @@ import ( "time" "github.com/prometheus/client_golang/prometheus" + "github.com/stretchr/testify/require" + "github.com/prometheus/prometheus/pkg/exemplar" "github.com/prometheus/prometheus/pkg/labels" "github.com/prometheus/prometheus/storage" @@ -30,9 +32,7 @@ import ( // that removes all associated files on closing. func New(t testutil.T) *TestStorage { dir, err := ioutil.TempDir("", "test_storage") - if err != nil { - t.Fatalf("Opening test dir failed: %s", err) - } + require.NoError(t, err, "unexpected error while opening test directory") // Tests just load data for a series sequentially. Thus we // need a long appendable window. @@ -40,16 +40,12 @@ func New(t testutil.T) *TestStorage { opts.MinBlockDuration = int64(24 * time.Hour / time.Millisecond) opts.MaxBlockDuration = int64(24 * time.Hour / time.Millisecond) db, err := tsdb.Open(dir, nil, nil, opts, tsdb.NewDBStats()) - if err != nil { - t.Fatalf("Opening test storage failed: %s", err) - } + require.NoError(t, err, "unexpected error while opening test storage") reg := prometheus.NewRegistry() eMetrics := tsdb.NewExemplarMetrics(reg) es, err := tsdb.NewCircularExemplarStorage(10, eMetrics) - if err != nil { - t.Fatalf("Opening test exemplar storage failed: %s", err) - } + require.NoError(t, err, "unexpected error while opening test exemplar storage") return &TestStorage{DB: db, exemplarStorage: es, dir: dir} } diff --git a/util/testutil/directory.go b/util/testutil/directory.go index 1c87e35de..70cf04227 100644 --- a/util/testutil/directory.go +++ b/util/testutil/directory.go @@ -73,8 +73,8 @@ type ( // the test flags, which we do not want in non-test binaries even if // they make use of these utilities for some reason). T interface { - Fatal(args ...interface{}) - Fatalf(format string, args ...interface{}) + Errorf(format string, args ...interface{}) + FailNow() } ) @@ -105,9 +105,7 @@ func (t temporaryDirectory) Close() { err = os.RemoveAll(t.path) } } - if err != nil { - t.tester.Fatal(err) - } + require.NoError(t.tester, err) } func (t temporaryDirectory) Path() string { @@ -123,9 +121,7 @@ func NewTemporaryDirectory(name string, t T) (handler TemporaryDirectory) { ) directory, err = ioutil.TempDir(defaultDirectory, name) - if err != nil { - t.Fatal(err) - } + require.NoError(t, err) handler = temporaryDirectory{ path: directory, diff --git a/web/api/v1/api.go b/web/api/v1/api.go index 4551bdc1d..6576a5bb5 100644 --- a/web/api/v1/api.go +++ b/web/api/v1/api.go @@ -942,6 +942,9 @@ type Target struct { LastScrape time.Time `json:"lastScrape"` LastScrapeDuration float64 `json:"lastScrapeDuration"` Health scrape.TargetHealth `json:"health"` + + ScrapeInterval string `json:"scrapeInterval"` + ScrapeTimeout string `json:"scrapeTimeout"` } // DroppedTarget has the information for one target that was dropped during relabelling. @@ -1081,6 +1084,8 @@ func (api *API) targets(r *http.Request) apiFuncResult { LastScrape: target.LastScrape(), LastScrapeDuration: target.LastScrapeDuration().Seconds(), Health: target.Health(), + ScrapeInterval: target.GetValue(model.ScrapeIntervalLabel), + ScrapeTimeout: target.GetValue(model.ScrapeTimeoutLabel), }) } } diff --git a/web/api/v1/api_test.go b/web/api/v1/api_test.go index f5a44ed9e..a1649912b 100644 --- a/web/api/v1/api_test.go +++ b/web/api/v1/api_test.go @@ -535,10 +535,12 @@ func setupTestTargetRetriever(t *testing.T) *testTargetRetriever { { Identifier: "test", Labels: labels.FromMap(map[string]string{ - model.SchemeLabel: "http", - model.AddressLabel: "example.com:8080", - model.MetricsPathLabel: "/metrics", - model.JobLabel: "test", + model.SchemeLabel: "http", + model.AddressLabel: "example.com:8080", + model.MetricsPathLabel: "/metrics", + model.JobLabel: "test", + model.ScrapeIntervalLabel: "15s", + model.ScrapeTimeoutLabel: "5s", }), DiscoveredLabels: nil, Params: url.Values{}, @@ -548,10 +550,12 @@ func setupTestTargetRetriever(t *testing.T) *testTargetRetriever { { Identifier: "blackbox", Labels: labels.FromMap(map[string]string{ - model.SchemeLabel: "http", - model.AddressLabel: "localhost:9115", - model.MetricsPathLabel: "/probe", - model.JobLabel: "blackbox", + model.SchemeLabel: "http", + model.AddressLabel: "localhost:9115", + model.MetricsPathLabel: "/probe", + model.JobLabel: "blackbox", + model.ScrapeIntervalLabel: "20s", + model.ScrapeTimeoutLabel: "10s", }), DiscoveredLabels: nil, Params: url.Values{"target": []string{"example.com"}}, @@ -562,10 +566,12 @@ func setupTestTargetRetriever(t *testing.T) *testTargetRetriever { Identifier: "blackbox", Labels: nil, DiscoveredLabels: labels.FromMap(map[string]string{ - model.SchemeLabel: "http", - model.AddressLabel: "http://dropped.example.com:9115", - model.MetricsPathLabel: "/probe", - model.JobLabel: "blackbox", + model.SchemeLabel: "http", + model.AddressLabel: "http://dropped.example.com:9115", + model.MetricsPathLabel: "/probe", + model.JobLabel: "blackbox", + model.ScrapeIntervalLabel: "30s", + model.ScrapeTimeoutLabel: "15s", }), Params: url.Values{}, Active: false, @@ -952,6 +958,8 @@ func testEndpoints(t *testing.T, api *API, tr *testTargetRetriever, es storage.E LastError: "failed: missing port in address", LastScrape: scrapeStart, LastScrapeDuration: 0.1, + ScrapeInterval: "20s", + ScrapeTimeout: "10s", }, { DiscoveredLabels: map[string]string{}, @@ -965,15 +973,19 @@ func testEndpoints(t *testing.T, api *API, tr *testTargetRetriever, es storage.E LastError: "", LastScrape: scrapeStart, LastScrapeDuration: 0.07, + ScrapeInterval: "15s", + ScrapeTimeout: "5s", }, }, DroppedTargets: []*DroppedTarget{ { DiscoveredLabels: map[string]string{ - "__address__": "http://dropped.example.com:9115", - "__metrics_path__": "/probe", - "__scheme__": "http", - "job": "blackbox", + "__address__": "http://dropped.example.com:9115", + "__metrics_path__": "/probe", + "__scheme__": "http", + "job": "blackbox", + "__scrape_interval__": "30s", + "__scrape_timeout__": "15s", }, }, }, @@ -998,6 +1010,8 @@ func testEndpoints(t *testing.T, api *API, tr *testTargetRetriever, es storage.E LastError: "failed: missing port in address", LastScrape: scrapeStart, LastScrapeDuration: 0.1, + ScrapeInterval: "20s", + ScrapeTimeout: "10s", }, { DiscoveredLabels: map[string]string{}, @@ -1011,15 +1025,19 @@ func testEndpoints(t *testing.T, api *API, tr *testTargetRetriever, es storage.E LastError: "", LastScrape: scrapeStart, LastScrapeDuration: 0.07, + ScrapeInterval: "15s", + ScrapeTimeout: "5s", }, }, DroppedTargets: []*DroppedTarget{ { DiscoveredLabels: map[string]string{ - "__address__": "http://dropped.example.com:9115", - "__metrics_path__": "/probe", - "__scheme__": "http", - "job": "blackbox", + "__address__": "http://dropped.example.com:9115", + "__metrics_path__": "/probe", + "__scheme__": "http", + "job": "blackbox", + "__scrape_interval__": "30s", + "__scrape_timeout__": "15s", }, }, }, @@ -1044,6 +1062,8 @@ func testEndpoints(t *testing.T, api *API, tr *testTargetRetriever, es storage.E LastError: "failed: missing port in address", LastScrape: scrapeStart, LastScrapeDuration: 0.1, + ScrapeInterval: "20s", + ScrapeTimeout: "10s", }, { DiscoveredLabels: map[string]string{}, @@ -1057,6 +1077,8 @@ func testEndpoints(t *testing.T, api *API, tr *testTargetRetriever, es storage.E LastError: "", LastScrape: scrapeStart, LastScrapeDuration: 0.07, + ScrapeInterval: "15s", + ScrapeTimeout: "5s", }, }, DroppedTargets: []*DroppedTarget{}, @@ -1072,10 +1094,12 @@ func testEndpoints(t *testing.T, api *API, tr *testTargetRetriever, es storage.E DroppedTargets: []*DroppedTarget{ { DiscoveredLabels: map[string]string{ - "__address__": "http://dropped.example.com:9115", - "__metrics_path__": "/probe", - "__scheme__": "http", - "job": "blackbox", + "__address__": "http://dropped.example.com:9115", + "__metrics_path__": "/probe", + "__scheme__": "http", + "job": "blackbox", + "__scrape_interval__": "30s", + "__scrape_timeout__": "15s", }, }, }, diff --git a/web/ui/assets_generate.go b/web/ui/assets_generate.go index 1f7870c2f..884329bd0 100644 --- a/web/ui/assets_generate.go +++ b/web/ui/assets_generate.go @@ -11,6 +11,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +//go:build ignore // +build ignore package main diff --git a/web/ui/build_ui.sh b/web/ui/build_ui.sh new file mode 100644 index 000000000..90b08fd42 --- /dev/null +++ b/web/ui/build_ui.sh @@ -0,0 +1,51 @@ +#!/bin/bash + +# Copyright 2021 The Prometheus Authors +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -e +current=$(pwd) + +buildOrder=(module/codemirror-promql) + +function buildModule() { + for module in "${buildOrder[@]}"; do + cd "${module}" + echo "build ${module}" + npm run build + cd "${current}" + done +} + +function buildReactApp() { + cd react-app + echo "build react-app" + npm run build + cd "${current}" + rm -rf ./static/react + mv ./react-app/build ./static/react +} + +for i in "$@"; do + case ${i} in + --all) + buildModule + buildReactApp + shift + ;; + --build-module) + buildModule + shift + ;; + esac +done diff --git a/web/ui/module/codemirror-promql/.eslintrc.json b/web/ui/module/codemirror-promql/.eslintrc.json new file mode 100644 index 000000000..8f6bf4864 --- /dev/null +++ b/web/ui/module/codemirror-promql/.eslintrc.json @@ -0,0 +1,34 @@ +{ + "parser": "@typescript-eslint/parser", + "extends": [ + "plugin:@typescript-eslint/recommended", + "plugin:prettier/recommended" + ], + "rules": { + "@typescript-eslint/explicit-function-return-type": ["off"], + "eol-last": [ + "error", + "always" + ], + "object-curly-spacing": [ + "error", + "always" + ], + "prefer-const": "warn", + "comma-dangle": [ + "error", + { + "arrays": "always-multiline", + "objects": "always-multiline", + "imports": "always-multiline" + } + ] + }, + "plugins": [ + "prettier" + ], + "ignorePatterns": ["node_modules/"], + "parserOptions": { + "sourceType": "module" + } + } diff --git a/web/ui/module/codemirror-promql/.gitignore b/web/ui/module/codemirror-promql/.gitignore new file mode 100644 index 000000000..fd02d2279 --- /dev/null +++ b/web/ui/module/codemirror-promql/.gitignore @@ -0,0 +1,11 @@ +.idea/ + +node_modules/ +dist/ +lib/ + +src/grammar/**.ts +src/grammar/parser.js +src/grammar/parser.terms.js + +/.nyc_output diff --git a/web/ui/module/codemirror-promql/.npmignore b/web/ui/module/codemirror-promql/.npmignore new file mode 100644 index 000000000..b0ff5f28f --- /dev/null +++ b/web/ui/module/codemirror-promql/.npmignore @@ -0,0 +1,14 @@ +/.vscode/ +/release/**/*.test.js +/release/**/test/ +/scripts/ +/.circleci/ +/src/ +/test/ +/examples/ +/gulpfile.js +/tsconfig.json +/.npmignore +/.gitignore +/.eslintrc.js +/.nyc_output diff --git a/web/ui/module/codemirror-promql/CHANGELOG.md b/web/ui/module/codemirror-promql/CHANGELOG.md new file mode 100644 index 000000000..7b1624213 --- /dev/null +++ b/web/ui/module/codemirror-promql/CHANGELOG.md @@ -0,0 +1,99 @@ +0.17.0 / 2021-08-10 +=================== + +* **[Feature]**: Support `present_over_time` +* **[Feature]**: HTTP method used to contact Prometheus is now configurable. + +0.16.0 / 2021-05-20 +=================== + +* **[Feature]**: Support partial PromQL language called `MetricName`. Can be used to autocomplete only the metric + name. (#142) +* **[Feature]**: Autocomplete `NaN` and `Inf` (#141) +* **[Enhancement]**: Fetch series using the HTTP `POST` method (#139) +* **[Enhancement]**: Upgrade lezer-promql that fixed the parsing of metric names starting with `Inf`/`NaN` like infra (#142) +* **[BreakingChange]**: The constant `promQLLanguage` has been changed to be a function. It takes a `LanguageType` as a + parameter (#142) + +0.15.0 / 2021-04-13 +=================== + +* **[Feature]**: Provide a way to inject an initial metric list for the autocompletion (#134) +* **[Enhancement]**: Autocomplete metrics/function/aggregation when the editor is empty (#133) +* **[Enhancement]**: Improve the documentation to reflect what the lib is providing. (#134) +* **[Change]**: Export the essential interface in the root index of the lib. (#132) +* **[Change]**: Downgrade the NodeJS version required (from 14 to 12) (#112) +* **[BreakingChange]**: Support CommonJS module. (#130) + +Note that this requires to change the import path if you are using something not exported by the root index of lib. For +example: `import { labelMatchersToString } from 'codemirror-promql/parser/matcher';` +becomes `import { labelMatchersToString } from 'codemirror-promql/esm/parser/matcher';` +or `import { labelMatchersToString } from 'codemirror-promql/cjs/parser/matcher';` + +0.14.1 / 2021-04-07 +=================== + +* **[Enhancement]**: Provide getter and setter to easily manipulate the different objects exposed by the lib +* **[BugFix]**: fix the autocompletion of the labels after a comma (in a label matcher list or in a grouping label list) + +0.14.0 / 2021-03-26 +=================== + +* **[Feature]**: Through the update of [lezer-promql](https://github.com/promlabs/lezer-promql/releases/tag/0.18.0) + support negative offset +* **[Enhancement]**: Add snippet to ease the usage of the aggregation `topk`, `bottomk` and `count_value` +* **[Enhancement]**: Autocomplete the 2nd hard of subquery time selector + +0.13.0 / 2021-03-22 +=================== +* **[Feature]**: Linter and Autocompletion support 3 new PromQL functions: `clamp` , `last_over_time`, `sgn` +* **[Feature]**: Linter and Autocompletion support the `@` expression. +* **[Enhancement]**: Signature of `CompleteStrategy.promQL` has been updated to support the type `Promise` +* **[BreakingChange]**: Support last version of Codemirror.next (v0.18.0) +* **[BreakingChange]**: Remove the function `enricher` + +0.12.0 / 2021-01-12 +=================== + +* **[Enhancement]**: Improve the parsing of `BinExpr` thanks to the changes provided by lezer-promql (v0.15.0) +* **[BreakingChange]**: Support the new version of codemirror v0.17.x + +0.11.0 / 2020-12-08 +=================== + +* **[Feature]**: Add the completion of the keyword `bool`. (#89) +* **[Feature]**: Add a function `enricher` that can be used to enrich the completion with a custom one. +* **[Feature]**: Add a LRU caching system. (#71) +* **[Feature]**: You can now configure the maximum number of metrics in Prometheus for which metadata is fetched. +* **[Feature]**: Allow the possibility to inject a custom `CompleteStrategy`. (#83) +* **[Feature]**: Provide the Matchers in the PrometheusClient for the method `labelValues` and `series`. (#84) +* **[Feature]**: Add the method `metricName` in the PrometheusClient that supports a prefix of the metric searched. (#84) +* **[Enhancement]**: Caching mechanism and PrometheusClient are splitted. (#71) +* **[Enhancement]**: Optimize the code of the PrometheusClient when no cache is used. +* **[Enhancement]**: General improvement of the code thanks to Codemirror.next v0.14.0 (for the new tree management) and v0.15.0 (for the new tags/highlight management) +* **[Enhancement]**: Improve the code coverage of the parser concerning the parsing of the function / aggregation. +* **[BugFix]**: In certain case, the linter didn't ignore the comments. (#78) +* **[BreakingChange]**: Use an object instead of a map when querying the metrics metadata. +* **[BreakingChange]**: Support last version of Codemirror.next (v0.15.0). +* **[BreakingChange]**: Change the way the completion configuration is structured. + +0.10.2 / 2020-10-18 +=================== + +* **[BugFix]**: Fixed missing autocompletion of binary operators after aggregations + +0.10.1 / 2020-10-16 +=================== + +* **[Enhancement]**: Caching of series label names and values for autocompletion is now optimized to be much faster +* **[BugFix]**: Fixed incorrect linter errors around binary operator arguments not separated from the operator by a space + +0.10.0 / 2020-10-14 +=================== + +* **[Enhancement]**: The Linter is now checking operation many-to-many, one-to-one, many-to-one and one-to-many +* **[Enhancement]**: The autocompletion is now showing the type of the metric if the type is same for every possible definition of the same metric +* **[Enhancement]**: The autocompletion is supporting the completion of the duration +* **[Enhancement]**: Descriptions have been added for the snippet, the binary operator modifier and the aggregation operator modifier +* **[Enhancement]**: Coverage of the code has been increased (a lot). +* **[BreakingChange]**: Removing LSP support diff --git a/web/ui/module/codemirror-promql/README.md b/web/ui/module/codemirror-promql/README.md new file mode 100644 index 000000000..bbc051893 --- /dev/null +++ b/web/ui/module/codemirror-promql/README.md @@ -0,0 +1,249 @@ +CodeMirror-promql +================= +[![CircleCI](https://circleci.com/gh/prometheus-community/codemirror-promql.svg?style=shield)](https://circleci.com/gh/prometheus-community/codemirror-promql) [![GitHub license](https://img.shields.io/badge/license-Apache-blue.svg)](./LICENSE) +[![NPM version](https://img.shields.io/npm/v/codemirror-promql.svg)](https://www.npmjs.org/package/codemirror-promql) [![codecov](https://codecov.io/gh/prometheus-community/codemirror-promql/branch/master/graph/badge.svg?token=1OSVPBDKZC)](https://codecov.io/gh/prometheus-community/codemirror-promql) + +## Overview + +This project provides a mode for [CodeMirror Next](https://codemirror.net/6) that handles syntax highlighting, linting +and autocompletion for PromQL ([Prometheus Query Language](https://prometheus.io/docs/introduction/overview/)). + +![preview](https://user-images.githubusercontent.com/4548045/95660829-d5e4b680-0b2a-11eb-9ecb-41dca6396273.gif) + +## Where does it come from? + +The authoritative copy of this code lives in `prometheus/prometheus` and is synced to +`prometheus-community/codemirror-promql` on a regular basis by a bot. Please contribute any code changes to the code +in https://github.com/prometheus/prometheus/tree/main/web/ui/module/codemirror-promql. + +### Installation + +This mode is available as a npm package: + +```bash +npm install --save codemirror-promql +``` + +**Note:** You will have to manually install different packages that are part +of [CodeMirror Next](https://codemirror.net/6), as they are a peer dependency to this package. Here are the different +packages you need to install: + +* **@codemirror/autocomplete** +* **@codemirror/highlight** +* **@codemirror/language** +* **@codemirror/lint** +* **@codemirror/state** +* **@codemirror/view** + +```bash +npm install --save @codemirror/autocomplete @codemirror/highlight @codemirror/language @codemirror/lint @codemirror/state @codemirror/view +``` + +**Note 2**: that's the minimum required to install the lib. You would probably need to install as well the dependency +**@codemirror/basic-setup** to ease the setup of codeMirror itself: + +```bash +npm install --save @codemirror/basic-setup +``` + +## Usage + +As the setup of the PromQL language can a bit tricky in CMN, this lib provides a class `PromQLExtension` +which is here to help you to configure the different extensions we aim to provide. + +### Default setup + +If you want to enjoy about the different features provided without taking too much time to understand how to configure +them, then the easiest way is this one: + +```typescript +import { PromQLExtension } from 'codemirror-promql'; +import { basicSetup } from '@codemirror/basic-setup'; +import { EditorState } from '@codemirror/state'; +import { EditorView } from '@codemirror/view'; + +const promQL = new PromQLExtension() +new EditorView({ + state: EditorState.create({ + extensions: [basicSetup, promQL.asExtension()], + }), + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + // tslint:disable-next-line:no-non-null-assertion + parent: document.getElementById('editor')!, +}); +``` + +Using the default setup will activate: + +* syntax highlighting +* an offline autocompletion that will suggest PromQL keywords such as functions / aggregations, depending on the + context. +* an offline linter that will display PromQL syntax errors (which is closer to what Prometheus returns) + +### Deactivate autocompletion - linter + +In case you would like to deactivate the linter and/or the autocompletion it's simple as that: + +```typescript +const promQL = new PromQLExtension().activateLinter(false).activateCompletion(false) // here the linter and the autocomplete are deactivated +``` + +### Linter + +There is no particular configuration today for the linter. Feel free to file an issue if you have some use cases that +would require configurability. + +### Autocompletion + +The autocompletion feature provides multiple different parameters that can be used to adapt this lib to your +environment. + +#### maxMetricsMetadata + +`maxMetricsMetadata` is the maximum number of metrics in Prometheus for which metadata is fetched. If the number of +metrics exceeds this limit, no metric metadata is fetched at all. + +By default, the limit is 10 000 metrics. + +Use it cautiously. A high value of this limit can cause a crash of your browser due to too many data fetched. + +```typescript +const promQL = new PromQLExtension().setComplete({ maxMetricsMetadata: 10000 }) +``` + +#### Connect the autocompletion extension to a remote Prometheus server + +Connecting the autocompletion extension to a remote Prometheus server will provide autocompletion of metric names, label +names, and label values. + +##### Use the default Prometheus client + +###### Prometheus URL + +If you want to use the default Prometheus client provided by this lib, you have to provide the url used to contact the +Prometheus server. + +Note: this is the only mandatory parameter in case you want to use the default Prometheus client. Without this +parameter, the rest of the config will be ignored, and the Prometheus client won't be initialized. + +```typescript +const promQL = new PromQLExtension().setComplete({ remote: { url: 'https://prometheus.land' } }) +``` + +###### Override FetchFn + +In case your Prometheus server is protected and requires a special HTTP client, you can override the function `fetchFn` +that is used to perform any required HTTP request. + +```typescript +const promQL = new PromQLExtension().setComplete({ remote: { fetchFn: myHTTPClient } }) +``` + +###### Duration to use for looking back when retrieving metrics / labels + +If you are a bit familiar with the Prometheus API, you are aware that you can pass a time interval that is used to tell +to Prometheus which period of time you are looking for when retrieving metadata (like metrics / labels). + +In case you would like to provide your own duration, you can override the variable `lookbackInterval`. By default, the +value is `12 * 60 * 60 * 1000` (12h). The value must be defined in **milliseconds**. + +```typescript +const promQL = new PromQLExtension().setComplete({ remote: { lookbackInterval: 12 * 60 * 60 * 1000 } }) +``` + +###### Error Handling + +You can set up your own error handler to catch any HTTP error that can occur when the PrometheusClient is contacting +Prometheus. + +```typescript +const promQL = new PromQLExtension().setComplete({ remote: { httpErrorHandler: (error: any) => console.error(error) } }) +``` + +###### HTTP method used + +By default, the Prometheus client will use the HTTP method `POST` when contacting Prometheus for the +endpoints `/api/v1/labels` and `/api/v1/series`. + +You can change it to use the HTTP method `GET` if you prefer. + +```typescript +const promQL = new PromQLExtension().setComplete({ remote: { httpMethod: 'GET' } }) +``` + +###### Override the API Prefix + +The default Prometheus Client, when building the query to get data from Prometheus, is using an API prefix which is by default `/api/v1`. + +You can override this value like this: + +```typescript +const promql = new PromQLExtension().setComplete({ remote: { apiPrefix: '/my/api/prefix' } }) +``` + +###### Cache + +The default client has an embedded cache that is used to store the different metrics and labels retrieved from a remote +Prometheus server. + +###### Max Age + +The data are stored in the cache for a limited amount of time defined by the variable `maxAge` which is by default 5 +minutes. The value must be defined in **milliseconds**. + +```typescript +const promQL = new PromQLExtension().setComplete({ remote: { cache: { maxAge: 5 * 60 * 1000 } } }) +``` + +###### Initial Metric List + +The cache can be initialized with a list of metric names. It is useful when you already have the list of the metrics +somewhere else in your application, and you would like to share this list with the embedded Prometheus client +of `codemirror-promql`. + +Note: keep in mind that this list will be kept into the embedded Prometheus client until the time defined by `maxAge`. + +```typescript +const promQL = new PromQLExtension().setComplete({ + remote: { + cache: { + initialMetricList: [ + 'ALERTS', + 'ALERTS_FOR_STATE', + 'alertmanager_alerts', + 'alertmanager_alerts_invalid_total', + 'alertmanager_alerts_received_total', + ] + } + } +}) +``` + +##### Override the default Prometheus client + +In case you are not satisfied by our default Prometheus client, you can still provide your own. It has to implement the +interface [PrometheusClient](https://github.com/prometheus-community/codemirror-promql/blob/master/src/lang-promql/client/prometheus.ts#L111-L117) +. + +```typescript +const promQL = new PromQLExtension().setComplete({ remote: { prometheusClient: MyPrometheusClient } }) +``` + +#### Provide your own implementation of the autocompletion + +In case you would like to provide you own implementation of the autocompletion, you can simply do it like that: + +```typescript +const promQL = new PromQLExtension().setComplete({ completeStrategy: myCustomImpl }) +``` + +Note: In case this parameter is provided, then the rest of the configuration is ignored. + +### Example + +* [ReactJS example](https://github.com/prometheus/prometheus/blob/431ea75a11ca165dad9dd5d629b3cf975f4c186b/web/ui/react-app/src/pages/graph/CMExpressionInput.tsx) +* [Angular example](https://github.com/perses/perses/blob/28b3bdac88b0ed7a4602f9c91106442eafcb6c34/internal/api/front/perses/src/app/project/prometheusrule/promql-editor/promql-editor.component.ts) + +## License + +Apache License 2.0, see [LICENSE](https://github.com/prometheus-community/codemirror-promql/blob/master/LICENSE). diff --git a/web/ui/module/codemirror-promql/build.sh b/web/ui/module/codemirror-promql/build.sh new file mode 100755 index 000000000..0ba4adf9f --- /dev/null +++ b/web/ui/module/codemirror-promql/build.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +# Copyright 2021 The Prometheus Authors +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -ex + +# build the lib (both ES2015 and CommonJS) +tsc --module ES2015 --target ES2015 --outDir dist/esm +tsc --module commonjs --target es5 --outDir dist/cjs --downlevelIteration diff --git a/web/ui/module/codemirror-promql/package.json b/web/ui/module/codemirror-promql/package.json new file mode 100644 index 000000000..825383d01 --- /dev/null +++ b/web/ui/module/codemirror-promql/package.json @@ -0,0 +1,86 @@ +{ + "name": "codemirror-promql", + "version": "0.18.0", + "description": "a CodeMirror mode for the PromQL language", + "main": "dist/cjs/index.js", + "module": "dist/esm/index.js", + "scripts": { + "build": "npm run build:grammar && npm run build:lib", + "build:grammar": "lezer-generator src/grammar/promql.grammar -o src/grammar/parser", + "build:lib": "bash ./build.sh", + "test": "npm run build:grammar && ts-mocha -p tsconfig.json ./**/*.test.ts", + "test:coverage": "npm run build:grammar && nyc ts-mocha -p ./tsconfig.json ./**/*.test.ts", + "codecov": "nyc report --reporter=text-lcov > coverage.lcov && codecov", + "lint": "eslint src/ --ext .ts", + "lint:fix": "eslint --fix src/ --ext .ts" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/prometheus-community/codemirror-promql.git" + }, + "keywords": [ + "promql", + "codemirror", + "mode", + "prometheus" + ], + "author": "Prometheus Authors ", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/prometheus-community/codemirror-promql/issues" + }, + "homepage": "https://github.com/prometheus-community/codemirror-promql/blob/master/README.md", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "devDependencies": { + "@codemirror/autocomplete": "^0.19.3", + "@codemirror/basic-setup": "^0.19.0", + "@codemirror/highlight": "^0.19.5", + "@codemirror/language": "^0.19.3", + "@codemirror/lint": "^0.19.1", + "@codemirror/state": "^0.19.2", + "@codemirror/view": "^0.19.7", + "@lezer/common": "^0.15.5", + "@lezer/generator": "^0.15.1", + "@types/chai": "^4.2.12", + "@types/lru-cache": "^5.1.0", + "@types/mocha": "^8.0.3", + "@types/node": "^16.7.6", + "@typescript-eslint/eslint-plugin": "^4.31.0", + "@typescript-eslint/parser": "^4.31.0", + "chai": "^4.2.0", + "codecov": "^3.8.1", + "eslint": "^7.32.0", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-flowtype": "^5.9.2", + "eslint-plugin-import": "^2.24.2", + "eslint-plugin-prettier": "^4.0.0", + "isomorphic-fetch": "^3.0.0", + "mocha": "^8.1.2", + "nock": "^13.0.11", + "nyc": "^15.1.0", + "prettier": "^2.3.2", + "ts-loader": "^7.0.4", + "ts-mocha": "^8.0.0", + "ts-node": "^9.0.0", + "typescript": "^4.2.3" + }, + "peerDependencies": { + "@codemirror/autocomplete": "^0.19.3", + "@codemirror/highlight": "^0.19.5", + "@codemirror/language": "^0.19.3", + "@codemirror/lint": "^0.19.1", + "@codemirror/state": "^0.19.2", + "@codemirror/view": "^0.19.7", + "@lezer/common": "^0.15.5" + }, + "prettier": { + "singleQuote": true, + "trailingComma": "es5", + "printWidth": 150 + }, + "engines": { + "node": ">=12.0.0" + } +} diff --git a/web/ui/module/codemirror-promql/src/client/index.ts b/web/ui/module/codemirror-promql/src/client/index.ts new file mode 100644 index 000000000..83f20df68 --- /dev/null +++ b/web/ui/module/codemirror-promql/src/client/index.ts @@ -0,0 +1,16 @@ +// Copyright 2021 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +export { PrometheusClient, PrometheusConfig, CacheConfig } from './prometheus'; + +export type FetchFn = (input: RequestInfo, init?: RequestInit) => Promise; diff --git a/web/ui/module/codemirror-promql/src/client/prometheus.ts b/web/ui/module/codemirror-promql/src/client/prometheus.ts new file mode 100644 index 000000000..2a03ec628 --- /dev/null +++ b/web/ui/module/codemirror-promql/src/client/prometheus.ts @@ -0,0 +1,402 @@ +// Copyright 2021 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { FetchFn } from '.'; +import { Matcher } from '../types'; +import { labelMatchersToString } from '../parser'; +import LRUCache from 'lru-cache'; + +export interface MetricMetadata { + type: string; + help: string; +} + +export interface PrometheusClient { + labelNames(metricName?: string): Promise; + + // labelValues return a list of the value associated to the given labelName. + // In case a metric is provided, then the list of values is then associated to the couple + labelValues(labelName: string, metricName?: string, matchers?: Matcher[]): Promise; + + metricMetadata(): Promise>; + + series(metricName: string, matchers?: Matcher[], labelName?: string): Promise[]>; + + // metricNames returns a list of suggestions for the metric name given the `prefix`. + // Note that the returned list can be a superset of those suggestions for the prefix (i.e., including ones without the + // prefix), as codemirror will filter these out when displaying suggestions to the user. + metricNames(prefix?: string): Promise; +} + +export interface CacheConfig { + // maxAge is the maximum amount of time that a cached completion item is valid before it needs to be refreshed. + // It is in milliseconds. Default value: 300 000 (5min) + maxAge?: number; + // the cache can be initialized with a list of metrics + initialMetricList?: string[]; +} + +export interface PrometheusConfig { + url: string; + lookbackInterval?: number; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + httpErrorHandler?: (error: any) => void; + fetchFn?: FetchFn; + // cache will allow user to change the configuration of the cached Prometheus client (which is used by default) + cache?: CacheConfig; + httpMethod?: 'POST' | 'GET'; + apiPrefix?: string; +} + +interface APIResponse { + status: 'success' | 'error'; + data?: T; + error?: string; + warnings?: string[]; +} + +// These are status codes where the Prometheus API still returns a valid JSON body, +// with an error encoded within the JSON. +const badRequest = 400; +const unprocessableEntity = 422; +const serviceUnavailable = 503; + +// HTTPPrometheusClient is the HTTP client that should be used to get some information from the different endpoint provided by prometheus. +export class HTTPPrometheusClient implements PrometheusClient { + private readonly lookbackInterval = 60 * 60 * 1000 * 12; //12 hours + private readonly url: string; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + private readonly errorHandler?: (error: any) => void; + private readonly httpMethod: 'POST' | 'GET' = 'POST'; + private readonly apiPrefix: string = '/api/v1'; + // For some reason, just assigning via "= fetch" here does not end up executing fetch correctly + // when calling it, thus the indirection via another function wrapper. + private readonly fetchFn: FetchFn = (input: RequestInfo, init?: RequestInit): Promise => fetch(input, init); + + constructor(config: PrometheusConfig) { + this.url = config.url; + this.errorHandler = config.httpErrorHandler; + if (config.lookbackInterval) { + this.lookbackInterval = config.lookbackInterval; + } + if (config.fetchFn) { + this.fetchFn = config.fetchFn; + } + if (config.httpMethod) { + this.httpMethod = config.httpMethod; + } + if (config.apiPrefix) { + this.apiPrefix = config.apiPrefix; + } + } + + labelNames(metricName?: string): Promise { + const end = new Date(); + const start = new Date(end.getTime() - this.lookbackInterval); + if (metricName === undefined || metricName === '') { + const request = this.buildRequest( + this.labelsEndpoint(), + new URLSearchParams({ + start: start.toISOString(), + end: end.toISOString(), + }) + ); + // See https://prometheus.io/docs/prometheus/latest/querying/api/#getting-label-names + return this.fetchAPI(request.uri, { + method: this.httpMethod, + body: request.body, + }).catch((error) => { + if (this.errorHandler) { + this.errorHandler(error); + } + return []; + }); + } + + return this.series(metricName).then((series) => { + const labelNames = new Set(); + for (const labelSet of series) { + for (const [key] of Object.entries(labelSet)) { + if (key === '__name__') { + continue; + } + labelNames.add(key); + } + } + return Array.from(labelNames); + }); + } + + // labelValues return a list of the value associated to the given labelName. + // In case a metric is provided, then the list of values is then associated to the couple + labelValues(labelName: string, metricName?: string, matchers?: Matcher[]): Promise { + const end = new Date(); + const start = new Date(end.getTime() - this.lookbackInterval); + + if (!metricName || metricName.length === 0) { + const params: URLSearchParams = new URLSearchParams({ + start: start.toISOString(), + end: end.toISOString(), + }); + // See https://prometheus.io/docs/prometheus/latest/querying/api/#querying-label-values + return this.fetchAPI(`${this.labelValuesEndpoint().replace(/:name/gi, labelName)}?${params}`).catch((error) => { + if (this.errorHandler) { + this.errorHandler(error); + } + return []; + }); + } + + return this.series(metricName, matchers, labelName).then((series) => { + const labelValues = new Set(); + for (const labelSet of series) { + for (const [key, value] of Object.entries(labelSet)) { + if (key === '__name__') { + continue; + } + if (key === labelName) { + labelValues.add(value); + } + } + } + return Array.from(labelValues); + }); + } + + metricMetadata(): Promise> { + return this.fetchAPI>(this.metricMetadataEndpoint()).catch((error) => { + if (this.errorHandler) { + this.errorHandler(error); + } + return {}; + }); + } + + series(metricName: string, matchers?: Matcher[], labelName?: string): Promise[]> { + const end = new Date(); + const start = new Date(end.getTime() - this.lookbackInterval); + const request = this.buildRequest( + this.seriesEndpoint(), + new URLSearchParams({ + start: start.toISOString(), + end: end.toISOString(), + 'match[]': labelMatchersToString(metricName, matchers, labelName), + }) + ); + // See https://prometheus.io/docs/prometheus/latest/querying/api/#finding-series-by-label-matchers + return this.fetchAPI[]>(request.uri, { + method: this.httpMethod, + body: request.body, + }).catch((error) => { + if (this.errorHandler) { + this.errorHandler(error); + } + return []; + }); + } + + metricNames(): Promise { + return this.labelValues('__name__'); + } + + private fetchAPI(resource: string, init?: RequestInit): Promise { + return this.fetchFn(this.url + resource, init) + .then((res) => { + if (!res.ok && ![badRequest, unprocessableEntity, serviceUnavailable].includes(res.status)) { + throw new Error(res.statusText); + } + return res; + }) + .then((res) => res.json()) + .then((apiRes: APIResponse) => { + if (apiRes.status === 'error') { + throw new Error(apiRes.error !== undefined ? apiRes.error : 'missing "error" field in response JSON'); + } + if (apiRes.data === undefined) { + throw new Error('missing "data" field in response JSON'); + } + return apiRes.data; + }); + } + + private buildRequest(endpoint: string, params: URLSearchParams) { + let uri = endpoint; + let body: URLSearchParams | null = params; + if (this.httpMethod === 'GET') { + uri = `${uri}?${params}`; + body = null; + } + return { uri, body }; + } + + private labelsEndpoint(): string { + return `${this.apiPrefix}/labels`; + } + private labelValuesEndpoint(): string { + return `${this.apiPrefix}/label/:name/values`; + } + private seriesEndpoint(): string { + return `${this.apiPrefix}/series`; + } + private metricMetadataEndpoint(): string { + return `${this.apiPrefix}/metadata`; + } +} + +class Cache { + // completeAssociation is the association between a metric name, a label name and the possible label values + private readonly completeAssociation: LRUCache>>; + // metricMetadata is the association between a metric name and the associated metadata + private metricMetadata: Record; + private labelValues: LRUCache; + private labelNames: string[]; + + constructor(config?: CacheConfig) { + const maxAge = config && config.maxAge ? config.maxAge : 5 * 60 * 1000; + this.completeAssociation = new LRUCache>>(maxAge); + this.metricMetadata = {}; + this.labelValues = new LRUCache(maxAge); + this.labelNames = []; + if (config?.initialMetricList) { + this.setLabelValues('__name__', config.initialMetricList); + } + } + + setAssociations(metricName: string, series: Map[]): void { + series.forEach((labelSet: Map) => { + let currentAssociation = this.completeAssociation.get(metricName); + if (!currentAssociation) { + currentAssociation = new Map>(); + this.completeAssociation.set(metricName, currentAssociation); + } + + for (const [key, value] of Object.entries(labelSet)) { + if (key === '__name__') { + continue; + } + const labelValues = currentAssociation.get(key); + if (labelValues === undefined) { + currentAssociation.set(key, new Set([value])); + } else { + labelValues.add(value); + } + } + }); + } + + setMetricMetadata(metadata: Record): void { + this.metricMetadata = metadata; + } + + getMetricMetadata(): Record { + return this.metricMetadata; + } + + setLabelNames(labelNames: string[]): void { + this.labelNames = labelNames; + } + + getLabelNames(metricName?: string): string[] { + if (!metricName || metricName.length === 0) { + return this.labelNames; + } + const labelSet = this.completeAssociation.get(metricName); + return labelSet ? Array.from(labelSet.keys()) : []; + } + + setLabelValues(labelName: string, labelValues: string[]): void { + this.labelValues.set(labelName, labelValues); + } + + getLabelValues(labelName: string, metricName?: string): string[] { + if (!metricName || metricName.length === 0) { + const result = this.labelValues.get(labelName); + return result ? result : []; + } + + const labelSet = this.completeAssociation.get(metricName); + if (labelSet) { + const labelValues = labelSet.get(labelName); + return labelValues ? Array.from(labelValues) : []; + } + return []; + } +} + +export class CachedPrometheusClient implements PrometheusClient { + private readonly cache: Cache; + private readonly client: PrometheusClient; + + constructor(client: PrometheusClient, config?: CacheConfig) { + this.client = client; + this.cache = new Cache(config); + } + + labelNames(metricName?: string): Promise { + const cachedLabel = this.cache.getLabelNames(metricName); + if (cachedLabel && cachedLabel.length > 0) { + return Promise.resolve(cachedLabel); + } + + if (metricName === undefined || metricName === '') { + return this.client.labelNames().then((labelNames) => { + this.cache.setLabelNames(labelNames); + return labelNames; + }); + } + return this.series(metricName).then(() => { + return this.cache.getLabelNames(metricName); + }); + } + + labelValues(labelName: string, metricName?: string): Promise { + const cachedLabel = this.cache.getLabelValues(labelName, metricName); + if (cachedLabel && cachedLabel.length > 0) { + return Promise.resolve(cachedLabel); + } + + if (metricName === undefined || metricName === '') { + return this.client.labelValues(labelName).then((labelValues) => { + this.cache.setLabelValues(labelName, labelValues); + return labelValues; + }); + } + + return this.series(metricName).then(() => { + return this.cache.getLabelValues(labelName, metricName); + }); + } + + metricMetadata(): Promise> { + const cachedMetadata = this.cache.getMetricMetadata(); + if (cachedMetadata && Object.keys(cachedMetadata).length > 0) { + return Promise.resolve(cachedMetadata); + } + + return this.client.metricMetadata().then((metadata) => { + this.cache.setMetricMetadata(metadata); + return this.cache.getMetricMetadata(); + }); + } + + series(metricName: string): Promise[]> { + return this.client.series(metricName).then((series) => { + this.cache.setAssociations(metricName, series); + return series; + }); + } + + metricNames(): Promise { + return this.labelValues('__name__'); + } +} diff --git a/web/ui/module/codemirror-promql/src/complete/hybrid.test.ts b/web/ui/module/codemirror-promql/src/complete/hybrid.test.ts new file mode 100644 index 000000000..a1476fa1f --- /dev/null +++ b/web/ui/module/codemirror-promql/src/complete/hybrid.test.ts @@ -0,0 +1,1260 @@ +// Copyright 2021 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import chai from 'chai'; +import { analyzeCompletion, computeStartCompletePosition, ContextKind } from './hybrid'; +import { createEditorState, mockedMetricsTerms, mockPrometheusServer } from '../test/utils.test'; +import { Completion, CompletionContext } from '@codemirror/autocomplete'; +import { + aggregateOpModifierTerms, + aggregateOpTerms, + atModifierTerms, + binOpModifierTerms, + binOpTerms, + durationTerms, + functionIdentifierTerms, + matchOpTerms, + numberTerms, + snippets, +} from './promql.terms'; +import { EqlSingle, Neq } from '../grammar/parser.terms'; +import { syntaxTree } from '@codemirror/language'; +import { newCompleteStrategy } from './index'; + +describe('analyzeCompletion test', () => { + const testCases = [ + { + title: 'empty expr', + expr: '', + pos: 0, + expectedContext: [ + { + kind: ContextKind.MetricName, + metricName: '', + }, + { kind: ContextKind.Function }, + { kind: ContextKind.Aggregation }, + { kind: ContextKind.Number }, + ], + }, + { + title: 'simple metric & number autocompletion', + expr: 'go_', + pos: 3, // cursor is at the end of the expr + expectedContext: [ + { + kind: ContextKind.MetricName, + metricName: 'go_', + }, + { kind: ContextKind.Function }, + { kind: ContextKind.Aggregation }, + { kind: ContextKind.Number }, + ], + }, + { + title: 'metric/function/aggregation autocompletion', + expr: 'sum()', + pos: 4, + expectedContext: [ + { + kind: ContextKind.MetricName, + metricName: '', + }, + { kind: ContextKind.Function }, + { kind: ContextKind.Aggregation }, + ], + }, + { + title: 'metric/function/aggregation autocompletion 2', + expr: 'sum(rat)', + pos: 7, + expectedContext: [ + { + kind: ContextKind.MetricName, + metricName: 'rat', + }, + { kind: ContextKind.Function }, + { kind: ContextKind.Aggregation }, + ], + }, + { + title: 'metric/function/aggregation autocompletion 3', + expr: 'sum(rate())', + pos: 9, + expectedContext: [ + { + kind: ContextKind.MetricName, + metricName: '', + }, + { kind: ContextKind.Function }, + { kind: ContextKind.Aggregation }, + ], + }, + { + title: 'metric/function/aggregation autocompletion 4', + expr: 'sum(rate(my_))', + pos: 12, + expectedContext: [ + { + kind: ContextKind.MetricName, + metricName: 'my_', + }, + { kind: ContextKind.Function }, + { kind: ContextKind.Aggregation }, + ], + }, + { + title: 'autocomplete binOp modifier or metric or number', + expr: 'metric_name / ignor', + pos: 19, + expectedContext: [ + { kind: ContextKind.MetricName, metricName: 'ignor' }, + { kind: ContextKind.Function }, + { kind: ContextKind.Aggregation }, + { kind: ContextKind.BinOpModifier }, + { kind: ContextKind.Number }, + ], + }, + { + title: 'autocomplete binOp modifier or metric or number 2', + expr: 'sum(http_requests_total{method="GET"} / o)', + pos: 41, + expectedContext: [ + { kind: ContextKind.MetricName, metricName: 'o' }, + { kind: ContextKind.Function }, + { kind: ContextKind.Aggregation }, + { kind: ContextKind.BinOpModifier }, + { kind: ContextKind.Number }, + ], + }, + { + title: 'autocomplete bool/binOp modifier/metric/number 1', + expr: '1 > b)', + pos: 5, + expectedContext: [ + { kind: ContextKind.MetricName, metricName: 'b' }, + { kind: ContextKind.Function }, + { kind: ContextKind.Aggregation }, + { kind: ContextKind.BinOpModifier }, + { kind: ContextKind.Number }, + { kind: ContextKind.Bool }, + ], + }, + { + title: 'autocomplete bool/binOp modifier/metric/number 2', + expr: '1 == b)', + pos: 6, + expectedContext: [ + { kind: ContextKind.MetricName, metricName: 'b' }, + { kind: ContextKind.Function }, + { kind: ContextKind.Aggregation }, + { kind: ContextKind.BinOpModifier }, + { kind: ContextKind.Number }, + { kind: ContextKind.Bool }, + ], + }, + { + title: 'autocomplete bool/binOp modifier/metric/number 3', + expr: '1 != b)', + pos: 6, + expectedContext: [ + { kind: ContextKind.MetricName, metricName: 'b' }, + { kind: ContextKind.Function }, + { kind: ContextKind.Aggregation }, + { kind: ContextKind.BinOpModifier }, + { kind: ContextKind.Number }, + { kind: ContextKind.Bool }, + ], + }, + { + title: 'autocomplete bool/binOp modifier/metric/number 4', + expr: '1 > b)', + pos: 5, + expectedContext: [ + { kind: ContextKind.MetricName, metricName: 'b' }, + { kind: ContextKind.Function }, + { kind: ContextKind.Aggregation }, + { kind: ContextKind.BinOpModifier }, + { kind: ContextKind.Number }, + { kind: ContextKind.Bool }, + ], + }, + { + title: 'autocomplete bool/binOp modifier/metric/number 5', + expr: '1 >= b)', + pos: 6, + expectedContext: [ + { kind: ContextKind.MetricName, metricName: 'b' }, + { kind: ContextKind.Function }, + { kind: ContextKind.Aggregation }, + { kind: ContextKind.BinOpModifier }, + { kind: ContextKind.Number }, + { kind: ContextKind.Bool }, + ], + }, + { + title: 'autocomplete bool/binOp modifier/metric/number 6', + expr: '1 <= b)', + pos: 6, + expectedContext: [ + { kind: ContextKind.MetricName, metricName: 'b' }, + { kind: ContextKind.Function }, + { kind: ContextKind.Aggregation }, + { kind: ContextKind.BinOpModifier }, + { kind: ContextKind.Number }, + { kind: ContextKind.Bool }, + ], + }, + { + title: 'autocomplete bool/binOp modifier/metric/number 7', + expr: '1 < b)', + pos: 5, + expectedContext: [ + { kind: ContextKind.MetricName, metricName: 'b' }, + { kind: ContextKind.Function }, + { kind: ContextKind.Aggregation }, + { kind: ContextKind.BinOpModifier }, + { kind: ContextKind.Number }, + { kind: ContextKind.Bool }, + ], + }, + { + title: 'starting to autocomplete labelName in aggregate modifier', + expr: 'sum by ()', + pos: 8, // cursor is between the bracket + expectedContext: [{ kind: ContextKind.LabelName }], + }, + { + title: 'continue to autocomplete labelName in aggregate modifier', + expr: 'sum by (myL)', + pos: 11, // cursor is between the bracket after the string myL + expectedContext: [{ kind: ContextKind.LabelName }], + }, + { + title: 'autocomplete labelName in a list', + expr: 'sum by (myLabel1,)', + pos: 17, // cursor is between the bracket after the string myLab + expectedContext: [{ kind: ContextKind.LabelName }], + }, + { + title: 'autocomplete labelName in a list 2', + expr: 'sum by (myLabel1, myLab)', + pos: 23, // cursor is between the bracket after the string myLab + expectedContext: [{ kind: ContextKind.LabelName }], + }, + { + title: 'autocomplete labelName associated to a metric', + expr: 'metric_name{}', + pos: 12, // cursor is between the bracket + expectedContext: [{ kind: ContextKind.LabelName, metricName: 'metric_name' }], + }, + { + title: 'autocomplete labelName that defined a metric', + expr: '{}', + pos: 1, // cursor is between the bracket + expectedContext: [{ kind: ContextKind.LabelName, metricName: '' }], + }, + { + title: 'continue to autocomplete labelName associated to a metric', + expr: 'metric_name{myL}', + pos: 15, // cursor is between the bracket after the string myL + expectedContext: [{ kind: ContextKind.LabelName, metricName: 'metric_name' }], + }, + { + title: 'continue to autocomplete labelName associated to a metric 2', + expr: 'metric_name{myLabel="labelValue",}', + pos: 33, // cursor is between the bracket after the comma + expectedContext: [{ kind: ContextKind.LabelName, metricName: 'metric_name' }], + }, + { + title: 'continue autocomplete labelName that defined a metric', + expr: '{myL}', + pos: 4, // cursor is between the bracket after the string myL + expectedContext: [{ kind: ContextKind.LabelName, metricName: '' }], + }, + { + title: 'continue autocomplete labelName that defined a metric 2', + expr: '{myLabel="labelValue",}', + pos: 22, // cursor is between the bracket after the comma + expectedContext: [{ kind: ContextKind.LabelName, metricName: '' }], + }, + { + title: 'autocomplete the labelValue with metricName + labelName', + expr: 'metric_name{labelName=""}', + pos: 23, // cursor is between the quotes + expectedContext: [ + { + kind: ContextKind.LabelValue, + metricName: 'metric_name', + labelName: 'labelName', + matchers: [ + { + name: 'labelName', + type: EqlSingle, + value: '', + }, + ], + }, + ], + }, + { + title: 'autocomplete the labelValue with metricName + labelName 2', + expr: 'metric_name{labelName="labelValue", labelName!=""}', + pos: 48, // cursor is between the quotes + expectedContext: [ + { + kind: ContextKind.LabelValue, + metricName: 'metric_name', + labelName: 'labelName', + matchers: [ + { + name: 'labelName', + type: EqlSingle, + value: 'labelValue', + }, + { + name: 'labelName', + type: Neq, + value: '', + }, + ], + }, + ], + }, + { + title: 'autocomplete the labelValue associated to a labelName', + expr: '{labelName=""}', + pos: 12, // cursor is between the quotes + expectedContext: [ + { + kind: ContextKind.LabelValue, + metricName: '', + labelName: 'labelName', + matchers: [ + { + name: 'labelName', + type: EqlSingle, + value: '', + }, + ], + }, + ], + }, + { + title: 'autocomplete the labelValue associated to a labelName 2', + expr: '{labelName="labelValue", labelName!=""}', + pos: 37, // cursor is between the quotes + expectedContext: [ + { + kind: ContextKind.LabelValue, + metricName: '', + labelName: 'labelName', + matchers: [ + { + name: 'labelName', + type: EqlSingle, + value: 'labelValue', + }, + { + name: 'labelName', + type: Neq, + value: '', + }, + ], + }, + ], + }, + { + title: 'autocomplete AggregateOpModifier or BinOp', + expr: 'sum() b', + pos: 7, // cursor is after the 'b' + expectedContext: [{ kind: ContextKind.AggregateOpModifier }, { kind: ContextKind.BinOp }], + }, + { + title: 'autocomplete AggregateOpModifier or BinOp 2', + expr: 'sum(rate(foo[5m])) an', + pos: 21, + expectedContext: [{ kind: ContextKind.AggregateOpModifier }, { kind: ContextKind.BinOp }], + }, + { + title: 'autocomplete AggregateOpModifier or BinOp or Offset', + expr: 'sum b', + pos: 5, // cursor is after 'b' + expectedContext: [{ kind: ContextKind.AggregateOpModifier }, { kind: ContextKind.BinOp }, { kind: ContextKind.Offset }], + }, + { + title: 'autocomplete binOp', + expr: 'metric_name !', + pos: 13, + expectedContext: [{ kind: ContextKind.BinOp }], + }, + { + title: 'autocomplete binOp 2', + expr: 'metric_name =', + pos: 13, + expectedContext: [{ kind: ContextKind.BinOp }], + }, + { + title: 'autocomplete matchOp', + expr: 'go{instance=""}', + pos: 12, // cursor is after the 'equal' + expectedContext: [{ kind: ContextKind.MatchOp }], + }, + { + title: 'autocomplete matchOp 2', + expr: 'metric_name{labelName!}', + pos: 22, // cursor is after '!' + expectedContext: [{ kind: ContextKind.MatchOp }], + }, + { + title: 'autocomplete duration with offset', + expr: 'http_requests_total offset 5', + pos: 28, + expectedContext: [{ kind: ContextKind.Duration }], + }, + { + title: 'autocomplete duration with offset', + expr: 'sum(http_requests_total{method="GET"} offset 4)', + pos: 46, + expectedContext: [{ kind: ContextKind.Duration }], + }, + { + title: 'autocomplete offset or binOp', + expr: 'http_requests_total off', + pos: 23, + expectedContext: [{ kind: ContextKind.BinOp }, { kind: ContextKind.Offset }], + }, + { + title: 'autocomplete offset or binOp 2', + expr: 'metric_name unle', + pos: 16, + expectedContext: [{ kind: ContextKind.BinOp }, { kind: ContextKind.Offset }], + }, + { + title: 'autocomplete offset or binOp 3', + expr: 'http_requests_total{method="GET"} off', + pos: 37, + expectedContext: [{ kind: ContextKind.BinOp }, { kind: ContextKind.Offset }], + }, + { + title: 'autocomplete offset or binOp 4', + expr: 'rate(foo[5m]) un', + pos: 16, + expectedContext: [{ kind: ContextKind.BinOp }, { kind: ContextKind.Offset }], + }, + { + title: 'autocomplete offset or binop 5', + expr: 'sum(http_requests_total{method="GET"} off)', + pos: 41, + expectedContext: [{ kind: ContextKind.BinOp }, { kind: ContextKind.Offset }], + }, + { + title: 'not autocompleting duration for a matrixSelector', + expr: 'go[]', + pos: 3, + expectedContext: [], + }, + { + title: 'not autocompleting duration for a matrixSelector 2', + expr: 'go{l1="l2"}[]', + pos: 12, + expectedContext: [], + }, + { + title: 'autocomplete duration for a matrixSelector', + expr: 'go[5]', + pos: 4, + expectedContext: [{ kind: ContextKind.Duration }], + }, + { + title: 'autocomplete duration for a matrixSelector 2', + expr: 'go[5d1]', + pos: 6, + expectedContext: [{ kind: ContextKind.Duration }], + }, + { + title: 'autocomplete duration for a matrixSelector 3', + expr: 'rate(my_metric{l1="l2"}[25])', + pos: 26, + expectedContext: [{ kind: ContextKind.Duration }], + }, + { + title: 'autocomplete duration for a matrixSelector 4', + expr: 'rate(my_metric{l1="l2"}[25d5])', + pos: 28, + expectedContext: [{ kind: ContextKind.Duration }], + }, + { + title: 'autocomplete duration for a subQuery', + expr: 'go[5d:5]', + pos: 7, + expectedContext: [{ kind: ContextKind.Duration }], + }, + { + title: 'autocomplete duration for a subQuery 2', + expr: 'go[5d:5d4]', + pos: 9, + expectedContext: [{ kind: ContextKind.Duration }], + }, + { + title: 'autocomplete duration for a subQuery 3', + expr: 'rate(my_metric{l1="l2"}[25d:6])', + pos: 29, + expectedContext: [{ kind: ContextKind.Duration }], + }, + { + title: 'autocomplete duration for a subQuery 4', + expr: 'rate(my_metric{l1="l2"}[25d:6d5])', + pos: 31, + expectedContext: [{ kind: ContextKind.Duration }], + }, + { + title: 'autocomplete at modifiers', + expr: '1 @ s', + pos: 5, + expectedContext: [{ kind: ContextKind.AtModifiers }], + }, + ]; + testCases.forEach((value) => { + it(value.title, () => { + const state = createEditorState(value.expr); + const node = syntaxTree(state).resolve(value.pos, -1); + const result = analyzeCompletion(state, node); + chai.expect(value.expectedContext).to.deep.equal(result); + }); + }); +}); + +describe('computeStartCompletePosition test', () => { + const testCases = [ + { + title: 'empty bracket', + expr: '{}', + pos: 1, // cursor is between the bracket + expectedStart: 1, + }, + { + title: 'empty bracket 2', + expr: 'metricName{}', + pos: 11, // cursor is between the bracket + expectedStart: 11, + }, + { + title: 'empty bracket 3', + expr: 'sum by()', + pos: 7, // cursor is between the bracket + expectedStart: 7, + }, + { + title: 'empty bracket 4', + expr: 'sum by(test) ()', + pos: 14, // cursor is between the bracket + expectedStart: 14, + }, + { + title: 'empty bracket 5', + expr: 'sum()', + pos: 4, // cursor is between the bracket + expectedStart: 4, + }, + { + title: 'empty bracket 6', + expr: 'sum(rate())', + pos: 9, // cursor is between the bracket + expectedStart: 9, + }, + { + title: 'bracket containing a substring', + expr: '{myL}', + pos: 4, // cursor is between the bracket + expectedStart: 1, + }, + { + title: 'bracket containing a substring 2', + expr: '{myLabel="LabelValue",}', + pos: 22, // cursor is after the comma + expectedStart: 22, + }, + { + title: 'bracket containing a substring 2', + expr: 'metricName{myL}', + pos: 14, // cursor is between the bracket + expectedStart: 11, + }, + { + title: 'bracket containing a substring 3', + expr: 'metricName{myLabel="LabelValue",}', + pos: 32, // cursor is after the comma + expectedStart: 32, + }, + { + title: 'bracket containing a substring 4', + expr: 'sum by(myL)', + pos: 10, // cursor is between the bracket + expectedStart: 7, + }, + { + title: 'bracket containing a substring 5', + expr: 'sum by(myLabel,)', + pos: 15, // cursor is after the comma + expectedStart: 15, + }, + { + title: 'bracket containing a substring 6', + expr: 'sum(ra)', + pos: 6, // cursor is between the bracket + expectedStart: 4, + }, + { + title: 'bracket containing a substring 7', + expr: 'sum(rate(my))', + pos: 11, // cursor is between the bracket + expectedStart: 9, + }, + { + title: 'start should not be at the beginning of the substring', + expr: 'metric_name{labelName!}', + pos: 22, + expectedStart: 21, + }, + { + title: 'start should not be at the beginning of the substring 2', + expr: 'metric_name{labelName!="labelValue"}', + pos: 22, + expectedStart: 21, + }, + { + title: 'start should be equal to the pos for the duration of an offset', + expr: 'http_requests_total offset 5', + pos: 28, + expectedStart: 28, + }, + { + title: 'start should be equal to the pos for the duration of an offset 2', + expr: 'http_requests_total offset 587', + pos: 30, + expectedStart: 30, + }, + { + title: 'start should be equal to the pos for the duration of an offset 3', + expr: 'http_requests_total offset 587', + pos: 29, + expectedStart: 29, + }, + { + title: 'start should be equal to the pos for the duration of an offset 4', + expr: 'sum(http_requests_total{method="GET"} offset 4)', + pos: 46, + expectedStart: 46, + }, + { + title: 'start should not be equal to the pos for the duration in a matrix selector', + expr: 'go[]', + pos: 3, + expectedStart: 0, + }, + { + title: 'start should be equal to the pos for the duration in a matrix selector', + expr: 'go[5]', + pos: 4, + expectedStart: 4, + }, + { + title: 'start should be equal to the pos for the duration in a matrix selector 2', + expr: 'go[5d5]', + pos: 6, + expectedStart: 6, + }, + { + title: 'start should be equal to the pos for the duration in a matrix selector 3', + expr: 'rate(my_metric{l1="l2"}[25])', + pos: 26, + expectedStart: 26, + }, + { + title: 'start should be equal to the pos for the duration in a matrix selector 4', + expr: 'rate(my_metric{l1="l2"}[25d5])', + pos: 28, + expectedStart: 28, + }, + { + title: 'start should be equal to the pos for the duration in a subquery selector', + expr: 'go[5d:5]', + pos: 7, + expectedStart: 7, + }, + { + title: 'start should be equal to the pos for the duration in a subquery selector 2', + expr: 'go[5d:5d5]', + pos: 9, + expectedStart: 9, + }, + { + title: 'start should be equal to the pos for the duration in a subquery selector 3', + expr: 'rate(my_metric{l1="l2"}[25d:6])', + pos: 29, + expectedStart: 29, + }, + { + title: 'start should be equal to the pos for the duration in a subquery selector 3', + expr: 'rate(my_metric{l1="l2"}[25d:6d5])', + pos: 31, + expectedStart: 31, + }, + ]; + testCases.forEach((value) => { + it(value.title, () => { + const state = createEditorState(value.expr); + const node = syntaxTree(state).resolve(value.pos, -1); + const result = computeStartCompletePosition(node, value.pos); + chai.expect(value.expectedStart).to.equal(result); + }); + }); +}); + +describe('autocomplete promQL test', () => { + beforeEach(() => { + mockPrometheusServer(); + }); + const testCases = [ + { + title: 'offline empty expr', + expr: '', + pos: 0, + expectedResult: { + options: ([] as Completion[]).concat(functionIdentifierTerms, aggregateOpTerms, numberTerms, snippets), + from: 0, + to: 0, + span: /^[a-zA-Z0-9_:]+$/, + }, + }, + { + title: 'offline simple function/aggregation/number autocompletion', + expr: 'go_', + pos: 3, + expectedResult: { + options: ([] as Completion[]).concat(functionIdentifierTerms, aggregateOpTerms, numberTerms, snippets), + from: 0, + to: 3, + span: /^[a-zA-Z0-9_:]+$/, + }, + }, + { + title: 'offline function/aggregation autocompletion in aggregation', + expr: 'sum()', + pos: 4, + expectedResult: { + options: ([] as Completion[]).concat(functionIdentifierTerms, aggregateOpTerms, snippets), + from: 4, + to: 4, + span: /^[a-zA-Z0-9_:]+$/, + }, + }, + { + title: 'offline function/aggregation autocompletion in aggregation 2', + expr: 'sum(ra)', + pos: 6, + expectedResult: { + options: ([] as Completion[]).concat(functionIdentifierTerms, aggregateOpTerms, snippets), + from: 4, + to: 6, + span: /^[a-zA-Z0-9_:]+$/, + }, + }, + { + title: 'offline function/aggregation autocompletion in aggregation 3', + expr: 'sum(rate())', + pos: 9, + expectedResult: { + options: ([] as Completion[]).concat(functionIdentifierTerms, aggregateOpTerms, snippets), + from: 9, + to: 9, + span: /^[a-zA-Z0-9_:]+$/, + }, + }, + { + title: 'offline function/aggregation autocompletion in aggregation 4', + expr: 'sum by (instance, job) ( sum_over(scrape_series_added[1h])) / sum by (instance, job) (sum_over_time(scrape_samples_scraped[1h])) > 0.1 and sum by(instance, job) (scrape_samples_scraped{) > 100', + pos: 33, + expectedResult: { + options: ([] as Completion[]).concat(functionIdentifierTerms, aggregateOpTerms, snippets), + from: 25, + to: 33, + span: /^[a-zA-Z0-9_:]+$/, + }, + }, + { + title: 'autocomplete binOp modifier/metric/number', + expr: 'metric_name / ignor', + pos: 19, + expectedResult: { + options: ([] as Completion[]).concat(functionIdentifierTerms, aggregateOpTerms, binOpModifierTerms, numberTerms, snippets), + from: 14, + to: 19, + span: /^[a-zA-Z0-9_:]+$/, + }, + }, + { + title: 'autocomplete binOp modifier/metric/number 2', + expr: 'sum(http_requests_total{method="GET"} / o)', + pos: 41, + expectedResult: { + options: ([] as Completion[]).concat(functionIdentifierTerms, aggregateOpTerms, binOpModifierTerms, numberTerms, snippets), + from: 40, + to: 41, + span: /^[a-zA-Z0-9_:]+$/, + }, + }, + { + title: 'offline autocomplete labelName return nothing', + expr: 'sum by ()', + pos: 8, // cursor is between the bracket + expectedResult: { + options: [], + from: 8, + to: 8, + span: /^[a-zA-Z0-9_:]+$/, + }, + }, + { + title: 'offline autocomplete labelName return nothing 2', + expr: 'sum by (myL)', + pos: 11, // cursor is between the bracket after the string myL + expectedResult: { + options: [], + from: 8, + to: 11, + span: /^[a-zA-Z0-9_:]+$/, + }, + }, + { + title: 'offline autocomplete labelName return nothing 3', + expr: 'sum by (myLabel1, myLab)', + pos: 23, // cursor is between the bracket after the string myLab + expectedResult: { + options: [], + from: 18, + to: 23, + span: /^[a-zA-Z0-9_:]+$/, + }, + }, + { + title: 'offline autocomplete labelName return nothing 4', + expr: 'metric_name{}', + pos: 12, // cursor is between the bracket + expectedResult: { + options: [], + from: 12, + to: 12, + span: /^[a-zA-Z0-9_:]+$/, + }, + }, + { + title: 'offline autocomplete labelName return nothing 5', + expr: '{}', + pos: 1, // cursor is between the bracket + expectedResult: { + options: [], + from: 1, + to: 1, + span: /^[a-zA-Z0-9_:]+$/, + }, + }, + { + title: 'offline autocomplete labelName return nothing 6', + expr: 'metric_name{myL}', + pos: 15, // cursor is between the bracket after the string myL + expectedResult: { + options: [], + from: 12, + to: 15, + span: /^[a-zA-Z0-9_:]+$/, + }, + }, + { + title: 'offline autocomplete labelName return nothing 7', + expr: '{myL}', + pos: 4, // cursor is between the bracket after the string myL + expectedResult: { + options: [], + from: 1, + to: 4, + span: /^[a-zA-Z0-9_:]+$/, + }, + }, + { + title: 'offline autocomplete labelValue return nothing', + expr: 'metric_name{labelName=""}', + pos: 23, // cursor is between the quotes + expectedResult: { + options: [], + from: 23, + to: 23, + span: /^[a-zA-Z0-9_:]+$/, + }, + }, + { + title: 'offline autocomplete labelValue return nothing 2', + expr: '{labelName=""}', + pos: 12, // cursor is between the quotes + expectedResult: { + options: [], + from: 12, + to: 12, + span: /^[a-zA-Z0-9_:]+$/, + }, + }, + { + title: 'offline autocomplete aggregate operation modifier or binary operator', + expr: 'sum() b', + pos: 7, // cursor is after 'b' + expectedResult: { + options: ([] as Completion[]).concat(aggregateOpModifierTerms, binOpTerms), + from: 6, + to: 7, + span: /^[a-zA-Z0-9_:]+$/, + }, + }, + { + title: 'offline autocomplete aggregate operation modifier or binary operator 2', + expr: 'sum(rate(foo[5m])) an', + pos: 21, // cursor is after the string 'an' + expectedResult: { + options: ([] as Completion[]).concat(aggregateOpModifierTerms, binOpTerms), + from: 19, + to: 21, + span: /^[a-zA-Z0-9_:]+$/, + }, + }, + { + title: 'offline autocomplete aggregate operation modifier or binary operator or offset', + expr: 'sum b', + pos: 5, // cursor is after 'b' + expectedResult: { + options: ([] as Completion[]).concat(aggregateOpModifierTerms, binOpTerms, [{ label: 'offset' }]), + from: 4, + to: 5, + span: /^[a-zA-Z0-9_:]+$/, + }, + }, + { + title: 'offline autocomplete binOp', + expr: 'metric_name !', + pos: 13, + expectedResult: { + options: binOpTerms, + from: 12, + to: 13, + span: /^[a-zA-Z0-9_:]+$/, + }, + }, + { + title: 'offline autocomplete binOp 2', + expr: 'metric_name =', + pos: 13, + expectedResult: { + options: binOpTerms, + from: 12, + to: 13, + span: /^[a-zA-Z0-9_:]+$/, + }, + }, + { + title: 'offline autocomplete matchOp', + expr: 'go{instance=""}', + pos: 12, // cursor is after the 'equal' + expectedResult: { + options: matchOpTerms, + from: 11, + to: 12, + span: /^[a-zA-Z0-9_:]+$/, + }, + }, + { + title: 'offline autocomplete matchOp 2', + expr: 'metric_name{labelName!}', + pos: 22, // cursor is after '!' + expectedResult: { + options: matchOpTerms, + from: 21, + to: 22, + span: /^[a-zA-Z0-9_:]+$/, + }, + }, + { + title: 'offline autocomplete duration with offset', + expr: 'http_requests_total offset 5', + pos: 28, + expectedResult: { + options: durationTerms, + from: 28, + to: 28, + span: undefined, + }, + }, + { + title: 'offline autocomplete duration with offset 2', + expr: 'sum(http_requests_total{method="GET"} offset 4)', + pos: 46, + expectedResult: { + options: durationTerms, + from: 46, + to: 46, + span: undefined, + }, + }, + { + title: 'offline autocomplete offset or binOp', + expr: 'http_requests_total off', + pos: 23, + expectedResult: { + options: ([] as Completion[]).concat(binOpTerms, [{ label: 'offset' }]), + from: 20, + to: 23, + span: /^[a-zA-Z0-9_:]+$/, + }, + }, + { + title: 'offline autocomplete offset or binOp 2', + expr: 'metric_name unle', + pos: 16, + expectedResult: { + options: ([] as Completion[]).concat(binOpTerms, [{ label: 'offset' }]), + from: 12, + to: 16, + span: /^[a-zA-Z0-9_:]+$/, + }, + }, + { + title: 'offline autocomplete offset or binOp 3', + expr: 'http_requests_total{method="GET"} off', + pos: 37, + expectedResult: { + options: ([] as Completion[]).concat(binOpTerms, [{ label: 'offset' }]), + from: 34, + to: 37, + span: /^[a-zA-Z0-9_:]+$/, + }, + }, + { + title: 'offline autocomplete offset or binOp 4', + expr: 'rate(foo[5m]) un', + pos: 16, + expectedResult: { + options: ([] as Completion[]).concat(binOpTerms, [{ label: 'offset' }]), + from: 14, + to: 16, + span: /^[a-zA-Z0-9_:]+$/, + }, + }, + { + title: 'autocomplete offset or binop 5', + expr: 'sum(http_requests_total{method="GET"} off)', + pos: 41, + expectedResult: { + options: ([] as Completion[]).concat(binOpTerms, [{ label: 'offset' }]), + from: 38, + to: 41, + span: /^[a-zA-Z0-9_:]+$/, + }, + }, + { + title: 'offline not autocompleting duration for a matrixSelector', + expr: 'go[]', + pos: 3, + expectedResult: { + options: [], + from: 0, + to: 3, + span: /^[a-zA-Z0-9_:]+$/, + }, + }, + { + title: 'offline not autocompleting duration for a matrixSelector 2', + expr: 'go{l1="l2"}[]', + pos: 12, + expectedResult: { + options: [], + from: 0, + to: 12, + span: /^[a-zA-Z0-9_:]+$/, + }, + }, + { + title: 'offline autocomplete duration for a matrixSelector', + expr: 'go[5]', + pos: 4, + expectedResult: { + options: durationTerms, + from: 4, + to: 4, + span: undefined, + }, + }, + { + title: 'offline autocomplete duration for a matrixSelector 2', + expr: 'go[5d1]', + pos: 6, + expectedResult: { + options: durationTerms, + from: 6, + to: 6, + span: undefined, + }, + }, + { + title: 'offline autocomplete duration for a matrixSelector 3', + expr: 'rate(my_metric{l1="l2"}[25])', + pos: 26, + expectedResult: { + options: durationTerms, + from: 26, + to: 26, + span: undefined, + }, + }, + { + title: 'offline autocomplete duration for a matrixSelector 4', + expr: 'rate(my_metric{l1="l2"}[25d5])', + pos: 28, + expectedResult: { + options: durationTerms, + from: 28, + to: 28, + span: undefined, + }, + }, + { + title: 'offline autocomplete duration for a subQuery', + expr: 'go[5d:5]', + pos: 7, + expectedResult: { + options: durationTerms, + from: 7, + to: 7, + span: undefined, + }, + }, + { + title: 'offline autocomplete duration for a subQuery 2', + expr: 'go[5d:5d4]', + pos: 9, + expectedResult: { + options: durationTerms, + from: 9, + to: 9, + span: undefined, + }, + }, + { + title: 'offline autocomplete duration for a subQuery 3', + expr: 'rate(my_metric{l1="l2"}[25d:6])', + pos: 29, + expectedResult: { + options: durationTerms, + from: 29, + to: 29, + span: undefined, + }, + }, + { + title: 'offline autocomplete duration for a subQuery 4', + expr: 'rate(my_metric{l1="l2"}[25d:6d5])', + pos: 31, + expectedResult: { + options: durationTerms, + from: 31, + to: 31, + span: undefined, + }, + }, + { + title: 'offline autocomplete at modifiers', + expr: '1 @ s', + pos: 5, + expectedResult: { + options: atModifierTerms, + from: 4, + to: 5, + span: /^[a-zA-Z0-9_:]+$/, + }, + }, + { + title: 'online autocomplete of metrics', + expr: 'alert', + pos: 5, + conf: { remote: { url: 'http://localhost:8080' } }, + expectedResult: { + options: ([] as Completion[]).concat(mockedMetricsTerms, functionIdentifierTerms, aggregateOpTerms, numberTerms, snippets), + from: 0, + to: 5, + span: /^[a-zA-Z0-9_:]+$/, + }, + }, + { + title: 'online autocomplete of label name corresponding to a metric', + expr: 'alertmanager_alerts{}', + pos: 20, + conf: { remote: { url: 'http://localhost:8080' } }, + expectedResult: { + options: [ + { + label: 'env', + type: 'constant', + }, + { + label: 'instance', + type: 'constant', + }, + { + label: 'job', + type: 'constant', + }, + { + label: 'state', + type: 'constant', + }, + ], + from: 20, + to: 20, + span: /^[a-zA-Z0-9_:]+$/, + }, + }, + { + title: 'online autocomplete of label value corresponding to a metric and a label name', + expr: 'alertmanager_alerts{env=""}', + pos: 25, + conf: { remote: { url: 'http://localhost:8080' } }, + expectedResult: { + options: [ + { + label: 'demo', + type: 'text', + }, + ], + from: 25, + to: 25, + span: /^[a-zA-Z0-9_:]+$/, + }, + }, + ]; + testCases.forEach((value) => { + it(value.title, async () => { + const state = createEditorState(value.expr); + const context = new CompletionContext(state, value.pos, true); + const completion = newCompleteStrategy(value.conf); + const result = await completion.promQL(context); + chai.expect(value.expectedResult).to.deep.equal(result); + }); + }); +}); diff --git a/web/ui/module/codemirror-promql/src/complete/hybrid.ts b/web/ui/module/codemirror-promql/src/complete/hybrid.ts new file mode 100644 index 000000000..8e1c3d4c9 --- /dev/null +++ b/web/ui/module/codemirror-promql/src/complete/hybrid.ts @@ -0,0 +1,651 @@ +// Copyright 2021 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { CompleteStrategy } from './index'; +import { SyntaxNode } from '@lezer/common'; +import { PrometheusClient } from '../client'; +import { + Add, + AggregateExpr, + And, + BinaryExpr, + BinModifiers, + Bool, + Div, + Duration, + Eql, + EqlRegex, + EqlSingle, + Expr, + FunctionCallArgs, + FunctionCallBody, + GroupingLabel, + GroupingLabels, + Gte, + Gtr, + Identifier, + LabelMatcher, + LabelMatchers, + LabelMatchList, + LabelName, + Lss, + Lte, + MatchOp, + MatrixSelector, + MetricIdentifier, + Mod, + Mul, + Neq, + NeqRegex, + NumberLiteral, + OffsetExpr, + Or, + Pow, + PromQL, + StepInvariantExpr, + StringLiteral, + Sub, + SubqueryExpr, + Unless, + VectorSelector, +} from '../grammar/parser.terms'; +import { Completion, CompletionContext, CompletionResult } from '@codemirror/autocomplete'; +import { EditorState } from '@codemirror/state'; +import { buildLabelMatchers, containsAtLeastOneChild, containsChild, retrieveAllRecursiveNodes, walkBackward, walkThrough } from '../parser'; +import { + aggregateOpModifierTerms, + aggregateOpTerms, + atModifierTerms, + binOpModifierTerms, + binOpTerms, + durationTerms, + functionIdentifierTerms, + matchOpTerms, + numberTerms, + snippets, +} from './promql.terms'; +import { Matcher } from '../types'; +import { syntaxTree } from '@codemirror/language'; + +const autocompleteNodes: { [key: string]: Completion[] } = { + matchOp: matchOpTerms, + binOp: binOpTerms, + duration: durationTerms, + binOpModifier: binOpModifierTerms, + atModifier: atModifierTerms, + functionIdentifier: functionIdentifierTerms, + aggregateOp: aggregateOpTerms, + aggregateOpModifier: aggregateOpModifierTerms, + number: numberTerms, +}; + +// ContextKind is the different possible value determinate by the autocompletion +export enum ContextKind { + // dynamic autocompletion (required a distant server) + MetricName, + LabelName, + LabelValue, + // static autocompletion + Function, + Aggregation, + BinOpModifier, + BinOp, + MatchOp, + AggregateOpModifier, + Duration, + Offset, + Bool, + AtModifiers, + Number, +} + +export interface Context { + kind: ContextKind; + metricName?: string; + labelName?: string; + matchers?: Matcher[]; +} + +function getMetricNameInVectorSelector(tree: SyntaxNode, state: EditorState): string { + // Find if there is a defined metric name. Should be used to autocomplete a labelValue or a labelName + // First find the parent "VectorSelector" to be able to find then the subChild "MetricIdentifier" if it exists. + let currentNode: SyntaxNode | null = walkBackward(tree, VectorSelector); + if (!currentNode) { + // Weird case that shouldn't happen, because "VectorSelector" is by definition the parent of the LabelMatchers. + return ''; + } + currentNode = walkThrough(currentNode, MetricIdentifier, Identifier); + if (!currentNode) { + return ''; + } + return state.sliceDoc(currentNode.from, currentNode.to); +} + +function arrayToCompletionResult(data: Completion[], from: number, to: number, includeSnippet = false, span = true): CompletionResult { + const options = data; + if (includeSnippet) { + options.push(...snippets); + } + return { + from: from, + to: to, + options: options, + span: span ? /^[a-zA-Z0-9_:]+$/ : undefined, + } as CompletionResult; +} + +// computeStartCompleteLabelPositionInLabelMatcherOrInGroupingLabel calculates the start position only when the node is a LabelMatchers or a GroupingLabels +function computeStartCompleteLabelPositionInLabelMatcherOrInGroupingLabel(node: SyntaxNode, pos: number): number { + // Here we can have two different situations: + // 1. `metric{}` or `sum by()` with the cursor between the bracket + // and so we have increment the starting position to avoid to consider the open bracket when filtering the autocompletion list. + // 2. `metric{foo="bar",} or `sum by(foo,) with the cursor after the comma. + // Then the start number should be the current position to avoid to consider the previous labelMatcher/groupingLabel when filtering the autocompletion list. + let start = node.from + 1; + if (node.firstChild !== null) { + // here that means the LabelMatchers / GroupingLabels has a child, which is not possible if we have the expression `metric{}`. So we are likely trying to autocomplete the label list after a comma + start = pos; + } + return start; +} + +// computeStartCompletePosition calculates the start position of the autocompletion. +// It is an important step because the start position will be used by CMN to find the string and then to use it to filter the CompletionResult. +// A wrong `start` position will lead to have the completion not working. +// Note: this method is exported only for testing purpose. +export function computeStartCompletePosition(node: SyntaxNode, pos: number): number { + let start = node.from; + if (node.type.id === LabelMatchers || node.type.id === GroupingLabels) { + start = computeStartCompleteLabelPositionInLabelMatcherOrInGroupingLabel(node, pos); + } else if (node.type.id === FunctionCallBody || (node.type.id === StringLiteral && node.parent?.type.id === LabelMatcher)) { + // When the cursor is between bracket, quote, we need to increment the starting position to avoid to consider the open bracket/ first string. + start++; + } else if ( + node.type.id === OffsetExpr || + (node.type.id === NumberLiteral && node.parent?.type.id === 0 && node.parent.parent?.type.id === SubqueryExpr) || + (node.type.id === 0 && + (node.parent?.type.id === OffsetExpr || + node.parent?.type.id === MatrixSelector || + (node.parent?.type.id === SubqueryExpr && containsAtLeastOneChild(node.parent, Duration)))) + ) { + start = pos; + } + return start; +} + +// analyzeCompletion is going to determinate what should be autocompleted. +// The value of the autocompletion is then calculate by the function buildCompletion. +// Note: this method is exported for testing purpose only. Do not use it directly. +export function analyzeCompletion(state: EditorState, node: SyntaxNode): Context[] { + const result: Context[] = []; + switch (node.type.id) { + case 0: // 0 is the id of the error node + if (node.parent?.type.id === OffsetExpr) { + // we are likely in the given situation: + // `metric_name offset 5` that leads to this tree: + // `Expr(OffsetExpr(Expr(VectorSelector(MetricIdentifier(Identifier))),Offset,⚠))` + // Here we can just autocomplete a duration. + result.push({ kind: ContextKind.Duration }); + break; + } + if (node.parent?.type.id === LabelMatcher) { + // In this case the current token is not itself a valid match op yet: + // metric_name{labelName!} + result.push({ kind: ContextKind.MatchOp }); + break; + } + if (node.parent?.type.id === MatrixSelector) { + // we are likely in the given situation: + // `metric_name{}[5]` + // We can also just autocomplete a duration + result.push({ kind: ContextKind.Duration }); + break; + } + if (node.parent?.type.id === SubqueryExpr && containsAtLeastOneChild(node.parent, Duration)) { + // we are likely in the given situation: + // `rate(foo[5d:5])` + // so we should autocomplete a duration + result.push({ kind: ContextKind.Duration }); + break; + } + // when we are in the situation 'metric_name !', we have the following tree + // Expr(VectorSelector(MetricIdentifier(Identifier),⚠)) + // We should try to know if the char '!' is part of a binOp. + // Note: as it is quite experimental, maybe it requires more condition and to check the current tree (parent, other child at the same level ..etc.). + const operator = state.sliceDoc(node.from, node.to); + if (binOpTerms.filter((term) => term.label.includes(operator)).length > 0) { + result.push({ kind: ContextKind.BinOp }); + } + break; + case Identifier: + // sometimes an Identifier has an error has parent. This should be treated in priority + if (node.parent?.type.id === 0) { + const errorNodeParent = node.parent.parent; + if (errorNodeParent?.type.id === StepInvariantExpr) { + // we are likely in the given situation: + // `expr @ s` + // we can autocomplete start / end + result.push({ kind: ContextKind.AtModifiers }); + break; + } + if (errorNodeParent?.type.id === AggregateExpr) { + // it matches 'sum() b'. So here we can autocomplete: + // - the aggregate operation modifier + // - the binary operation (since it's not mandatory to have an aggregate operation modifier) + result.push({ kind: ContextKind.AggregateOpModifier }, { kind: ContextKind.BinOp }); + break; + } + if (errorNodeParent?.type.id === VectorSelector) { + // it matches 'sum b'. So here we also have to autocomplete the aggregate operation modifier only + // if the associated metricIdentifier is matching an aggregation operation. + // Note: here is the corresponding tree in order to understand the situation: + // Expr( + // VectorSelector( + // MetricIdentifier(Identifier), + // ⚠(Identifier) + // ) + // ) + const operator = getMetricNameInVectorSelector(node, state); + if (aggregateOpTerms.filter((term) => term.label === operator).length > 0) { + result.push({ kind: ContextKind.AggregateOpModifier }); + } + // It's possible it also match the expr 'metric_name unle'. + // It's also possible that the operator is also a metric even if it matches the list of aggregation function. + // So we also have to autocomplete the binary operator. + // + // The expr `metric_name off` leads to the same tree. So we have to provide the offset keyword too here. + result.push({ kind: ContextKind.BinOp }, { kind: ContextKind.Offset }); + break; + } + + if (errorNodeParent && containsChild(errorNodeParent, Expr)) { + // this last case can appear with the following expression: + // 1. http_requests_total{method="GET"} off + // 2. rate(foo[5m]) un + // 3. sum(http_requests_total{method="GET"} off) + // For these different cases we have this kind of tree: + // Parent ( + // Expr(), + // ⚠(Identifier) + // ) + // We don't really care about the parent, here we are more interested if in the siblings of the error node, there is the node 'Expr' + // If it is the case, then likely we should autocomplete the BinOp or the offset. + result.push({ kind: ContextKind.BinOp }, { kind: ContextKind.Offset }); + break; + } + } + // As the leaf Identifier is coming for different cases, we have to take a bit time to analyze the tree + // in order to know what we have to autocomplete exactly. + // Here is some cases: + // 1. metric_name / ignor --> we should autocomplete the BinOpModifier + metric/function/aggregation + // 2. sum(http_requests_total{method="GET"} / o) --> BinOpModifier + metric/function/aggregation + // Examples above give a different tree each time and ends up to be treated in this case. + // But they all have the following common tree pattern: + // Parent( Expr(...), + // ... , + // Expr(VectorSelector(MetricIdentifier(Identifier))) + // ) + // + // So the first things to do is to get the `Parent` and to determinate if we are in this configuration. + // Otherwise we would just have to autocomplete the metric / function / aggregation. + + const parent = node.parent?.parent?.parent?.parent; + if (!parent) { + // this case can be possible if the topNode is not anymore PromQL but MetricName. + // In this particular case, then we just want to autocomplete the metric + result.push({ kind: ContextKind.MetricName, metricName: state.sliceDoc(node.from, node.to) }); + break; + } + // now we have to know if we have two Expr in the direct children of the `parent` + const containExprTwice = containsChild(parent, Expr, Expr); + if (containExprTwice) { + if (parent.type.id === BinaryExpr && !containsAtLeastOneChild(parent, 0)) { + // We are likely in the case 1 or 5 + result.push( + { kind: ContextKind.MetricName, metricName: state.sliceDoc(node.from, node.to) }, + { kind: ContextKind.Function }, + { kind: ContextKind.Aggregation }, + { kind: ContextKind.BinOpModifier }, + { kind: ContextKind.Number } + ); + // in case the BinaryExpr is a comparison, we should autocomplete the `bool` keyword. But only if it is not present. + // When the `bool` keyword is NOT present, then the expression looks like this: + // BinaryExpr( Expr(...), Gtr , BinModifiers, Expr(...) ) + // When the `bool` keyword is present, then the expression looks like this: + // BinaryExpr( Expr(...), Gtr , BinModifiers(Bool), Expr(...) ) + // To know if it is not present, we just have to check if the Bool is not present as a child of the BinModifiers. + if (containsAtLeastOneChild(parent, Eql, Gte, Gtr, Lte, Lss, Neq) && !walkThrough(parent, BinModifiers, Bool)) { + result.push({ kind: ContextKind.Bool }); + } + } + } else { + result.push( + { kind: ContextKind.MetricName, metricName: state.sliceDoc(node.from, node.to) }, + { kind: ContextKind.Function }, + { kind: ContextKind.Aggregation } + ); + if (parent.type.id !== FunctionCallArgs && parent.type.id !== MatrixSelector) { + // it's too avoid to autocomplete a number in situation where it shouldn't. + // Like with `sum by(rat)` + result.push({ kind: ContextKind.Number }); + } + } + break; + case PromQL: + if (!node.firstChild) { + // this situation can happen when there is nothing in the text area and the user is explicitly triggering the autocompletion (with ctrl + space) + result.push( + { kind: ContextKind.MetricName, metricName: '' }, + { kind: ContextKind.Function }, + { kind: ContextKind.Aggregation }, + { kind: ContextKind.Number } + ); + } + break; + case GroupingLabels: + // In this case we are in the given situation: + // sum by () + // So we have to autocomplete any labelName + result.push({ kind: ContextKind.LabelName }); + break; + case LabelMatchers: + // In that case we are in the given situation: + // metric_name{} or {} + // so we have or to autocomplete any kind of labelName or to autocomplete only the labelName associated to the metric + result.push({ kind: ContextKind.LabelName, metricName: getMetricNameInVectorSelector(node, state) }); + break; + case LabelName: + if (node.parent?.type.id === GroupingLabel) { + // In this case we are in the given situation: + // sum by (myL) + // So we have to continue to autocomplete any kind of labelName + result.push({ kind: ContextKind.LabelName }); + } else if (node.parent?.type.id === LabelMatcher) { + // In that case we are in the given situation: + // metric_name{myL} or {myL} + // so we have or to continue to autocomplete any kind of labelName or + // to continue to autocomplete only the labelName associated to the metric + result.push({ kind: ContextKind.LabelName, metricName: getMetricNameInVectorSelector(node, state) }); + } + break; + case StringLiteral: + if (node.parent?.type.id === LabelMatcher) { + // In this case we are in the given situation: + // metric_name{labelName=""} + // So we can autocomplete the labelValue + + // Get the labelName. + // By definition it's the firstChild: https://github.com/promlabs/lezer-promql/blob/0ef65e196a8db6a989ff3877d57fd0447d70e971/src/promql.grammar#L250 + let labelName = ''; + if (node.parent.firstChild?.type.id === LabelName) { + labelName = state.sliceDoc(node.parent.firstChild.from, node.parent.firstChild.to); + } + // then find the metricName if it exists + const metricName = getMetricNameInVectorSelector(node, state); + // finally get the full matcher available + const labelMatchers = buildLabelMatchers(retrieveAllRecursiveNodes(walkBackward(node, LabelMatchList), LabelMatchList, LabelMatcher), state); + result.push({ + kind: ContextKind.LabelValue, + metricName: metricName, + labelName: labelName, + matchers: labelMatchers, + }); + } + break; + case NumberLiteral: + if (node.parent?.type.id === 0 && node.parent.parent?.type.id === SubqueryExpr) { + // Here we are likely in this situation: + // `go[5d:4]` + // and we have the given tree: + // Expr( SubqueryExpr( + // Expr(VectorSelector(MetricIdentifier(Identifier))), + // Duration, Duration, ⚠(NumberLiteral) + // )) + // So we should continue to autocomplete a duration + result.push({ kind: ContextKind.Duration }); + } else { + result.push({ kind: ContextKind.Number }); + } + break; + case Duration: + case OffsetExpr: + result.push({ kind: ContextKind.Duration }); + break; + case FunctionCallBody: + // In this case we are in the given situation: + // sum() or in rate() + // with the cursor between the bracket. So we can autocomplete the metric, the function and the aggregation. + result.push({ kind: ContextKind.MetricName, metricName: '' }, { kind: ContextKind.Function }, { kind: ContextKind.Aggregation }); + break; + case Neq: + if (node.parent?.type.id === MatchOp) { + result.push({ kind: ContextKind.MatchOp }); + } else if (node.parent?.type.id === BinaryExpr) { + result.push({ kind: ContextKind.BinOp }); + } + break; + case EqlSingle: + case EqlRegex: + case NeqRegex: + case MatchOp: + result.push({ kind: ContextKind.MatchOp }); + break; + case Pow: + case Mul: + case Div: + case Mod: + case Add: + case Sub: + case Eql: + case Gte: + case Gtr: + case Lte: + case Lss: + case And: + case Unless: + case Or: + case BinaryExpr: + result.push({ kind: ContextKind.BinOp }); + break; + } + return result; +} + +// HybridComplete provides a full completion result with or without a remote prometheus. +export class HybridComplete implements CompleteStrategy { + private readonly prometheusClient: PrometheusClient | undefined; + private readonly maxMetricsMetadata: number; + + constructor(prometheusClient?: PrometheusClient, maxMetricsMetadata = 10000) { + this.prometheusClient = prometheusClient; + this.maxMetricsMetadata = maxMetricsMetadata; + } + + getPrometheusClient(): PrometheusClient | undefined { + return this.prometheusClient; + } + + promQL(context: CompletionContext): Promise | CompletionResult | null { + const { state, pos } = context; + const tree = syntaxTree(state).resolve(pos, -1); + const contexts = analyzeCompletion(state, tree); + let asyncResult: Promise = Promise.resolve([]); + let completeSnippet = false; + let span = true; + for (const context of contexts) { + switch (context.kind) { + case ContextKind.Aggregation: + completeSnippet = true; + asyncResult = asyncResult.then((result) => { + return result.concat(autocompleteNodes.aggregateOp); + }); + break; + case ContextKind.Function: + completeSnippet = true; + asyncResult = asyncResult.then((result) => { + return result.concat(autocompleteNodes.functionIdentifier); + }); + break; + case ContextKind.BinOpModifier: + asyncResult = asyncResult.then((result) => { + return result.concat(autocompleteNodes.binOpModifier); + }); + break; + case ContextKind.BinOp: + asyncResult = asyncResult.then((result) => { + return result.concat(autocompleteNodes.binOp); + }); + break; + case ContextKind.MatchOp: + asyncResult = asyncResult.then((result) => { + return result.concat(autocompleteNodes.matchOp); + }); + break; + case ContextKind.AggregateOpModifier: + asyncResult = asyncResult.then((result) => { + return result.concat(autocompleteNodes.aggregateOpModifier); + }); + break; + case ContextKind.Duration: + span = false; + asyncResult = asyncResult.then((result) => { + return result.concat(autocompleteNodes.duration); + }); + break; + case ContextKind.Offset: + asyncResult = asyncResult.then((result) => { + return result.concat([{ label: 'offset' }]); + }); + break; + case ContextKind.Bool: + asyncResult = asyncResult.then((result) => { + return result.concat([{ label: 'bool' }]); + }); + break; + case ContextKind.AtModifiers: + asyncResult = asyncResult.then((result) => { + return result.concat(autocompleteNodes.atModifier); + }); + break; + case ContextKind.Number: + asyncResult = asyncResult.then((result) => { + return result.concat(autocompleteNodes.number); + }); + break; + case ContextKind.MetricName: + asyncResult = asyncResult.then((result) => { + return this.autocompleteMetricName(result, context); + }); + break; + case ContextKind.LabelName: + asyncResult = asyncResult.then((result) => { + return this.autocompleteLabelName(result, context); + }); + break; + case ContextKind.LabelValue: + asyncResult = asyncResult.then((result) => { + return this.autocompleteLabelValue(result, context); + }); + } + } + return asyncResult.then((result) => { + return arrayToCompletionResult(result, computeStartCompletePosition(tree, pos), pos, completeSnippet, span); + }); + } + + private autocompleteMetricName(result: Completion[], context: Context): Completion[] | Promise { + if (!this.prometheusClient) { + return result; + } + const metricCompletion = new Map(); + return this.prometheusClient + .metricNames(context.metricName) + .then((metricNames: string[]) => { + for (const metricName of metricNames) { + metricCompletion.set(metricName, { label: metricName, type: 'constant' }); + } + + // avoid to get all metric metadata if the prometheus server is too big + if (metricNames.length <= this.maxMetricsMetadata) { + // in order to enrich the completion list of the metric, + // we are trying to find the associated metadata + return this.prometheusClient?.metricMetadata(); + } + }) + .then((metricMetadata) => { + if (metricMetadata) { + for (const [metricName, node] of metricCompletion) { + // For histograms and summaries, the metadata is only exposed for the base metric name, + // not separately for the _count, _sum, and _bucket time series. + const metadata = metricMetadata[metricName.replace(/(_count|_sum|_bucket)$/, '')]; + if (metadata) { + if (metadata.length > 1) { + // it means the metricName has different possible helper and type + for (const m of metadata) { + if (node.detail === '') { + node.detail = m.type; + } else if (node.detail !== m.type) { + node.detail = 'unknown'; + node.info = 'multiple different definitions for this metric'; + } + + if (node.info === '') { + node.info = m.help; + } else if (node.info !== m.help) { + node.info = 'multiple different definitions for this metric'; + } + } + } else if (metadata.length === 1) { + let { type, help } = metadata[0]; + if (type === 'histogram' || type === 'summary') { + if (metricName.endsWith('_count')) { + type = 'counter'; + help = `The total number of observations for: ${help}`; + } + if (metricName.endsWith('_sum')) { + type = 'counter'; + help = `The total sum of observations for: ${help}`; + } + if (metricName.endsWith('_bucket')) { + type = 'counter'; + help = `The total count of observations for a bucket in the histogram: ${help}`; + } + } + node.detail = type; + node.info = help; + } + } + } + } + return result.concat(Array.from(metricCompletion.values())); + }); + } + + private autocompleteLabelName(result: Completion[], context: Context): Completion[] | Promise { + if (!this.prometheusClient) { + return result; + } + return this.prometheusClient.labelNames(context.metricName).then((labelNames: string[]) => { + return result.concat(labelNames.map((value) => ({ label: value, type: 'constant' }))); + }); + } + + private autocompleteLabelValue(result: Completion[], context: Context): Completion[] | Promise { + if (!this.prometheusClient || !context.labelName) { + return result; + } + return this.prometheusClient.labelValues(context.labelName, context.metricName, context.matchers).then((labelValues: string[]) => { + return result.concat(labelValues.map((value) => ({ label: value, type: 'text' }))); + }); + } +} diff --git a/web/ui/module/codemirror-promql/src/complete/index.ts b/web/ui/module/codemirror-promql/src/complete/index.ts new file mode 100644 index 000000000..9cff7165e --- /dev/null +++ b/web/ui/module/codemirror-promql/src/complete/index.ts @@ -0,0 +1,49 @@ +// Copyright 2021 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { HybridComplete } from './hybrid'; +import { CachedPrometheusClient, HTTPPrometheusClient, PrometheusClient, PrometheusConfig } from '../client/prometheus'; +import { CompletionContext, CompletionResult } from '@codemirror/autocomplete'; + +// Complete is the interface that defines the simple method that returns a CompletionResult. +// Every different completion mode must implement this interface. +export interface CompleteStrategy { + promQL(context: CompletionContext): Promise | CompletionResult | null; +} + +// CompleteConfiguration should be used to customize the autocompletion. +export interface CompleteConfiguration { + remote?: PrometheusConfig | PrometheusClient; + // maxMetricsMetadata is the maximum number of metrics in Prometheus for which metadata is fetched. + // If the number of metrics exceeds this limit, no metric metadata is fetched at all. + maxMetricsMetadata?: number; + // When providing this custom CompleteStrategy, the settings above will not be used. + completeStrategy?: CompleteStrategy; +} + +function isPrometheusConfig(remoteConfig: PrometheusConfig | PrometheusClient): remoteConfig is PrometheusConfig { + return (remoteConfig as PrometheusConfig).url !== undefined; +} + +export function newCompleteStrategy(conf?: CompleteConfiguration): CompleteStrategy { + if (conf?.completeStrategy) { + return conf.completeStrategy; + } + if (conf?.remote) { + if (!isPrometheusConfig(conf.remote)) { + return new HybridComplete(conf.remote, conf.maxMetricsMetadata); + } + return new HybridComplete(new CachedPrometheusClient(new HTTPPrometheusClient(conf.remote), conf.remote.cache), conf.maxMetricsMetadata); + } + return new HybridComplete(); +} diff --git a/web/ui/module/codemirror-promql/src/complete/promql.terms.ts b/web/ui/module/codemirror-promql/src/complete/promql.terms.ts new file mode 100644 index 000000000..4aba94e9f --- /dev/null +++ b/web/ui/module/codemirror-promql/src/complete/promql.terms.ts @@ -0,0 +1,584 @@ +// Copyright 2021 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { Completion, snippet } from '@codemirror/autocomplete'; + +export const durationTerms = [{ label: 'y' }, { label: 'w' }, { label: 'd' }, { label: 'h' }, { label: 'm' }, { label: 's' }, { label: 'ms' }]; +export const matchOpTerms = [{ label: '=' }, { label: '!=' }, { label: '=~' }, { label: '!~' }]; +export const binOpTerms = [ + { label: '^' }, + { label: '*' }, + { label: '/' }, + { label: '%' }, + { label: '+' }, + { label: '-' }, + { label: '==' }, + { label: '>=' }, + { label: '>' }, + { label: '<' }, + { label: '<=' }, + { label: '!=' }, + { label: 'atan2' }, + { label: 'and' }, + { label: 'or' }, + { label: 'unless' }, +]; + +export const binOpModifierTerms = [ + { label: 'on', info: 'Match only on specified labels', type: 'keyword' }, + { label: 'ignoring', info: 'Ignore specified labels for matching', type: 'keyword' }, + { label: 'group_left', info: 'Allow many-to-one matching', type: 'keyword' }, + { label: 'group_right', info: 'Allow one-to-many matching', type: 'keyword' }, +]; + +export const atModifierTerms = [ + { label: 'start()', info: 'resolve to the start of the query', type: 'keyword' }, + { label: 'end()', info: 'resolve to the end of the query', type: 'keyword' }, +]; + +export const functionIdentifierTerms = [ + { + label: 'abs', + detail: 'function', + info: 'Return absolute values of input series', + type: 'function', + }, + { + label: 'absent', + detail: 'function', + info: 'Determine whether input vector is empty', + type: 'function', + }, + { + label: 'absent_over_time', + detail: 'function', + info: 'Determine whether input range vector is empty', + type: 'function', + }, + { + label: 'acos', + detail: 'function', + info: 'Calculate the arccosine, in radians, for input series', + type: 'function', + }, + { + label: 'acosh', + detail: 'function', + info: 'Calculate the inverse hyperbolic cosine, in radians, for input series', + type: 'function', + }, + { + label: 'asin', + detail: 'function', + info: 'Calculate the arcsine, in radians, for input series', + type: 'function', + }, + { + label: 'asinh', + detail: 'function', + info: 'Calculate the inverse hyperbolic sine, in radians, for input series', + type: 'function', + }, + { + label: 'atan', + detail: 'function', + info: 'Calculate the arctangent, in radians, for input series', + type: 'function', + }, + { + label: 'atanh', + detail: 'function', + info: 'Calculate the inverse hyperbolic tangent, in radians, for input series', + type: 'function', + }, + { + label: 'avg_over_time', + detail: 'function', + info: 'Average series values over time', + type: 'function', + }, + { + label: 'ceil', + detail: 'function', + info: 'Round up values of input series to nearest integer', + type: 'function', + }, + { + label: 'changes', + detail: 'function', + info: 'Return number of value changes in input series over time', + type: 'function', + }, + { + label: 'clamp', + detail: 'function', + info: 'Limit the value of input series between a minimum and a maximum', + type: 'function', + }, + { + label: 'clamp_max', + detail: 'function', + info: 'Limit the value of input series to a maximum', + type: 'function', + }, + { + label: 'clamp_min', + detail: 'function', + info: 'Limit the value of input series to a minimum', + type: 'function', + }, + { + label: 'cos', + detail: 'function', + info: 'Calculate the cosine, in radians, for input series', + type: 'function', + }, + { + label: 'cosh', + detail: 'function', + info: 'Calculate the hyperbolic cosine, in radians, for input series', + type: 'function', + }, + { + label: 'count_over_time', + detail: 'function', + info: 'Count the number of values for each input series', + type: 'function', + }, + { + label: 'days_in_month', + detail: 'function', + info: 'Return the number of days in current month for provided timestamps', + type: 'function', + }, + { + label: 'day_of_month', + detail: 'function', + info: 'Return the day of the month for provided timestamps', + type: 'function', + }, + { + label: 'day_of_week', + detail: 'function', + info: 'Return the day of the week for provided timestamps', + type: 'function', + }, + { + label: 'deg', + detail: 'function', + info: 'Convert radians to degrees for input series', + type: 'function', + }, + { + label: 'delta', + detail: 'function', + info: 'Calculate the difference between beginning and end of a range vector (for gauges)', + type: 'function', + }, + { + label: 'deriv', + detail: 'function', + info: 'Calculate the per-second derivative over series in a range vector (for gauges)', + type: 'function', + }, + { + label: 'exp', + detail: 'function', + info: 'Calculate exponential function for input vector values', + type: 'function', + }, + { + label: 'floor', + detail: 'function', + info: 'Round down values of input series to nearest integer', + type: 'function', + }, + { + label: 'histogram_quantile', + detail: 'function', + info: 'Calculate quantiles from histogram buckets', + type: 'function', + }, + { + label: 'holt_winters', + detail: 'function', + info: 'Calculate smoothed value of input series', + type: 'function', + }, + { + label: 'hour', + detail: 'function', + info: 'Return the hour of the day for provided timestamps', + type: 'function', + }, + { + label: 'idelta', + detail: 'function', + info: 'Calculate the difference between the last two samples of a range vector (for counters)', + type: 'function', + }, + { + label: 'increase', + detail: 'function', + info: 'Calculate the increase in value over a range of time (for counters)', + type: 'function', + }, + { + label: 'irate', + detail: 'function', + info: 'Calculate the per-second increase over the last two samples of a range vector (for counters)', + type: 'function', + }, + { + label: 'label_replace', + detail: 'function', + info: 'Set or replace label values', + type: 'function', + }, + { + label: 'label_join', + detail: 'function', + info: 'Join together label values into new label', + type: 'function', + }, + { + label: 'last_over_time', + detail: 'function', + info: 'The most recent point value in specified interval.', + type: 'function', + }, + { + label: 'ln', + detail: 'function', + info: 'Calculate natural logarithm of input series', + type: 'function', + }, + { + label: 'log10', + detail: 'function', + info: 'Calulcate base-10 logarithm of input series', + type: 'function', + }, + { + label: 'log2', + detail: 'function', + info: 'Calculate base-2 logarithm of input series', + type: 'function', + }, + { + label: 'max_over_time', + detail: 'function', + info: 'Return the maximum value over time for input series', + type: 'function', + }, + { + label: 'min_over_time', + detail: 'function', + info: 'Return the minimum value over time for input series', + type: 'function', + }, + { + label: 'minute', + detail: 'function', + info: 'Return the minute of the hour for provided timestamps', + type: 'function', + }, + { + label: 'month', + detail: 'function', + info: 'Return the month for provided timestamps', + type: 'function', + }, + { + label: 'pi', + detail: 'function', + info: 'Return pi', + type: 'function', + }, + { + label: 'predict_linear', + detail: 'function', + info: 'Predict the value of a gauge into the future', + type: 'function', + }, + { + label: 'present_over_time', + detail: 'function', + info: 'the value 1 for any series in the specified interval', + type: 'function', + }, + { + label: 'quantile_over_time', + detail: 'function', + info: 'Calculate value quantiles over time for input series', + type: 'function', + }, + { + label: 'rad', + detail: 'function', + info: 'Convert degrees to radians for input series', + type: 'function', + }, + { + label: 'rate', + detail: 'function', + info: 'Calculate per-second increase over a range vector (for counters)', + type: 'function', + }, + { + label: 'resets', + detail: 'function', + info: 'Return number of value decreases (resets) in input series of time', + type: 'function', + }, + { + label: 'round', + detail: 'function', + info: 'Round values of input series to nearest integer', + type: 'function', + }, + { + label: 'scalar', + detail: 'function', + info: 'Convert single-element series vector into scalar value', + type: 'function', + }, + { + label: 'sgn', + detail: 'function', + info: 'Returns the sign of the instant vector', + type: 'function', + }, + { + label: 'sin', + detail: 'function', + info: 'Calculate the sine, in radians, for input series', + type: 'function', + }, + { + label: 'sinh', + detail: 'function', + info: 'Calculate the hyperbolic sine, in radians, for input series', + type: 'function', + }, + { + label: 'sort', + detail: 'function', + info: 'Sort input series ascendingly by value', + type: 'function', + }, + { + label: 'sort_desc', + detail: 'function', + info: 'Sort input series descendingly by value', + type: 'function', + }, + { + label: 'sqrt', + detail: 'function', + info: 'Return the square root for input series', + type: 'function', + }, + { + label: 'stddev_over_time', + detail: 'function', + info: 'Calculate the standard deviation within input series over time', + type: 'function', + }, + { + label: 'stdvar_over_time', + detail: 'function', + info: 'Calculate the standard variation within input series over time', + type: 'function', + }, + { + label: 'sum_over_time', + detail: 'function', + info: 'Calculate the sum over the values of input series over time', + type: 'function', + }, + { + label: 'tan', + detail: 'function', + info: 'Calculate the tangent, in radians, for input series', + type: 'function', + }, + { + label: 'tanh', + detail: 'function', + info: 'Calculate the hyperbolic tangent, in radians, for input series', + type: 'function', + }, + { + label: 'time', + detail: 'function', + info: 'Return the Unix timestamp at the current evaluation time', + type: 'function', + }, + { + label: 'timestamp', + detail: 'function', + info: 'Return the Unix timestamp for the samples in the input vector', + type: 'function', + }, + { + label: 'vector', + detail: 'function', + info: 'Convert a scalar value into a single-element series vector', + type: 'function', + }, + { + label: 'year', + detail: 'function', + info: 'Return the year for provided timestamps', + type: 'function', + }, +]; + +export const aggregateOpTerms = [ + { + label: 'avg', + detail: 'aggregation', + info: 'Calculate the average over dimensions', + type: 'keyword', + }, + { + label: 'bottomk', + detail: 'aggregation', + info: 'Smallest k elements by sample value', + type: 'keyword', + }, + { + label: 'count', + detail: 'aggregation', + info: 'Count number of elements in the vector', + type: 'keyword', + }, + { + label: 'count_values', + detail: 'aggregation', + info: 'Count number of elements with the same value', + type: 'keyword', + }, + { + label: 'group', + detail: 'aggregation', + info: 'Group series, while setting the sample value to 1', + type: 'keyword', + }, + { + label: 'max', + detail: 'aggregation', + info: 'Select maximum over dimensions', + type: 'keyword', + }, + { + label: 'min', + detail: 'aggregation', + info: 'Select minimum over dimensions', + type: 'keyword', + }, + { + label: 'quantile', + detail: 'aggregation', + info: 'Calculate φ-quantile (0 ≤ φ ≤ 1) over dimensions', + type: 'keyword', + }, + { + label: 'stddev', + detail: 'aggregation', + info: 'Calculate population standard deviation over dimensions', + type: 'keyword', + }, + { + label: 'stdvar', + detail: 'aggregation', + info: 'Calculate population standard variance over dimensions', + type: 'keyword', + }, + { + label: 'sum', + detail: 'aggregation', + info: 'Calculate sum over dimensions', + type: 'keyword', + }, + { + label: 'topk', + detail: 'aggregation', + info: 'Largest k elements by sample value', + type: 'keyword', + }, +]; + +export const aggregateOpModifierTerms = [ + { + label: 'by', + info: 'Keep the listed labels, remove all others.', + type: 'keyword', + }, + { + label: 'without', + info: 'Remove the listed labels, preserve all others.', + type: 'keyword', + }, +]; + +export const numberTerms = [ + { label: 'nan', info: 'Floating-point NaN value', type: 'constant' }, + { label: 'inf', info: 'Floating-point infinity', type: 'constant' }, +]; + +export const snippets: readonly Completion[] = [ + { + label: 'sum(rate(__input_vector__[5m]))', + type: 'function', + detail: 'snippet', + info: 'Sum over rates of increase', + apply: snippet('sum(rate(${__input_vector__}[5m]))'), + }, + { + label: 'histogram_quantile(__quantile__, sum by(le) (rate(__histogram_metric__[5m])))', + type: 'function', + detail: 'snippet', + info: 'Approximate a quantile value from an aggregated histogram', + apply: snippet('histogram_quantile(${__quantile__}, sum by(le) (rate(${__histogram_metric__}[5m])))'), + }, + { + label: 'label_replace(__input_vector__, "__dst__", "__replacement__", "__src__", "__regex__")', + type: 'function', + detail: 'snippet', + info: 'Set or replace a label value in an input vector', + apply: snippet('label_replace(${__input_vector__}, "${__dst__}", "${__replacement__}", "${__src__}", "${__regex__}")'), + }, + { + label: 'topk(__rank_number__, __input_vector__)', + type: 'function', + detail: 'snippet', + info: 'Largest k elements by sample value', + apply: snippet('topk(${__rank_number__}, ${__input_vector__})'), + }, + { + label: 'bottomk(__rank_number__, __input_vector__)', + type: 'function', + detail: 'snippet', + info: 'Smallest k elements by sample value', + apply: snippet('bottomk(${__rank_number__}, ${__input_vector__})'), + }, + { + label: 'count_values("__label_name__", __input_vector__)', + type: 'function', + detail: 'snippet', + info: 'Count the number of series per distinct sample value', + apply: snippet('count_values("${__label_name__}", ${__metric__})'), + }, +]; diff --git a/web/ui/module/codemirror-promql/src/grammar/promql.grammar b/web/ui/module/codemirror-promql/src/grammar/promql.grammar new file mode 100644 index 000000000..642d25f10 --- /dev/null +++ b/web/ui/module/codemirror-promql/src/grammar/promql.grammar @@ -0,0 +1,428 @@ +// Copyright 2021 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +@top PromQL { Expr } +@top MetricName { MetricIdentifier } + +@precedence { + pow @right, + mul @left + add @left, + eql @left, + and @left, + or @left +} + +Expr { + AggregateExpr | + BinaryExpr | + FunctionCall | + MatrixSelector | + NumberLiteral | + OffsetExpr | + ParenExpr | + StringLiteral | + SubqueryExpr | + UnaryExpr | + VectorSelector | + StepInvariantExpr +} + +AggregateExpr { + AggregateOp AggregateModifier FunctionCallBody | + AggregateOp FunctionCallBody AggregateModifier | + AggregateOp FunctionCallBody +} + +AggregateOp { + Avg | + Bottomk | + Count | + CountValues | + Group | + Max | + Min | + Quantile | + Stddev | + Stdvar | + Sum | + Topk +} + +AggregateModifier { + By GroupingLabels | + Without GroupingLabels +} + +BinaryExpr { + Expr !pow Pow BinModifiers Expr | + Expr !mul Mul BinModifiers Expr | + Expr !mul Div BinModifiers Expr | + Expr !mul Mod BinModifiers Expr | + Expr !mul Atan2 BinModifiers Expr | + Expr !add Add BinModifiers Expr | + Expr !add Sub BinModifiers Expr | + Expr !eql Eql BinModifiers Expr | + Expr !eql Gte BinModifiers Expr | + Expr !eql Gtr BinModifiers Expr | + Expr !eql Lte BinModifiers Expr | + Expr !eql Lss BinModifiers Expr | + Expr !eql Neq BinModifiers Expr | + Expr !and And BinModifiers Expr | + Expr !and Unless BinModifiers Expr | + Expr !or Or BinModifiers Expr +} + +OnOrIgnoring { + Ignoring GroupingLabels | + On GroupingLabels +} + +BinModifiers { + Bool? + ( + OnOrIgnoring + ( + (GroupLeft | GroupRight) + (!mul GroupingLabels)? // TODO: Is the "!mul" here correct? Inserted it to resolve a shift/reduce conflict because we always want to count opening parenthesis after this to be counted toward this modifier, not toward a next sub-expression. + )? + )? +} + +GroupingLabels { + "(" GroupingLabelList ")" | + "(" GroupingLabelList "," ")" | + "(" ")" +} + +GroupingLabelList { + GroupingLabelList "," GroupingLabel | + GroupingLabel +} + +GroupingLabel { + LabelName +} + +FunctionCall { + FunctionIdentifier FunctionCallBody +} + +FunctionIdentifier { + AbsentOverTime | + Absent | + Abs | + Acos | + Acosh | + Asin | + Asinh | + Atan | + Atanh | + AvgOverTime | + Ceil | + Changes | + Clamp | + ClampMax | + ClampMin | + Cos | + Cosh | + CountOverTime | + DaysInMonth | + DayOfMonth | + DayOfWeek | + Deg | + Delta | + Deriv | + Exp | + Floor | + HistogramQuantile | + HoltWinters | + Hour | + Idelta | + Increase | + Irate | + LabelReplace | + LabelJoin | + LastOverTime | + Ln | + Log10 | + Log2 | + MaxOverTime | + MinOverTime | + Minute | + Month | + Pi | + PredictLinear | + PresentOverTime | + QuantileOverTime | + Rad | + Rate | + Resets | + Round | + Scalar | + Sgn | + Sin | + Sinh | + Sort | + SortDesc | + Sqrt | + StddevOverTime | + StdvarOverTime | + SumOverTime | + Tan | + Tanh | + Timestamp | + Time | + Vector | + Year +} + +FunctionCallBody { + "(" FunctionCallArgs ")" | + "(" ")" +} + +FunctionCallArgs { + FunctionCallArgs "," Expr | + Expr +} + +ParenExpr { + "(" Expr ")" +} + +OffsetExpr { + Expr Offset Sub? Duration +} + +MatrixSelector { + // TODO: Can this not be more specific than "Expr"? + Expr "[" Duration "]" +} + +SubqueryExpr { + Expr "[" Duration ":" ("" | Duration) "]" +} + +UnaryExpr { + !mul UnaryOp~signed Expr +} + +UnaryOp { + "-" | + "+" +} + +VectorSelector { + MetricIdentifier LabelMatchers | + MetricIdentifier | + LabelMatchers +} + +LabelMatchers { + "{" LabelMatchList "}" | + "{" LabelMatchList "," "}" | + "{" "}" +} + +LabelMatchList { + LabelMatchList "," LabelMatcher | + LabelMatcher +} + +MatchOp { + EqlSingle | + Neq | + EqlRegex | + NeqRegex +} + +LabelMatcher { + LabelName MatchOp StringLiteral +} + +MetricIdentifier { + Identifier +} + +StepInvariantExpr { + Expr At ( NumberLiteral | AtModifierPreprocessors "(" ")" ) +} + +AtModifierPreprocessors { + Start | End +} + +NumberLiteral { + ("-"|"+")?~signed (number | inf | nan) +} + +@skip { whitespace | LineComment } + +@tokens { + whitespace { std.whitespace+ } + LineComment { "#" ![\n]* } + + number { + (std.digit+ ("." std.digit*)? | "." std.digit+) (("e" | "E") ("+" | "-")? std.digit+)? | + "0x" (std.digit | $[a-fA-F])+ + } + StringLiteral { // TODO: This is for JS, make this work for PromQL. + '"' (![\\\n"] | "\\" _)* '"'? | + "'" (![\\\n'] | "\\" _)* "'"? | + "`" ![`]* "`" + } + + Duration { + // Each line below is just the same regex repeated over and over, but each time with one of the units made non-optional, + // to ensure that at least one + pair is provided and an empty string is not recognized as a valid duration. + ( ( std.digit+ "y" ) ( std.digit+ "w" )? ( std.digit+ "d" )? ( std.digit+ "h" )? ( std.digit+ "m" )? ( std.digit+ "s" )? ( std.digit+ "ms" )? ) | + ( ( std.digit+ "y" )? ( std.digit+ "w" ) ( std.digit+ "d" )? ( std.digit+ "h" )? ( std.digit+ "m" )? ( std.digit+ "s" )? ( std.digit+ "ms" )? ) | + ( ( std.digit+ "y" )? ( std.digit+ "w" )? ( std.digit+ "d" ) ( std.digit+ "h" )? ( std.digit+ "m" )? ( std.digit+ "s" )? ( std.digit+ "ms" )? ) | + ( ( std.digit+ "y" )? ( std.digit+ "w" )? ( std.digit+ "d" )? ( std.digit+ "h" ) ( std.digit+ "m" )? ( std.digit+ "s" )? ( std.digit+ "ms" )? ) | + ( ( std.digit+ "y" )? ( std.digit+ "w" )? ( std.digit+ "d" )? ( std.digit+ "h" )? ( std.digit+ "m" ) ( std.digit+ "s" )? ( std.digit+ "ms" )? ) | + ( ( std.digit+ "y" )? ( std.digit+ "w" )? ( std.digit+ "d" )? ( std.digit+ "h" )? ( std.digit+ "m" )? ( std.digit+ "s" ) ( std.digit+ "ms" )? ) | + ( ( std.digit+ "y" )? ( std.digit+ "w" )? ( std.digit+ "d" )? ( std.digit+ "h" )? ( std.digit+ "m" )? ( std.digit+ "s" )? ( std.digit+ "ms" ) ) + } + Identifier { (std.asciiLetter | "_" | ":") (std.asciiLetter | std.digit | "_" | ":" )*} + LabelName { (std.asciiLetter | "_") (std.asciiLetter | std.digit | "_")* } + + // Operator + Sub { "-" } + Add { "+" } + Mul { "*" } + Mod { "%" } + Div { "/" } + Eql { "==" } + Neq { "!=" } + Lte { "<=" } + Lss { "<" } + Gte { ">=" } + Gtr { ">" } + EqlRegex { "=~" } + EqlSingle { "=" } + NeqRegex { "!~" } + Pow { "^" } + + // Special Modifier + At { "@" } +} + +// Keywords + +@external specialize {Identifier} specializeIdentifier from "./tokens" { + inf, + nan, + Bool, + Ignoring, + On, + GroupLeft, + GroupRight, + Offset +} + +// Contextual keywords + +@external extend {Identifier} extendIdentifier from "./tokens" { + Atan2, + Avg, + Bottomk, + Count, + CountValues, + Group, + Max, + Min, + Quantile, + Stddev, + Stdvar, + Sum, + Topk, + By, + Without, + And, + Or, + Unless, + Start, + End +} + + // FunctionIdentifier definitions + Abs { condFn<"abs"> } + Absent { condFn<"absent"> } + AbsentOverTime { condFn<"absent_over_time"> } + Acos { condFn<"acos"> } + Acosh { condFn<"acosh"> } + Asin { condFn<"asin"> } + Asinh { condFn<"asinh">} + Atan { condFn<"atan"> } + Atanh { condFn<"atanh">} + AvgOverTime { condFn<"avg_over_time"> } + Ceil { condFn<"ceil"> } + Changes { condFn<"changes"> } + Clamp { condFn<"clamp"> } + ClampMax { condFn<"clamp_max"> } + ClampMin { condFn<"clamp_min"> } + Cos { condFn<"cos">} + Cosh { condFn<"cosh">} + CountOverTime { condFn<"count_over_time"> } + DaysInMonth { condFn<"days_in_month"> } + DayOfMonth { condFn<"day_of_month"> } + DayOfWeek { condFn<"day_of_week"> } + Deg { condFn<"deg"> } + Delta { condFn<"delta"> } + Deriv { condFn<"deriv"> } + Exp { condFn<"exp"> } + Floor { condFn<"floor"> } + HistogramQuantile { condFn<"histogram_quantile"> } + HoltWinters { condFn<"holt_winters"> } + Hour { condFn<"hour"> } + Idelta { condFn<"idelta"> } + Increase { condFn<"increase"> } + Irate { condFn<"irate"> } + LabelReplace { condFn<"label_replace"> } + LabelJoin { condFn<"label_join"> } + LastOverTime {condFn<"last_over_time">} + Ln { condFn<"ln"> } + Log10 { condFn<"log10"> } + Log2 { condFn<"log2"> } + MaxOverTime { condFn<"max_over_time"> } + MinOverTime { condFn<"min_over_time"> } + Minute { condFn<"minute"> } + Month { condFn<"month"> } + Pi { condFn<"pi">} + PredictLinear { condFn<"predict_linear"> } + PresentOverTime { condFn<"present_over_time"> } + QuantileOverTime { condFn<"quantile_over_time"> } + Rad { condFn<"rad"> } + Rate { condFn<"rate"> } + Resets { condFn<"resets"> } + Round { condFn<"round"> } + Scalar { condFn<"scalar"> } + Sgn { condFn<"sgn"> } + Sin { condFn<"sin">} + Sinh { condFn<"sinh"> } + Sort { condFn<"sort"> } + SortDesc { condFn<"sort_desc"> } + Sqrt { condFn<"sqrt"> } + StddevOverTime { condFn<"stddev_over_time"> } + StdvarOverTime { condFn<"stdvar_over_time"> } + SumOverTime { condFn<"sum_over_time"> } + Tan { condFn<"tan"> } + Tanh { condFn<"tanh">} + Time { condFn<"time"> } + Timestamp { condFn<"timestamp"> } + Vector { condFn<"vector"> } + Year { condFn<"year"> } + +// Conditional function names (only parsed as function names when used as such). +condFn { @extend } diff --git a/web/ui/module/codemirror-promql/src/grammar/test/expression.txt b/web/ui/module/codemirror-promql/src/grammar/test/expression.txt new file mode 100644 index 000000000..a4dfcd9ce --- /dev/null +++ b/web/ui/module/codemirror-promql/src/grammar/test/expression.txt @@ -0,0 +1,849 @@ +# Numeric literals + +0.123e3 + +==> + +PromQL(Expr(NumberLiteral)) + +# Double-quoted string literal + +"test string" + +==> + +PromQL(Expr(StringLiteral)) + +# Single-quoted string literal + +'test string' + +==> + +PromQL(Expr(StringLiteral)) + +# Backtick-quoted string literal + +`test string` + +==> + +PromQL(Expr(StringLiteral)) + +# Backtick-quoted multi-line string literal + +`test + +string` + +==> + +PromQL(Expr(StringLiteral)) + +# Addition + +1 + 2 + +==> + +PromQL(Expr(BinaryExpr(Expr(NumberLiteral), Add, BinModifiers, Expr(NumberLiteral)))) + +# Complex expression + +sum by(job, mode) (rate(node_cpu_seconds_total[1m])) / on(job) group_left sum by(job)(rate(node_cpu_seconds_total[1m])) + +==> + +PromQL( + Expr( + BinaryExpr( + Expr( + AggregateExpr( + AggregateOp(Sum), + AggregateModifier( + By, + GroupingLabels( + GroupingLabelList( + GroupingLabelList( + GroupingLabel(LabelName) + ), + GroupingLabel(LabelName) + ) + ) + ), + FunctionCallBody( + FunctionCallArgs( + Expr( + FunctionCall( + FunctionIdentifier(Rate), + FunctionCallBody( + FunctionCallArgs( + Expr( + MatrixSelector( + Expr( + VectorSelector( + MetricIdentifier( + Identifier + ) + ) + ), + Duration + ) + ) + ) + ) + ) + ) + ) + ) + ) + ), + Div, + BinModifiers( + OnOrIgnoring( + On, + GroupingLabels( + GroupingLabelList( + GroupingLabel(LabelName) + ) + ) + ), + GroupLeft + ), + Expr( + AggregateExpr( + AggregateOp(Sum), + AggregateModifier( + By, + GroupingLabels( + GroupingLabelList( + GroupingLabel(LabelName) + ) + ) + ), + FunctionCallBody( + FunctionCallArgs( + Expr( + FunctionCall( + FunctionIdentifier(Rate), + FunctionCallBody( + FunctionCallArgs( + Expr( + MatrixSelector( + Expr( + VectorSelector( + MetricIdentifier( + Identifier + ) + ) + ), + Duration + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) +) + +# Case insensitivity for aggregations and binop modifiers. + +SuM BY(testlabel1) (testmetric1) / IGNOring(testlabel2) AVG withOUT(testlabel3) (testmetric2) + +==> + +PromQL( + Expr( + BinaryExpr( + Expr( + AggregateExpr( + AggregateOp(Sum), + AggregateModifier( + By, + GroupingLabels( + GroupingLabelList( + GroupingLabel(LabelName) + ) + ) + ), + FunctionCallBody( + FunctionCallArgs( + Expr( + VectorSelector( + MetricIdentifier(Identifier) + ) + ) + ) + ) + ) + ), + Div, + BinModifiers( + OnOrIgnoring( + Ignoring, + GroupingLabels( + GroupingLabelList( + GroupingLabel(LabelName) + ) + ) + ) + ), + Expr( + AggregateExpr( + AggregateOp(Avg), + AggregateModifier( + Without, + GroupingLabels( + GroupingLabelList( + GroupingLabel(LabelName) + ) + ) + ), + FunctionCallBody( + FunctionCallArgs( + Expr( + VectorSelector( + MetricIdentifier( + Identifier + ) + ) + ) + ) + ) + ) + ) + ) + ) +) + +# Case insensitivity for set operators + +metric1 and metric2 AND metric3 unless metric4 UNLESS metric5 or metric6 OR metric7 + +==> + +PromQL( + Expr( + BinaryExpr( + Expr( + BinaryExpr( + Expr( + BinaryExpr( + Expr( + BinaryExpr( + Expr( + BinaryExpr( + Expr( + BinaryExpr( + Expr( + VectorSelector( + MetricIdentifier(Identifier) + ) + ), + And, + BinModifiers, + Expr( + VectorSelector( + MetricIdentifier(Identifier) + ) + ) + ) + ), + And, + BinModifiers, + Expr( + VectorSelector( + MetricIdentifier(Identifier) + ) + ) + ) + ), + Unless, + BinModifiers, + Expr( + VectorSelector( + MetricIdentifier(Identifier) + ) + ) + ) + ), + Unless, + BinModifiers, + Expr( + VectorSelector( + MetricIdentifier(Identifier) + ) + ) + ) + ), + Or, + BinModifiers, + Expr( + VectorSelector( + MetricIdentifier(Identifier) + ) + ) + ) + ), + Or, + BinModifiers, + Expr( + VectorSelector( + MetricIdentifier(Identifier) + ) + ) + ) + ) +) +# Duration units + +foo[1y2w3d4h5m6s7ms] + +==> + +PromQL(Expr(MatrixSelector(Expr(VectorSelector(MetricIdentifier(Identifier))),Duration))) + +# Incorrectly ordered duration units + +foo[1m2h] + +==> + +PromQL(Expr(SubqueryExpr(Expr(VectorSelector(MetricIdentifier(Identifier))),Duration,⚠,Duration))) + +# Using a function name as a metric name + +rate + +==> + +PromQL(Expr(VectorSelector(MetricIdentifier(Identifier)))) + +# Match operators + +metric_name{a="1",b!="2",c=~"3",d!~"4"} + +==> + +PromQL( + Expr( + VectorSelector( + MetricIdentifier(Identifier), + LabelMatchers( + LabelMatchList( + LabelMatchList( + LabelMatchList( + LabelMatchList( + LabelMatcher( + LabelName, + MatchOp(EqlSingle), + StringLiteral + ) + ), + LabelMatcher( + LabelName, + MatchOp(Neq), + StringLiteral + ) + ), + LabelMatcher( + LabelName, + MatchOp(EqlRegex), + StringLiteral + ) + ), + LabelMatcher( + LabelName, + MatchOp(NeqRegex), + StringLiteral + ) + ), + ) + ) + ) +) + +# Binary expression with bool modifier + +metric_name > bool 1 + +==> + +PromQL( + Expr( + BinaryExpr( + Expr( + VectorSelector( + MetricIdentifier(Identifier) + ) + ), + Gtr, + BinModifiers(Bool), + Expr(NumberLiteral) + ) + ) +) + +# Binary expression with group_x() labels. + +metric1 + on(foo) group_left(bar, baz) metric2 + +==> + +PromQL( + Expr( + BinaryExpr( + Expr( + VectorSelector( + MetricIdentifier(Identifier) + ) + ), + Add, + BinModifiers( + OnOrIgnoring( + On, + GroupingLabels( + GroupingLabelList( + GroupingLabel(LabelName) + ) + ) + ), + GroupLeft, + GroupingLabels( + GroupingLabelList( + GroupingLabelList( + GroupingLabel(LabelName) + ), + GroupingLabel(LabelName) + ) + ) + ), + Expr( + VectorSelector( + MetricIdentifier( + Identifier + ) + ) + ) + ) + ) +) + +# Function last_over_time + +last_over_time(data[1m]) + +==> +PromQL( + Expr( + FunctionCall( + FunctionIdentifier(LastOverTime), + FunctionCallBody( + FunctionCallArgs( + Expr( + MatrixSelector( + Expr( + VectorSelector( + MetricIdentifier( + Identifier + ) + ) + ), + Duration + ) + ) + ) + ) + ) + ) +) + +# Function sgn + +sgn(data) + +==> +PromQL( + Expr( + FunctionCall( + FunctionIdentifier(Sgn), + FunctionCallBody( + FunctionCallArgs( + Expr( + VectorSelector( + MetricIdentifier( + Identifier + ) + ) + ) + ) + ) + ) + ) +) + +# Function clamp + +clamp(data,0,1) + +==> +PromQL( + Expr( + FunctionCall( + FunctionIdentifier(Clamp), + FunctionCallBody( + FunctionCallArgs( + FunctionCallArgs( + FunctionCallArgs( + Expr( + VectorSelector( + MetricIdentifier( + Identifier + ) + ) + ) + ), + Expr(NumberLiteral) + ), + Expr(NumberLiteral) + ) + ) + ) + ) +) + +# Metric start + +start + +==> +PromQL(Expr(VectorSelector(MetricIdentifier(Identifier)))) + +# Metric end + +end + +==> +PromQL(Expr(VectorSelector(MetricIdentifier(Identifier)))) + +# Simple At start + +foo @ start() + +==> +PromQL( + Expr( + StepInvariantExpr( + Expr( + VectorSelector( + MetricIdentifier( + Identifier + ) + ) + ) + At, + AtModifierPreprocessors(Start), + ) + ) +) + +# Simple At end + +foo @ end() + +==> +PromQL( + Expr( + StepInvariantExpr( + Expr( + VectorSelector( + MetricIdentifier( + Identifier + ) + ) + ) + At, + AtModifierPreprocessors(End), + ) + ) +) + +# Simple At number + +foo @ 1234 + +==> +PromQL( + Expr( + StepInvariantExpr( + Expr( + VectorSelector( + MetricIdentifier( + Identifier + ) + ) + ) + At, + NumberLiteral + ) + ) +) + +# At Modifier with space between bracket + +foo @ start( ) + +==> +PromQL( + Expr( + StepInvariantExpr( + Expr( + VectorSelector( + MetricIdentifier( + Identifier + ) + ) + ) + At, + AtModifierPreprocessors(Start), + ) + ) +) + +# Complex test with At modifier + +rate(process_cpu_seconds_total[1m]) + and +topk(7, rate(process_cpu_seconds_total[1h] @ 1234)) + +==> +PromQL( + Expr( + BinaryExpr( + Expr( + FunctionCall( + FunctionIdentifier(Rate), + FunctionCallBody( + FunctionCallArgs( + Expr( + MatrixSelector( + Expr(VectorSelector(MetricIdentifier(Identifier))), + Duration + ) + ) + ) + ) + ) + ), + And, + BinModifiers, + Expr( + AggregateExpr( + AggregateOp(Topk), + FunctionCallBody( + FunctionCallArgs( + FunctionCallArgs(Expr(NumberLiteral)), + Expr( + FunctionCall( + FunctionIdentifier(Rate), + FunctionCallBody( + FunctionCallArgs( + Expr( + StepInvariantExpr( + Expr( + MatrixSelector( + Expr( + VectorSelector(MetricIdentifier(Identifier)) + ), + Duration + ) + ), + At, + NumberLiteral + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) +) + +# At modifier with negative number + +foo @ - 1234 + +==> +PromQL( + Expr( + StepInvariantExpr( + Expr( + VectorSelector( + MetricIdentifier( + Identifier + ) + ) + ) + At, + NumberLiteral + ) + ) +) + +# At modifier with explicit positive number + +foo @ + 1234 + +==> +PromQL( + Expr( + StepInvariantExpr( + Expr( + VectorSelector( + MetricIdentifier( + Identifier + ) + ) + ) + At, + NumberLiteral + ) + ) +) + +# Metric prefixed by Inf + +infra + +==> +PromQL(Expr(VectorSelector(MetricIdentifier(Identifier)))) + +# Metric prefixed by Nan + +nananere + +==> +PromQL(Expr(VectorSelector(MetricIdentifier(Identifier)))) + +# Mixed-case NaN. + +NaN + +==> +PromQL(Expr(NumberLiteral)) + +# Lower-cased NaN. + +nan + +==> +PromQL(Expr(NumberLiteral)) + +# Inf. + +Inf + +==> +PromQL(Expr(NumberLiteral)) + +# Negative Inf. + +-Inf + +==> +PromQL(Expr(NumberLiteral)) + +# Positive Inf. + ++Inf + +==> +PromQL(Expr(NumberLiteral)) + +# Lower-cased Inf. + +inf + +==> +PromQL(Expr(NumberLiteral)) + +# Upper-cased Inf. + +INF + +==> +PromQL(Expr(NumberLiteral)) + +# Negative number literal. + +-42 + +==> +PromQL(Expr(NumberLiteral)) + +# Explicitly positive number literal. + ++42 + +==> +PromQL(Expr(NumberLiteral)) + +# Trying to illegally use NaN as a metric name. + +NaN{foo="bar"} + +==> +PromQL(Expr(BinaryExpr(Expr(NumberLiteral),⚠,BinModifiers,Expr(VectorSelector(LabelMatchers(LabelMatchList(LabelMatcher(LabelName,MatchOp(EqlSingle),StringLiteral)))))))) + +# Trying to illegally use Inf as a metric name. + +Inf{foo="bar"} + +==> +PromQL(Expr(BinaryExpr(Expr(NumberLiteral),⚠,BinModifiers,Expr(VectorSelector(LabelMatchers(LabelMatchList(LabelMatcher(LabelName,MatchOp(EqlSingle),StringLiteral)))))))) + +# Negative offset + +foo offset -5d + +==> +PromQL(Expr(OffsetExpr(Expr(VectorSelector(MetricIdentifier(Identifier))), Offset, Sub, Duration))) + +# Negative offset with space + +foo offset - 5d + +==> +PromQL(Expr(OffsetExpr(Expr(VectorSelector(MetricIdentifier(Identifier))), Offset, Sub, Duration))) + +# Positive offset + +foo offset 5d + +==> +PromQL(Expr(OffsetExpr(Expr(VectorSelector(MetricIdentifier(Identifier))), Offset, Duration))) + +# Parsing only metric names with alternative @top { "top": "MetricName" } + +sum:my_metric_name:rate5m + +==> +MetricName(MetricIdentifier(Identifier)) + +# Testing Atan2 inherited precedence level + +1 + foo atan2 bar + +==> +PromQL(Expr(BinaryExpr(Expr(NumberLiteral),Add,BinModifiers,Expr(BinaryExpr(Expr(VectorSelector(MetricIdentifier(Identifier))),Atan2,BinModifiers,Expr(VectorSelector(MetricIdentifier(Identifier)))))))) \ No newline at end of file diff --git a/web/ui/module/codemirror-promql/src/grammar/test/test-promql.test.ts b/web/ui/module/codemirror-promql/src/grammar/test/test-promql.test.ts new file mode 100644 index 000000000..0583a7125 --- /dev/null +++ b/web/ui/module/codemirror-promql/src/grammar/test/test-promql.test.ts @@ -0,0 +1,15 @@ +import { parser } from '../parser'; +import { fileTests } from '@lezer/generator/dist/test'; + +import * as fs from 'fs'; +import * as path from 'path'; + +const caseDir = './src/grammar/test'; +for (const file of fs.readdirSync(caseDir)) { + if (!/\.txt$/.test(file)) continue; + + const name = /^[^\.]*/.exec(file)[0]; + describe(name, () => { + for (const { name, run } of fileTests(fs.readFileSync(path.join(caseDir, file), 'utf8'), file)) it(name, () => run(parser)); + }); +} diff --git a/web/ui/module/codemirror-promql/src/grammar/tokens.js b/web/ui/module/codemirror-promql/src/grammar/tokens.js new file mode 100644 index 000000000..9c9c509e5 --- /dev/null +++ b/web/ui/module/codemirror-promql/src/grammar/tokens.js @@ -0,0 +1,85 @@ +// Copyright 2021 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { + And, + Avg, + Atan2, + Bool, + Bottomk, + By, + Count, + CountValues, + End, + Group, + GroupLeft, + GroupRight, + Ignoring, + inf, + Max, + Min, + nan, + Offset, + On, + Or, + Quantile, + Start, + Stddev, + Stdvar, + Sum, + Topk, + Unless, + Without, +} from './parser.terms.js'; + +const keywordTokens = { + inf: inf, + nan: nan, + bool: Bool, + ignoring: Ignoring, + on: On, + group_left: GroupLeft, + group_right: GroupRight, + offset: Offset, +}; + +export const specializeIdentifier = (value, stack) => { + return keywordTokens[value.toLowerCase()] || -1; +}; + +const contextualKeywordTokens = { + avg: Avg, + atan2: Atan2, + bottomk: Bottomk, + count: Count, + count_values: CountValues, + group: Group, + max: Max, + min: Min, + quantile: Quantile, + stddev: Stddev, + stdvar: Stdvar, + sum: Sum, + topk: Topk, + by: By, + without: Without, + and: And, + or: Or, + unless: Unless, + start: Start, + end: End, +}; + +export const extendIdentifier = (value, stack) => { + return contextualKeywordTokens[value.toLowerCase()] || -1; +}; diff --git a/web/ui/module/codemirror-promql/src/index.ts b/web/ui/module/codemirror-promql/src/index.ts new file mode 100644 index 000000000..0849e31a0 --- /dev/null +++ b/web/ui/module/codemirror-promql/src/index.ts @@ -0,0 +1,17 @@ +// Copyright 2021 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +export { PrometheusClient } from './client'; +export { CompleteConfiguration, CompleteStrategy } from './complete'; +export { LintStrategy } from './lint'; +export { PromQLExtension, LanguageType, promQLLanguage } from './promql'; diff --git a/web/ui/module/codemirror-promql/src/lint/hybrid.ts b/web/ui/module/codemirror-promql/src/lint/hybrid.ts new file mode 100644 index 000000000..0f4a112cb --- /dev/null +++ b/web/ui/module/codemirror-promql/src/lint/hybrid.ts @@ -0,0 +1,28 @@ +// Copyright 2021 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { LintStrategy } from './index'; +import { EditorView } from '@codemirror/view'; +import { Diagnostic } from '@codemirror/lint'; +import { Parser } from '../parser'; + +// HybridLint will provide a promQL linter with static analysis +export class HybridLint implements LintStrategy { + public promQL(this: HybridLint): (view: EditorView) => readonly Diagnostic[] { + return (view: EditorView) => { + const parser = new Parser(view.state); + parser.analyze(); + return parser.getDiagnostics(); + }; + } +} diff --git a/web/ui/module/codemirror-promql/src/lint/index.ts b/web/ui/module/codemirror-promql/src/lint/index.ts new file mode 100644 index 000000000..29d93de8c --- /dev/null +++ b/web/ui/module/codemirror-promql/src/lint/index.ts @@ -0,0 +1,33 @@ +// Copyright 2021 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { EditorView } from '@codemirror/view'; +import { Diagnostic, linter } from '@codemirror/lint'; +import { HybridLint } from './hybrid'; +import { Extension } from '@codemirror/state'; + +type lintFunc = (view: EditorView) => readonly Diagnostic[] | Promise; + +// LintStrategy is the interface that defines the simple method that returns a DiagnosticResult. +// Every different lint mode must implement this interface. +export interface LintStrategy { + promQL(this: LintStrategy): lintFunc; +} + +export function newLintStrategy(): LintStrategy { + return new HybridLint(); +} + +export function promQLLinter(callbackFunc: (this: LintStrategy) => lintFunc, thisArg: LintStrategy): Extension { + return linter(callbackFunc.call(thisArg)); +} diff --git a/web/ui/module/codemirror-promql/src/parser/index.ts b/web/ui/module/codemirror-promql/src/parser/index.ts new file mode 100644 index 000000000..2779e83c8 --- /dev/null +++ b/web/ui/module/codemirror-promql/src/parser/index.ts @@ -0,0 +1,16 @@ +// Copyright 2021 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +export { buildLabelMatchers, labelMatchersToString } from './matcher'; +export { Parser } from './parser'; +export { walkBackward, walkThrough, containsAtLeastOneChild, containsChild, retrieveAllRecursiveNodes } from './path-finder'; diff --git a/web/ui/module/codemirror-promql/src/parser/matcher.test.ts b/web/ui/module/codemirror-promql/src/parser/matcher.test.ts new file mode 100644 index 000000000..f6539ac3b --- /dev/null +++ b/web/ui/module/codemirror-promql/src/parser/matcher.test.ts @@ -0,0 +1,137 @@ +// Copyright 2021 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { EqlRegex, EqlSingle, Neq, NeqRegex } from '../grammar/parser.terms'; +import { labelMatchersToString } from './matcher'; +import { Matcher } from '../types'; +import chai from 'chai'; + +describe('labelMatchersToString test', () => { + const testCases = [ + { + title: 'metric_name', + metricName: 'metric_name', + labelName: undefined, + matchers: [] as Matcher[], + result: 'metric_name', + }, + { + title: 'metric_name 2', + metricName: 'metric_name', + labelName: undefined, + matchers: undefined, + result: 'metric_name', + }, + { + title: 'metric_name{}', + metricName: 'metric_name', + labelName: undefined, + matchers: [ + { + type: EqlSingle, + name: 'LabelName', + value: '', + }, + ] as Matcher[], + result: 'metric_name{}', + }, + { + title: 'sum{LabelName!="LabelValue"}', + metricName: 'sum', + labelName: undefined, + matchers: [ + { + type: Neq, + name: 'LabelName', + value: 'LabelValue', + }, + ] as Matcher[], + result: 'sum{LabelName!="LabelValue"}', + }, + { + title: 'rate{LabelName=~"label.+"}', + metricName: 'rate', + labelName: undefined, + matchers: [ + { + type: EqlSingle, + name: 'LabelName', + value: '', + }, + { + type: EqlRegex, + name: 'LabelName', + value: 'label.+', + }, + ] as Matcher[], + result: 'rate{LabelName=~"label.+"}', + }, + { + title: 'rate{LabelName="l1",labelName2=~"label.+",labelName3!~"label.+"}', + metricName: 'rate', + labelName: undefined, + matchers: [ + { + type: EqlSingle, + name: 'LabelName', + value: 'l1', + }, + { + type: EqlRegex, + name: 'labelName2', + value: 'label.+', + }, + { + type: NeqRegex, + name: 'labelName3', + value: 'label.+', + }, + ] as Matcher[], + result: 'rate{LabelName="l1",labelName2=~"label.+",labelName3!~"label.+"}', + }, + { + title: 'rate{LabelName="l1",labelName2=~"label.+",labelName3!~"label.+"}', + metricName: 'rate', + labelName: 'LabelName', + matchers: [ + { + type: EqlSingle, + name: 'LabelName', + value: 'l1', + }, + { + type: EqlRegex, + name: 'labelName2', + value: 'label.+', + }, + { + type: NeqRegex, + name: 'labelName3', + value: 'label.+', + }, + { + type: Neq, + name: 'labelName4', + value: '', + }, + ] as Matcher[], + result: 'rate{labelName2=~"label.+",labelName3!~"label.+"}', + }, + ]; + + testCases.forEach((value) => { + it(value.title, () => { + chai.expect(labelMatchersToString(value.metricName, value.matchers, value.labelName)).to.equal(value.result); + }); + }); +}); diff --git a/web/ui/module/codemirror-promql/src/parser/matcher.ts b/web/ui/module/codemirror-promql/src/parser/matcher.ts new file mode 100644 index 000000000..95b1abb98 --- /dev/null +++ b/web/ui/module/codemirror-promql/src/parser/matcher.ts @@ -0,0 +1,88 @@ +// Copyright 2021 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { SyntaxNode } from '@lezer/common'; +import { EqlRegex, EqlSingle, LabelName, MatchOp, Neq, NeqRegex, StringLiteral } from '../grammar/parser.terms'; +import { EditorState } from '@codemirror/state'; +import { Matcher } from '../types'; + +function createMatcher(labelMatcher: SyntaxNode, state: EditorState): Matcher { + const matcher = new Matcher(0, '', ''); + const cursor = labelMatcher.cursor; + if (!cursor.next()) { + // weird case, that would mean the labelMatcher doesn't have any child. + return matcher; + } + do { + switch (cursor.type.id) { + case LabelName: + matcher.name = state.sliceDoc(cursor.from, cursor.to); + break; + case MatchOp: + const ope = cursor.node.firstChild; + if (ope) { + matcher.type = ope.type.id; + } + break; + case StringLiteral: + matcher.value = state.sliceDoc(cursor.from, cursor.to).slice(1, -1); + break; + } + } while (cursor.nextSibling()); + return matcher; +} + +export function buildLabelMatchers(labelMatchers: SyntaxNode[], state: EditorState): Matcher[] { + const matchers: Matcher[] = []; + labelMatchers.forEach((value) => { + matchers.push(createMatcher(value, state)); + }); + return matchers; +} + +export function labelMatchersToString(metricName: string, matchers?: Matcher[], labelName?: string): string { + if (!matchers || matchers.length === 0) { + return metricName; + } + + let matchersAsString = ''; + for (const matcher of matchers) { + if (matcher.name === labelName || matcher.value === '') { + continue; + } + let type = ''; + switch (matcher.type) { + case EqlSingle: + type = '='; + break; + case Neq: + type = '!='; + break; + case NeqRegex: + type = '!~'; + break; + case EqlRegex: + type = '=~'; + break; + default: + type = '='; + } + const m = `${matcher.name}${type}"${matcher.value}"`; + if (matchersAsString === '') { + matchersAsString = m; + } else { + matchersAsString = `${matchersAsString},${m}`; + } + } + return `${metricName}{${matchersAsString}}`; +} diff --git a/web/ui/module/codemirror-promql/src/parser/parser.test.ts b/web/ui/module/codemirror-promql/src/parser/parser.test.ts new file mode 100644 index 000000000..324c15a73 --- /dev/null +++ b/web/ui/module/codemirror-promql/src/parser/parser.test.ts @@ -0,0 +1,759 @@ +// Copyright 2021 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import chai from 'chai'; +import { Parser } from './parser'; +import { Diagnostic } from '@codemirror/lint'; +import { createEditorState } from '../test/utils.test'; +import { syntaxTree } from '@codemirror/language'; +import { ValueType } from '../types'; + +describe('promql operations', () => { + const testCases = [ + { + expr: '1', + expectedValueType: ValueType.scalar, + expectedDiag: [] as Diagnostic[], + }, + { + expr: '2 * 3', + expectedValueType: ValueType.scalar, + expectedDiag: [] as Diagnostic[], + }, + { + expr: '1 unless 1', + expectedValueType: ValueType.scalar, + expectedDiag: [ + { + from: 0, + to: 10, + message: 'set operator not allowed in binary scalar expression', + severity: 'error', + }, + ], + }, + { + expr: 'metric_name * "string"', + expectedValueType: ValueType.vector, + expectedDiag: [ + { + from: 14, + to: 22, + message: 'binary expression must contain only scalar and instant vector types', + severity: 'error', + }, + ] as Diagnostic[], + }, + { + expr: 'metric_name_1 > bool metric_name_2', + expectedValueType: ValueType.vector, + expectedDiag: [] as Diagnostic[], + }, + { + expr: 'metric_name_1 + bool metric_name_2', + expectedValueType: ValueType.vector, + expectedDiag: [ + { + from: 0, + to: 34, + message: 'bool modifier can only be used on comparison operators', + severity: 'error', + }, + ] as Diagnostic[], + }, + { + expr: 'metric_name offset 1d', + expectedValueType: ValueType.vector, + expectedDiag: [] as Diagnostic[], + }, + { + expr: 'metric_name[5m] offset 1d', + expectedValueType: ValueType.matrix, + expectedDiag: [] as Diagnostic[], + }, + { + expr: 'rate(metric_name[5m])[1h:] offset 1m', + expectedValueType: ValueType.matrix, + expectedDiag: [] as Diagnostic[], + }, + { + expr: 'sum(metric_name offset 1m)', + expectedValueType: ValueType.vector, + expectedDiag: [] as Diagnostic[], + }, + { + expr: 'rate(metric_name[5m] offset 1d)', + expectedValueType: ValueType.vector, + expectedDiag: [] as Diagnostic[], + }, + { + expr: 'max_over_time(rate(metric_name[5m])[1h:] offset 1m)', + expectedValueType: ValueType.vector, + expectedDiag: [] as Diagnostic[], + }, + { + expr: 'foo * bar', + expectedValueType: ValueType.vector, + expectedDiag: [] as Diagnostic[], + }, + { + expr: 'foo*bar', + expectedValueType: ValueType.vector, + expectedDiag: [] as Diagnostic[], + }, + { + expr: 'foo* bar', + expectedValueType: ValueType.vector, + expectedDiag: [] as Diagnostic[], + }, + { + expr: 'foo *bar', + expectedValueType: ValueType.vector, + expectedDiag: [] as Diagnostic[], + }, + { + expr: 'foo==bar', + expectedValueType: ValueType.vector, + expectedDiag: [] as Diagnostic[], + }, + { + expr: 'foo * sum', + expectedValueType: ValueType.vector, + expectedDiag: [] as Diagnostic[], + }, + { + expr: 'foo == 1', + expectedValueType: ValueType.vector, + expectedDiag: [] as Diagnostic[], + }, + { + expr: 'foo == bool 1', + expectedValueType: ValueType.vector, + expectedDiag: [] as Diagnostic[], + }, + { + expr: '2.5 / bar', + expectedValueType: ValueType.vector, + expectedDiag: [] as Diagnostic[], + }, + { + expr: 'foo and bar', + expectedValueType: ValueType.vector, + expectedDiag: [] as Diagnostic[], + }, + { + expr: 'foo or bar', + expectedValueType: ValueType.vector, + expectedDiag: [] as Diagnostic[], + }, + { + expr: 'foo unless bar', + expectedValueType: ValueType.vector, + expectedDiag: [] as Diagnostic[], + }, + { + // Test and/or precedence and reassigning of operands. + // Here it will test only the first VectorMatching so (a + b) or (c and d) ==> ManyToMany + expr: 'foo + bar or bla and blub', + expectedValueType: ValueType.vector, + expectedDiag: [] as Diagnostic[], + }, + { + // Test and/or/unless precedence. + // Here it will test only the first VectorMatching so ((a and b) unless c) or d ==> ManyToMany + expr: 'foo and bar unless baz or qux', + expectedValueType: ValueType.vector, + expectedDiag: [] as Diagnostic[], + }, + { + expr: 'foo * on(test,blub) bar', + expectedValueType: ValueType.vector, + expectedDiag: [] as Diagnostic[], + }, + { + expr: 'foo*on(test,blub)bar', + expectedValueType: ValueType.vector, + expectedDiag: [] as Diagnostic[], + }, + { + expr: 'foo * on(test,blub) group_left bar', + expectedValueType: ValueType.vector, + expectedDiag: [] as Diagnostic[], + }, + { + expr: 'foo*on(test,blub)group_left()bar', + expectedValueType: ValueType.vector, + expectedDiag: [] as Diagnostic[], + }, + { + expr: 'foo and on(test,blub) bar', + expectedValueType: ValueType.vector, + expectedDiag: [] as Diagnostic[], + }, + { + expr: 'foo and on() bar', + expectedValueType: ValueType.vector, + expectedDiag: [] as Diagnostic[], + }, + { + expr: 'foo and ignoring(test,blub) bar', + expectedValueType: ValueType.vector, + expectedDiag: [] as Diagnostic[], + }, + { + expr: 'foo and ignoring() bar', + expectedValueType: ValueType.vector, + expectedDiag: [] as Diagnostic[], + }, + { + expr: 'foo unless on(bar) baz', + expectedValueType: ValueType.vector, + expectedDiag: [] as Diagnostic[], + }, + { + expr: 'foo / on(test,blub) group_left(bar) bar', + expectedValueType: ValueType.vector, + expectedDiag: [] as Diagnostic[], + }, + { + expr: 'foo / ignoring(test,blub) group_left(blub) bar', + expectedValueType: ValueType.vector, + expectedDiag: [] as Diagnostic[], + }, + { + expr: 'foo / ignoring(test,blub) group_left(bar) bar', + expectedValueType: ValueType.vector, + expectedDiag: [] as Diagnostic[], + }, + { + expr: 'foo - on(test,blub) group_right(bar,foo) bar', + expectedValueType: ValueType.vector, + expectedDiag: [] as Diagnostic[], + }, + { + expr: 'foo - ignoring(test,blub) group_right(bar,foo) bar', + expectedValueType: ValueType.vector, + expectedDiag: [] as Diagnostic[], + }, + { + expr: 'foo and 1', + expectedValueType: ValueType.vector, + expectedDiag: [ + { + from: 0, + to: 9, + message: 'set operator not allowed in binary scalar expression', + severity: 'error', + }, + ], + }, + { + expr: '1 and foo', + expectedValueType: ValueType.vector, + expectedDiag: [ + { + from: 0, + to: 9, + message: 'set operator not allowed in binary scalar expression', + severity: 'error', + }, + ], + }, + { + expr: 'foo or 1', + expectedValueType: ValueType.vector, + expectedDiag: [ + { + from: 0, + to: 8, + message: 'set operator not allowed in binary scalar expression', + severity: 'error', + }, + ], + }, + { + expr: '1 or foo', + expectedValueType: ValueType.vector, + expectedDiag: [ + { + from: 0, + to: 8, + message: 'set operator not allowed in binary scalar expression', + severity: 'error', + }, + ], + }, + { + expr: 'foo unless 1', + expectedValueType: ValueType.vector, + expectedDiag: [ + { + from: 0, + to: 12, + message: 'set operator not allowed in binary scalar expression', + severity: 'error', + }, + ], + }, + { + expr: '1 unless foo', + expectedValueType: ValueType.vector, + expectedDiag: [ + { + from: 0, + to: 12, + message: 'set operator not allowed in binary scalar expression', + severity: 'error', + }, + ], + }, + { + expr: '1 or on(bar) foo', + expectedValueType: ValueType.vector, + expectedDiag: [ + { + from: 0, + to: 16, + message: 'vector matching only allowed between instant vectors', + severity: 'error', + }, + { + from: 0, + to: 16, + message: 'set operator not allowed in binary scalar expression', + severity: 'error', + }, + ], + }, + { + expr: 'foo == on(bar) 10', + expectedValueType: ValueType.vector, + expectedDiag: [ + { + from: 0, + to: 17, + message: 'vector matching only allowed between instant vectors', + severity: 'error', + }, + ], + }, + { + expr: 'foo and on(bar) group_left(baz) bar', + expectedValueType: ValueType.vector, + expectedDiag: [ + { + from: 0, + to: 35, + message: 'no grouping allowed for set operations', + severity: 'error', + }, + { + from: 0, + to: 35, + message: 'set operations must always be many-to-many', + severity: 'error', + }, + ], + }, + { + expr: 'foo and on(bar) group_right(baz) bar', + expectedValueType: ValueType.vector, + expectedDiag: [ + { + from: 0, + to: 36, + message: 'no grouping allowed for set operations', + severity: 'error', + }, + { + from: 0, + to: 36, + message: 'set operations must always be many-to-many', + severity: 'error', + }, + ], + }, + { + expr: 'foo or on(bar) group_left(baz) bar', + expectedValueType: ValueType.vector, + expectedDiag: [ + { + from: 0, + to: 34, + message: 'no grouping allowed for set operations', + severity: 'error', + }, + { + from: 0, + to: 34, + message: 'set operations must always be many-to-many', + severity: 'error', + }, + ], + }, + { + expr: 'foo or on(bar) group_right(baz) bar', + expectedValueType: ValueType.vector, + expectedDiag: [ + { + from: 0, + to: 35, + message: 'no grouping allowed for set operations', + severity: 'error', + }, + { + from: 0, + to: 35, + message: 'set operations must always be many-to-many', + severity: 'error', + }, + ], + }, + { + expr: 'foo unless on(bar) group_left(baz) bar', + expectedValueType: ValueType.vector, + expectedDiag: [ + { + from: 0, + to: 38, + message: 'no grouping allowed for set operations', + severity: 'error', + }, + { + from: 0, + to: 38, + message: 'set operations must always be many-to-many', + severity: 'error', + }, + ], + }, + { + expr: 'foo unless on(bar) group_right(baz) bar', + expectedValueType: ValueType.vector, + expectedDiag: [ + { + from: 0, + to: 39, + message: 'no grouping allowed for set operations', + severity: 'error', + }, + { + from: 0, + to: 39, + message: 'set operations must always be many-to-many', + severity: 'error', + }, + ], + }, + { + expr: 'http_requests{group="production"} + on(instance) group_left(job,instance) cpu_count{type="smp"}', + expectedValueType: ValueType.vector, + expectedDiag: [ + { + from: 0, + to: 95, + message: 'label "instance" must not occur in ON and GROUP clause at once', + severity: 'error', + }, + ], + }, + { + expr: 'foo + bool bar', + expectedValueType: ValueType.vector, + expectedDiag: [ + { + from: 0, + to: 14, + message: 'bool modifier can only be used on comparison operators', + severity: 'error', + }, + ], + }, + { + expr: 'foo + bool 10', + expectedValueType: ValueType.vector, + expectedDiag: [ + { + from: 0, + to: 13, + message: 'bool modifier can only be used on comparison operators', + severity: 'error', + }, + ], + }, + { + expr: 'foo and bool 10', + expectedValueType: ValueType.vector, + expectedDiag: [ + { + from: 0, + to: 15, + message: 'bool modifier can only be used on comparison operators', + severity: 'error', + }, + { + from: 0, + to: 15, + message: 'set operator not allowed in binary scalar expression', + severity: 'error', + }, + ], + }, + // test aggregration + { + expr: 'sum by (foo)(some_metric)', + expectedValueType: ValueType.vector, + expectedDiag: [], + }, + { + expr: 'avg by (foo)(some_metric)', + expectedValueType: ValueType.vector, + expectedDiag: [], + }, + { + expr: 'max by (foo)(some_metric)', + expectedValueType: ValueType.vector, + expectedDiag: [], + }, + { + expr: 'sum without (foo) (some_metric)', + expectedValueType: ValueType.vector, + expectedDiag: [], + }, + { + expr: 'sum (some_metric) without (foo)', + expectedValueType: ValueType.vector, + expectedDiag: [], + }, + { + expr: 'stddev(some_metric)', + expectedValueType: ValueType.vector, + expectedDiag: [], + }, + { + expr: 'stdvar by (foo)(some_metric)', + expectedValueType: ValueType.vector, + expectedDiag: [], + }, + { + expr: 'sum by ()(some_metric)', + expectedValueType: ValueType.vector, + expectedDiag: [], + }, + { + expr: 'sum by (foo,bar,)(some_metric)', + expectedValueType: ValueType.vector, + expectedDiag: [], + }, + { + expr: 'sum by (foo,)(some_metric)', + expectedValueType: ValueType.vector, + expectedDiag: [], + }, + { + expr: 'topk(5, some_metric)', + expectedValueType: ValueType.vector, + expectedDiag: [], + }, + { + expr: 'topk( # my awesome comment\n' + '5, some_metric)', + expectedValueType: ValueType.vector, + expectedDiag: [], + }, + { + expr: 'count_values("value", some_metric)', + expectedValueType: ValueType.vector, + expectedDiag: [], + }, + { + expr: 'sum without(and, by, avg, count, alert, annotations)(some_metric)', + expectedValueType: ValueType.vector, + expectedDiag: [], + }, + { + expr: 'sum some_metric by (test)', + expectedValueType: ValueType.vector, + expectedDiag: [ + { + from: 0, + to: 25, + message: 'unable to find the parameter for the expression', + severity: 'error', + }, + ], + }, + // Test function calls. + { + expr: 'time()', + expectedValueType: ValueType.scalar, + expectedDiag: [], + }, + { + expr: 'floor(some_metric{foo!="bar"})', + expectedValueType: ValueType.vector, + expectedDiag: [], + }, + { + expr: 'rate(some_metric[5m])', + expectedValueType: ValueType.vector, + expectedDiag: [], + }, + { + expr: 'round(some_metric)', + expectedValueType: ValueType.vector, + expectedDiag: [], + }, + { + expr: 'round(some_metric, 5)', + expectedValueType: ValueType.vector, + expectedDiag: [], + }, + { + expr: 'floor()', + expectedValueType: ValueType.vector, + expectedDiag: [ + { + from: 0, + to: 7, + message: 'expected 1 argument(s) in call to "floor", got 0', + severity: 'error', + }, + ], + }, + { + expr: 'floor(some_metric, other_metric)', + expectedValueType: ValueType.vector, + expectedDiag: [ + { + from: 0, + to: 32, + message: 'expected 1 argument(s) in call to "floor", got 2', + severity: 'error', + }, + ], + }, + { + expr: 'floor(some_metric, 1)', + expectedValueType: ValueType.vector, + expectedDiag: [ + { + from: 0, + to: 21, + message: 'expected 1 argument(s) in call to "floor", got 2', + severity: 'error', + }, + ], + }, + { + expr: 'floor(1)', + expectedValueType: ValueType.vector, + expectedDiag: [ + { + from: 6, + to: 7, + message: 'expected type vector in call to function "floor", got scalar', + severity: 'error', + }, + ], + }, + { + expr: 'hour(some_metric, some_metric, some_metric)', + expectedValueType: ValueType.vector, + expectedDiag: [ + { + from: 0, + to: 43, + message: 'expected at most 1 argument(s) in call to "hour", got 3', + severity: 'error', + }, + ], + }, + { + expr: 'time(some_metric)', + expectedValueType: ValueType.scalar, + expectedDiag: [ + { + from: 0, + to: 17, + message: 'expected 0 argument(s) in call to "time", got 1', + severity: 'error', + }, + ], + }, + { + expr: 'rate(some_metric)', + expectedValueType: ValueType.vector, + expectedDiag: [ + { + from: 5, + to: 16, + message: 'expected type matrix in call to function "rate", got vector', + severity: 'error', + }, + ], + }, + { + expr: + 'histogram_quantile( # Root of the query, final result, approximates a quantile.\n' + + ' 0.9, # 1st argument to histogram_quantile(), the target quantile.\n' + + ' sum by(le, method, path) ( # 2nd argument to histogram_quantile(), an aggregated histogram.\n' + + ' rate( # Argument to sum(), the per-second increase of a histogram over 5m.\n' + + ' demo_api_request_duration_seconds_bucket{job="demo"}[5m] # Argument to rate(), the raw histogram series over the last 5m.\n' + + ' )\n' + + ' )\n' + + ')', + expectedValueType: ValueType.vector, + expectedDiag: [], + }, + { + expr: '1 @ start()', + expectedValueType: ValueType.scalar, + expectedDiag: [ + { + from: 0, + to: 11, + message: '@ modifier must be preceded by an instant selector vector or range vector selector or a subquery', + severity: 'error', + }, + ], + }, + { + expr: 'foo @ 879', + expectedValueType: ValueType.vector, + expectedDiag: [], + }, + { + expr: 'food @ start()', + expectedValueType: ValueType.vector, + expectedDiag: [], + }, + { + expr: 'food @ end()', + expectedValueType: ValueType.vector, + expectedDiag: [], + }, + { + expr: 'sum (rate(foo[5m])) @ 456', + expectedValueType: ValueType.vector, + expectedDiag: [], + }, + ]; + testCases.forEach((value) => { + const state = createEditorState(value.expr); + const parser = new Parser(state); + it(value.expr, () => { + chai.expect(parser.checkAST(syntaxTree(state).topNode.firstChild)).to.equal(value.expectedValueType); + chai.expect(parser.getDiagnostics()).to.deep.equal(value.expectedDiag); + }); + }); +}); diff --git a/web/ui/module/codemirror-promql/src/parser/parser.ts b/web/ui/module/codemirror-promql/src/parser/parser.ts new file mode 100644 index 000000000..75067b340 --- /dev/null +++ b/web/ui/module/codemirror-promql/src/parser/parser.ts @@ -0,0 +1,345 @@ +// Copyright 2021 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { Diagnostic } from '@codemirror/lint'; +import { SyntaxNode, Tree } from '@lezer/common'; +import { + AggregateExpr, + And, + BinaryExpr, + BinModifiers, + Bool, + Bottomk, + CountValues, + Eql, + EqlSingle, + Expr, + FunctionCall, + FunctionCallArgs, + FunctionCallBody, + Gte, + Gtr, + Identifier, + LabelMatcher, + LabelMatchers, + LabelMatchList, + Lss, + Lte, + MatrixSelector, + MetricIdentifier, + Neq, + Or, + ParenExpr, + Quantile, + StepInvariantExpr, + SubqueryExpr, + Topk, + UnaryExpr, + Unless, + VectorSelector, +} from '../grammar/parser.terms'; +import { containsAtLeastOneChild, retrieveAllRecursiveNodes, walkThrough } from './path-finder'; +import { getType } from './type'; +import { buildLabelMatchers } from './matcher'; +import { EditorState } from '@codemirror/state'; +import { syntaxTree } from '@codemirror/language'; +import { getFunction, Matcher, VectorMatchCardinality, ValueType } from '../types'; +import { buildVectorMatching } from './vector'; + +export class Parser { + private readonly tree: Tree; + private readonly state: EditorState; + private readonly diagnostics: Diagnostic[]; + + constructor(state: EditorState) { + this.tree = syntaxTree(state); + this.state = state; + this.diagnostics = []; + } + + getDiagnostics(): Diagnostic[] { + return this.diagnostics.sort((a, b) => { + return a.from - b.from; + }); + } + + analyze(): void { + // when you are at the root of the tree, the first node is not `Expr` but a node with no name. + // So to be able to iterate other the node relative to the promql node, we have to get the first child at the beginning + this.checkAST(this.tree.topNode.firstChild); + this.diagnoseAllErrorNodes(); + } + + private diagnoseAllErrorNodes() { + const cursor = this.tree.cursor(); + while (cursor.next()) { + // usually there is an error node at the end of the expression when user is typing + // so it's not really a useful information to say the expression is wrong. + // Hopefully if there is an error node at the end of the tree, checkAST should yell more precisely + if (cursor.type.id === 0 && cursor.to !== this.tree.topNode.to) { + const node = cursor.node.parent; + this.diagnostics.push({ + severity: 'error', + message: 'unexpected expression', + from: node ? node.from : cursor.from, + to: node ? node.to : cursor.to, + }); + } + } + } + + // checkAST is inspired of the same named method from prometheus/prometheus: + // https://github.com/prometheus/prometheus/blob/3470ee1fbf9d424784eb2613bab5ab0f14b4d222/promql/parser/parse.go#L433 + checkAST(node: SyntaxNode | null): ValueType { + if (!node) { + return ValueType.none; + } + switch (node.type.id) { + case Expr: + return this.checkAST(node.firstChild); + case AggregateExpr: + this.checkAggregationExpr(node); + break; + case BinaryExpr: + this.checkBinaryExpr(node); + break; + case FunctionCall: + this.checkCallFunction(node); + break; + case ParenExpr: + this.checkAST(walkThrough(node, Expr)); + break; + case UnaryExpr: + const unaryExprType = this.checkAST(walkThrough(node, Expr)); + if (unaryExprType !== ValueType.scalar && unaryExprType !== ValueType.vector) { + this.addDiagnostic(node, `unary expression only allowed on expressions of type scalar or instant vector, got ${unaryExprType}`); + } + break; + case SubqueryExpr: + const subQueryExprType = this.checkAST(walkThrough(node, Expr)); + if (subQueryExprType !== ValueType.vector) { + this.addDiagnostic(node, `subquery is only allowed on instant vector, got ${subQueryExprType} in ${node.name} instead`); + } + break; + case MatrixSelector: + this.checkAST(walkThrough(node, Expr)); + break; + case VectorSelector: + this.checkVectorSelector(node); + break; + case StepInvariantExpr: + const exprValue = this.checkAST(walkThrough(node, Expr)); + if (exprValue !== ValueType.vector && exprValue !== ValueType.matrix) { + this.addDiagnostic(node, `@ modifier must be preceded by an instant selector vector or range vector selector or a subquery`); + } + // if you are looking at the Prometheus code, you will likely find that some checks are missing here. + // Specially the one checking if the timestamp after the `@` is ok: https://github.com/prometheus/prometheus/blob/ad5ed416ba635834370bfa06139258b31f8c33f9/promql/parser/parse.go#L722-L725 + // Since Javascript is managing the number as a float64 and so on 53 bits, we cannot validate that the maxInt64 number is a valid value. + // So, to manage properly this issue, we would need to use the BigInt which is possible or by using ES2020.BigInt, or by using the lib: https://github.com/GoogleChromeLabs/jsbi. + // * Introducing a lib just for theses checks is quite overkilled + // * Using ES2020 would be the way to go. Unfortunately moving to ES2020 is breaking the build of the lib. + // So far I didn't find the way to fix it. I think it's likely due to the fact we are building an ESM package which is now something stable in nodeJS/javascript but still experimental in typescript. + // For the above reason, we decided to drop these checks. + break; + } + + return getType(node); + } + + private checkAggregationExpr(node: SyntaxNode): void { + // according to https://github.com/promlabs/lezer-promql/blob/master/src/promql.grammar#L26 + // the name of the aggregator function is stored in the first child + const aggregateOp = node.firstChild?.firstChild; + if (!aggregateOp) { + this.addDiagnostic(node, 'aggregation operator expected in aggregation expression but got nothing'); + return; + } + const expr = walkThrough(node, FunctionCallBody, FunctionCallArgs, Expr); + if (!expr) { + this.addDiagnostic(node, 'unable to find the parameter for the expression'); + return; + } + this.expectType(expr, ValueType.vector, 'aggregation expression'); + // get the parameter of the aggregation operator + const params = walkThrough(node, FunctionCallBody, FunctionCallArgs, FunctionCallArgs, Expr); + if (aggregateOp.type.id === Topk || aggregateOp.type.id === Bottomk || aggregateOp.type.id === Quantile) { + if (!params) { + this.addDiagnostic(node, 'no parameter found'); + return; + } + this.expectType(params, ValueType.scalar, 'aggregation parameter'); + } + if (aggregateOp.type.id === CountValues) { + if (!params) { + this.addDiagnostic(node, 'no parameter found'); + return; + } + this.expectType(params, ValueType.string, 'aggregation parameter'); + } + } + + private checkBinaryExpr(node: SyntaxNode): void { + // Following the definition of the BinaryExpr, the left and the right + // expression are respectively the first and last child + // https://github.com/promlabs/lezer-promql/blob/master/src/promql.grammar#L52 + const lExpr = node.firstChild; + const rExpr = node.lastChild; + if (!lExpr || !rExpr) { + this.addDiagnostic(node, 'left or right expression is missing in binary expression'); + return; + } + const lt = this.checkAST(lExpr); + const rt = this.checkAST(rExpr); + const boolModifierUsed = walkThrough(node, BinModifiers, Bool); + const isComparisonOperator = containsAtLeastOneChild(node, Eql, Neq, Lte, Lss, Gte, Gtr); + const isSetOperator = containsAtLeastOneChild(node, And, Or, Unless); + + // BOOL modifier check + if (boolModifierUsed) { + if (!isComparisonOperator) { + this.addDiagnostic(node, 'bool modifier can only be used on comparison operators'); + } + } else { + if (isComparisonOperator && lt === ValueType.scalar && rt === ValueType.scalar) { + this.addDiagnostic(node, 'comparisons between scalars must use BOOL modifier'); + } + } + + const vectorMatching = buildVectorMatching(this.state, node); + if (vectorMatching !== null && vectorMatching.on) { + for (const l1 of vectorMatching.matchingLabels) { + for (const l2 of vectorMatching.include) { + if (l1 === l2) { + this.addDiagnostic(node, `label "${l1}" must not occur in ON and GROUP clause at once`); + } + } + } + } + + if (lt !== ValueType.scalar && lt !== ValueType.vector) { + this.addDiagnostic(lExpr, 'binary expression must contain only scalar and instant vector types'); + } + if (rt !== ValueType.scalar && rt !== ValueType.vector) { + this.addDiagnostic(rExpr, 'binary expression must contain only scalar and instant vector types'); + } + + if ((lt !== ValueType.vector || rt !== ValueType.vector) && vectorMatching !== null) { + if (vectorMatching.matchingLabels.length > 0) { + this.addDiagnostic(node, 'vector matching only allowed between instant vectors'); + } + } else { + if (isSetOperator) { + if (vectorMatching?.card === VectorMatchCardinality.CardOneToMany || vectorMatching?.card === VectorMatchCardinality.CardManyToOne) { + this.addDiagnostic(node, 'no grouping allowed for set operations'); + } + if (vectorMatching?.card !== VectorMatchCardinality.CardManyToMany) { + this.addDiagnostic(node, 'set operations must always be many-to-many'); + } + } + } + if ((lt === ValueType.scalar || rt === ValueType.scalar) && isSetOperator) { + this.addDiagnostic(node, 'set operator not allowed in binary scalar expression'); + } + } + + private checkCallFunction(node: SyntaxNode): void { + const funcID = node.firstChild?.firstChild; + if (!funcID) { + this.addDiagnostic(node, 'function not defined'); + return; + } + + const args = retrieveAllRecursiveNodes(walkThrough(node, FunctionCallBody), FunctionCallArgs, Expr); + const funcSignature = getFunction(funcID.type.id); + const nargs = funcSignature.argTypes.length; + + if (funcSignature.variadic === 0) { + if (args.length !== nargs) { + this.addDiagnostic(node, `expected ${nargs} argument(s) in call to "${funcSignature.name}", got ${args.length}`); + } + } else { + const na = nargs - 1; + if (na > args.length) { + this.addDiagnostic(node, `expected at least ${na} argument(s) in call to "${funcSignature.name}", got ${args.length}`); + } else { + const nargsmax = na + funcSignature.variadic; + if (funcSignature.variadic > 0 && nargsmax < args.length) { + this.addDiagnostic(node, `expected at most ${nargsmax} argument(s) in call to "${funcSignature.name}", got ${args.length}`); + } + } + } + + let j = 0; + for (let i = 0; i < args.length; i++) { + j = i; + if (j >= funcSignature.argTypes.length) { + if (funcSignature.variadic === 0) { + // This is not a vararg function so we should not check the + // type of the extra arguments. + break; + } + j = funcSignature.argTypes.length - 1; + } + this.expectType(args[i], funcSignature.argTypes[j], `call to function "${funcSignature.name}"`); + } + } + + private checkVectorSelector(node: SyntaxNode): void { + const labelMatchers = buildLabelMatchers( + retrieveAllRecursiveNodes(walkThrough(node, LabelMatchers, LabelMatchList), LabelMatchList, LabelMatcher), + this.state + ); + let vectorSelectorName = ''; + // VectorSelector ( MetricIdentifier ( Identifier ) ) + // https://github.com/promlabs/lezer-promql/blob/71e2f9fa5ae6f5c5547d5738966cd2512e6b99a8/src/promql.grammar#L200 + const vectorSelectorNodeName = walkThrough(node, MetricIdentifier, Identifier); + if (vectorSelectorNodeName) { + vectorSelectorName = this.state.sliceDoc(vectorSelectorNodeName.from, vectorSelectorNodeName.to); + } + if (vectorSelectorName !== '') { + // In this case the last LabelMatcher is checking for the metric name + // set outside the braces. This checks if the name has already been set + // previously + const labelMatcherMetricName = labelMatchers.find((lm) => lm.name === '__name__'); + if (labelMatcherMetricName) { + this.addDiagnostic(node, `metric name must not be set twice: ${vectorSelectorName} or ${labelMatcherMetricName.value}`); + } + // adding the metric name as a Matcher to avoid a false positive for this kind of expression: + // foo{bare=''} + labelMatchers.push(new Matcher(EqlSingle, '__name__', vectorSelectorName)); + } + + // A Vector selector must contain at least one non-empty matcher to prevent + // implicit selection of all metrics (e.g. by a typo). + const empty = labelMatchers.every((lm) => lm.matchesEmpty()); + if (empty) { + this.addDiagnostic(node, 'vector selector must contain at least one non-empty matcher'); + } + } + + private expectType(node: SyntaxNode, want: ValueType, context: string): void { + const t = this.checkAST(node); + if (t !== want) { + this.addDiagnostic(node, `expected type ${want} in ${context}, got ${t}`); + } + } + + private addDiagnostic(node: SyntaxNode, msg: string): void { + this.diagnostics.push({ + severity: 'error', + message: msg, + from: node.from, + to: node.to, + }); + } +} diff --git a/web/ui/module/codemirror-promql/src/parser/path-finder.test.ts b/web/ui/module/codemirror-promql/src/parser/path-finder.test.ts new file mode 100644 index 000000000..73e4d7af2 --- /dev/null +++ b/web/ui/module/codemirror-promql/src/parser/path-finder.test.ts @@ -0,0 +1,201 @@ +// Copyright 2021 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import chai from 'chai'; +import { + Add, + AggregateExpr, + BinaryExpr, + Div, + Eql, + Expr, + FunctionCall, + FunctionCallArgs, + FunctionCallBody, + Gte, + Gtr, + Lss, + Lte, + Mod, + Mul, + Neq, + NumberLiteral, + Sub, + VectorSelector, +} from '../grammar/parser.terms'; +import { createEditorState } from '../test/utils.test'; +import { containsAtLeastOneChild, containsChild, retrieveAllRecursiveNodes, walkBackward, walkThrough } from './path-finder'; +import { SyntaxNode } from '@lezer/common'; +import { syntaxTree } from '@codemirror/language'; + +describe('walkThrough test', () => { + const testCases = [ + { + title: 'should return the node when no path is given', + expr: '1 > bool 2', + pos: 0, + expectedNode: 'PromQL', + path: [] as number[], + expectedDoc: '1 > bool 2', + }, + { + title: 'should find the path', + expr: "100 * (1 - avg by(instance)(irate(node_cpu{mode='idle'}[5m])))", + pos: 11, + path: [Expr, NumberLiteral], + // for the moment the function walkThrough is not able to find the following path. + // That's because the function is iterating through the tree by searching the first possible node that matched + // the node ID path[i]. + // So for the current expression, and the given position we are in the sub expr (1 - avg ...). + // Expr is matching 1 and not avg. + // TODO fix this issue + // path: [Expr, AggregateExpr, AggregateOp, Avg], + expectedNode: NumberLiteral, + expectedDoc: '1', + }, + { + title: 'should not find the path', + expr: 'topk(10, count by (job)({__name__=~".+"}))', + pos: 12, + path: [Expr, BinaryExpr], + expectedNode: undefined, + expectedDoc: undefined, + }, + { + title: 'should find a node in a recursive node definition', + expr: 'rate(1, 2, 3)', + pos: 0, + path: [Expr, FunctionCall, FunctionCallBody, FunctionCallArgs, FunctionCallArgs, Expr, NumberLiteral], + expectedNode: NumberLiteral, + expectedDoc: '2', + }, + ]; + testCases.forEach((value) => { + it(value.title, () => { + const state = createEditorState(value.expr); + const subTree = syntaxTree(state).resolve(value.pos, -1); + const node = walkThrough(subTree, ...value.path); + if (typeof value.expectedNode === 'number') { + chai.expect(value.expectedNode).to.equal(node?.type.id); + } else { + chai.expect(value.expectedNode).to.equal(node?.type.name); + } + if (node) { + chai.expect(value.expectedDoc).to.equal(state.sliceDoc(node.from, node.to)); + } + }); + }); +}); + +describe('containsAtLeastOneChild test', () => { + const testCases = [ + { + title: 'should not find a node if none is defined', + expr: '1 > 2', + pos: 3, + expectedResult: false, + walkThrough: [], + child: [], + }, + { + title: 'should find a node in the given list', + expr: '1 > 2', + pos: 0, + walkThrough: [Expr, BinaryExpr], + child: [Eql, Neq, Lte, Lss, Gte, Gtr], + expectedResult: true, + }, + { + title: 'should not find a node in the given list', + expr: '1 > 2', + pos: 0, + walkThrough: [Expr, BinaryExpr], + child: [Mul, Div, Mod, Add, Sub], + expectedResult: false, + }, + ]; + testCases.forEach((value) => { + it(value.title, () => { + const state = createEditorState(value.expr); + const subTree = syntaxTree(state).resolve(value.pos, -1); + const node = walkThrough(subTree, ...value.walkThrough); + chai.expect(node).to.not.null; + if (node) { + chai.expect(value.expectedResult).to.equal(containsAtLeastOneChild(node, ...value.child)); + } + }); + }); +}); + +describe('containsChild test', () => { + const testCases = [ + { + title: 'Should find all expr in a subtree', + expr: 'metric_name / ignor', + pos: 0, + expectedResult: true, + walkThrough: [Expr, BinaryExpr], + child: [Expr, Expr], + }, + { + title: 'Should not find all child required', + expr: 'sum(ra)', + pos: 0, + expectedResult: false, + walkThrough: [Expr, AggregateExpr, FunctionCallBody, FunctionCallArgs], + child: [Expr, Expr], + }, + ]; + testCases.forEach((value) => { + it(value.title, () => { + const state = createEditorState(value.expr); + const subTree = syntaxTree(state).resolve(value.pos, -1); + const node: SyntaxNode | null = walkThrough(subTree, ...value.walkThrough); + + chai.expect(node).to.not.null; + if (node) { + chai.expect(value.expectedResult).to.equal(containsChild(node, ...value.child)); + } + }); + }); +}); + +describe('retrieveAllRecursiveNodes test', () => { + it('should find every occurrence', () => { + const state = createEditorState('rate(1,2,3)'); + const tree = syntaxTree(state).topNode.firstChild; + chai.expect(tree).to.not.null; + if (tree) { + chai.expect(3).to.equal(retrieveAllRecursiveNodes(walkThrough(tree, FunctionCall, FunctionCallBody), FunctionCallArgs, Expr).length); + } + }); +}); + +describe('walkbackward test', () => { + const testCases = [ + { + title: 'should find the parent', + expr: 'metric_name{}', + pos: 12, + exit: VectorSelector, + expectedResult: VectorSelector, + }, + ]; + testCases.forEach((value) => { + it(value.title, () => { + const state = createEditorState(value.expr); + const tree = syntaxTree(state).resolve(value.pos, -1); + chai.expect(value.expectedResult).to.equal(walkBackward(tree, value.exit)?.type.id); + }); + }); +}); diff --git a/web/ui/module/codemirror-promql/src/parser/path-finder.ts b/web/ui/module/codemirror-promql/src/parser/path-finder.ts new file mode 100644 index 000000000..47efbe693 --- /dev/null +++ b/web/ui/module/codemirror-promql/src/parser/path-finder.ts @@ -0,0 +1,100 @@ +// Copyright 2021 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { SyntaxNode } from '@lezer/common'; + +// walkBackward will iterate other the tree from the leaf to the root until it founds the given `exit` node. +// It returns null if the exit is not found. +export function walkBackward(node: SyntaxNode, exit: number): SyntaxNode | null { + const cursor = node.cursor; + let cursorIsMoving = true; + while (cursorIsMoving && cursor.type.id !== exit) { + cursorIsMoving = cursor.parent(); + } + return cursor.type.id === exit ? cursor.node : null; +} + +// walkThrough is going to follow the path passed in parameter. +// If it succeeds to reach the last id/name of the path, then it will return the corresponding Subtree. +// Otherwise if it's not possible to reach the last id/name of the path, it will return `null` +// Note: the way followed during the iteration of the tree to find the given path, is only from the root to the leaf. +export function walkThrough(node: SyntaxNode, ...path: (number | string)[]): SyntaxNode | null { + const cursor = node.cursor; + let i = 0; + let cursorIsMoving = true; + path.unshift(cursor.type.id); + while (i < path.length && cursorIsMoving) { + if (cursor.type.id === path[i] || cursor.type.name === path[i]) { + i++; + if (i < path.length) { + cursorIsMoving = cursor.next(); + } + } else { + cursorIsMoving = cursor.nextSibling(); + } + } + if (i >= path.length) { + return cursor.node; + } + return null; +} + +export function containsAtLeastOneChild(node: SyntaxNode, ...child: (number | string)[]): boolean { + const cursor = node.cursor; + if (!cursor.next()) { + // let's try to move directly to the children level and + // return false immediately if the current node doesn't have any child + return false; + } + let result = false; + do { + result = child.some((n) => cursor.type.id === n || cursor.type.name === n); + } while (!result && cursor.nextSibling()); + return result; +} + +export function containsChild(node: SyntaxNode, ...child: (number | string)[]): boolean { + const cursor = node.cursor; + if (!cursor.next()) { + // let's try to move directly to the children level and + // return false immediately if the current node doesn't have any child + return false; + } + let i = 0; + + do { + if (cursor.type.id === child[i] || cursor.type.name === child[i]) { + i++; + } + } while (i < child.length && cursor.nextSibling()); + + return i >= child.length; +} + +export function retrieveAllRecursiveNodes(parentNode: SyntaxNode | null, recursiveNode: number, leaf: number): SyntaxNode[] { + const nodes: SyntaxNode[] = []; + + function recursiveRetrieveNode(node: SyntaxNode | null, nodes: SyntaxNode[]) { + const subNode = node?.getChild(recursiveNode); + const le = node?.lastChild; + if (subNode && subNode.type.id === recursiveNode) { + recursiveRetrieveNode(subNode, nodes); + } + if (le && le.type.id === leaf) { + nodes.push(le); + } + } + + recursiveRetrieveNode(parentNode, nodes); + return nodes; +} diff --git a/web/ui/module/codemirror-promql/src/parser/type.ts b/web/ui/module/codemirror-promql/src/parser/type.ts new file mode 100644 index 000000000..b729f8296 --- /dev/null +++ b/web/ui/module/codemirror-promql/src/parser/type.ts @@ -0,0 +1,77 @@ +// Copyright 2021 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { SyntaxNode } from '@lezer/common'; +import { + AggregateExpr, + BinaryExpr, + Expr, + FunctionCall, + MatrixSelector, + NumberLiteral, + OffsetExpr, + ParenExpr, + StepInvariantExpr, + StringLiteral, + SubqueryExpr, + UnaryExpr, + VectorSelector, +} from '../grammar/parser.terms'; +import { walkThrough } from './path-finder'; +import { getFunction, ValueType } from '../types'; + +// Based on https://github.com/prometheus/prometheus/blob/d668a7efe3107dbdcc67bf4e9f12430ed8e2b396/promql/parser/ast.go#L191 +export function getType(node: SyntaxNode | null): ValueType { + if (!node) { + return ValueType.none; + } + switch (node.type.id) { + case Expr: + return getType(node.firstChild); + case AggregateExpr: + return ValueType.vector; + case VectorSelector: + return ValueType.vector; + case OffsetExpr: + return getType(node.firstChild); + case StringLiteral: + return ValueType.string; + case NumberLiteral: + return ValueType.scalar; + case MatrixSelector: + return ValueType.matrix; + case SubqueryExpr: + return ValueType.matrix; + case ParenExpr: + return getType(walkThrough(node, Expr)); + case UnaryExpr: + return getType(walkThrough(node, Expr)); + case BinaryExpr: + const lt = getType(node.firstChild); + const rt = getType(node.lastChild); + if (lt === ValueType.scalar && rt === ValueType.scalar) { + return ValueType.scalar; + } + return ValueType.vector; + case FunctionCall: + const funcNode = node.firstChild?.firstChild; + if (!funcNode) { + return ValueType.none; + } + return getFunction(funcNode.type.id).returnType; + case StepInvariantExpr: + return getType(walkThrough(node, Expr)); + default: + return ValueType.none; + } +} diff --git a/web/ui/module/codemirror-promql/src/parser/vector.test.ts b/web/ui/module/codemirror-promql/src/parser/vector.test.ts new file mode 100644 index 000000000..7aa9118bf --- /dev/null +++ b/web/ui/module/codemirror-promql/src/parser/vector.test.ts @@ -0,0 +1,213 @@ +// Copyright 2021 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { buildVectorMatching } from './vector'; +import { createEditorState } from '../test/utils.test'; +import { walkThrough } from './path-finder'; +import { BinaryExpr, Expr } from '../grammar/parser.terms'; +import chai from 'chai'; +import { syntaxTree } from '@codemirror/language'; +import { VectorMatchCardinality } from '../types'; + +describe('buildVectorMatching test', () => { + const testCases = [ + { + binaryExpr: 'foo * bar', + expectedVectorMatching: { card: VectorMatchCardinality.CardOneToOne, matchingLabels: [], on: false, include: [] }, + }, + { + binaryExpr: 'foo * sum', + expectedVectorMatching: { card: VectorMatchCardinality.CardOneToOne, matchingLabels: [], on: false, include: [] }, + }, + { + binaryExpr: 'foo == 1', + expectedVectorMatching: { card: VectorMatchCardinality.CardOneToOne, matchingLabels: [], on: false, include: [] }, + }, + { + binaryExpr: 'foo == bool 1', + expectedVectorMatching: { card: VectorMatchCardinality.CardOneToOne, matchingLabels: [], on: false, include: [] }, + }, + { + binaryExpr: '2.5 / bar', + expectedVectorMatching: { card: VectorMatchCardinality.CardOneToOne, matchingLabels: [], on: false, include: [] }, + }, + { + binaryExpr: 'foo and bar', + expectedVectorMatching: { + card: VectorMatchCardinality.CardManyToMany, + matchingLabels: [], + on: false, + include: [], + }, + }, + { + binaryExpr: 'foo or bar', + expectedVectorMatching: { + card: VectorMatchCardinality.CardManyToMany, + matchingLabels: [], + on: false, + include: [], + }, + }, + { + binaryExpr: 'foo unless bar', + expectedVectorMatching: { + card: VectorMatchCardinality.CardManyToMany, + matchingLabels: [], + on: false, + include: [], + }, + }, + { + // Test and/or precedence and reassigning of operands. + // Here it will test only the first VectorMatching so (a + b) or (c and d) ==> ManyToMany + binaryExpr: 'foo + bar or bla and blub', + expectedVectorMatching: { + card: VectorMatchCardinality.CardManyToMany, + matchingLabels: [], + on: false, + include: [], + }, + }, + { + // Test and/or/unless precedence. + // Here it will test only the first VectorMatching so ((a and b) unless c) or d ==> ManyToMany + binaryExpr: 'foo and bar unless baz or qux', + expectedVectorMatching: { + card: VectorMatchCardinality.CardManyToMany, + matchingLabels: [], + on: false, + include: [], + }, + }, + { + binaryExpr: 'foo * on(test,blub) bar', + expectedVectorMatching: { + card: VectorMatchCardinality.CardOneToOne, + matchingLabels: ['test', 'blub'], + on: true, + include: [], + }, + }, + { + binaryExpr: 'foo * on(test,blub) group_left bar', + expectedVectorMatching: { + card: VectorMatchCardinality.CardManyToOne, + matchingLabels: ['test', 'blub'], + on: true, + include: [], + }, + }, + { + binaryExpr: 'foo and on(test,blub) bar', + expectedVectorMatching: { + card: VectorMatchCardinality.CardManyToMany, + matchingLabels: ['test', 'blub'], + on: true, + include: [], + }, + }, + { + binaryExpr: 'foo and on() bar', + expectedVectorMatching: { + card: VectorMatchCardinality.CardManyToMany, + matchingLabels: [], + on: true, + include: [], + }, + }, + { + binaryExpr: 'foo and ignoring(test,blub) bar', + expectedVectorMatching: { + card: VectorMatchCardinality.CardManyToMany, + matchingLabels: ['test', 'blub'], + on: false, + include: [], + }, + }, + { + binaryExpr: 'foo and ignoring() bar', + expectedVectorMatching: { + card: VectorMatchCardinality.CardManyToMany, + matchingLabels: [], + on: false, + include: [], + }, + }, + { + binaryExpr: 'foo unless on(bar) baz', + expectedVectorMatching: { + card: VectorMatchCardinality.CardManyToMany, + matchingLabels: ['bar'], + on: true, + include: [], + }, + }, + { + binaryExpr: 'foo / on(test,blub) group_left(bar) bar', + expectedVectorMatching: { + card: VectorMatchCardinality.CardManyToOne, + matchingLabels: ['test', 'blub'], + on: true, + include: ['bar'], + }, + }, + { + binaryExpr: 'foo / ignoring(test,blub) group_left(blub) bar', + expectedVectorMatching: { + card: VectorMatchCardinality.CardManyToOne, + matchingLabels: ['test', 'blub'], + on: false, + include: ['blub'], + }, + }, + { + binaryExpr: 'foo / ignoring(test,blub) group_left(bar) bar', + expectedVectorMatching: { + card: VectorMatchCardinality.CardManyToOne, + matchingLabels: ['test', 'blub'], + on: false, + include: ['bar'], + }, + }, + { + binaryExpr: 'foo - on(test,blub) group_right(bar,foo) bar', + expectedVectorMatching: { + card: VectorMatchCardinality.CardOneToMany, + matchingLabels: ['test', 'blub'], + on: true, + include: ['bar', 'foo'], + }, + }, + { + binaryExpr: 'foo - ignoring(test,blub) group_right(bar,foo) bar', + expectedVectorMatching: { + card: VectorMatchCardinality.CardOneToMany, + matchingLabels: ['test', 'blub'], + on: false, + include: ['bar', 'foo'], + }, + }, + ]; + testCases.forEach((value) => { + it(value.binaryExpr, () => { + const state = createEditorState(value.binaryExpr); + const node = walkThrough(syntaxTree(state).topNode, Expr, BinaryExpr); + chai.expect(node).to.not.null; + chai.expect(node).to.not.undefined; + if (node) { + chai.expect(value.expectedVectorMatching).to.deep.equal(buildVectorMatching(state, node)); + } + }); + }); +}); diff --git a/web/ui/module/codemirror-promql/src/parser/vector.ts b/web/ui/module/codemirror-promql/src/parser/vector.ts new file mode 100644 index 000000000..269169217 --- /dev/null +++ b/web/ui/module/codemirror-promql/src/parser/vector.ts @@ -0,0 +1,74 @@ +// Copyright 2021 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { EditorState } from '@codemirror/state'; +import { SyntaxNode } from '@lezer/common'; +import { + And, + BinaryExpr, + BinModifiers, + GroupingLabel, + GroupingLabelList, + GroupingLabels, + GroupLeft, + GroupRight, + On, + OnOrIgnoring, + Or, + Unless, +} from '../grammar/parser.terms'; +import { VectorMatchCardinality, VectorMatching } from '../types'; +import { containsAtLeastOneChild, retrieveAllRecursiveNodes } from './path-finder'; + +export function buildVectorMatching(state: EditorState, binaryNode: SyntaxNode): VectorMatching | null { + if (!binaryNode || binaryNode.type.id !== BinaryExpr) { + return null; + } + const result: VectorMatching = { + card: VectorMatchCardinality.CardOneToOne, + matchingLabels: [], + on: false, + include: [], + }; + const binModifiers = binaryNode.getChild(BinModifiers); + if (binModifiers) { + const onOrIgnoring = binModifiers.getChild(OnOrIgnoring); + if (onOrIgnoring) { + result.on = onOrIgnoring.getChild(On) !== null; + const labels = retrieveAllRecursiveNodes(onOrIgnoring.getChild(GroupingLabels), GroupingLabelList, GroupingLabel); + if (labels.length > 0) { + for (const label of labels) { + result.matchingLabels.push(state.sliceDoc(label.from, label.to)); + } + } + } + + const groupLeft = binModifiers.getChild(GroupLeft); + const groupRight = binModifiers.getChild(GroupRight); + if (groupLeft || groupRight) { + result.card = groupLeft ? VectorMatchCardinality.CardManyToOne : VectorMatchCardinality.CardOneToMany; + const includeLabels = retrieveAllRecursiveNodes(binModifiers.getChild(GroupingLabels), GroupingLabelList, GroupingLabel); + if (includeLabels.length > 0) { + for (const label of includeLabels) { + result.include.push(state.sliceDoc(label.from, label.to)); + } + } + } + } + + const isSetOperator = containsAtLeastOneChild(binaryNode, And, Or, Unless); + if (isSetOperator && result.card === VectorMatchCardinality.CardOneToOne) { + result.card = VectorMatchCardinality.CardManyToMany; + } + return result; +} diff --git a/web/ui/module/codemirror-promql/src/promql.ts b/web/ui/module/codemirror-promql/src/promql.ts new file mode 100644 index 000000000..416109a3c --- /dev/null +++ b/web/ui/module/codemirror-promql/src/promql.ts @@ -0,0 +1,119 @@ +// Copyright 2021 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { parser } from './grammar/parser'; +import { styleTags, tags } from '@codemirror/highlight'; +import { Extension } from '@codemirror/state'; +import { CompleteConfiguration, CompleteStrategy, newCompleteStrategy } from './complete'; +import { LintStrategy, newLintStrategy, promQLLinter } from './lint'; +import { CompletionContext } from '@codemirror/autocomplete'; +import { LRLanguage } from '@codemirror/language'; + +export enum LanguageType { + PromQL = 'PromQL', + MetricName = 'MetricName', +} + +export function promQLLanguage(top: LanguageType): LRLanguage { + return LRLanguage.define({ + parser: parser.configure({ + top: top, + props: [ + styleTags({ + LineComment: tags.comment, + LabelName: tags.labelName, + StringLiteral: tags.string, + NumberLiteral: tags.number, + Duration: tags.number, + 'Abs Absent AbsentOverTime Acos Acosh Asin Asinh Atan Atanh AvgOverTime Ceil Changes Clamp ClampMax ClampMin Cos Cosh CountOverTime DaysInMonth DayOfMonth DayOfWeek Deg Delta Deriv Exp Floor HistogramQuantile HoltWinters Hour Idelta Increase Irate LabelReplace LabelJoin LastOverTime Ln Log10 Log2 MaxOverTime MinOverTime Minute Month Pi PredictLinear PresentOverTime QuantileOverTime Rad Rate Resets Round Scalar Sgn Sin Sinh Sort SortDesc Sqrt StddevOverTime StdvarOverTime SumOverTime Tan Tanh Time Timestamp Vector Year': + tags.function(tags.variableName), + 'Avg Bottomk Count Count_values Group Max Min Quantile Stddev Stdvar Sum Topk': tags.operatorKeyword, + 'By Without Bool On Ignoring GroupLeft GroupRight Offset Start End': tags.modifier, + 'And Unless Or': tags.logicOperator, + 'Sub Add Mul Mod Div Atan2 Eql Neq Lte Lss Gte Gtr EqlRegex EqlSingle NeqRegex Pow At': tags.operator, + UnaryOp: tags.arithmeticOperator, + '( )': tags.paren, + '[ ]': tags.squareBracket, + '{ }': tags.brace, + '⚠': tags.invalid, + }), + ], + }), + languageData: { + closeBrackets: { brackets: ['(', '[', '{', "'", '"', '`'] }, + commentTokens: { line: '#' }, + }, + }); +} + +/** + * This class holds the state of the completion extension for CodeMirror and allow hot-swapping the complete strategy. + */ +export class PromQLExtension { + private complete: CompleteStrategy; + private lint: LintStrategy; + private enableCompletion: boolean; + private enableLinter: boolean; + + constructor() { + this.complete = newCompleteStrategy(); + this.lint = newLintStrategy(); + this.enableLinter = true; + this.enableCompletion = true; + } + + setComplete(conf?: CompleteConfiguration): PromQLExtension { + this.complete = newCompleteStrategy(conf); + return this; + } + + getComplete(): CompleteStrategy { + return this.complete; + } + + activateCompletion(activate: boolean): PromQLExtension { + this.enableCompletion = activate; + return this; + } + + setLinter(linter: LintStrategy): PromQLExtension { + this.lint = linter; + return this; + } + + getLinter(): LintStrategy { + return this.lint; + } + + activateLinter(activate: boolean): PromQLExtension { + this.enableLinter = activate; + return this; + } + + asExtension(languageType = LanguageType.PromQL): Extension { + const language = promQLLanguage(languageType); + let extension: Extension = [language]; + if (this.enableCompletion) { + const completion = language.data.of({ + autocomplete: (context: CompletionContext) => { + return this.complete.promQL(context); + }, + }); + extension = extension.concat(completion); + } + if (this.enableLinter) { + extension = extension.concat(promQLLinter(this.lint.promQL, this.lint)); + } + return extension; + } +} diff --git a/web/ui/module/codemirror-promql/src/test/alertmanager_alerts_series.json b/web/ui/module/codemirror-promql/src/test/alertmanager_alerts_series.json new file mode 100644 index 000000000..d9c366b60 --- /dev/null +++ b/web/ui/module/codemirror-promql/src/test/alertmanager_alerts_series.json @@ -0,0 +1,19 @@ +{ + "status": "success", + "data": [ + { + "__name__": "alertmanager_alerts", + "env": "demo", + "instance": "demo.do.prometheus.io:9093", + "job": "alertmanager", + "state": "active" + }, + { + "__name__": "alertmanager_alerts", + "env": "demo", + "instance": "demo.do.prometheus.io:9093", + "job": "alertmanager", + "state": "suppressed" + } + ] +} diff --git a/web/ui/module/codemirror-promql/src/test/metadata.json b/web/ui/module/codemirror-promql/src/test/metadata.json new file mode 100644 index 000000000..a60c65750 --- /dev/null +++ b/web/ui/module/codemirror-promql/src/test/metadata.json @@ -0,0 +1,89 @@ +{ + "status": "success", + "data": { + "alertmanager_alerts": [ + { + "type": "gauge", + "help": "How many alerts by state.", + "unit": "" + } + ], + "alertmanager_alerts_invalid_total": [ + { + "type": "counter", + "help": "The total number of received alerts that were invalid.", + "unit": "" + } + ], + "alertmanager_alerts_received_total": [ + { + "type": "counter", + "help": "The total number of received alerts.", + "unit": "" + } + ], + "alertmanager_build_info": [ + { + "type": "gauge", + "help": "A metric with a constant '1' value labeled by version, revision, branch, and goversion from which alertmanager was built.", + "unit": "" + } + ], + "alertmanager_cluster_enabled": [ + { + "type": "gauge", + "help": "Indicates whether the clustering is enabled or not.", + "unit": "" + } + ], + "alertmanager_config_hash": [ + { + "type": "gauge", + "help": "Hash of the currently loaded alertmanager configuration.", + "unit": "" + } + ], + "alertmanager_config_last_reload_success_timestamp_seconds": [ + { + "type": "gauge", + "help": "Timestamp of the last successful configuration reload.", + "unit": "" + } + ], + "alertmanager_config_last_reload_successful": [ + { + "type": "gauge", + "help": "Whether the last configuration reload attempt was successful.", + "unit": "" + } + ], + "alertmanager_dispatcher_aggregation_groups": [ + { + "type": "gauge", + "help": "Number of active aggregation groups", + "unit": "" + } + ], + "alertmanager_dispatcher_alert_processing_duration_seconds": [ + { + "type": "summary", + "help": "Summary of latencies for the processing of alerts.", + "unit": "" + } + ], + "alertmanager_http_concurrency_limit_exceeded_total": [ + { + "type": "counter", + "help": "Total number of times an HTTP request failed because the concurrency limit was reached.", + "unit": "" + } + ], + "alertmanager_http_request_duration_seconds": [ + { + "type": "histogram", + "help": "Histogram of latencies for HTTP requests.", + "unit": "" + } + ] + } +} diff --git a/web/ui/module/codemirror-promql/src/test/metric_name.json b/web/ui/module/codemirror-promql/src/test/metric_name.json new file mode 100644 index 000000000..9095ead67 --- /dev/null +++ b/web/ui/module/codemirror-promql/src/test/metric_name.json @@ -0,0 +1,22 @@ +{ + "status": "success", + "data": [ + "ALERTS", + "ALERTS_FOR_STATE", + "alertmanager_alerts", + "alertmanager_alerts_invalid_total", + "alertmanager_alerts_received_total", + "alertmanager_build_info", + "alertmanager_cluster_enabled", + "alertmanager_config_hash", + "alertmanager_config_last_reload_success_timestamp_seconds", + "alertmanager_config_last_reload_successful", + "alertmanager_dispatcher_aggregation_groups", + "alertmanager_dispatcher_alert_processing_duration_seconds_count", + "alertmanager_dispatcher_alert_processing_duration_seconds_sum", + "alertmanager_http_concurrency_limit_exceeded_total", + "alertmanager_http_request_duration_seconds_bucket", + "alertmanager_http_request_duration_seconds_count", + "alertmanager_http_request_duration_seconds_sum" + ] +} diff --git a/web/ui/module/codemirror-promql/src/test/utils.test.ts b/web/ui/module/codemirror-promql/src/test/utils.test.ts new file mode 100644 index 000000000..32e635c31 --- /dev/null +++ b/web/ui/module/codemirror-promql/src/test/utils.test.ts @@ -0,0 +1,144 @@ +// Copyright 2021 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { parser } from '../grammar/parser'; +import { EditorState } from '@codemirror/state'; +import { LRLanguage } from '@codemirror/language'; +import nock from 'nock'; + +// used to inject an implementation of fetch in NodeJS +require('isomorphic-fetch'); + +const lightPromQLSyntax = LRLanguage.define({ parser: parser }); + +export function createEditorState(expr: string): EditorState { + return EditorState.create({ + doc: expr, + extensions: lightPromQLSyntax, + }); +} + +export function mockPrometheusServer(): void { + nock('http://localhost:8080') + .get('/api/v1/label/__name__/values') + .query(true) + .replyWithFile(200, __dirname + '/metric_name.json') + .get('/api/v1/metadata') + .replyWithFile(200, __dirname + '/metadata.json') + .get('/api/v1/series') + .query(true) + .replyWithFile(200, __dirname + '/alertmanager_alerts_series.json') + .post('/api/v1/series') + .replyWithFile(200, __dirname + '/alertmanager_alerts_series.json'); +} + +export const mockedMetricsTerms = [ + { + label: 'ALERTS', + type: 'constant', + }, + { + label: 'ALERTS_FOR_STATE', + type: 'constant', + }, + { + detail: 'gauge', + info: 'How many alerts by state.', + label: 'alertmanager_alerts', + type: 'constant', + }, + { + detail: 'counter', + info: 'The total number of received alerts that were invalid.', + label: 'alertmanager_alerts_invalid_total', + type: 'constant', + }, + { + detail: 'counter', + info: 'The total number of received alerts.', + label: 'alertmanager_alerts_received_total', + type: 'constant', + }, + { + detail: 'gauge', + info: "A metric with a constant '1' value labeled by version, revision, branch, and goversion from which alertmanager was built.", + label: 'alertmanager_build_info', + type: 'constant', + }, + { + detail: 'gauge', + info: 'Indicates whether the clustering is enabled or not.', + label: 'alertmanager_cluster_enabled', + type: 'constant', + }, + { + detail: 'gauge', + info: 'Hash of the currently loaded alertmanager configuration.', + label: 'alertmanager_config_hash', + type: 'constant', + }, + { + detail: 'gauge', + info: 'Timestamp of the last successful configuration reload.', + label: 'alertmanager_config_last_reload_success_timestamp_seconds', + type: 'constant', + }, + { + detail: 'gauge', + info: 'Whether the last configuration reload attempt was successful.', + label: 'alertmanager_config_last_reload_successful', + type: 'constant', + }, + { + detail: 'gauge', + info: 'Number of active aggregation groups', + label: 'alertmanager_dispatcher_aggregation_groups', + type: 'constant', + }, + { + detail: 'counter', + info: 'The total number of observations for: Summary of latencies for the processing of alerts.', + label: 'alertmanager_dispatcher_alert_processing_duration_seconds_count', + type: 'constant', + }, + { + detail: 'counter', + info: 'The total sum of observations for: Summary of latencies for the processing of alerts.', + label: 'alertmanager_dispatcher_alert_processing_duration_seconds_sum', + type: 'constant', + }, + { + detail: 'counter', + info: 'Total number of times an HTTP request failed because the concurrency limit was reached.', + label: 'alertmanager_http_concurrency_limit_exceeded_total', + type: 'constant', + }, + { + detail: 'counter', + info: 'The total count of observations for a bucket in the histogram: Histogram of latencies for HTTP requests.', + label: 'alertmanager_http_request_duration_seconds_bucket', + type: 'constant', + }, + { + detail: 'counter', + info: 'The total number of observations for: Histogram of latencies for HTTP requests.', + label: 'alertmanager_http_request_duration_seconds_count', + type: 'constant', + }, + { + detail: 'counter', + info: 'The total sum of observations for: Histogram of latencies for HTTP requests.', + label: 'alertmanager_http_request_duration_seconds_sum', + type: 'constant', + }, +]; diff --git a/web/ui/module/codemirror-promql/src/types/function.ts b/web/ui/module/codemirror-promql/src/types/function.ts new file mode 100644 index 000000000..4a2015534 --- /dev/null +++ b/web/ui/module/codemirror-promql/src/types/function.ts @@ -0,0 +1,501 @@ +// Copyright 2021 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { + Abs, + Absent, + AbsentOverTime, + Acos, + Acosh, + Asin, + Asinh, + Atan, + Atanh, + AvgOverTime, + Ceil, + Changes, + Clamp, + ClampMax, + ClampMin, + Cos, + Cosh, + CountOverTime, + DayOfMonth, + DayOfWeek, + DaysInMonth, + Deg, + Delta, + Deriv, + Exp, + Floor, + HistogramQuantile, + HoltWinters, + Hour, + Idelta, + Increase, + Irate, + LabelJoin, + LabelReplace, + LastOverTime, + Ln, + Log10, + Log2, + MaxOverTime, + MinOverTime, + Minute, + Month, + Pi, + PredictLinear, + PresentOverTime, + QuantileOverTime, + Rad, + Rate, + Resets, + Round, + Scalar, + Sgn, + Sin, + Sinh, + Sort, + SortDesc, + Sqrt, + StddevOverTime, + StdvarOverTime, + SumOverTime, + Tan, + Tanh, + Time, + Timestamp, + Vector, + Year, +} from '../grammar/parser.terms'; + +export enum ValueType { + none = 'none', + vector = 'vector', + scalar = 'scalar', + matrix = 'matrix', + string = 'string', +} + +export interface PromQLFunction { + name: string; + argTypes: ValueType[]; + variadic: number; + returnType: ValueType; +} + +// promqlFunctions is a list of all functions supported by PromQL, including their types. +// Based on https://github.com/prometheus/prometheus/blob/master/promql/parser/functions.go#L26 +const promqlFunctions: { [key: number]: PromQLFunction } = { + [Abs]: { + name: 'abs', + argTypes: [ValueType.vector], + variadic: 0, + returnType: ValueType.vector, + }, + [Absent]: { + name: 'absent', + argTypes: [ValueType.vector], + variadic: 0, + returnType: ValueType.vector, + }, + [AbsentOverTime]: { + name: 'absent_over_time', + argTypes: [ValueType.matrix], + variadic: 0, + returnType: ValueType.vector, + }, + [Acos]: { + name: 'acos', + argTypes: [ValueType.vector], + variadic: 0, + returnType: ValueType.vector, + }, + [Acosh]: { + name: 'acosh', + argTypes: [ValueType.vector], + variadic: 0, + returnType: ValueType.vector, + }, + [Asin]: { + name: 'asin', + argTypes: [ValueType.vector], + variadic: 0, + returnType: ValueType.vector, + }, + [Asinh]: { + name: 'asinh', + argTypes: [ValueType.vector], + variadic: 0, + returnType: ValueType.vector, + }, + [Atan]: { + name: 'atan', + argTypes: [ValueType.vector], + variadic: 0, + returnType: ValueType.vector, + }, + [Atanh]: { + name: 'atanh', + argTypes: [ValueType.vector], + variadic: 0, + returnType: ValueType.vector, + }, + [AvgOverTime]: { + name: 'avg_over_time', + argTypes: [ValueType.matrix], + variadic: 0, + returnType: ValueType.vector, + }, + [Ceil]: { + name: 'ceil', + argTypes: [ValueType.vector], + variadic: 0, + returnType: ValueType.vector, + }, + [Changes]: { + name: 'changes', + argTypes: [ValueType.matrix], + variadic: 0, + returnType: ValueType.vector, + }, + [Clamp]: { + name: 'clamp', + argTypes: [ValueType.vector, ValueType.scalar, ValueType.scalar], + variadic: 0, + returnType: ValueType.vector, + }, + [ClampMax]: { + name: 'clamp_max', + argTypes: [ValueType.vector, ValueType.scalar], + variadic: 0, + returnType: ValueType.vector, + }, + [ClampMin]: { + name: 'clamp_min', + argTypes: [ValueType.vector, ValueType.scalar], + variadic: 0, + returnType: ValueType.vector, + }, + [Cos]: { + name: 'cos', + argTypes: [ValueType.vector], + variadic: 0, + returnType: ValueType.vector, + }, + [Cosh]: { + name: 'Cosh', + argTypes: [ValueType.vector], + variadic: 0, + returnType: ValueType.vector, + }, + [CountOverTime]: { + name: 'count_over_time', + argTypes: [ValueType.matrix], + variadic: 0, + returnType: ValueType.vector, + }, + [DaysInMonth]: { + name: 'days_in_month', + argTypes: [ValueType.vector], + variadic: 1, + returnType: ValueType.vector, + }, + [DayOfMonth]: { + name: 'day_of_month', + argTypes: [ValueType.vector], + variadic: 1, + returnType: ValueType.vector, + }, + [DayOfWeek]: { + name: 'day_of_week', + argTypes: [ValueType.vector], + variadic: 1, + returnType: ValueType.vector, + }, + [Deg]: { + name: 'deg', + argTypes: [ValueType.vector], + variadic: 0, + returnType: ValueType.vector, + }, + [Delta]: { + name: 'delta', + argTypes: [ValueType.matrix], + variadic: 0, + returnType: ValueType.vector, + }, + [Deriv]: { + name: 'deriv', + argTypes: [ValueType.matrix], + variadic: 0, + returnType: ValueType.vector, + }, + [Exp]: { + name: 'exp', + argTypes: [ValueType.vector], + variadic: 0, + returnType: ValueType.vector, + }, + [Floor]: { + name: 'floor', + argTypes: [ValueType.vector], + variadic: 0, + returnType: ValueType.vector, + }, + [HistogramQuantile]: { + name: 'histogram_quantile', + argTypes: [ValueType.scalar, ValueType.vector], + variadic: 0, + returnType: ValueType.vector, + }, + [HoltWinters]: { + name: 'holt_winters', + argTypes: [ValueType.matrix, ValueType.scalar, ValueType.scalar], + variadic: 0, + returnType: ValueType.vector, + }, + [Hour]: { + name: 'hour', + argTypes: [ValueType.vector], + variadic: 1, + returnType: ValueType.vector, + }, + [Idelta]: { + name: 'idelta', + argTypes: [ValueType.matrix], + variadic: 0, + returnType: ValueType.vector, + }, + [Increase]: { + name: 'increase', + argTypes: [ValueType.matrix], + variadic: 0, + returnType: ValueType.vector, + }, + [Irate]: { + name: 'irate', + argTypes: [ValueType.matrix], + variadic: 0, + returnType: ValueType.vector, + }, + [LabelReplace]: { + name: 'label_replace', + argTypes: [ValueType.vector, ValueType.string, ValueType.string, ValueType.string, ValueType.string], + variadic: 0, + returnType: ValueType.vector, + }, + [LabelJoin]: { + name: 'label_join', + argTypes: [ValueType.vector, ValueType.string, ValueType.string, ValueType.string], + variadic: -1, + returnType: ValueType.vector, + }, + [LastOverTime]: { + name: 'last_over_time', + argTypes: [ValueType.matrix], + variadic: 0, + returnType: ValueType.vector, + }, + [Ln]: { + name: 'ln', + argTypes: [ValueType.vector], + variadic: 0, + returnType: ValueType.vector, + }, + [Log10]: { + name: 'log10', + argTypes: [ValueType.vector], + variadic: 0, + returnType: ValueType.vector, + }, + [Log2]: { + name: 'log2', + argTypes: [ValueType.vector], + variadic: 0, + returnType: ValueType.vector, + }, + [MaxOverTime]: { + name: 'max_over_time', + argTypes: [ValueType.matrix], + variadic: 0, + returnType: ValueType.vector, + }, + [MinOverTime]: { + name: 'min_over_time', + argTypes: [ValueType.matrix], + variadic: 0, + returnType: ValueType.vector, + }, + [Minute]: { + name: 'minute', + argTypes: [ValueType.vector], + variadic: 1, + returnType: ValueType.vector, + }, + [Month]: { + name: 'month', + argTypes: [ValueType.vector], + variadic: 1, + returnType: ValueType.vector, + }, + [Pi]: { + name: 'pi', + argTypes: [], + variadic: 0, + returnType: ValueType.vector, + }, + [PredictLinear]: { + name: 'predict_linear', + argTypes: [ValueType.matrix, ValueType.scalar], + variadic: 0, + returnType: ValueType.vector, + }, + [PresentOverTime]: { + name: 'present_over_time', + argTypes: [ValueType.matrix], + variadic: 0, + returnType: ValueType.vector, + }, + [QuantileOverTime]: { + name: 'quantile_over_time', + argTypes: [ValueType.scalar, ValueType.matrix], + variadic: 0, + returnType: ValueType.vector, + }, + [Rad]: { + name: 'rad', + argTypes: [ValueType.vector], + variadic: 0, + returnType: ValueType.vector, + }, + [Rate]: { + name: 'rate', + argTypes: [ValueType.matrix], + variadic: 0, + returnType: ValueType.vector, + }, + [Resets]: { + name: 'resets', + argTypes: [ValueType.matrix], + variadic: 0, + returnType: ValueType.vector, + }, + [Round]: { + name: 'round', + argTypes: [ValueType.vector, ValueType.scalar], + variadic: 1, + returnType: ValueType.vector, + }, + [Scalar]: { + name: 'scalar', + argTypes: [ValueType.vector], + variadic: 0, + returnType: ValueType.scalar, + }, + [Sgn]: { + name: 'sgn', + argTypes: [ValueType.vector], + variadic: 0, + returnType: ValueType.vector, + }, + [Sin]: { + name: 'sin', + argTypes: [ValueType.vector], + variadic: 0, + returnType: ValueType.vector, + }, + [Sinh]: { + name: 'Sinh', + argTypes: [ValueType.vector], + variadic: 0, + returnType: ValueType.vector, + }, + [Sort]: { + name: 'sort', + argTypes: [ValueType.vector], + variadic: 0, + returnType: ValueType.vector, + }, + [SortDesc]: { + name: 'sort_desc', + argTypes: [ValueType.vector], + variadic: 0, + returnType: ValueType.vector, + }, + [Sqrt]: { + name: 'sqrt', + argTypes: [ValueType.vector], + variadic: 0, + returnType: ValueType.vector, + }, + [StddevOverTime]: { + name: 'stddev_over_time', + argTypes: [ValueType.matrix], + variadic: 0, + returnType: ValueType.vector, + }, + [StdvarOverTime]: { + name: 'stdvar_over_time', + argTypes: [ValueType.matrix], + variadic: 0, + returnType: ValueType.vector, + }, + [SumOverTime]: { + name: 'sum_over_time', + argTypes: [ValueType.matrix], + variadic: 0, + returnType: ValueType.vector, + }, + [Tan]: { + name: 'tan', + argTypes: [ValueType.vector], + variadic: 0, + returnType: ValueType.vector, + }, + [Tanh]: { + name: 'tanh', + argTypes: [ValueType.vector], + variadic: 0, + returnType: ValueType.vector, + }, + [Time]: { + name: 'time', + argTypes: [], + variadic: 0, + returnType: ValueType.scalar, + }, + [Timestamp]: { + name: 'timestamp', + argTypes: [ValueType.vector], + variadic: 0, + returnType: ValueType.vector, + }, + [Vector]: { + name: 'vector', + argTypes: [ValueType.scalar], + variadic: 0, + returnType: ValueType.vector, + }, + [Year]: { + name: 'year', + argTypes: [ValueType.vector], + variadic: 1, + returnType: ValueType.vector, + }, +}; + +export function getFunction(id: number): PromQLFunction { + return promqlFunctions[id]; +} diff --git a/web/ui/module/codemirror-promql/src/types/index.ts b/web/ui/module/codemirror-promql/src/types/index.ts new file mode 100644 index 000000000..812ea7a9a --- /dev/null +++ b/web/ui/module/codemirror-promql/src/types/index.ts @@ -0,0 +1,16 @@ +// Copyright 2021 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +export { ValueType, PromQLFunction, getFunction } from './function'; +export { Matcher } from './matcher'; +export { VectorMatchCardinality, VectorMatching } from './vector'; diff --git a/web/ui/module/codemirror-promql/src/types/matcher.ts b/web/ui/module/codemirror-promql/src/types/matcher.ts new file mode 100644 index 000000000..ecbe23823 --- /dev/null +++ b/web/ui/module/codemirror-promql/src/types/matcher.ts @@ -0,0 +1,37 @@ +// Copyright 2021 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { EqlSingle, Neq } from '../grammar/parser.terms'; + +export class Matcher { + type: number; + name: string; + value: string; + + constructor(type: number, name: string, value: string) { + this.type = type; + this.name = name; + this.value = value; + } + + matchesEmpty(): boolean { + switch (this.type) { + case EqlSingle: + return this.value === ''; + case Neq: + return this.value !== ''; + default: + return false; + } + } +} diff --git a/web/ui/module/codemirror-promql/src/types/vector.ts b/web/ui/module/codemirror-promql/src/types/vector.ts new file mode 100644 index 000000000..4e7a4f4c4 --- /dev/null +++ b/web/ui/module/codemirror-promql/src/types/vector.ts @@ -0,0 +1,33 @@ +// Copyright 2021 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +export enum VectorMatchCardinality { + CardOneToOne = 'one-to-one', + CardManyToOne = 'many-to-one', + CardOneToMany = 'one-to-many', + CardManyToMany = 'many-to-many', +} + +export interface VectorMatching { + // The cardinality of the two Vectors. + card: VectorMatchCardinality; + // MatchingLabels contains the labels which define equality of a pair of + // elements from the Vectors. + matchingLabels: string[]; + // On includes the given label names from matching, + // rather than excluding them. + on: boolean; + // Include contains additional labels that should be included in + // the result from the side with the lower cardinality. + include: string[]; +} diff --git a/web/ui/module/codemirror-promql/tsconfig.json b/web/ui/module/codemirror-promql/tsconfig.json new file mode 100644 index 000000000..033e01669 --- /dev/null +++ b/web/ui/module/codemirror-promql/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "target": "ES2015", + "module": "commonjs", + "lib": [ + "es6", + "dom" + ], + "declaration": true, + "outDir": "dist", + "strict": true, + "sourceMap": true, + "moduleResolution": "node", + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "allowJs": true, + "skipLibCheck": true + }, + "include": [ + "src/" + ], + "exclude": [ + "src/**/*.test.ts" + ] +} diff --git a/web/ui/package-lock.json b/web/ui/package-lock.json new file mode 100644 index 000000000..b14cf0823 --- /dev/null +++ b/web/ui/package-lock.json @@ -0,0 +1,45607 @@ +{ + "name": "prometheus", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "prometheus", + "workspaces": [ + "react-app", + "module/*" + ], + "engines": { + "npm": ">=7.0.0" + } + }, + "module/codemirror-promql": { + "version": "0.18.0", + "license": "Apache-2.0", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "devDependencies": { + "@codemirror/autocomplete": "^0.19.3", + "@codemirror/basic-setup": "^0.19.0", + "@codemirror/highlight": "^0.19.5", + "@codemirror/language": "^0.19.3", + "@codemirror/lint": "^0.19.1", + "@codemirror/state": "^0.19.2", + "@codemirror/view": "^0.19.7", + "@lezer/common": "^0.15.5", + "@lezer/generator": "^0.15.1", + "@types/chai": "^4.2.12", + "@types/lru-cache": "^5.1.0", + "@types/mocha": "^8.0.3", + "@types/node": "^16.7.6", + "@typescript-eslint/eslint-plugin": "^4.31.0", + "@typescript-eslint/parser": "^4.31.0", + "chai": "^4.2.0", + "codecov": "^3.8.1", + "eslint": "^7.32.0", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-flowtype": "^5.9.2", + "eslint-plugin-import": "^2.24.2", + "eslint-plugin-prettier": "^4.0.0", + "isomorphic-fetch": "^3.0.0", + "mocha": "^8.1.2", + "nock": "^13.0.11", + "nyc": "^15.1.0", + "prettier": "^2.3.2", + "ts-loader": "^7.0.4", + "ts-mocha": "^8.0.0", + "ts-node": "^9.0.0", + "typescript": "^4.2.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@codemirror/autocomplete": "^0.19.3", + "@codemirror/highlight": "^0.19.5", + "@codemirror/language": "^0.19.3", + "@codemirror/lint": "^0.19.1", + "@codemirror/state": "^0.19.2", + "@codemirror/view": "^0.19.7", + "@lezer/common": "^0.15.5" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", + "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.15.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.5.tgz", + "integrity": "sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-compilation-targets": "^7.15.4", + "@babel/helper-module-transforms": "^7.15.4", + "@babel/helpers": "^7.15.4", + "@babel/parser": "^7.15.5", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz", + "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.15.4", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", + "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.15.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.16.6", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", + "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "dev": true, + "dependencies": { + "@babel/helper-get-function-arity": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", + "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", + "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", + "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", + "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz", + "integrity": "sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.15.4", + "@babel/helper-replace-supers": "^7.15.4", + "@babel/helper-simple-access": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/helper-validator-identifier": "^7.14.9", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", + "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", + "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", + "dev": true, + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.15.4", + "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", + "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", + "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.14.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", + "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", + "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", + "dev": true, + "dependencies": { + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.6.tgz", + "integrity": "sha512-S/TSCcsRuCkmpUuoWijua0Snt+f3ewU/8spLo+4AXJCZfT0bVCzLD5MuOKdrx0mlAptbKzn5AdgEIIKXxXkz9Q==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template/node_modules/@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", + "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@codemirror/autocomplete": { + "version": "0.19.3", + "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-0.19.3.tgz", + "integrity": "sha512-5juP6hVrHAogzQ0JUTQuibE8j1seqeGNJ98qLUPuliI6kLBg5INS4qvUI1Brqye+wYPFu7UHqrrn13RLh5YSzw==", + "dependencies": { + "@codemirror/language": "^0.19.0", + "@codemirror/state": "^0.19.0", + "@codemirror/text": "^0.19.2", + "@codemirror/tooltip": "^0.19.0", + "@codemirror/view": "^0.19.0", + "@lezer/common": "^0.15.0" + } + }, + "node_modules/@codemirror/basic-setup": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@codemirror/basic-setup/-/basic-setup-0.19.0.tgz", + "integrity": "sha512-Yhrf7fIz8+INHWOhpWeRwbs8fpc0KsydX9baD7TyYqniLVWyTi0Hwm52mr0f5O+k4YaJPeHAgT3x9gzDXZIvOw==", + "dev": true, + "dependencies": { + "@codemirror/autocomplete": "^0.19.0", + "@codemirror/closebrackets": "^0.19.0", + "@codemirror/commands": "^0.19.0", + "@codemirror/comment": "^0.19.0", + "@codemirror/fold": "^0.19.0", + "@codemirror/gutter": "^0.19.0", + "@codemirror/highlight": "^0.19.0", + "@codemirror/history": "^0.19.0", + "@codemirror/language": "^0.19.0", + "@codemirror/lint": "^0.19.0", + "@codemirror/matchbrackets": "^0.19.0", + "@codemirror/rectangular-selection": "^0.19.0", + "@codemirror/search": "^0.19.0", + "@codemirror/state": "^0.19.0", + "@codemirror/view": "^0.19.0" + } + }, + "node_modules/@codemirror/closebrackets": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@codemirror/closebrackets/-/closebrackets-0.19.0.tgz", + "integrity": "sha512-dFWX5OEVYWRNtGaifSbwIAlymnRRjxWMiMbffbAjF7p0zfGHDbdGkiT56q3Xud63h5/tQdSo5dK1iyNTzHz5vg==", + "dependencies": { + "@codemirror/language": "^0.19.0", + "@codemirror/rangeset": "^0.19.0", + "@codemirror/state": "^0.19.0", + "@codemirror/text": "^0.19.0", + "@codemirror/view": "^0.19.0" + } + }, + "node_modules/@codemirror/commands": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-0.19.4.tgz", + "integrity": "sha512-EW6ffAIdu7aGWWwEG4xRcKLR+1RXH7hJqMt5mbrxDSc2xAQBgqxIPFglcMeSkC7qqkwPuqv3xavVh1+0gQ0piQ==", + "dependencies": { + "@codemirror/language": "^0.19.0", + "@codemirror/matchbrackets": "^0.19.0", + "@codemirror/state": "^0.19.2", + "@codemirror/text": "^0.19.0", + "@codemirror/view": "^0.19.0", + "@lezer/common": "^0.15.0" + } + }, + "node_modules/@codemirror/comment": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@codemirror/comment/-/comment-0.19.0.tgz", + "integrity": "sha512-3hqAd0548fxqOBm4khFMcXVIivX8p0bSlbAuZJ6PNoUn/0wXhxkxowPp0FmFzU2+y37Z+ZQF5cRB5EREWPRIiQ==", + "dependencies": { + "@codemirror/state": "^0.19.0", + "@codemirror/text": "^0.19.0", + "@codemirror/view": "^0.19.0" + } + }, + "node_modules/@codemirror/fold": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@codemirror/fold/-/fold-0.19.0.tgz", + "integrity": "sha512-cHbr2hqKe2pMls1Ia1a4IwXly87ljpmvPUKkul6H/Uv9kCwpQLOP3dGMPXbMGm/1hGjBF/0wnc+m2iba9iJBTQ==", + "dev": true, + "dependencies": { + "@codemirror/gutter": "^0.19.0", + "@codemirror/language": "^0.19.0", + "@codemirror/rangeset": "^0.19.0", + "@codemirror/state": "^0.19.0", + "@codemirror/view": "^0.19.0" + } + }, + "node_modules/@codemirror/gutter": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@codemirror/gutter/-/gutter-0.19.2.tgz", + "integrity": "sha512-xiayxhc9uq1UXiG/r/E3AAYXZt+EtSdgdQXC4nlMHvbfw2EmtryfzGO3HrgasHRyAW8uNCaO9JO4n7mU7rm1rQ==", + "dev": true, + "dependencies": { + "@codemirror/rangeset": "^0.19.0", + "@codemirror/state": "^0.19.0", + "@codemirror/view": "^0.19.0" + } + }, + "node_modules/@codemirror/highlight": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@codemirror/highlight/-/highlight-0.19.5.tgz", + "integrity": "sha512-JDGEH/l/DGpxG2k+mgqMKcuFURIs42eoTB4H4tN7QmzyW/z/MlNKiHHv7pWXyN+H5QvftK5yctsxUu77EZikmw==", + "dependencies": { + "@codemirror/language": "^0.19.0", + "@codemirror/rangeset": "^0.19.0", + "@codemirror/state": "^0.19.0", + "@codemirror/view": "^0.19.0", + "@lezer/common": "^0.15.0", + "style-mod": "^4.0.0" + } + }, + "node_modules/@codemirror/history": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@codemirror/history/-/history-0.19.0.tgz", + "integrity": "sha512-E0H+lncH66IMDhaND9jgkjE7s0dhYfjCPmS+Ig2Yes9I8+UIEecIdObj8c8HPCFGctGg3fxXqRAw2mdHl2Wouw==", + "dependencies": { + "@codemirror/state": "^0.19.0", + "@codemirror/view": "^0.19.0" + } + }, + "node_modules/@codemirror/language": { + "version": "0.19.3", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-0.19.3.tgz", + "integrity": "sha512-6vjkRYHRJg/z9wdAk75nU2fQwCJBsh2HpkIjKXIHfzISSgLt5qSDxVhPd8Uu8PD5WMmFFP8tX7I9kdIt873o0A==", + "dependencies": { + "@codemirror/state": "^0.19.0", + "@codemirror/text": "^0.19.0", + "@codemirror/view": "^0.19.0", + "@lezer/common": "^0.15.5", + "@lezer/lr": "^0.15.0" + } + }, + "node_modules/@codemirror/lint": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-0.19.1.tgz", + "integrity": "sha512-Ef0TnXpF4Q4B+lvBdgHexe1dHbvkKBvBHsLB8HwTYffwjekg1YvEM+6zyjyjG9m6s1Ru0VaCNlNwotLaVZjHGQ==", + "dependencies": { + "@codemirror/panel": "^0.19.0", + "@codemirror/state": "^0.19.0", + "@codemirror/tooltip": "^0.19.0", + "@codemirror/view": "^0.19.0", + "crelt": "^1.0.5" + } + }, + "node_modules/@codemirror/matchbrackets": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@codemirror/matchbrackets/-/matchbrackets-0.19.1.tgz", + "integrity": "sha512-jBEW2Uu3hWcrrkwkauaikCAE7s5liCwbccFa6rLK6DzwaynOqCKJGyDsbkfrhikofNRc1yh4V3vwUuxt2u4QbA==", + "dependencies": { + "@codemirror/language": "^0.19.0", + "@codemirror/state": "^0.19.0", + "@codemirror/view": "^0.19.0", + "@lezer/common": "^0.15.0" + } + }, + "node_modules/@codemirror/panel": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@codemirror/panel/-/panel-0.19.0.tgz", + "integrity": "sha512-LJuu49xnuhaAztlhnLJQ57ddOirSyf8/lnl7twsQUG/05RkxodBZ9F7q8r5AOLqOkaQOy9WySEKX1Ur8lD9Q5w==", + "dependencies": { + "@codemirror/state": "^0.19.0", + "@codemirror/view": "^0.19.0" + } + }, + "node_modules/@codemirror/rangeset": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@codemirror/rangeset/-/rangeset-0.19.1.tgz", + "integrity": "sha512-WaKTEw8JB/3QFlQzpdgRoklopcWvG8O/Xp+rxxOfFKYTaeaejpY/tjpyBBg+Ea65Ka3m7+pPp9d5j/oR2rd9NA==", + "dependencies": { + "@codemirror/state": "^0.19.0" + } + }, + "node_modules/@codemirror/rectangular-selection": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@codemirror/rectangular-selection/-/rectangular-selection-0.19.0.tgz", + "integrity": "sha512-KdvoEweBgVsOcqdYFEinYGroS028pwUPkO3REzQC7Z/hT1KNqZUlyfoi6WBv3Gzp8b6l8NNA+rLnnYMSHlcGYA==", + "dev": true, + "dependencies": { + "@codemirror/state": "^0.19.0", + "@codemirror/text": "^0.19.0", + "@codemirror/view": "^0.19.0" + } + }, + "node_modules/@codemirror/search": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-0.19.2.tgz", + "integrity": "sha512-TrRxUxyJ/a7HXtUvMZhgkOUbKE1xO33UhXjn1XACEHKWhgovw1vEeEEti9dZejN8/QOOFJed39InUxmp7oQ8HA==", + "dependencies": { + "@codemirror/panel": "^0.19.0", + "@codemirror/rangeset": "^0.19.0", + "@codemirror/state": "^0.19.2", + "@codemirror/text": "^0.19.0", + "@codemirror/view": "^0.19.0", + "crelt": "^1.0.5" + } + }, + "node_modules/@codemirror/state": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-0.19.2.tgz", + "integrity": "sha512-dDqCrtkb0c/LYUlvQBLyLfkISEskbZnhvBbcVOF4j2AusJ1ptJ3EGMxBL9G16GP1TOdC1T613gA1J1qc3pbfGQ==", + "dependencies": { + "@codemirror/text": "^0.19.0" + } + }, + "node_modules/@codemirror/text": { + "version": "0.19.3", + "resolved": "https://registry.npmjs.org/@codemirror/text/-/text-0.19.3.tgz", + "integrity": "sha512-A0HBPZRwQ72XVMN1tg/pVUnvS5CKboBeHZE7cylYw0ljx9eX+NoYaK7apPSJO/Fwh9XhH9m8Va06EGc11VOzUw==" + }, + "node_modules/@codemirror/tooltip": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@codemirror/tooltip/-/tooltip-0.19.2.tgz", + "integrity": "sha512-FMMGGLrr62Ck54NEz8yTGpgo8ihobAsC3sbeQg+OpY4jv9dt1yIP5B9LzsIV+TXQB57JZQZxtTqzkhnFq76haw==", + "dependencies": { + "@codemirror/state": "^0.19.0", + "@codemirror/view": "^0.19.0" + } + }, + "node_modules/@codemirror/view": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-0.19.7.tgz", + "integrity": "sha512-m9AKO8gec/QnyxR1uq182It0WwauTIaHkdjqtdlKx1IRgknH44SKIJIxwxZt4Y6VDhhivcEbugjoadNy0zR3wQ==", + "dependencies": { + "@codemirror/rangeset": "^0.19.0", + "@codemirror/state": "^0.19.2", + "@codemirror/text": "^0.19.0", + "style-mod": "^4.0.0", + "w3c-keyname": "^2.2.4" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", + "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "dev": true + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lezer/common": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-0.15.5.tgz", + "integrity": "sha512-ufcjclusHXGdhp4gSPbPD7sUd38SgOej7m5tAEuG2tNPzqzV0d1vwwLh57R6IwW79ml2mb3tUjAoDfqI7v1HEw==" + }, + "node_modules/@lezer/generator": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/@lezer/generator/-/generator-0.15.1.tgz", + "integrity": "sha512-OlG6ogwrTUeCsKVzPjXX5cFLT3XGESZY75Ust7DLMwmEgH1Awu/E4PGMFQZeTfI5lBWVo10reqXowiOhNKwOYQ==", + "dev": true, + "dependencies": { + "@lezer/common": "^0.15.0", + "@lezer/lr": "^0.15.0" + }, + "bin": { + "lezer-generator": "dist/lezer-generator.cjs" + } + }, + "node_modules/@lezer/lr": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-0.15.2.tgz", + "integrity": "sha512-gkQUkKCAw/zxOiTCGhjctV/C+FPmfwqXscM9EGgcYhUZewkLu2AsEl2Vlcral7xtDU0t6xwakT6Fw5jlMvMX6Q==", + "dependencies": { + "@lezer/common": "^0.15.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@types/chai": { + "version": "4.2.21", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.21.tgz", + "integrity": "sha512-yd+9qKmJxm496BOV9CMNaey8TWsikaZOwMRwPHQIjcOJM9oV+fi9ZMNw3JsVnbEEbo2gRTDnGEBv8pjyn67hNg==", + "dev": true + }, + "node_modules/@types/flot": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/flot/-/flot-0.0.32.tgz", + "integrity": "sha512-aturel4TWMY86N4Pkpc9pSoUd/p8c3BjGj4fTDkaZIpkRPzLH1VXZCAKGUywcFkTqgZMhPJFPWxd4pl87y8h/w==", + "dev": true, + "dependencies": { + "@types/jquery": "*" + } + }, + "node_modules/@types/jquery": { + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.6.tgz", + "integrity": "sha512-SmgCQRzGPId4MZQKDj9Hqc6kSXFNWZFHpELkyK8AQhf8Zr6HKfCzFv9ZC1Fv3FyQttJZOlap3qYb12h61iZAIg==", + "dev": true, + "dependencies": { + "@types/sizzle": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, + "node_modules/@types/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", + "dev": true + }, + "node_modules/@types/mocha": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.3.tgz", + "integrity": "sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "16.9.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", + "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==", + "dev": true + }, + "node_modules/@types/sizzle": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", + "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "4.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.31.1.tgz", + "integrity": "sha512-UDqhWmd5i0TvPLmbK5xY3UZB0zEGseF+DHPghZ37Sb83Qd3p8ujhvAtkU4OF46Ka5Pm5kWvFIx0cCTBFKo0alA==", + "dev": true, + "dependencies": { + "@typescript-eslint/experimental-utils": "4.31.1", + "@typescript-eslint/scope-manager": "4.31.1", + "debug": "^4.3.1", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^4.0.0", + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/experimental-utils": { + "version": "4.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.31.1.tgz", + "integrity": "sha512-NtoPsqmcSsWty0mcL5nTZXMf7Ei0Xr2MT8jWjXMVgRK0/1qeQ2jZzLFUh4QtyJ4+/lPUyMw5cSfeeME+Zrtp9Q==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.7", + "@typescript-eslint/scope-manager": "4.31.1", + "@typescript-eslint/types": "4.31.1", + "@typescript-eslint/typescript-estree": "4.31.1", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "4.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.31.1.tgz", + "integrity": "sha512-dnVZDB6FhpIby6yVbHkwTKkn2ypjVIfAR9nh+kYsA/ZL0JlTsd22BiDjouotisY3Irmd3OW1qlk9EI5R8GrvRQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "4.31.1", + "@typescript-eslint/types": "4.31.1", + "@typescript-eslint/typescript-estree": "4.31.1", + "debug": "^4.3.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "4.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.31.1.tgz", + "integrity": "sha512-N1Uhn6SqNtU2XpFSkD4oA+F0PfKdWHyr4bTX0xTj8NRx1314gBDRL1LUuZd5+L3oP+wo6hCbZpaa1in6SwMcVQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.31.1", + "@typescript-eslint/visitor-keys": "4.31.1" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "4.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.31.1.tgz", + "integrity": "sha512-kixltt51ZJGKENNW88IY5MYqTBA8FR0Md8QdGbJD2pKZ+D5IvxjTYDNtJPDxFBiXmka2aJsITdB1BtO1fsgmsQ==", + "dev": true, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "4.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.31.1.tgz", + "integrity": "sha512-EGHkbsUvjFrvRnusk6yFGqrqMBTue5E5ROnS5puj3laGQPasVUgwhrxfcgkdHNFECHAewpvELE1Gjv0XO3mdWg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.31.1", + "@typescript-eslint/visitor-keys": "4.31.1", + "debug": "^4.3.1", + "globby": "^11.0.3", + "is-glob": "^4.0.1", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "4.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.31.1.tgz", + "integrity": "sha512-PCncP8hEqKw6SOJY+3St4LVtoZpPPn+Zlpm7KW5xnviMhdqcsBty4Lsg4J/VECpJjw1CkROaZhH4B8M1OfnXTQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.31.1", + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", + "dev": true + }, + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/append-transform": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", + "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", + "dev": true, + "dependencies": { + "default-require-extensions": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/argv": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/argv/-/argv-0.0.2.tgz", + "integrity": "sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas=", + "dev": true, + "engines": { + "node": ">=0.6.10" + } + }, + "node_modules/array-includes": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", + "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", + "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "node_modules/browserslist": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.0.tgz", + "integrity": "sha512-g2BJ2a0nEYvEFQC208q8mVAhfNwpZ5Mu8BwgtCdZKO3qx98HChmeg448fPdUzld8aFmfLgVh7yymqV+q1lJZ5g==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30001254", + "colorette": "^1.3.0", + "electron-to-chromium": "^1.3.830", + "escalade": "^3.1.1", + "node-releases": "^1.1.75" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/caching-transform": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", + "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", + "dev": true, + "dependencies": { + "hasha": "^5.0.0", + "make-dir": "^3.0.0", + "package-hash": "^4.0.0", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001257", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001257.tgz", + "integrity": "sha512-JN49KplOgHSXpIsVSF+LUyhD8PUp6xPpAXeRrrcBh4KBeP7W864jHn6RvzJgDlrReyeVjMFJL3PLpPvKIxlIHA==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/chai": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz", + "integrity": "sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==", + "dev": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/codecov": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.8.3.tgz", + "integrity": "sha512-Y8Hw+V3HgR7V71xWH2vQ9lyS358CbGCldWlJFR0JirqoGtOoas3R3/OclRTvgUYFK29mmJICDPauVKmpqbwhOA==", + "dev": true, + "dependencies": { + "argv": "0.0.2", + "ignore-walk": "3.0.4", + "js-yaml": "3.14.1", + "teeny-request": "7.1.1", + "urlgrey": "1.0.0" + }, + "bin": { + "codecov": "bin/codecov" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/codemirror-promql": { + "resolved": "module/codemirror-promql", + "link": true + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/colorette": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==" + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/crelt": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.5.tgz", + "integrity": "sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA==" + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/default-require-extensions": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", + "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", + "dev": true, + "dependencies": { + "strip-bom": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.3.838", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.838.tgz", + "integrity": "sha512-65O6UJiyohFAdX/nc6KJ0xG/4zOn7XCO03kQNNbCeMRGxlWTLzc6Uyi0tFNQuuGWqySZJi8CD2KXPXySVYmzMA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/enhanced-resolve": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.18.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.6.tgz", + "integrity": "sha512-kAeIT4cku5eNLNuUKhlmtuk1/TRZvQoYccn6TO0cSVdf1kzB0T7+dYuVK9MWM7l+/53W2Q8M7N2c6MQvhXFcUQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.4", + "is-string": "^1.0.7", + "object-inspect": "^1.11.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz", + "integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "resolve": "^1.20.0" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.2.tgz", + "integrity": "sha512-QG8pcgThYOuqxupd06oYTZoNOGaUdTY1PqK+oS6ElF6vs4pBdk/aYxFVQQXzcrAqp9m7cl7lb2ubazX+g16k2Q==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "pkg-dir": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-flowtype": { + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-5.9.2.tgz", + "integrity": "sha512-qxE/eo9DCN7800MIB/O1ToOiFuOPOlaMJWQY2BEm69oY7RCm3s2X1z4CdgtFvDDWf9RSSugZm1KRhdBMBueKbg==", + "dev": true, + "dependencies": { + "lodash": "^4.17.15", + "string-natural-compare": "^3.0.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "peerDependencies": { + "eslint": "^7.1.0" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.24.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.24.2.tgz", + "integrity": "sha512-hNVtyhiEtZmpsabL4neEj+6M5DCLgpYyG9nzJY8lZQeQXEn5UPW1DpUdsMHMXsq98dbNm7nt1w9ZMSVpfJdi8Q==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.3", + "array.prototype.flat": "^1.2.4", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.6.2", + "find-up": "^2.0.0", + "has": "^1.0.3", + "is-core-module": "^2.6.0", + "minimatch": "^3.0.4", + "object.values": "^1.1.4", + "pkg-up": "^2.0.0", + "read-pkg-up": "^3.0.0", + "resolve": "^1.20.0", + "tsconfig-paths": "^3.11.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/eslint-plugin-prettier": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz", + "integrity": "sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "peerDependencies": { + "eslint": ">=7.28.0", + "prettier": ">=2.0.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/fast-url-parser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", + "integrity": "sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=", + "dev": true, + "dependencies": { + "punycode": "^1.3.2" + } + }, + "node_modules/fast-url-parser/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-cache-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-cache-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-cache-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-cache-dir/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", + "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", + "dev": true + }, + "node_modules/foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/fromentries": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", + "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globals": { + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", + "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby/node_modules/ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "dev": true + }, + "node_modules/graph": { + "resolved": "react-app", + "link": true + }, + "node_modules/growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true, + "engines": { + "node": ">=4.x" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasha": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", + "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", + "dev": true, + "dependencies": { + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/hasha/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-walk": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", + "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", + "dev": true, + "dependencies": { + "minimatch": "^3.0.4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz", + "integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", + "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/isomorphic-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", + "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", + "dev": true, + "dependencies": { + "node-fetch": "^2.6.1", + "whatwg-fetch": "^3.4.1" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-hook": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", + "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", + "dev": true, + "dependencies": { + "append-transform": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-processinfo": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", + "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", + "dev": true, + "dependencies": { + "archy": "^1.0.0", + "cross-spawn": "^7.0.0", + "istanbul-lib-coverage": "^3.0.0-alpha.1", + "make-dir": "^3.0.0", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "uuid": "^3.3.3" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps/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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-reports": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/loader-utils/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "node_modules/lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.set": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", + "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", + "dev": true + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", + "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mocha": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.4.0.tgz", + "integrity": "sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ==", + "dev": true, + "dependencies": { + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.1", + "debug": "4.3.1", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.1.6", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "4.0.0", + "log-symbols": "4.0.0", + "minimatch": "3.0.4", + "ms": "2.1.3", + "nanoid": "3.1.20", + "serialize-javascript": "5.0.1", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "which": "2.0.2", + "wide-align": "1.1.3", + "workerpool": "6.1.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha" + }, + "engines": { + "node": ">= 10.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/mocha/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/mocha/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/mocha/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/js-yaml": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", + "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/mocha/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/mocha/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.1.20", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", + "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/nock": { + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/nock/-/nock-13.1.3.tgz", + "integrity": "sha512-YKj0rKQWMGiiIO+Y65Ut8OEgYM3PplLU2+GAhnPmqZdBd6z5IskgdBqWmjzA6lH3RF0S2a3wiAlrMOF5Iv2Jeg==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "json-stringify-safe": "^5.0.1", + "lodash.set": "^4.3.2", + "propagate": "^2.0.0" + }, + "engines": { + "node": ">= 10.13" + } + }, + "node_modules/node-fetch": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.2.tgz", + "integrity": "sha512-aLoxToI6RfZ+0NOjmWAgn9+LEd30YCkJKFSyWacNZdEKTit/ZMcKjGkTRo8uWEsnIb/hfKecNPEbln02PdWbcA==", + "dev": true, + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/node-preload": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", + "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", + "dev": true, + "dependencies": { + "process-on-spawn": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/node-releases": { + "version": "1.1.75", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.75.tgz", + "integrity": "sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw==", + "dev": true + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nyc": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", + "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", + "dev": true, + "dependencies": { + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "caching-transform": "^4.0.0", + "convert-source-map": "^1.7.0", + "decamelize": "^1.2.0", + "find-cache-dir": "^3.2.0", + "find-up": "^4.1.0", + "foreground-child": "^2.0.0", + "get-package-type": "^0.1.0", + "glob": "^7.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-hook": "^3.0.0", + "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "make-dir": "^3.0.0", + "node-preload": "^0.2.1", + "p-map": "^3.0.0", + "process-on-spawn": "^1.0.0", + "resolve-from": "^5.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "spawn-wrap": "^2.0.0", + "test-exclude": "^6.0.0", + "yargs": "^15.0.2" + }, + "bin": { + "nyc": "bin/nyc.js" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/nyc/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/nyc/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nyc/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/nyc/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/nyc/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/object-inspect": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.4.tgz", + "integrity": "sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/package-hash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", + "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.15", + "hasha": "^5.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "dependencies": { + "find-up": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "dev": true, + "dependencies": { + "find-up": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.0.tgz", + "integrity": "sha512-DsEPLY1dE5HF3BxCRBmD4uYZ+5DCbvatnolqTqcxEgKVZnL2kUfyu7b8pPQ5+hTBkdhU9SLUmK0/pHb07RE4WQ==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/process-on-spawn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", + "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", + "dev": true, + "dependencies": { + "fromentries": "^1.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/propagate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", + "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/release-zalgo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", + "dev": true, + "dependencies": { + "es6-error": "^4.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.20", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", + "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spawn-wrap": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", + "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", + "dev": true, + "dependencies": { + "foreground-child": "^2.0.0", + "is-windows": "^1.0.2", + "make-dir": "^3.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "which": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz", + "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==", + "dev": true + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/stream-events": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", + "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", + "dev": true, + "dependencies": { + "stubs": "^3.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-natural-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", + "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==", + "dev": true + }, + "node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stubs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", + "integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls=", + "dev": true + }, + "node_modules/style-mod": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.0.0.tgz", + "integrity": "sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw==" + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/table": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", + "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", + "dev": true, + "dependencies": { + "ajv": "^8.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz", + "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/teeny-request": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-7.1.1.tgz", + "integrity": "sha512-iwY6rkW5DDGq8hE2YgNQlKbptYpY5Nn2xecjQiNjOXWbKzPGUfmeUBCSQbbr306d7Z7U2N0TPl+/SwYRfua1Dg==", + "dev": true, + "dependencies": { + "http-proxy-agent": "^4.0.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.1", + "stream-events": "^1.0.5", + "uuid": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/teeny-request/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-loader": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-7.0.5.tgz", + "integrity": "sha512-zXypEIT6k3oTc+OZNx/cqElrsbBtYqDknf48OZos0NQ3RTt045fBIU8RRSu+suObBzYB355aIPGOe/3kj9h7Ig==", + "dev": true, + "dependencies": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^1.0.2", + "micromatch": "^4.0.0", + "semver": "^6.0.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/ts-loader/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ts-loader/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ts-loader/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/ts-loader/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/ts-loader/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/ts-loader/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ts-loader/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/ts-loader/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ts-mocha": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/ts-mocha/-/ts-mocha-8.0.0.tgz", + "integrity": "sha512-Kou1yxTlubLnD5C3unlCVO7nh0HERTezjoVhVw/M5S1SqoUec0WgllQvPk3vzPMc6by8m6xD1uR1yRf8lnVUbA==", + "dev": true, + "dependencies": { + "ts-node": "7.0.1" + }, + "bin": { + "ts-mocha": "bin/ts-mocha" + }, + "engines": { + "node": ">= 6.X.X" + }, + "optionalDependencies": { + "tsconfig-paths": "^3.5.0" + }, + "peerDependencies": { + "mocha": "^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X" + } + }, + "node_modules/ts-mocha/node_modules/diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/ts-mocha/node_modules/ts-node": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", + "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", + "dev": true, + "dependencies": { + "arrify": "^1.0.0", + "buffer-from": "^1.1.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.6", + "yn": "^2.0.0" + }, + "bin": { + "ts-node": "dist/bin.js" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ts-mocha/node_modules/yn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ts-node": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", + "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", + "dev": true, + "dependencies": { + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.17", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "typescript": ">=2.7" + } + }, + "node_modules/ts-node/node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz", + "integrity": "sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz", + "integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urlgrey": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-1.0.0.tgz", + "integrity": "sha512-hJfIzMPJmI9IlLkby8QrsCykQ+SXDeO2W5Q9QTW3QpqZVTx4a/K7p8/5q+/isD8vsbVaFgql/gvAoQCRQ2Cb5w==", + "dev": true, + "dependencies": { + "fast-url-parser": "^1.1.3" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/w3c-keyname": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.4.tgz", + "integrity": "sha512-tOhfEwEzFLJzf6d1ZPkYfGj+FWhIpBux9ppoP3rlclw3Z0BZv3N7b7030Z1kYth+6rDuAsXUFr+d0VE6Ed1ikw==" + }, + "node_modules/whatwg-fetch": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", + "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==", + "dev": true + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "node_modules/wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2" + } + }, + "node_modules/wide-align/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/wide-align/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/wide-align/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/wide-align/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/workerpool": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", + "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser/node_modules/camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs-unparser/node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app": { + "name": "graph", + "version": "0.1.0", + "dependencies": { + "@codemirror/autocomplete": "^0.19.3", + "@codemirror/closebrackets": "^0.19.0", + "@codemirror/commands": "^0.19.4", + "@codemirror/comment": "^0.19.0", + "@codemirror/highlight": "^0.19.5", + "@codemirror/history": "^0.19.0", + "@codemirror/language": "^0.19.3", + "@codemirror/lint": "^0.19.1", + "@codemirror/matchbrackets": "^0.19.1", + "@codemirror/search": "^0.19.2", + "@codemirror/state": "^0.19.2", + "@codemirror/view": "^0.19.7", + "@forevolve/bootstrap-dark": "^1.0.0", + "@fortawesome/fontawesome-svg-core": "^1.2.14", + "@fortawesome/free-solid-svg-icons": "^5.7.1", + "@fortawesome/react-fontawesome": "^0.1.4", + "@nexucis/fuzzy": "^0.3.0", + "bootstrap": "^4.6.0", + "codemirror-promql": "0.18.0", + "css.escape": "^1.5.1", + "downshift": "^3.4.8", + "i": "^0.3.6", + "jquery": "^3.5.1", + "jquery.flot.tooltip": "^0.9.0", + "moment": "^2.24.0", + "moment-timezone": "^0.5.23", + "popper.js": "^1.14.3", + "react": "^17.0.2", + "react-copy-to-clipboard": "^5.0.4", + "react-dom": "^17.0.2", + "react-resize-detector": "^6.7.6", + "react-router-dom": "^5.2.1", + "react-test-renderer": "^17.0.2", + "reactstrap": "^8.9.0", + "sanitize-html": "^2.3.3", + "sass": "1.39.0", + "tempusdominus-bootstrap-4": "^5.1.2", + "tempusdominus-core": "^5.0.3" + }, + "devDependencies": { + "@testing-library/react-hooks": "^7.0.1", + "@types/enzyme": "^3.10.9", + "@types/flot": "0.0.32", + "@types/jest": "^27.0.1", + "@types/jquery": "^3.5.1", + "@types/node": "^16.7.6", + "@types/react": "^17.0.19", + "@types/react-copy-to-clipboard": "^5.0.1", + "@types/react-dom": "^17.0.9", + "@types/react-resize-detector": "^5.0.0", + "@types/react-router-dom": "^5.1.8", + "@types/sanitize-html": "^1.20.2", + "@types/sinon": "^10.0.2", + "@wojtekmaj/enzyme-adapter-react-17": "^0.6.3", + "enzyme": "^3.11.0", + "enzyme-to-json": "^3.6.2", + "eslint-config-prettier": "^8.3.0", + "eslint-config-react-app": "^6.0.0", + "eslint-plugin-prettier": "^4.0.0", + "jest-canvas-mock": "^2.3.1", + "jest-fetch-mock": "^3.0.3", + "mutationobserver-shim": "^0.3.7", + "prettier": "^2.3.2", + "react-scripts": "4.0.3", + "sinon": "^11.1.2", + "typescript": "^4.4.2" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "react-app/node_modules/@babel/code-frame": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.15.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.15.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.15.4", + "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.15.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-member-expression-to-functions": "^7.15.4", + "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/helper-replace-supers": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "react-app/node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.14.5", + "regexpu-core": "^4.7.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "react-app/node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "react-app/node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { + "version": "6.3.0", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "react-app/node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.15.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/@babel/helper-plugin-utils": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.15.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.15.4", + "@babel/helper-wrap-function": "^7.15.4", + "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.15.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/@babel/helper-wrap-function": { + "version": "7.15.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-function-name": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.15.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4", + "@babel/plugin-proposal-optional-chaining": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "react-app/node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.15.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.15.4", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.15.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "react-app/node_modules/@babel/plugin-proposal-decorators": { + "version": "7.12.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-decorators": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.15.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.15.0", + "@babel/helper-compilation-targets": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.15.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.15.4", + "@babel/helper-create-class-features-plugin": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-syntax-decorators": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-syntax-flow": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-syntax-jsx": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-syntax-typescript": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.15.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-classes": { + "version": "7.15.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-destructuring": { + "version": "7.14.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.12.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-flow": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-for-of": { + "version": "7.15.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-function-name": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-literals": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.15.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.15.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.15.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-module-transforms": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.9", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.14.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "react-app/node_modules/@babel/plugin-transform-new-target": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-object-super": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-parameters": { + "version": "7.15.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-property-literals": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-react-constant-elements": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.15.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.14.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-jsx": "^7.14.5", + "@babel/types": "^7.14.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-regenerator": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerator-transform": "^0.14.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-runtime": { + "version": "7.12.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "resolve": "^1.8.1", + "semver": "^5.5.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "5.7.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "react-app/node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-spread": { + "version": "7.14.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-template-literals": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-typescript": { + "version": "7.15.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-typescript": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/preset-env": { + "version": "7.15.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.15.0", + "@babel/helper-compilation-targets": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.15.4", + "@babel/plugin-proposal-async-generator-functions": "^7.15.4", + "@babel/plugin-proposal-class-properties": "^7.14.5", + "@babel/plugin-proposal-class-static-block": "^7.15.4", + "@babel/plugin-proposal-dynamic-import": "^7.14.5", + "@babel/plugin-proposal-export-namespace-from": "^7.14.5", + "@babel/plugin-proposal-json-strings": "^7.14.5", + "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", + "@babel/plugin-proposal-numeric-separator": "^7.14.5", + "@babel/plugin-proposal-object-rest-spread": "^7.15.6", + "@babel/plugin-proposal-optional-catch-binding": "^7.14.5", + "@babel/plugin-proposal-optional-chaining": "^7.14.5", + "@babel/plugin-proposal-private-methods": "^7.14.5", + "@babel/plugin-proposal-private-property-in-object": "^7.15.4", + "@babel/plugin-proposal-unicode-property-regex": "^7.14.5", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.14.5", + "@babel/plugin-transform-async-to-generator": "^7.14.5", + "@babel/plugin-transform-block-scoped-functions": "^7.14.5", + "@babel/plugin-transform-block-scoping": "^7.15.3", + "@babel/plugin-transform-classes": "^7.15.4", + "@babel/plugin-transform-computed-properties": "^7.14.5", + "@babel/plugin-transform-destructuring": "^7.14.7", + "@babel/plugin-transform-dotall-regex": "^7.14.5", + "@babel/plugin-transform-duplicate-keys": "^7.14.5", + "@babel/plugin-transform-exponentiation-operator": "^7.14.5", + "@babel/plugin-transform-for-of": "^7.15.4", + "@babel/plugin-transform-function-name": "^7.14.5", + "@babel/plugin-transform-literals": "^7.14.5", + "@babel/plugin-transform-member-expression-literals": "^7.14.5", + "@babel/plugin-transform-modules-amd": "^7.14.5", + "@babel/plugin-transform-modules-commonjs": "^7.15.4", + "@babel/plugin-transform-modules-systemjs": "^7.15.4", + "@babel/plugin-transform-modules-umd": "^7.14.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.9", + "@babel/plugin-transform-new-target": "^7.14.5", + "@babel/plugin-transform-object-super": "^7.14.5", + "@babel/plugin-transform-parameters": "^7.15.4", + "@babel/plugin-transform-property-literals": "^7.14.5", + "@babel/plugin-transform-regenerator": "^7.14.5", + "@babel/plugin-transform-reserved-words": "^7.14.5", + "@babel/plugin-transform-shorthand-properties": "^7.14.5", + "@babel/plugin-transform-spread": "^7.14.6", + "@babel/plugin-transform-sticky-regex": "^7.14.5", + "@babel/plugin-transform-template-literals": "^7.14.5", + "@babel/plugin-transform-typeof-symbol": "^7.14.5", + "@babel/plugin-transform-unicode-escapes": "^7.14.5", + "@babel/plugin-transform-unicode-regex": "^7.14.5", + "@babel/preset-modules": "^0.1.4", + "@babel/types": "^7.15.6", + "babel-plugin-polyfill-corejs2": "^0.2.2", + "babel-plugin-polyfill-corejs3": "^0.2.2", + "babel-plugin-polyfill-regenerator": "^0.2.2", + "core-js-compat": "^3.16.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.0", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "react-app/node_modules/@babel/preset-modules": { + "version": "0.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/preset-react": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-transform-react-display-name": "^7.14.5", + "@babel/plugin-transform-react-jsx": "^7.14.5", + "@babel/plugin-transform-react-jsx-development": "^7.14.5", + "@babel/plugin-transform-react-pure-annotations": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/preset-typescript": { + "version": "7.12.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-transform-typescript": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/@babel/runtime": { + "version": "7.15.4", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/@babel/runtime-corejs3": { + "version": "7.15.4", + "dev": true, + "license": "MIT", + "dependencies": { + "core-js-pure": "^3.16.0", + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/@cnakazawa/watch": { + "version": "1.0.4", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + }, + "bin": { + "watch": "cli.js" + }, + "engines": { + "node": ">=0.1.95" + } + }, + "react-app/node_modules/@csstools/convert-colors": { + "version": "1.4.0", + "dev": true, + "license": "CC0-1.0", + "engines": { + "node": ">=4.0.0" + } + }, + "react-app/node_modules/@csstools/normalize.css": { + "version": "10.1.0", + "dev": true, + "license": "CC0-1.0" + }, + "react-app/node_modules/@forevolve/bootstrap-dark": { + "version": "1.1.0", + "license": "MIT", + "dependencies": { + "bootstrap": "^4.6.0", + "jquery": "^3.5.1", + "popper.js": "^1.16.1" + } + }, + "react-app/node_modules/@fortawesome/fontawesome-common-types": { + "version": "0.2.36", + "hasInstallScript": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/@fortawesome/fontawesome-svg-core": { + "version": "1.2.36", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@fortawesome/fontawesome-common-types": "^0.2.36" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/@fortawesome/free-solid-svg-icons": { + "version": "5.15.4", + "hasInstallScript": true, + "license": "(CC-BY-4.0 AND MIT)", + "dependencies": { + "@fortawesome/fontawesome-common-types": "^0.2.36" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/@fortawesome/react-fontawesome": { + "version": "0.1.15", + "license": "MIT", + "dependencies": { + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "@fortawesome/fontawesome-svg-core": "^1.2.32", + "react": ">=16.x" + } + }, + "react-app/node_modules/@gar/promisify": { + "version": "1.1.2", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/@hapi/address": { + "version": "2.1.4", + "dev": true, + "license": "BSD-3-Clause" + }, + "react-app/node_modules/@hapi/bourne": { + "version": "1.3.2", + "dev": true, + "license": "BSD-3-Clause" + }, + "react-app/node_modules/@hapi/hoek": { + "version": "8.5.1", + "dev": true, + "license": "BSD-3-Clause" + }, + "react-app/node_modules/@hapi/joi": { + "version": "15.1.1", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/address": "2.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/topo": "3.x.x" + } + }, + "react-app/node_modules/@hapi/topo": { + "version": "3.1.6", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^8.3.0" + } + }, + "react-app/node_modules/@hypnosphi/create-react-context": { + "version": "0.3.1", + "license": "MIT", + "dependencies": { + "gud": "^1.0.0", + "warning": "^4.0.3" + }, + "peerDependencies": { + "prop-types": "^15.0.0", + "react": ">=0.14.0" + } + }, + "react-app/node_modules/@jest/console": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^26.6.2", + "jest-util": "^26.6.2", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/@jest/console/node_modules/@jest/types": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/@jest/console/node_modules/@types/yargs": { + "version": "15.0.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "react-app/node_modules/@jest/console/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "react-app/node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "react-app/node_modules/@jest/console/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "react-app/node_modules/@jest/console/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/@jest/console/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/@jest/console/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/@jest/core": { + "version": "26.6.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^26.6.2", + "@jest/reporters": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-changed-files": "^26.6.2", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-resolve-dependencies": "^26.6.3", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "jest-watcher": "^26.6.2", + "micromatch": "^4.0.2", + "p-each-series": "^2.1.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/@jest/core/node_modules/@jest/types": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/@jest/core/node_modules/@types/yargs": { + "version": "15.0.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "react-app/node_modules/@jest/core/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "react-app/node_modules/@jest/core/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "react-app/node_modules/@jest/core/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "react-app/node_modules/@jest/core/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/@jest/core/node_modules/find-up": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/@jest/core/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/@jest/core/node_modules/jest-resolve": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/@jest/core/node_modules/locate-path": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/@jest/core/node_modules/p-limit": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app/node_modules/@jest/core/node_modules/p-locate": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/@jest/core/node_modules/p-try": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/@jest/core/node_modules/path-exists": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/@jest/core/node_modules/read-pkg": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/@jest/core/node_modules/read-pkg-up": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app/node_modules/@jest/core/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/@jest/core/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/@jest/core/node_modules/type-fest": { + "version": "0.8.1", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/@jest/environment": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/@jest/environment/node_modules/@jest/types": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/@jest/environment/node_modules/@types/yargs": { + "version": "15.0.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "react-app/node_modules/@jest/environment/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "react-app/node_modules/@jest/environment/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "react-app/node_modules/@jest/environment/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "react-app/node_modules/@jest/environment/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/@jest/environment/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/@jest/environment/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/@jest/fake-timers": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.2", + "@sinonjs/fake-timers": "^6.0.1", + "@types/node": "*", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/@jest/fake-timers/node_modules/@jest/types": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/@jest/fake-timers/node_modules/@sinonjs/fake-timers": { + "version": "6.0.1", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "react-app/node_modules/@jest/fake-timers/node_modules/@types/yargs": { + "version": "15.0.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "react-app/node_modules/@jest/fake-timers/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "react-app/node_modules/@jest/fake-timers/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "react-app/node_modules/@jest/fake-timers/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "react-app/node_modules/@jest/fake-timers/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/@jest/fake-timers/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/@jest/fake-timers/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/@jest/globals": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^26.6.2", + "@jest/types": "^26.6.2", + "expect": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/@jest/globals/node_modules/@jest/types": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/@jest/globals/node_modules/@types/yargs": { + "version": "15.0.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "react-app/node_modules/@jest/globals/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "react-app/node_modules/@jest/globals/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "react-app/node_modules/@jest/globals/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "react-app/node_modules/@jest/globals/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/@jest/globals/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/@jest/globals/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/@jest/reporters": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^7.0.0" + }, + "engines": { + "node": ">= 10.14.2" + }, + "optionalDependencies": { + "node-notifier": "^8.0.0" + } + }, + "react-app/node_modules/@jest/reporters/node_modules/@jest/types": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/@jest/reporters/node_modules/@types/yargs": { + "version": "15.0.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "react-app/node_modules/@jest/reporters/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "react-app/node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "react-app/node_modules/@jest/reporters/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "react-app/node_modules/@jest/reporters/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/@jest/reporters/node_modules/find-up": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/@jest/reporters/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/@jest/reporters/node_modules/jest-resolve": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/@jest/reporters/node_modules/locate-path": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/@jest/reporters/node_modules/p-limit": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app/node_modules/@jest/reporters/node_modules/p-locate": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/@jest/reporters/node_modules/p-try": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/@jest/reporters/node_modules/path-exists": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/@jest/reporters/node_modules/read-pkg": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/@jest/reporters/node_modules/read-pkg-up": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app/node_modules/@jest/reporters/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/@jest/reporters/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/@jest/reporters/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/@jest/reporters/node_modules/type-fest": { + "version": "0.8.1", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/@jest/source-map": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/@jest/source-map/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/@jest/test-result": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/@jest/test-result/node_modules/@jest/types": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/@jest/test-result/node_modules/@types/yargs": { + "version": "15.0.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "react-app/node_modules/@jest/test-result/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "react-app/node_modules/@jest/test-result/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "react-app/node_modules/@jest/test-result/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "react-app/node_modules/@jest/test-result/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/@jest/test-result/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/@jest/test-result/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/@jest/test-sequencer": { + "version": "26.6.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/@jest/transform": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^26.6.2", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-util": "^26.6.2", + "micromatch": "^4.0.2", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/@jest/transform/node_modules/@jest/types": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/@jest/transform/node_modules/@types/yargs": { + "version": "15.0.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "react-app/node_modules/@jest/transform/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "react-app/node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "react-app/node_modules/@jest/transform/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "react-app/node_modules/@jest/transform/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/@jest/transform/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/@jest/transform/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/@jest/transform/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/@jest/types": { + "version": "27.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "react-app/node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "react-app/node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "react-app/node_modules/@jest/types/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "react-app/node_modules/@jest/types/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/@jest/types/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/@nexucis/fuzzy": { + "version": "0.3.0", + "license": "MIT" + }, + "react-app/node_modules/@npmcli/fs": { + "version": "1.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "react-app/node_modules/@npmcli/move-file": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "react-app/node_modules/@npmcli/move-file/node_modules/mkdirp": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "react-app/node_modules/@pmmmwh/react-refresh-webpack-plugin": { + "version": "0.4.3", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-html": "^0.0.7", + "error-stack-parser": "^2.0.6", + "html-entities": "^1.2.1", + "native-url": "^0.2.6", + "schema-utils": "^2.6.5", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">= 10.x" + }, + "peerDependencies": { + "@types/webpack": "4.x", + "react-refresh": ">=0.8.3 <0.10.0", + "sockjs-client": "^1.4.0", + "type-fest": "^0.13.1", + "webpack": ">=4.43.0 <6.0.0", + "webpack-dev-server": "3.x", + "webpack-hot-middleware": "2.x", + "webpack-plugin-serve": "0.x || 1.x" + }, + "peerDependenciesMeta": { + "@types/webpack": { + "optional": true + }, + "sockjs-client": { + "optional": true + }, + "type-fest": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + }, + "webpack-hot-middleware": { + "optional": true + }, + "webpack-plugin-serve": { + "optional": true + } + } + }, + "react-app/node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/source-map": { + "version": "0.7.3", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "react-app/node_modules/@rollup/plugin-node-resolve": { + "version": "7.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^3.0.8", + "@types/resolve": "0.0.8", + "builtin-modules": "^3.1.0", + "is-module": "^1.0.0", + "resolve": "^1.14.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "react-app/node_modules/@rollup/plugin-replace": { + "version": "2.4.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" + } + }, + "react-app/node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "react-app/node_modules/@rollup/pluginutils/node_modules/@types/estree": { + "version": "0.0.39", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/@sinonjs/commons": { + "version": "1.8.3", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "react-app/node_modules/@sinonjs/fake-timers": { + "version": "7.1.2", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "react-app/node_modules/@sinonjs/samsam": { + "version": "6.0.2", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^1.6.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" + } + }, + "react-app/node_modules/@sinonjs/text-encoding": { + "version": "0.7.1", + "dev": true, + "license": "(Unlicense OR Apache-2.0)" + }, + "react-app/node_modules/@surma/rollup-plugin-off-main-thread": { + "version": "1.4.2", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "ejs": "^2.6.1", + "magic-string": "^0.25.0" + } + }, + "react-app/node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "5.4.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "react-app/node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "5.4.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "react-app/node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "react-app/node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "react-app/node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "5.4.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "react-app/node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "5.4.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "react-app/node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "5.4.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "react-app/node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "5.5.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "react-app/node_modules/@svgr/babel-preset": { + "version": "5.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1", + "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0", + "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0", + "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0", + "@svgr/babel-plugin-transform-svg-component": "^5.5.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "react-app/node_modules/@svgr/core": { + "version": "5.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@svgr/plugin-jsx": "^5.5.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "react-app/node_modules/@svgr/hast-util-to-babel-ast": { + "version": "5.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.12.6" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "react-app/node_modules/@svgr/plugin-jsx": { + "version": "5.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.12.3", + "@svgr/babel-preset": "^5.5.0", + "@svgr/hast-util-to-babel-ast": "^5.5.0", + "svg-parser": "^2.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "react-app/node_modules/@svgr/plugin-svgo": { + "version": "5.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cosmiconfig": "^7.0.0", + "deepmerge": "^4.2.2", + "svgo": "^1.2.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "react-app/node_modules/@svgr/webpack": { + "version": "5.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/plugin-transform-react-constant-elements": "^7.12.1", + "@babel/preset-env": "^7.12.1", + "@babel/preset-react": "^7.12.5", + "@svgr/core": "^5.5.0", + "@svgr/plugin-jsx": "^5.5.0", + "@svgr/plugin-svgo": "^5.5.0", + "loader-utils": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "react-app/node_modules/@testing-library/react-hooks": { + "version": "7.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@types/react": ">=16.9.0", + "@types/react-dom": ">=16.9.0", + "@types/react-test-renderer": ">=16.9.0", + "react-error-boundary": "^3.1.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0", + "react-test-renderer": ">=16.9.0" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-test-renderer": { + "optional": true + } + } + }, + "react-app/node_modules/@types/babel__core": { + "version": "7.1.16", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "react-app/node_modules/@types/babel__generator": { + "version": "7.6.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "react-app/node_modules/@types/babel__template": { + "version": "7.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "react-app/node_modules/@types/babel__traverse": { + "version": "7.14.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.3.0" + } + }, + "react-app/node_modules/@types/cheerio": { + "version": "0.22.30", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "react-app/node_modules/@types/enzyme": { + "version": "3.10.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/cheerio": "*", + "@types/react": "*" + } + }, + "react-app/node_modules/@types/eslint": { + "version": "7.28.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "react-app/node_modules/@types/estree": { + "version": "0.0.50", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/@types/glob": { + "version": "7.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "react-app/node_modules/@types/graceful-fs": { + "version": "4.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "react-app/node_modules/@types/history": { + "version": "4.7.9", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/@types/html-minifier-terser": { + "version": "5.1.2", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.3", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "react-app/node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "react-app/node_modules/@types/jest": { + "version": "27.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-diff": "^27.0.0", + "pretty-format": "^27.0.0" + } + }, + "react-app/node_modules/@types/minimatch": { + "version": "3.0.5", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/@types/normalize-package-data": { + "version": "2.4.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/@types/parse-json": { + "version": "4.0.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/@types/prettier": { + "version": "2.3.2", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/@types/prop-types": { + "version": "15.7.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/@types/q": { + "version": "1.5.5", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/@types/react": { + "version": "17.0.20", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "react-app/node_modules/@types/react-copy-to-clipboard": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, + "react-app/node_modules/@types/react-dom": { + "version": "17.0.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, + "react-app/node_modules/@types/react-resize-detector": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, + "react-app/node_modules/@types/react-router": { + "version": "5.1.16", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/history": "*", + "@types/react": "*" + } + }, + "react-app/node_modules/@types/react-router-dom": { + "version": "5.1.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/history": "*", + "@types/react": "*", + "@types/react-router": "*" + } + }, + "react-app/node_modules/@types/react-test-renderer": { + "version": "17.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, + "react-app/node_modules/@types/resize-observer-browser": { + "version": "0.1.6", + "license": "MIT" + }, + "react-app/node_modules/@types/resolve": { + "version": "0.0.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "react-app/node_modules/@types/sanitize-html": { + "version": "1.27.2", + "dev": true, + "license": "MIT", + "dependencies": { + "htmlparser2": "^4.1.0" + } + }, + "react-app/node_modules/@types/scheduler": { + "version": "0.16.2", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/@types/sinon": { + "version": "10.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinonjs/fake-timers": "^7.1.0" + } + }, + "react-app/node_modules/@types/source-list-map": { + "version": "0.1.2", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/@types/stack-utils": { + "version": "2.0.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/@types/tapable": { + "version": "1.0.8", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/@types/uglify-js": { + "version": "3.13.1", + "dev": true, + "license": "MIT", + "dependencies": { + "source-map": "^0.6.1" + } + }, + "react-app/node_modules/@types/uglify-js/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/@types/webpack": { + "version": "4.41.31", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/tapable": "^1", + "@types/uglify-js": "*", + "@types/webpack-sources": "*", + "anymatch": "^3.0.0", + "source-map": "^0.6.0" + } + }, + "react-app/node_modules/@types/webpack-sources": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.7.3" + } + }, + "react-app/node_modules/@types/webpack-sources/node_modules/source-map": { + "version": "0.7.3", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "react-app/node_modules/@types/webpack/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/@types/yargs": { + "version": "16.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "react-app/node_modules/@types/yargs-parser": { + "version": "20.2.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/@webassemblyjs/ast": { + "version": "1.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "react-app/node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "react-app/node_modules/@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "dev": true, + "license": "ISC" + }, + "react-app/node_modules/@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "react-app/node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "react-app/node_modules/@webassemblyjs/ieee754": { + "version": "1.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "react-app/node_modules/@webassemblyjs/leb128": { + "version": "1.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "react-app/node_modules/@webassemblyjs/utf8": { + "version": "1.9.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "react-app/node_modules/@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "react-app/node_modules/@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "react-app/node_modules/@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "react-app/node_modules/@webassemblyjs/wast-parser": { + "version": "1.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "react-app/node_modules/@webassemblyjs/wast-printer": { + "version": "1.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "react-app/node_modules/@wojtekmaj/enzyme-adapter-react-17": { + "version": "0.6.3", + "dev": true, + "license": "MIT", + "workspaces": [ + "test" + ], + "dependencies": { + "@wojtekmaj/enzyme-adapter-utils": "^0.1.1", + "enzyme-shallow-equal": "^1.0.0", + "has": "^1.0.0", + "object.assign": "^4.1.0", + "object.values": "^1.1.0", + "prop-types": "^15.7.0", + "react-is": "^17.0.2", + "react-test-renderer": "^17.0.0" + }, + "peerDependencies": { + "enzyme": "^3.0.0", + "react": "^17.0.0-0", + "react-dom": "^17.0.0-0" + } + }, + "react-app/node_modules/@wojtekmaj/enzyme-adapter-utils": { + "version": "0.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "function.prototype.name": "^1.1.0", + "has": "^1.0.0", + "object.assign": "^4.1.0", + "object.fromentries": "^2.0.0", + "prop-types": "^15.7.0" + }, + "peerDependencies": { + "react": "^17.0.0-0" + } + }, + "react-app/node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "dev": true, + "license": "BSD-3-Clause" + }, + "react-app/node_modules/@xtuc/long": { + "version": "4.2.2", + "dev": true, + "license": "Apache-2.0" + }, + "react-app/node_modules/abab": { + "version": "2.0.5", + "dev": true, + "license": "BSD-3-Clause" + }, + "react-app/node_modules/accepts": { + "version": "1.3.7", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "react-app/node_modules/acorn-globals": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "react-app/node_modules/acorn-walk": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "react-app/node_modules/address": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.12.0" + } + }, + "react-app/node_modules/adjust-sourcemap-loader": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "engines": { + "node": ">=8.9" + } + }, + "react-app/node_modules/ajv-errors": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": ">=5.0.0" + } + }, + "react-app/node_modules/ajv-keywords": { + "version": "3.5.2", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "react-app/node_modules/alphanum-sort": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/ansi-escapes": { + "version": "4.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app/node_modules/ansi-html": { + "version": "0.0.7", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "license": "Apache-2.0", + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "react-app/node_modules/ansi-styles": { + "version": "3.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/aproba": { + "version": "1.2.0", + "dev": true, + "license": "ISC" + }, + "react-app/node_modules/aria-query": { + "version": "4.2.2", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "react-app/node_modules/arity-n": { + "version": "1.0.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/arr-diff": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/arr-flatten": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/arr-union": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/array-flatten": { + "version": "2.1.2", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/array-uniq": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/array-unique": { + "version": "0.3.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/array.prototype.filter": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "react-app/node_modules/array.prototype.flatmap": { + "version": "1.2.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1", + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "react-app/node_modules/arrify": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/asap": { + "version": "2.0.6", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/asn1.js": { + "version": "5.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "react-app/node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/assert": { + "version": "1.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "object-assign": "^4.1.1", + "util": "0.10.3" + } + }, + "react-app/node_modules/assert/node_modules/inherits": { + "version": "2.0.1", + "dev": true, + "license": "ISC" + }, + "react-app/node_modules/assert/node_modules/util": { + "version": "0.10.3", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "2.0.1" + } + }, + "react-app/node_modules/assign-symbols": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/ast-types-flow": { + "version": "0.0.7", + "dev": true, + "license": "ISC" + }, + "react-app/node_modules/async": { + "version": "2.6.3", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.14" + } + }, + "react-app/node_modules/async-each": { + "version": "1.0.3", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/async-limiter": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/asynckit": { + "version": "0.4.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/at-least-node": { + "version": "1.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, + "react-app/node_modules/atob": { + "version": "2.1.2", + "dev": true, + "license": "(MIT OR Apache-2.0)", + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "react-app/node_modules/autoprefixer": { + "version": "9.8.6", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "colorette": "^1.2.1", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + }, + "react-app/node_modules/axe-core": { + "version": "4.3.3", + "dev": true, + "license": "MPL-2.0", + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/axobject-query": { + "version": "2.2.0", + "dev": true, + "license": "Apache-2.0" + }, + "react-app/node_modules/babel-eslint": { + "version": "10.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "eslint": ">= 4.12.1" + } + }, + "react-app/node_modules/babel-eslint/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/babel-extract-comments": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "babylon": "^6.18.0" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/babel-jest": { + "version": "26.6.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/babel__core": "^7.1.7", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "react-app/node_modules/babel-jest/node_modules/@jest/types": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/babel-jest/node_modules/@types/yargs": { + "version": "15.0.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "react-app/node_modules/babel-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "react-app/node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "react-app/node_modules/babel-jest/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "react-app/node_modules/babel-jest/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/babel-jest/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/babel-jest/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/babel-loader": { + "version": "8.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "find-cache-dir": "^2.1.0", + "loader-utils": "^1.4.0", + "mkdirp": "^0.5.3", + "pify": "^4.0.1", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 6.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "react-app/node_modules/babel-loader/node_modules/json5": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "react-app/node_modules/babel-loader/node_modules/loader-utils": { + "version": "1.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "react-app/node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "dev": true, + "license": "MIT", + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "react-app/node_modules/babel-plugin-istanbul": { + "version": "6.0.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^4.0.0", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/babel-plugin-jest-hoist": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/babel-plugin-macros": { + "version": "2.8.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" + } + }, + "react-app/node_modules/babel-plugin-macros/node_modules/cosmiconfig": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/babel-plugin-named-asset-import": { + "version": "0.3.7", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@babel/core": "^7.1.0" + } + }, + "react-app/node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.2.2", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.0", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "react-app/node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.2.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.2.2", + "core-js-compat": "^3.14.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.2.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-plugin-syntax-object-rest-spread": "^6.8.0", + "babel-runtime": "^6.26.0" + } + }, + "react-app/node_modules/babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.24", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "react-app/node_modules/babel-preset-jest": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-plugin-jest-hoist": "^26.6.2", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": ">= 10.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "react-app/node_modules/babel-preset-react-app": { + "version": "10.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "7.12.3", + "@babel/plugin-proposal-class-properties": "7.12.1", + "@babel/plugin-proposal-decorators": "7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "7.12.1", + "@babel/plugin-proposal-numeric-separator": "7.12.1", + "@babel/plugin-proposal-optional-chaining": "7.12.1", + "@babel/plugin-transform-flow-strip-types": "7.12.1", + "@babel/plugin-transform-react-display-name": "7.12.1", + "@babel/plugin-transform-runtime": "7.12.1", + "@babel/preset-env": "7.12.1", + "@babel/preset-react": "7.12.1", + "@babel/preset-typescript": "7.12.1", + "@babel/runtime": "7.12.1", + "babel-plugin-macros": "2.8.0", + "babel-plugin-transform-react-remove-prop-types": "0.4.24" + } + }, + "react-app/node_modules/babel-preset-react-app/node_modules/@babel/core": { + "version": "7.12.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.1", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.1", + "@babel/parser": "^7.12.3", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "react-app/node_modules/babel-preset-react-app/node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.12.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/babel-preset-react-app/node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.12.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/babel-preset-react-app/node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.12.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/babel-preset-react-app/node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.12.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/babel-preset-react-app/node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.12.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/babel-preset-react-app/node_modules/@babel/preset-env": { + "version": "7.12.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.12.1", + "@babel/helper-compilation-targets": "^7.12.1", + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-option": "^7.12.1", + "@babel/plugin-proposal-async-generator-functions": "^7.12.1", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-dynamic-import": "^7.12.1", + "@babel/plugin-proposal-export-namespace-from": "^7.12.1", + "@babel/plugin-proposal-json-strings": "^7.12.1", + "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-numeric-separator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.1", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.12.1", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-async-to-generator": "^7.12.1", + "@babel/plugin-transform-block-scoped-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.1", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-computed-properties": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-dotall-regex": "^7.12.1", + "@babel/plugin-transform-duplicate-keys": "^7.12.1", + "@babel/plugin-transform-exponentiation-operator": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-function-name": "^7.12.1", + "@babel/plugin-transform-literals": "^7.12.1", + "@babel/plugin-transform-member-expression-literals": "^7.12.1", + "@babel/plugin-transform-modules-amd": "^7.12.1", + "@babel/plugin-transform-modules-commonjs": "^7.12.1", + "@babel/plugin-transform-modules-systemjs": "^7.12.1", + "@babel/plugin-transform-modules-umd": "^7.12.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", + "@babel/plugin-transform-new-target": "^7.12.1", + "@babel/plugin-transform-object-super": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-property-literals": "^7.12.1", + "@babel/plugin-transform-regenerator": "^7.12.1", + "@babel/plugin-transform-reserved-words": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/plugin-transform-sticky-regex": "^7.12.1", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/plugin-transform-typeof-symbol": "^7.12.1", + "@babel/plugin-transform-unicode-escapes": "^7.12.1", + "@babel/plugin-transform-unicode-regex": "^7.12.1", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.12.1", + "core-js-compat": "^3.6.2", + "semver": "^5.5.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/babel-preset-react-app/node_modules/@babel/preset-react": { + "version": "7.12.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-transform-react-display-name": "^7.12.1", + "@babel/plugin-transform-react-jsx": "^7.12.1", + "@babel/plugin-transform-react-jsx-development": "^7.12.1", + "@babel/plugin-transform-react-jsx-self": "^7.12.1", + "@babel/plugin-transform-react-jsx-source": "^7.12.1", + "@babel/plugin-transform-react-pure-annotations": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/babel-preset-react-app/node_modules/@babel/preset-react/node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.14.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/babel-preset-react-app/node_modules/@babel/preset-react/node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "react-app/node_modules/babel-preset-react-app/node_modules/@babel/runtime": { + "version": "7.12.1", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.13.4" + } + }, + "react-app/node_modules/babel-preset-react-app/node_modules/semver": { + "version": "5.7.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "react-app/node_modules/babel-runtime": { + "version": "6.26.0", + "dev": true, + "license": "MIT", + "dependencies": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "react-app/node_modules/babel-runtime/node_modules/core-js": { + "version": "2.6.12", + "dev": true, + "hasInstallScript": true, + "license": "MIT" + }, + "react-app/node_modules/babel-runtime/node_modules/regenerator-runtime": { + "version": "0.11.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/babylon": { + "version": "6.18.0", + "dev": true, + "license": "MIT", + "bin": { + "babylon": "bin/babylon.js" + } + }, + "react-app/node_modules/base": { + "version": "0.11.2", + "dev": true, + "license": "MIT", + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/base64-js": { + "version": "1.5.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "react-app/node_modules/batch": { + "version": "0.6.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/bfj": { + "version": "7.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "bluebird": "^3.5.5", + "check-types": "^11.1.1", + "hoopy": "^0.1.4", + "tryer": "^1.0.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "react-app/node_modules/bindings": { + "version": "1.5.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "react-app/node_modules/bluebird": { + "version": "3.7.2", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/bn.js": { + "version": "5.2.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/body-parser": { + "version": "1.19.0", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "engines": { + "node": ">= 0.8" + } + }, + "react-app/node_modules/body-parser/node_modules/bytes": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "react-app/node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "react-app/node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/bonjour": { + "version": "3.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "react-app/node_modules/boolbase": { + "version": "1.0.0", + "dev": true, + "license": "ISC" + }, + "react-app/node_modules/bootstrap": { + "version": "4.6.0", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + }, + "peerDependencies": { + "jquery": "1.9.1 - 3", + "popper.js": "^1.16.1" + } + }, + "react-app/node_modules/brorand": { + "version": "1.1.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/browser-process-hrtime": { + "version": "1.0.0", + "dev": true, + "license": "BSD-2-Clause" + }, + "react-app/node_modules/browserify-aes": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "react-app/node_modules/browserify-cipher": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "react-app/node_modules/browserify-des": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "react-app/node_modules/browserify-rsa": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "react-app/node_modules/browserify-sign": { + "version": "4.2.1", + "dev": true, + "license": "ISC", + "dependencies": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "react-app/node_modules/browserify-sign/node_modules/readable-stream": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "react-app/node_modules/browserify-sign/node_modules/safe-buffer": { + "version": "5.2.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "react-app/node_modules/browserify-zlib": { + "version": "0.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pako": "~1.0.5" + } + }, + "react-app/node_modules/bser": { + "version": "2.1.1", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "react-app/node_modules/buffer": { + "version": "4.9.2", + "dev": true, + "license": "MIT", + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "react-app/node_modules/buffer-indexof": { + "version": "1.1.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/buffer-xor": { + "version": "1.0.3", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/buffer/node_modules/isarray": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/builtin-modules": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app/node_modules/builtin-status-codes": { + "version": "3.0.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/bytes": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "react-app/node_modules/cacache": { + "version": "15.3.0", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" + } + }, + "react-app/node_modules/cacache/node_modules/mkdirp": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "react-app/node_modules/cache-base": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/caller-callsite": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/caller-callsite/node_modules/callsites": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/caller-path": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "caller-callsite": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/camel-case": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "react-app/node_modules/camelcase": { + "version": "6.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app/node_modules/caniuse-api": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "react-app/node_modules/capture-exit": { + "version": "2.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "rsvp": "^4.8.4" + }, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "react-app/node_modules/case-sensitive-paths-webpack-plugin": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/chalk": { + "version": "2.4.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/char-regex": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "react-app/node_modules/check-types": { + "version": "11.1.2", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/cheerio": { + "version": "1.0.0-rc.10", + "dev": true, + "license": "MIT", + "dependencies": { + "cheerio-select": "^1.5.0", + "dom-serializer": "^1.3.2", + "domhandler": "^4.2.0", + "htmlparser2": "^6.1.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "react-app/node_modules/cheerio-select": { + "version": "1.5.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "css-select": "^4.1.3", + "css-what": "^5.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0", + "domutils": "^2.7.0" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "react-app/node_modules/cheerio/node_modules/htmlparser2": { + "version": "6.1.0", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "react-app/node_modules/chokidar": { + "version": "3.5.2", + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "react-app/node_modules/chownr": { + "version": "2.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "react-app/node_modules/chrome-trace-event": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "react-app/node_modules/ci-info": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/cipher-base": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "react-app/node_modules/cjs-module-lexer": { + "version": "0.6.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/class-utils": { + "version": "0.3.6", + "dev": true, + "license": "MIT", + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/class-utils/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/class-utils/node_modules/is-data-descriptor": { + "version": "0.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/class-utils/node_modules/kind-of": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/classnames": { + "version": "2.3.1", + "license": "MIT" + }, + "react-app/node_modules/clean-css": { + "version": "4.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 4.0" + } + }, + "react-app/node_modules/clean-css/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/cliui": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "react-app/node_modules/co": { + "version": "4.6.0", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "react-app/node_modules/coa": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + }, + "engines": { + "node": ">= 4.0" + } + }, + "react-app/node_modules/collect-v8-coverage": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/collection-visit": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/color": { + "version": "3.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "react-app/node_modules/color-convert": { + "version": "1.9.3", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "react-app/node_modules/color-name": { + "version": "1.1.3", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/color-string": { + "version": "1.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "react-app/node_modules/combined-stream": { + "version": "1.0.8", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "react-app/node_modules/commander": { + "version": "4.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "react-app/node_modules/common-tags": { + "version": "1.8.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "react-app/node_modules/component-emitter": { + "version": "1.3.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/compose-function": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "arity-n": "^1.0.4" + } + }, + "react-app/node_modules/compressible": { + "version": "2.0.18", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "react-app/node_modules/compression": { + "version": "1.7.4", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "react-app/node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "react-app/node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/compute-scroll-into-view": { + "version": "1.0.17", + "license": "MIT" + }, + "react-app/node_modules/concat-stream": { + "version": "1.6.2", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "react-app/node_modules/confusing-browser-globals": { + "version": "1.0.10", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/connect-history-api-fallback": { + "version": "1.6.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "react-app/node_modules/console-browserify": { + "version": "1.2.0", + "dev": true + }, + "react-app/node_modules/constants-browserify": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/content-disposition": { + "version": "0.5.3", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "react-app/node_modules/content-type": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "react-app/node_modules/cookie": { + "version": "0.4.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "react-app/node_modules/cookie-signature": { + "version": "1.0.6", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/copy-concurrently": { + "version": "1.0.5", + "dev": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "react-app/node_modules/copy-concurrently/node_modules/rimraf": { + "version": "2.7.1", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "react-app/node_modules/copy-descriptor": { + "version": "0.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/copy-to-clipboard": { + "version": "3.3.1", + "license": "MIT", + "dependencies": { + "toggle-selection": "^1.0.6" + } + }, + "react-app/node_modules/core-js": { + "version": "3.17.3", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "react-app/node_modules/core-js-compat": { + "version": "3.17.3", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.17.0", + "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "react-app/node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "react-app/node_modules/core-js-pure": { + "version": "3.17.3", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "react-app/node_modules/cosmiconfig": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "react-app/node_modules/create-ecdh": { + "version": "4.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "react-app/node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/create-hash": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "react-app/node_modules/create-hmac": { + "version": "1.1.7", + "dev": true, + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "react-app/node_modules/cross-fetch": { + "version": "3.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "node-fetch": "2.6.1" + } + }, + "react-app/node_modules/crypto-browserify": { + "version": "3.12.0", + "dev": true, + "license": "MIT", + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } + }, + "react-app/node_modules/crypto-random-string": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/css": { + "version": "2.2.4", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + } + }, + "react-app/node_modules/css-blank-pseudo": { + "version": "0.1.4", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "postcss": "^7.0.5" + }, + "bin": { + "css-blank-pseudo": "cli.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "react-app/node_modules/css-color-names": { + "version": "0.0.4", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "react-app/node_modules/css-declaration-sorter": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + }, + "engines": { + "node": ">4" + } + }, + "react-app/node_modules/css-has-pseudo": { + "version": "0.10.0", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^5.0.0-rc.4" + }, + "bin": { + "css-has-pseudo": "cli.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "react-app/node_modules/css-has-pseudo/node_modules/cssesc": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/css-has-pseudo/node_modules/postcss-selector-parser": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/css-loader": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "camelcase": "^6.0.0", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^2.0.0", + "postcss": "^7.0.32", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.3", + "postcss-modules-scope": "^2.2.0", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^2.7.1", + "semver": "^7.3.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.27.0 || ^5.0.0" + } + }, + "react-app/node_modules/css-prefers-color-scheme": { + "version": "3.1.1", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "postcss": "^7.0.5" + }, + "bin": { + "css-prefers-color-scheme": "cli.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "react-app/node_modules/css-select": { + "version": "4.1.3", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^5.0.0", + "domhandler": "^4.2.0", + "domutils": "^2.6.0", + "nth-check": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "react-app/node_modules/css-select-base-adapter": { + "version": "0.1.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/css-tree": { + "version": "1.0.0-alpha.37", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "react-app/node_modules/css-tree/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/css-what": { + "version": "5.0.1", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "react-app/node_modules/css.escape": { + "version": "1.5.1", + "license": "MIT" + }, + "react-app/node_modules/css/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/cssdb": { + "version": "4.4.0", + "dev": true, + "license": "CC0-1.0" + }, + "react-app/node_modules/cssesc": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/cssfontparser": { + "version": "1.2.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/cssnano": { + "version": "4.1.11", + "dev": true, + "license": "MIT", + "dependencies": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.8", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/cssnano-preset-default": { + "version": "4.0.8", + "dev": true, + "license": "MIT", + "dependencies": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.3", + "postcss-unique-selectors": "^4.0.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/cssnano-util-get-arguments": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/cssnano-util-get-match": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/cssnano-util-raw-cache": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/cssnano-util-same-parent": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/cssnano/node_modules/cosmiconfig": { + "version": "5.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/cssnano/node_modules/import-fresh": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/cssnano/node_modules/parse-json": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/cssnano/node_modules/resolve-from": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/csso": { + "version": "4.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "react-app/node_modules/csso/node_modules/css-tree": { + "version": "1.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "react-app/node_modules/csso/node_modules/mdn-data": { + "version": "2.0.14", + "dev": true, + "license": "CC0-1.0" + }, + "react-app/node_modules/csso/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/cssom": { + "version": "0.4.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/cssstyle": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/csstype": { + "version": "3.0.9", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/cyclist": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/d": { + "version": "1.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "react-app/node_modules/damerau-levenshtein": { + "version": "1.0.7", + "dev": true, + "license": "BSD-2-Clause" + }, + "react-app/node_modules/data-urls": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "react-app/node_modules/decimal.js": { + "version": "10.3.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/decode-uri-component": { + "version": "0.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "react-app/node_modules/dedent": { + "version": "0.7.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/deep-equal": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "react-app/node_modules/deepmerge": { + "version": "4.2.2", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/default-gateway": { + "version": "4.2.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/default-gateway/node_modules/cross-spawn": { + "version": "6.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "react-app/node_modules/default-gateway/node_modules/execa": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/default-gateway/node_modules/get-stream": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/default-gateway/node_modules/is-stream": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/default-gateway/node_modules/npm-run-path": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/default-gateway/node_modules/path-key": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/default-gateway/node_modules/semver": { + "version": "5.7.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "react-app/node_modules/default-gateway/node_modules/shebang-command": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/default-gateway/node_modules/shebang-regex": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/default-gateway/node_modules/which": { + "version": "1.3.1", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "react-app/node_modules/define-property": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/del": { + "version": "4.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/del/node_modules/array-union": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/del/node_modules/globby": { + "version": "6.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/del/node_modules/globby/node_modules/pify": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/del/node_modules/p-map": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/del/node_modules/rimraf": { + "version": "2.7.1", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "react-app/node_modules/delayed-stream": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "react-app/node_modules/depd": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "react-app/node_modules/des.js": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "react-app/node_modules/destroy": { + "version": "1.0.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/detect-newline": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/detect-node": { + "version": "2.1.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/detect-port-alt": { + "version": "1.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "address": "^1.0.1", + "debug": "^2.6.0" + }, + "bin": { + "detect": "bin/detect-port", + "detect-port": "bin/detect-port" + }, + "engines": { + "node": ">= 4.2.1" + } + }, + "react-app/node_modules/detect-port-alt/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "react-app/node_modules/detect-port-alt/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/diff-sequences": { + "version": "27.0.6", + "dev": true, + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "react-app/node_modules/diffie-hellman": { + "version": "5.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "react-app/node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/discontinuous-range": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/dns-equal": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/dns-packet": { + "version": "1.3.4", + "dev": true, + "license": "MIT", + "dependencies": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "react-app/node_modules/dns-txt": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-indexof": "^1.0.0" + } + }, + "react-app/node_modules/dom-converter": { + "version": "0.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "utila": "~0.4" + } + }, + "react-app/node_modules/dom-helpers": { + "version": "3.4.0", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.1.2" + } + }, + "react-app/node_modules/dom-serializer": { + "version": "1.3.2", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "react-app/node_modules/domain-browser": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4", + "npm": ">=1.2" + } + }, + "react-app/node_modules/domelementtype": { + "version": "2.2.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "react-app/node_modules/domexception": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/domhandler": { + "version": "4.2.2", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "react-app/node_modules/domutils": { + "version": "2.8.0", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "react-app/node_modules/dot-case": { + "version": "3.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "react-app/node_modules/dot-prop": { + "version": "5.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/dot-prop/node_modules/is-obj": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/dotenv": { + "version": "8.2.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/dotenv-expand": { + "version": "5.1.0", + "dev": true, + "license": "BSD-2-Clause" + }, + "react-app/node_modules/downshift": { + "version": "3.4.8", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.4.5", + "compute-scroll-into-view": "^1.0.9", + "prop-types": "^15.7.2", + "react-is": "^16.9.0" + }, + "peerDependencies": { + "react": ">=0.14.9" + } + }, + "react-app/node_modules/downshift/node_modules/react-is": { + "version": "16.13.1", + "license": "MIT" + }, + "react-app/node_modules/duplexer": { + "version": "0.1.2", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/duplexify": { + "version": "3.7.1", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "react-app/node_modules/ee-first": { + "version": "1.1.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/ejs": { + "version": "2.7.4", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/elliptic": { + "version": "6.5.4", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "react-app/node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/emittery": { + "version": "0.7.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "react-app/node_modules/emoji-regex": { + "version": "9.2.2", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/encodeurl": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "react-app/node_modules/end-of-stream": { + "version": "1.4.4", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "react-app/node_modules/entities": { + "version": "2.2.0", + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "react-app/node_modules/enzyme": { + "version": "3.11.0", + "dev": true, + "license": "MIT", + "dependencies": { + "array.prototype.flat": "^1.2.3", + "cheerio": "^1.0.0-rc.3", + "enzyme-shallow-equal": "^1.0.1", + "function.prototype.name": "^1.1.2", + "has": "^1.0.3", + "html-element-map": "^1.2.0", + "is-boolean-object": "^1.0.1", + "is-callable": "^1.1.5", + "is-number-object": "^1.0.4", + "is-regex": "^1.0.5", + "is-string": "^1.0.5", + "is-subset": "^0.1.1", + "lodash.escape": "^4.0.1", + "lodash.isequal": "^4.5.0", + "object-inspect": "^1.7.0", + "object-is": "^1.0.2", + "object.assign": "^4.1.0", + "object.entries": "^1.1.1", + "object.values": "^1.1.1", + "raf": "^3.4.1", + "rst-selector-parser": "^2.2.3", + "string.prototype.trim": "^1.2.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "react-app/node_modules/enzyme-shallow-equal": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "has": "^1.0.3", + "object-is": "^1.1.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "react-app/node_modules/enzyme-to-json": { + "version": "3.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/cheerio": "^0.22.22", + "lodash": "^4.17.21", + "react-is": "^16.12.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "peerDependencies": { + "enzyme": "^3.4.0" + } + }, + "react-app/node_modules/enzyme-to-json/node_modules/react-is": { + "version": "16.13.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/error-stack-parser": { + "version": "2.0.6", + "dev": true, + "license": "MIT", + "dependencies": { + "stackframe": "^1.1.1" + } + }, + "react-app/node_modules/es-array-method-boxes-properly": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/es5-ext": { + "version": "0.10.53", + "dev": true, + "license": "ISC", + "dependencies": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "react-app/node_modules/es6-iterator": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "react-app/node_modules/es6-symbol": { + "version": "3.1.3", + "dev": true, + "license": "ISC", + "dependencies": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "react-app/node_modules/escape-html": { + "version": "1.0.3", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/escape-string-regexp": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "react-app/node_modules/escodegen": { + "version": "2.0.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "react-app/node_modules/escodegen/node_modules/levn": { + "version": "0.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "react-app/node_modules/escodegen/node_modules/optionator": { + "version": "0.8.3", + "dev": true, + "license": "MIT", + "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" + } + }, + "react-app/node_modules/escodegen/node_modules/prelude-ls": { + "version": "1.1.2", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "react-app/node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/escodegen/node_modules/type-check": { + "version": "0.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "react-app/node_modules/eslint-config-react-app": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "confusing-browser-globals": "^1.0.10" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^4.0.0", + "@typescript-eslint/parser": "^4.0.0", + "babel-eslint": "^10.0.0", + "eslint": "^7.5.0", + "eslint-plugin-flowtype": "^5.2.0", + "eslint-plugin-import": "^2.22.0", + "eslint-plugin-jest": "^24.0.0", + "eslint-plugin-jsx-a11y": "^6.3.1", + "eslint-plugin-react": "^7.20.3", + "eslint-plugin-react-hooks": "^4.0.8", + "eslint-plugin-testing-library": "^3.9.0" + }, + "peerDependenciesMeta": { + "eslint-plugin-jest": { + "optional": true + }, + "eslint-plugin-testing-library": { + "optional": true + } + } + }, + "react-app/node_modules/eslint-plugin-jest": { + "version": "24.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/experimental-utils": "^4.0.1" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": ">= 4", + "eslint": ">=5" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + } + } + }, + "react-app/node_modules/eslint-plugin-jsx-a11y": { + "version": "6.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.11.2", + "aria-query": "^4.2.2", + "array-includes": "^3.1.1", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.0.2", + "axobject-query": "^2.2.0", + "damerau-levenshtein": "^1.0.6", + "emoji-regex": "^9.0.0", + "has": "^1.0.3", + "jsx-ast-utils": "^3.1.0", + "language-tags": "^1.0.5" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7" + } + }, + "react-app/node_modules/eslint-plugin-react": { + "version": "7.25.1", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.3", + "array.prototype.flatmap": "^1.2.4", + "doctrine": "^2.1.0", + "estraverse": "^5.2.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.0.4", + "object.entries": "^1.1.4", + "object.fromentries": "^2.0.4", + "object.values": "^1.1.4", + "prop-types": "^15.7.2", + "resolve": "^2.0.0-next.3", + "string.prototype.matchall": "^4.0.5" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7" + } + }, + "react-app/node_modules/eslint-plugin-react-hooks": { + "version": "4.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, + "react-app/node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.3", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "react-app/node_modules/eslint-plugin-testing-library": { + "version": "3.10.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/experimental-utils": "^3.10.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0", + "npm": ">=6" + }, + "peerDependencies": { + "eslint": "^5 || ^6 || ^7" + } + }, + "react-app/node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/experimental-utils": { + "version": "3.10.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/types": "3.10.1", + "@typescript-eslint/typescript-estree": "3.10.1", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + } + }, + "react-app/node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/types": { + "version": "3.10.1", + "dev": true, + "license": "MIT", + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "react-app/node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/typescript-estree": { + "version": "3.10.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "3.10.1", + "@typescript-eslint/visitor-keys": "3.10.1", + "debug": "^4.1.1", + "glob": "^7.1.6", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "react-app/node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/visitor-keys": { + "version": "3.10.1", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "react-app/node_modules/eslint-plugin-testing-library/node_modules/eslint-utils": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "react-app/node_modules/eslint-plugin-testing-library/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/eslint-webpack-plugin": { + "version": "2.5.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint": "^7.2.6", + "arrify": "^2.0.1", + "jest-worker": "^26.6.2", + "micromatch": "^4.0.2", + "normalize-path": "^3.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "eslint": "^7.0.0", + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "react-app/node_modules/eslint-webpack-plugin/node_modules/schema-utils": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "react-app/node_modules/estraverse": { + "version": "5.2.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "react-app/node_modules/estree-walker": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/etag": { + "version": "1.8.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "react-app/node_modules/eventemitter3": { + "version": "4.0.7", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/events": { + "version": "3.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "react-app/node_modules/eventsource": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "original": "^1.0.0" + }, + "engines": { + "node": ">=0.12.0" + } + }, + "react-app/node_modules/evp_bytestokey": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "react-app/node_modules/exec-sh": { + "version": "0.3.6", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/execa": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "react-app/node_modules/exit": { + "version": "0.1.2", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "react-app/node_modules/expand-brackets": { + "version": "2.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/expand-brackets/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "react-app/node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/expand-brackets/node_modules/is-extendable": { + "version": "0.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/expand-brackets/node_modules/kind-of": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/expect": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-styles": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/expect/node_modules/@jest/types": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/expect/node_modules/@types/yargs": { + "version": "15.0.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "react-app/node_modules/expect/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "react-app/node_modules/expect/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "react-app/node_modules/expect/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "react-app/node_modules/expect/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/expect/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/expect/node_modules/jest-get-type": { + "version": "26.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/expect/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/express": { + "version": "4.17.1", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "react-app/node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/express/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "react-app/node_modules/express/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/express/node_modules/path-to-regexp": { + "version": "0.1.7", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/ext": { + "version": "1.5.0", + "dev": true, + "license": "ISC", + "dependencies": { + "type": "^2.5.0" + } + }, + "react-app/node_modules/ext/node_modules/type": { + "version": "2.5.0", + "dev": true, + "license": "ISC" + }, + "react-app/node_modules/extend-shallow": { + "version": "3.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/extglob": { + "version": "2.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/extglob/node_modules/is-extendable": { + "version": "0.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/faye-websocket": { + "version": "0.11.4", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "react-app/node_modules/fb-watchman": { + "version": "2.0.1", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } + }, + "react-app/node_modules/figgy-pudding": { + "version": "3.5.2", + "dev": true, + "license": "ISC" + }, + "react-app/node_modules/file-loader": { + "version": "6.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "react-app/node_modules/file-loader/node_modules/schema-utils": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "react-app/node_modules/file-uri-to-path": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "optional": true + }, + "react-app/node_modules/filesize": { + "version": "6.1.0", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 0.4.0" + } + }, + "react-app/node_modules/finalhandler": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "react-app/node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "react-app/node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/find-cache-dir": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/find-cache-dir/node_modules/find-up": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/find-cache-dir/node_modules/locate-path": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/find-cache-dir/node_modules/p-limit": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app/node_modules/find-cache-dir/node_modules/p-locate": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/find-cache-dir/node_modules/p-try": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/flatten": { + "version": "1.0.3", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/flush-write-stream": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "react-app/node_modules/follow-redirects": { + "version": "1.14.4", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "react-app/node_modules/for-in": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/fork-ts-checker-webpack-plugin": { + "version": "4.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.5.5", + "chalk": "^2.4.1", + "micromatch": "^3.1.10", + "minimatch": "^3.0.4", + "semver": "^5.6.0", + "tapable": "^1.0.0", + "worker-rpc": "^0.1.0" + }, + "engines": { + "node": ">=6.11.5", + "yarn": ">=1.0.0" + } + }, + "react-app/node_modules/fork-ts-checker-webpack-plugin/node_modules/braces": { + "version": "2.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/fork-ts-checker-webpack-plugin/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/fork-ts-checker-webpack-plugin/node_modules/fill-range": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/fork-ts-checker-webpack-plugin/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/fork-ts-checker-webpack-plugin/node_modules/is-extendable": { + "version": "0.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/fork-ts-checker-webpack-plugin/node_modules/is-number": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/fork-ts-checker-webpack-plugin/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/fork-ts-checker-webpack-plugin/node_modules/micromatch": { + "version": "3.1.10", + "dev": true, + "license": "MIT", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { + "version": "5.7.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "react-app/node_modules/fork-ts-checker-webpack-plugin/node_modules/to-regex-range": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/form-data": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "react-app/node_modules/forwarded": { + "version": "0.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "react-app/node_modules/fragment-cache": { + "version": "0.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/fresh": { + "version": "0.5.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "react-app/node_modules/from2": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "react-app/node_modules/fs-extra": { + "version": "9.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "react-app/node_modules/fs-minipass": { + "version": "2.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "react-app/node_modules/fs-write-stream-atomic": { + "version": "1.0.10", + "dev": true, + "license": "ISC", + "dependencies": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "react-app/node_modules/function.prototype.name": { + "version": "1.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "react-app/node_modules/functions-have-names": { + "version": "1.2.2", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "react-app/node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "dev": true, + "license": "ISC" + }, + "react-app/node_modules/get-stream": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app/node_modules/get-value": { + "version": "2.0.6", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/glob": { + "version": "7.1.7", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "react-app/node_modules/global-modules": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/global-prefix": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "react-app/node_modules/globals": { + "version": "11.12.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/growly": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "optional": true + }, + "react-app/node_modules/gud": { + "version": "1.0.0", + "license": "MIT" + }, + "react-app/node_modules/gzip-size": { + "version": "5.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "duplexer": "^0.1.1", + "pify": "^4.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/handle-thing": { + "version": "2.0.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/harmony-reflect": { + "version": "1.6.2", + "dev": true, + "license": "(Apache-2.0 OR MPL-1.1)" + }, + "react-app/node_modules/has-flag": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/has-value": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/has-values": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/has-values/node_modules/is-number": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/has-values/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/hash-base": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/hash-base/node_modules/readable-stream": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "react-app/node_modules/hash-base/node_modules/safe-buffer": { + "version": "5.2.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "react-app/node_modules/hash.js": { + "version": "1.1.7", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "react-app/node_modules/hex-color-regex": { + "version": "1.1.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/history": { + "version": "4.10.1", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.1.2", + "loose-envify": "^1.2.0", + "resolve-pathname": "^3.0.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0", + "value-equal": "^1.0.1" + } + }, + "react-app/node_modules/hmac-drbg": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "react-app/node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "license": "BSD-3-Clause", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "react-app/node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "license": "MIT" + }, + "react-app/node_modules/hoopy": { + "version": "0.1.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0" + } + }, + "react-app/node_modules/hpack.js": { + "version": "2.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "react-app/node_modules/hsl-regex": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/hsla-regex": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/html-element-map": { + "version": "1.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "array.prototype.filter": "^1.0.0", + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "react-app/node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^1.0.5" + }, + "engines": { + "node": ">=10" + } + }, + "react-app/node_modules/html-entities": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/html-minifier-terser": { + "version": "5.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "camel-case": "^4.1.1", + "clean-css": "^4.2.3", + "commander": "^4.1.1", + "he": "^1.2.0", + "param-case": "^3.0.3", + "relateurl": "^0.2.7", + "terser": "^4.6.3" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/html-webpack-plugin": { + "version": "4.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/html-minifier-terser": "^5.0.0", + "@types/tapable": "^1.0.5", + "@types/webpack": "^4.41.8", + "html-minifier-terser": "^5.0.1", + "loader-utils": "^1.2.3", + "lodash": "^4.17.15", + "pretty-error": "^2.1.1", + "tapable": "^1.1.3", + "util.promisify": "1.0.0" + }, + "engines": { + "node": ">=6.9" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "react-app/node_modules/html-webpack-plugin/node_modules/json5": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "react-app/node_modules/html-webpack-plugin/node_modules/loader-utils": { + "version": "1.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "react-app/node_modules/htmlparser2": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^3.0.0", + "domutils": "^2.0.0", + "entities": "^2.0.0" + } + }, + "react-app/node_modules/htmlparser2/node_modules/domhandler": { + "version": "3.3.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.0.1" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "react-app/node_modules/http-deceiver": { + "version": "1.2.7", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/http-errors": { + "version": "1.7.2", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "react-app/node_modules/http-errors/node_modules/inherits": { + "version": "2.0.3", + "dev": true, + "license": "ISC" + }, + "react-app/node_modules/http-parser-js": { + "version": "0.5.3", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/http-proxy": { + "version": "1.18.1", + "dev": true, + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "react-app/node_modules/http-proxy-middleware": { + "version": "0.19.1", + "dev": true, + "license": "MIT", + "dependencies": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "react-app/node_modules/http-proxy-middleware/node_modules/braces": { + "version": "2.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/http-proxy-middleware/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/http-proxy-middleware/node_modules/fill-range": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/http-proxy-middleware/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/http-proxy-middleware/node_modules/is-extendable": { + "version": "0.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/http-proxy-middleware/node_modules/is-number": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/http-proxy-middleware/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/http-proxy-middleware/node_modules/micromatch": { + "version": "3.1.10", + "dev": true, + "license": "MIT", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/http-proxy-middleware/node_modules/to-regex-range": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/https-browserify": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/human-signals": { + "version": "1.1.1", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8.12.0" + } + }, + "react-app/node_modules/i": { + "version": "0.3.6", + "engines": { + "node": ">=0.4" + } + }, + "react-app/node_modules/iconv-lite": { + "version": "0.4.24", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/icss-utils": { + "version": "4.1.1", + "dev": true, + "license": "ISC", + "dependencies": { + "postcss": "^7.0.14" + }, + "engines": { + "node": ">= 6" + } + }, + "react-app/node_modules/identity-obj-proxy": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "harmony-reflect": "^1.4.6" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/ieee754": { + "version": "1.2.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "react-app/node_modules/iferr": { + "version": "0.1.5", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/immer": { + "version": "8.0.1", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "react-app/node_modules/import-cwd": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "import-from": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/import-from": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/import-from/node_modules/resolve-from": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/import-local": { + "version": "3.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/import-local/node_modules/find-up": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/import-local/node_modules/locate-path": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/import-local/node_modules/p-limit": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app/node_modules/import-local/node_modules/p-locate": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/import-local/node_modules/p-try": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/import-local/node_modules/path-exists": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/import-local/node_modules/pkg-dir": { + "version": "4.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/indexes-of": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/infer-owner": { + "version": "1.0.4", + "dev": true, + "license": "ISC" + }, + "react-app/node_modules/ini": { + "version": "1.3.8", + "dev": true, + "license": "ISC" + }, + "react-app/node_modules/internal-ip": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/ip": { + "version": "1.1.5", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/ip-regex": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/ipaddr.js": { + "version": "1.9.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "react-app/node_modules/is-absolute-url": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/is-arguments": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "react-app/node_modules/is-buffer": { + "version": "1.1.6", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/is-ci": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "react-app/node_modules/is-color-stop": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "react-app/node_modules/is-data-descriptor": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/is-descriptor": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/is-directory": { + "version": "0.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/is-docker": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app/node_modules/is-extendable": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/is-extendable/node_modules/is-plain-object": { + "version": "2.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/is-generator-fn": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/is-module": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/is-obj": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/is-path-cwd": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/is-path-in-cwd": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-path-inside": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/is-path-inside": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "path-is-inside": "^1.0.2" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/is-plain-obj": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/is-plain-object": { + "version": "5.0.0", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/is-regexp": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/is-resolvable": { + "version": "1.1.0", + "dev": true, + "license": "ISC" + }, + "react-app/node_modules/is-root": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/is-subset": { + "version": "0.1.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/is-wsl": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/isarray": { + "version": "0.0.1", + "license": "MIT" + }, + "react-app/node_modules/isobject": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/jest": { + "version": "26.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "^26.6.0", + "import-local": "^3.0.2", + "jest-cli": "^26.6.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-canvas-mock": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "cssfontparser": "^1.2.1", + "moo-color": "^1.0.2" + } + }, + "react-app/node_modules/jest-changed-files": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.2", + "execa": "^4.0.0", + "throat": "^5.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-changed-files/node_modules/@jest/types": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-changed-files/node_modules/@types/yargs": { + "version": "15.0.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "react-app/node_modules/jest-changed-files/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "react-app/node_modules/jest-changed-files/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "react-app/node_modules/jest-changed-files/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "react-app/node_modules/jest-changed-files/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/jest-changed-files/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-changed-files/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-circus": { + "version": "26.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^26.6.0", + "@jest/test-result": "^26.6.0", + "@jest/types": "^26.6.0", + "@types/babel__traverse": "^7.0.4", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^26.6.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^26.6.0", + "jest-matcher-utils": "^26.6.0", + "jest-message-util": "^26.6.0", + "jest-runner": "^26.6.0", + "jest-runtime": "^26.6.0", + "jest-snapshot": "^26.6.0", + "jest-util": "^26.6.0", + "pretty-format": "^26.6.0", + "stack-utils": "^2.0.2", + "throat": "^5.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-circus/node_modules/@jest/types": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-circus/node_modules/@types/yargs": { + "version": "15.0.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "react-app/node_modules/jest-circus/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "react-app/node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "react-app/node_modules/jest-circus/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "react-app/node_modules/jest-circus/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/jest-circus/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-circus/node_modules/pretty-format": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "react-app/node_modules/jest-circus/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-cli": { + "version": "26.6.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "^26.6.3", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "is-ci": "^2.0.0", + "jest-config": "^26.6.3", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "prompts": "^2.0.1", + "yargs": "^15.4.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-cli/node_modules/@jest/types": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-cli/node_modules/@types/yargs": { + "version": "15.0.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "react-app/node_modules/jest-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "react-app/node_modules/jest-cli/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "react-app/node_modules/jest-cli/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "react-app/node_modules/jest-cli/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/jest-cli/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-cli/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-config": { + "version": "26.6.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^26.6.3", + "@jest/types": "^26.6.2", + "babel-jest": "^26.6.3", + "chalk": "^4.0.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "jest-environment-jsdom": "^26.6.2", + "jest-environment-node": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-jasmine2": "^26.6.3", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } + } + }, + "react-app/node_modules/jest-config/node_modules/@jest/types": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-config/node_modules/@types/yargs": { + "version": "15.0.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "react-app/node_modules/jest-config/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "react-app/node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "react-app/node_modules/jest-config/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "react-app/node_modules/jest-config/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/jest-config/node_modules/find-up": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-config/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-config/node_modules/jest-get-type": { + "version": "26.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-config/node_modules/jest-resolve": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-config/node_modules/locate-path": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-config/node_modules/p-limit": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app/node_modules/jest-config/node_modules/p-locate": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-config/node_modules/p-try": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/jest-config/node_modules/path-exists": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-config/node_modules/pretty-format": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "react-app/node_modules/jest-config/node_modules/read-pkg": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-config/node_modules/read-pkg-up": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app/node_modules/jest-config/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-config/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-config/node_modules/type-fest": { + "version": "0.8.1", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-diff": { + "version": "27.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.0.6", + "jest-get-type": "^27.0.6", + "pretty-format": "^27.2.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "react-app/node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "react-app/node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "react-app/node_modules/jest-diff/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "react-app/node_modules/jest-diff/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-docblock": { + "version": "26.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-each": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-each/node_modules/@jest/types": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-each/node_modules/@types/yargs": { + "version": "15.0.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "react-app/node_modules/jest-each/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "react-app/node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "react-app/node_modules/jest-each/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "react-app/node_modules/jest-each/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/jest-each/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-each/node_modules/jest-get-type": { + "version": "26.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-each/node_modules/pretty-format": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "react-app/node_modules/jest-each/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-environment-jsdom": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2", + "jsdom": "^16.4.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-environment-jsdom/node_modules/@jest/types": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-environment-jsdom/node_modules/@types/yargs": { + "version": "15.0.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "react-app/node_modules/jest-environment-jsdom/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "react-app/node_modules/jest-environment-jsdom/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "react-app/node_modules/jest-environment-jsdom/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "react-app/node_modules/jest-environment-jsdom/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/jest-environment-jsdom/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-environment-jsdom/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-environment-node": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-environment-node/node_modules/@jest/types": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-environment-node/node_modules/@types/yargs": { + "version": "15.0.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "react-app/node_modules/jest-environment-node/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "react-app/node_modules/jest-environment-node/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "react-app/node_modules/jest-environment-node/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "react-app/node_modules/jest-environment-node/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/jest-environment-node/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-environment-node/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-fetch-mock": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-fetch": "^3.0.4", + "promise-polyfill": "^8.1.3" + } + }, + "react-app/node_modules/jest-get-type": { + "version": "27.0.6", + "dev": true, + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "react-app/node_modules/jest-haste-map": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.2", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^26.0.0", + "jest-serializer": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7" + }, + "engines": { + "node": ">= 10.14.2" + }, + "optionalDependencies": { + "fsevents": "^2.1.2" + } + }, + "react-app/node_modules/jest-haste-map/node_modules/@jest/types": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-haste-map/node_modules/@types/yargs": { + "version": "15.0.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "react-app/node_modules/jest-haste-map/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "react-app/node_modules/jest-haste-map/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "react-app/node_modules/jest-haste-map/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "react-app/node_modules/jest-haste-map/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/jest-haste-map/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-haste-map/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-jasmine2": { + "version": "26.6.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^26.6.2", + "is-generator-fn": "^2.0.0", + "jest-each": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2", + "throat": "^5.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-jasmine2/node_modules/@jest/types": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-jasmine2/node_modules/@types/yargs": { + "version": "15.0.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "react-app/node_modules/jest-jasmine2/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "react-app/node_modules/jest-jasmine2/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "react-app/node_modules/jest-jasmine2/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "react-app/node_modules/jest-jasmine2/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/jest-jasmine2/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-jasmine2/node_modules/pretty-format": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "react-app/node_modules/jest-jasmine2/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-leak-detector": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-leak-detector/node_modules/@jest/types": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-leak-detector/node_modules/@types/yargs": { + "version": "15.0.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "react-app/node_modules/jest-leak-detector/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "react-app/node_modules/jest-leak-detector/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "react-app/node_modules/jest-leak-detector/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "react-app/node_modules/jest-leak-detector/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/jest-leak-detector/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-leak-detector/node_modules/jest-get-type": { + "version": "26.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-leak-detector/node_modules/pretty-format": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "react-app/node_modules/jest-leak-detector/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-matcher-utils": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-matcher-utils/node_modules/@jest/types": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-matcher-utils/node_modules/@types/yargs": { + "version": "15.0.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "react-app/node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "react-app/node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "react-app/node_modules/jest-matcher-utils/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "react-app/node_modules/jest-matcher-utils/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/jest-matcher-utils/node_modules/diff-sequences": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-matcher-utils/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-matcher-utils/node_modules/jest-diff": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-matcher-utils/node_modules/jest-get-type": { + "version": "26.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-matcher-utils/node_modules/pretty-format": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "react-app/node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-message-util": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-message-util/node_modules/@jest/types": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-message-util/node_modules/@types/yargs": { + "version": "15.0.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "react-app/node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "react-app/node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "react-app/node_modules/jest-message-util/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "react-app/node_modules/jest-message-util/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-message-util/node_modules/pretty-format": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "react-app/node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-mock": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.2", + "@types/node": "*" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-mock/node_modules/@jest/types": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-mock/node_modules/@types/yargs": { + "version": "15.0.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "react-app/node_modules/jest-mock/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "react-app/node_modules/jest-mock/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "react-app/node_modules/jest-mock/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "react-app/node_modules/jest-mock/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/jest-mock/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-mock/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-pnp-resolver": { + "version": "1.2.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "react-app/node_modules/jest-regex-util": { + "version": "26.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-resolve": { + "version": "26.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.0", + "read-pkg-up": "^7.0.1", + "resolve": "^1.17.0", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-resolve-dependencies": { + "version": "26.6.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-snapshot": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-resolve-dependencies/node_modules/@jest/types": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-resolve-dependencies/node_modules/@types/yargs": { + "version": "15.0.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "react-app/node_modules/jest-resolve-dependencies/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "react-app/node_modules/jest-resolve-dependencies/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "react-app/node_modules/jest-resolve-dependencies/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "react-app/node_modules/jest-resolve-dependencies/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/jest-resolve-dependencies/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-resolve-dependencies/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-resolve/node_modules/@jest/types": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-resolve/node_modules/@types/yargs": { + "version": "15.0.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "react-app/node_modules/jest-resolve/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "react-app/node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "react-app/node_modules/jest-resolve/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "react-app/node_modules/jest-resolve/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/jest-resolve/node_modules/find-up": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-resolve/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-resolve/node_modules/locate-path": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-resolve/node_modules/p-limit": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app/node_modules/jest-resolve/node_modules/p-locate": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-resolve/node_modules/p-try": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/jest-resolve/node_modules/path-exists": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-resolve/node_modules/read-pkg": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-resolve/node_modules/read-pkg-up": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app/node_modules/jest-resolve/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-resolve/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-resolve/node_modules/type-fest": { + "version": "0.8.1", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-runner": { + "version": "26.6.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.7.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-docblock": "^26.0.0", + "jest-haste-map": "^26.6.2", + "jest-leak-detector": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "source-map-support": "^0.5.6", + "throat": "^5.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-runner/node_modules/@jest/types": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-runner/node_modules/@types/yargs": { + "version": "15.0.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "react-app/node_modules/jest-runner/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "react-app/node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "react-app/node_modules/jest-runner/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "react-app/node_modules/jest-runner/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/jest-runner/node_modules/find-up": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-runner/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-runner/node_modules/jest-resolve": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-runner/node_modules/locate-path": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-runner/node_modules/p-limit": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app/node_modules/jest-runner/node_modules/p-locate": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-runner/node_modules/p-try": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/jest-runner/node_modules/path-exists": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-runner/node_modules/read-pkg": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-runner/node_modules/read-pkg-up": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app/node_modules/jest-runner/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-runner/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-runner/node_modules/type-fest": { + "version": "0.8.1", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-runtime": { + "version": "26.6.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/globals": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0", + "cjs-module-lexer": "^0.6.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^15.4.1" + }, + "bin": { + "jest-runtime": "bin/jest-runtime.js" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-runtime/node_modules/@jest/types": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-runtime/node_modules/@types/yargs": { + "version": "15.0.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "react-app/node_modules/jest-runtime/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "react-app/node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "react-app/node_modules/jest-runtime/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "react-app/node_modules/jest-runtime/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/jest-runtime/node_modules/find-up": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-runtime/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-runtime/node_modules/jest-resolve": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-runtime/node_modules/locate-path": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-runtime/node_modules/p-limit": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app/node_modules/jest-runtime/node_modules/p-locate": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-runtime/node_modules/p-try": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/jest-runtime/node_modules/path-exists": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-runtime/node_modules/read-pkg": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-runtime/node_modules/read-pkg-up": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app/node_modules/jest-runtime/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-runtime/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-runtime/node_modules/type-fest": { + "version": "0.8.1", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-serializer": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-snapshot": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.0.0", + "chalk": "^4.0.0", + "expect": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-haste-map": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "natural-compare": "^1.4.0", + "pretty-format": "^26.6.2", + "semver": "^7.3.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-snapshot/node_modules/@jest/types": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-snapshot/node_modules/@types/yargs": { + "version": "15.0.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "react-app/node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "react-app/node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "react-app/node_modules/jest-snapshot/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "react-app/node_modules/jest-snapshot/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/jest-snapshot/node_modules/diff-sequences": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-snapshot/node_modules/find-up": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-snapshot/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-snapshot/node_modules/jest-diff": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-snapshot/node_modules/jest-get-type": { + "version": "26.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-snapshot/node_modules/jest-resolve": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-snapshot/node_modules/locate-path": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-snapshot/node_modules/p-limit": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app/node_modules/jest-snapshot/node_modules/p-locate": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-snapshot/node_modules/p-try": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/jest-snapshot/node_modules/path-exists": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-snapshot/node_modules/pretty-format": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "react-app/node_modules/jest-snapshot/node_modules/read-pkg": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-snapshot/node_modules/read-pkg-up": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app/node_modules/jest-snapshot/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-snapshot/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-snapshot/node_modules/type-fest": { + "version": "0.8.1", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-util": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-util/node_modules/@jest/types": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-util/node_modules/@types/yargs": { + "version": "15.0.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "react-app/node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "react-app/node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "react-app/node_modules/jest-util/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "react-app/node_modules/jest-util/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/jest-util/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-validate": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.2", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "leven": "^3.1.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-validate/node_modules/@jest/types": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-validate/node_modules/@types/yargs": { + "version": "15.0.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "react-app/node_modules/jest-validate/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "react-app/node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "react-app/node_modules/jest-validate/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "react-app/node_modules/jest-validate/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/jest-validate/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-validate/node_modules/jest-get-type": { + "version": "26.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-validate/node_modules/pretty-format": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "react-app/node_modules/jest-validate/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-watch-typeahead": { + "version": "0.6.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.3.1", + "chalk": "^4.0.0", + "jest-regex-util": "^26.0.0", + "jest-watcher": "^26.3.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "jest": "^26.0.0" + } + }, + "react-app/node_modules/jest-watch-typeahead/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "react-app/node_modules/jest-watch-typeahead/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "react-app/node_modules/jest-watch-typeahead/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "react-app/node_modules/jest-watch-typeahead/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/jest-watch-typeahead/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-watch-typeahead/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-watcher": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^26.6.2", + "string-length": "^4.0.1" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-watcher/node_modules/@jest/types": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "react-app/node_modules/jest-watcher/node_modules/@types/yargs": { + "version": "15.0.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "react-app/node_modules/jest-watcher/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "react-app/node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "react-app/node_modules/jest-watcher/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "react-app/node_modules/jest-watcher/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/jest-watcher/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-watcher/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-worker": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "react-app/node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jest-worker/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/jquery": { + "version": "3.6.0", + "license": "MIT" + }, + "react-app/node_modules/jquery.flot.tooltip": { + "version": "0.9.0", + "license": "MIT" + }, + "react-app/node_modules/jsdom": { + "version": "16.7.0", + "dev": true, + "license": "MIT", + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "react-app/node_modules/jsdom/node_modules/acorn": { + "version": "8.5.0", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "react-app/node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/json3": { + "version": "3.3.3", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/jsonfile": { + "version": "6.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "react-app/node_modules/jsx-ast-utils": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.2", + "object.assign": "^4.1.2" + }, + "engines": { + "node": ">=4.0" + } + }, + "react-app/node_modules/just-extend": { + "version": "4.2.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/killable": { + "version": "1.0.1", + "dev": true, + "license": "ISC" + }, + "react-app/node_modules/kind-of": { + "version": "6.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/kleur": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/klona": { + "version": "2.0.4", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "react-app/node_modules/language-subtag-registry": { + "version": "0.3.21", + "dev": true, + "license": "ODC-By-1.0" + }, + "react-app/node_modules/language-tags": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "language-subtag-registry": "~0.3.2" + } + }, + "react-app/node_modules/last-call-webpack-plugin": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.5", + "webpack-sources": "^1.1.0" + } + }, + "react-app/node_modules/leven": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/lines-and-columns": { + "version": "1.1.6", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/loader-runner": { + "version": "2.4.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, + "react-app/node_modules/loader-utils": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "react-app/node_modules/lodash._reinterpolate": { + "version": "3.0.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/lodash.debounce": { + "version": "4.0.8", + "license": "MIT" + }, + "react-app/node_modules/lodash.escape": { + "version": "4.0.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/lodash.get": { + "version": "4.4.2", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/lodash.isequal": { + "version": "4.5.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/lodash.memoize": { + "version": "4.1.2", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/lodash.template": { + "version": "4.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "react-app/node_modules/lodash.templatesettings": { + "version": "4.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash._reinterpolate": "^3.0.0" + } + }, + "react-app/node_modules/lodash.throttle": { + "version": "4.1.1", + "license": "MIT" + }, + "react-app/node_modules/lodash.uniq": { + "version": "4.5.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/loglevel": { + "version": "1.7.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/loglevel" + } + }, + "react-app/node_modules/loose-envify": { + "version": "1.4.0", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "react-app/node_modules/lower-case": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "react-app/node_modules/magic-string": { + "version": "0.25.7", + "dev": true, + "license": "MIT", + "dependencies": { + "sourcemap-codec": "^1.4.4" + } + }, + "react-app/node_modules/make-dir": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/make-dir/node_modules/semver": { + "version": "5.7.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "react-app/node_modules/makeerror": { + "version": "1.0.11", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.x" + } + }, + "react-app/node_modules/map-cache": { + "version": "0.2.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/map-visit": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/md5.js": { + "version": "1.3.5", + "dev": true, + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "react-app/node_modules/mdn-data": { + "version": "2.0.4", + "dev": true, + "license": "CC0-1.0" + }, + "react-app/node_modules/media-typer": { + "version": "0.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "react-app/node_modules/memory-fs": { + "version": "0.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "react-app/node_modules/merge-descriptors": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/merge-stream": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/methods": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "react-app/node_modules/microevent.ts": { + "version": "0.1.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/miller-rabin": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "react-app/node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/mime": { + "version": "1.6.0", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/mime-db": { + "version": "1.49.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "react-app/node_modules/mime-types": { + "version": "2.1.32", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.49.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "react-app/node_modules/mimic-fn": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/mini-create-react-context": { + "version": "0.4.1", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.1", + "tiny-warning": "^1.0.3" + }, + "peerDependencies": { + "prop-types": "^15.0.0", + "react": "^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "react-app/node_modules/mini-css-extract-plugin": { + "version": "0.11.3", + "dev": true, + "license": "MIT", + "dependencies": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "engines": { + "node": ">= 6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.4.0 || ^5.0.0" + } + }, + "react-app/node_modules/mini-css-extract-plugin/node_modules/json5": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "react-app/node_modules/mini-css-extract-plugin/node_modules/loader-utils": { + "version": "1.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "react-app/node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "react-app/node_modules/minimalistic-assert": { + "version": "1.0.1", + "dev": true, + "license": "ISC" + }, + "react-app/node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/minipass": { + "version": "3.1.3", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/minipass-collect": { + "version": "1.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "react-app/node_modules/minipass-flush": { + "version": "1.0.5", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "react-app/node_modules/minipass-pipeline": { + "version": "1.2.4", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/minizlib": { + "version": "2.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "react-app/node_modules/mississippi": { + "version": "3.0.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "react-app/node_modules/mixin-deep": { + "version": "1.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/moment": { + "version": "2.29.1", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "react-app/node_modules/moment-timezone": { + "version": "0.5.33", + "license": "MIT", + "dependencies": { + "moment": ">= 2.9.0" + }, + "engines": { + "node": "*" + } + }, + "react-app/node_modules/moo": { + "version": "0.5.1", + "dev": true, + "license": "BSD-3-Clause" + }, + "react-app/node_modules/moo-color": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "^1.1.4" + } + }, + "react-app/node_modules/moo-color/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/move-concurrently": { + "version": "1.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "react-app/node_modules/move-concurrently/node_modules/rimraf": { + "version": "2.7.1", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "react-app/node_modules/multicast-dns": { + "version": "6.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "react-app/node_modules/multicast-dns-service-types": { + "version": "1.1.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/mutationobserver-shim": { + "version": "0.3.7", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/nan": { + "version": "2.15.0", + "dev": true, + "license": "MIT", + "optional": true + }, + "react-app/node_modules/nanoid": { + "version": "3.1.25", + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "react-app/node_modules/nanomatch": { + "version": "1.2.13", + "dev": true, + "license": "MIT", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/native-url": { + "version": "0.2.6", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "querystring": "^0.2.0" + } + }, + "react-app/node_modules/nearley": { + "version": "2.20.1", + "dev": true, + "license": "MIT", + "dependencies": { + "commander": "^2.19.0", + "moo": "^0.5.0", + "railroad-diagrams": "^1.0.0", + "randexp": "0.4.6" + }, + "bin": { + "nearley-railroad": "bin/nearley-railroad.js", + "nearley-test": "bin/nearley-test.js", + "nearley-unparse": "bin/nearley-unparse.js", + "nearleyc": "bin/nearleyc.js" + }, + "funding": { + "type": "individual", + "url": "https://nearley.js.org/#give-to-nearley" + } + }, + "react-app/node_modules/nearley/node_modules/commander": { + "version": "2.20.3", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/negotiator": { + "version": "0.6.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "react-app/node_modules/neo-async": { + "version": "2.6.2", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/next-tick": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/nice-try": { + "version": "1.0.5", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/nise": { + "version": "5.1.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^1.7.0", + "@sinonjs/fake-timers": "^7.0.4", + "@sinonjs/text-encoding": "^0.7.1", + "just-extend": "^4.0.2", + "path-to-regexp": "^1.7.0" + } + }, + "react-app/node_modules/no-case": { + "version": "3.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "react-app/node_modules/node-fetch": { + "version": "2.6.1", + "dev": true, + "license": "MIT", + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "react-app/node_modules/node-forge": { + "version": "0.10.0", + "dev": true, + "license": "(BSD-3-Clause OR GPL-2.0)", + "engines": { + "node": ">= 6.0.0" + } + }, + "react-app/node_modules/node-int64": { + "version": "0.4.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/node-libs-browser": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + } + }, + "react-app/node_modules/node-libs-browser/node_modules/punycode": { + "version": "1.4.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/node-modules-regexp": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/node-notifier": { + "version": "8.0.2", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "growly": "^1.3.0", + "is-wsl": "^2.2.0", + "semver": "^7.3.2", + "shellwords": "^0.1.1", + "uuid": "^8.3.0", + "which": "^2.0.2" + } + }, + "react-app/node_modules/normalize-range": { + "version": "0.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/normalize-url": { + "version": "1.9.1", + "dev": true, + "license": "MIT", + "dependencies": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/npm-run-path": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/nth-check": { + "version": "2.0.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "react-app/node_modules/num2fraction": { + "version": "1.2.2", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/nwsapi": { + "version": "2.2.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/object-assign": { + "version": "4.1.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/object-copy": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/object-copy/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/object-copy/node_modules/is-data-descriptor": { + "version": "0.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/object-is": { + "version": "1.1.5", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "react-app/node_modules/object-visit": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/object.entries": { + "version": "1.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "react-app/node_modules/object.fromentries": { + "version": "2.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2", + "has": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "react-app/node_modules/object.getownpropertydescriptors": { + "version": "2.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "react-app/node_modules/object.pick": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/obuf": { + "version": "1.1.2", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/on-finished": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "react-app/node_modules/on-headers": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "react-app/node_modules/onetime": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app/node_modules/open": { + "version": "7.4.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app/node_modules/opn": { + "version": "5.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/opn/node_modules/is-wsl": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/optimize-css-assets-webpack-plugin": { + "version": "5.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano": "^4.1.10", + "last-call-webpack-plugin": "^3.0.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" + } + }, + "react-app/node_modules/original": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "url-parse": "^1.4.3" + } + }, + "react-app/node_modules/os-browserify": { + "version": "0.3.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/p-each-series": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app/node_modules/p-finally": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/p-map": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app/node_modules/p-retry": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "retry": "^0.12.0" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/pako": { + "version": "1.0.11", + "dev": true, + "license": "(MIT AND Zlib)" + }, + "react-app/node_modules/parallel-transform": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "react-app/node_modules/param-case": { + "version": "3.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "react-app/node_modules/parse-asn1": { + "version": "5.1.6", + "dev": true, + "license": "ISC", + "dependencies": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "react-app/node_modules/parse-json": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app/node_modules/parse-srcset": { + "version": "1.0.2", + "license": "MIT" + }, + "react-app/node_modules/parse5": { + "version": "6.0.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "parse5": "^6.0.1" + } + }, + "react-app/node_modules/parseurl": { + "version": "1.3.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "react-app/node_modules/pascal-case": { + "version": "3.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "react-app/node_modules/pascalcase": { + "version": "0.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/path-browserify": { + "version": "0.0.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/path-dirname": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/path-is-inside": { + "version": "1.0.2", + "dev": true, + "license": "(WTFPL OR MIT)" + }, + "react-app/node_modules/path-to-regexp": { + "version": "1.8.0", + "license": "MIT", + "dependencies": { + "isarray": "0.0.1" + } + }, + "react-app/node_modules/pbkdf2": { + "version": "3.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "react-app/node_modules/performance-now": { + "version": "2.1.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/pify": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/pinkie": { + "version": "2.0.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/pinkie-promise": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/pirates": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "node-modules-regexp": "^1.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "react-app/node_modules/pnp-webpack-plugin": { + "version": "1.6.4", + "dev": true, + "license": "MIT", + "dependencies": { + "ts-pnp": "^1.1.6" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/popper.js": { + "version": "1.16.1", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "react-app/node_modules/portfinder": { + "version": "1.0.28", + "dev": true, + "license": "MIT", + "dependencies": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "react-app/node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "react-app/node_modules/posix-character-classes": { + "version": "0.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/postcss": { + "version": "7.0.36", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "react-app/node_modules/postcss-attribute-case-insensitive": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^6.0.2" + } + }, + "react-app/node_modules/postcss-browser-comments": { + "version": "3.0.0", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "postcss": "^7" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "browserslist": "^4" + } + }, + "react-app/node_modules/postcss-calc": { + "version": "7.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "react-app/node_modules/postcss-color-functional-notation": { + "version": "2.0.1", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "react-app/node_modules/postcss-color-gray": { + "version": "5.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.5", + "postcss-values-parser": "^2.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "react-app/node_modules/postcss-color-hex-alpha": { + "version": "5.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.14", + "postcss-values-parser": "^2.0.1" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "react-app/node_modules/postcss-color-mod-function": { + "version": "3.0.3", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "react-app/node_modules/postcss-color-rebeccapurple": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "react-app/node_modules/postcss-colormin": { + "version": "4.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/postcss-colormin/node_modules/postcss-value-parser": { + "version": "3.3.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/postcss-convert-values": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/postcss-convert-values/node_modules/postcss-value-parser": { + "version": "3.3.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/postcss-custom-media": { + "version": "7.0.8", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.14" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "react-app/node_modules/postcss-custom-properties": { + "version": "8.0.11", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.17", + "postcss-values-parser": "^2.0.1" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "react-app/node_modules/postcss-custom-selectors": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^5.0.0-rc.3" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "react-app/node_modules/postcss-custom-selectors/node_modules/cssesc": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/postcss-custom-selectors/node_modules/postcss-selector-parser": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/postcss-dir-pseudo-class": { + "version": "5.0.0", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^5.0.0-rc.3" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "react-app/node_modules/postcss-dir-pseudo-class/node_modules/cssesc": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/postcss-dir-pseudo-class/node_modules/postcss-selector-parser": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/postcss-discard-comments": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/postcss-discard-duplicates": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/postcss-discard-empty": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/postcss-discard-overridden": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/postcss-double-position-gradients": { + "version": "1.0.0", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "postcss": "^7.0.5", + "postcss-values-parser": "^2.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "react-app/node_modules/postcss-env-function": { + "version": "2.0.2", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "react-app/node_modules/postcss-flexbugs-fixes": { + "version": "4.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.26" + } + }, + "react-app/node_modules/postcss-focus-visible": { + "version": "4.0.0", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "postcss": "^7.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "react-app/node_modules/postcss-focus-within": { + "version": "3.0.0", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "postcss": "^7.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "react-app/node_modules/postcss-font-variant": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.2" + } + }, + "react-app/node_modules/postcss-gap-properties": { + "version": "2.0.0", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "postcss": "^7.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "react-app/node_modules/postcss-image-set-function": { + "version": "3.0.1", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "react-app/node_modules/postcss-initial": { + "version": "3.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.2" + } + }, + "react-app/node_modules/postcss-lab-function": { + "version": "2.0.1", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "react-app/node_modules/postcss-load-config": { + "version": "2.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "react-app/node_modules/postcss-load-config/node_modules/cosmiconfig": { + "version": "5.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/postcss-load-config/node_modules/import-fresh": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/postcss-load-config/node_modules/parse-json": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/postcss-load-config/node_modules/resolve-from": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/postcss-loader": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "react-app/node_modules/postcss-loader/node_modules/json5": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "react-app/node_modules/postcss-loader/node_modules/loader-utils": { + "version": "1.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "react-app/node_modules/postcss-loader/node_modules/schema-utils": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "react-app/node_modules/postcss-logical": { + "version": "3.0.0", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "postcss": "^7.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "react-app/node_modules/postcss-media-minmax": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "react-app/node_modules/postcss-merge-longhand": { + "version": "4.0.11", + "dev": true, + "license": "MIT", + "dependencies": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/postcss-merge-longhand/node_modules/postcss-value-parser": { + "version": "3.3.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/postcss-merge-rules": { + "version": "4.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/postcss-merge-rules/node_modules/postcss-selector-parser": { + "version": "3.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/postcss-minify-font-values": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/postcss-minify-font-values/node_modules/postcss-value-parser": { + "version": "3.3.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/postcss-minify-gradients": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/postcss-minify-gradients/node_modules/postcss-value-parser": { + "version": "3.3.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/postcss-minify-params": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/postcss-minify-params/node_modules/postcss-value-parser": { + "version": "3.3.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/postcss-minify-selectors": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/postcss-minify-selectors/node_modules/postcss-selector-parser": { + "version": "3.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/postcss-modules-extract-imports": { + "version": "2.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "postcss": "^7.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "react-app/node_modules/postcss-modules-local-by-default": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "icss-utils": "^4.1.1", + "postcss": "^7.0.32", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": ">= 6" + } + }, + "react-app/node_modules/postcss-modules-scope": { + "version": "2.2.0", + "dev": true, + "license": "ISC", + "dependencies": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "react-app/node_modules/postcss-modules-values": { + "version": "3.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "icss-utils": "^4.0.0", + "postcss": "^7.0.6" + } + }, + "react-app/node_modules/postcss-nesting": { + "version": "7.0.1", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "postcss": "^7.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "react-app/node_modules/postcss-normalize": { + "version": "8.0.1", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "@csstools/normalize.css": "^10.1.0", + "browserslist": "^4.6.2", + "postcss": "^7.0.17", + "postcss-browser-comments": "^3.0.0", + "sanitize.css": "^10.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "react-app/node_modules/postcss-normalize-charset": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/postcss-normalize-display-values": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/postcss-normalize-display-values/node_modules/postcss-value-parser": { + "version": "3.3.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/postcss-normalize-positions": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/postcss-normalize-positions/node_modules/postcss-value-parser": { + "version": "3.3.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/postcss-normalize-repeat-style": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/postcss-normalize-repeat-style/node_modules/postcss-value-parser": { + "version": "3.3.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/postcss-normalize-string": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/postcss-normalize-string/node_modules/postcss-value-parser": { + "version": "3.3.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/postcss-normalize-timing-functions": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/postcss-normalize-timing-functions/node_modules/postcss-value-parser": { + "version": "3.3.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/postcss-normalize-unicode": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/postcss-normalize-unicode/node_modules/postcss-value-parser": { + "version": "3.3.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/postcss-normalize-url": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/postcss-normalize-url/node_modules/normalize-url": { + "version": "3.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/postcss-normalize-url/node_modules/postcss-value-parser": { + "version": "3.3.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/postcss-normalize-whitespace": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/postcss-normalize-whitespace/node_modules/postcss-value-parser": { + "version": "3.3.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/postcss-ordered-values": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/postcss-ordered-values/node_modules/postcss-value-parser": { + "version": "3.3.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/postcss-overflow-shorthand": { + "version": "2.0.0", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "postcss": "^7.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "react-app/node_modules/postcss-page-break": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.2" + } + }, + "react-app/node_modules/postcss-place": { + "version": "4.0.1", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "react-app/node_modules/postcss-preset-env": { + "version": "6.7.0", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "autoprefixer": "^9.6.1", + "browserslist": "^4.6.4", + "caniuse-lite": "^1.0.30000981", + "css-blank-pseudo": "^0.1.4", + "css-has-pseudo": "^0.10.0", + "css-prefers-color-scheme": "^3.1.1", + "cssdb": "^4.4.0", + "postcss": "^7.0.17", + "postcss-attribute-case-insensitive": "^4.0.1", + "postcss-color-functional-notation": "^2.0.1", + "postcss-color-gray": "^5.0.0", + "postcss-color-hex-alpha": "^5.0.3", + "postcss-color-mod-function": "^3.0.3", + "postcss-color-rebeccapurple": "^4.0.1", + "postcss-custom-media": "^7.0.8", + "postcss-custom-properties": "^8.0.11", + "postcss-custom-selectors": "^5.1.2", + "postcss-dir-pseudo-class": "^5.0.0", + "postcss-double-position-gradients": "^1.0.0", + "postcss-env-function": "^2.0.2", + "postcss-focus-visible": "^4.0.0", + "postcss-focus-within": "^3.0.0", + "postcss-font-variant": "^4.0.0", + "postcss-gap-properties": "^2.0.0", + "postcss-image-set-function": "^3.0.1", + "postcss-initial": "^3.0.0", + "postcss-lab-function": "^2.0.1", + "postcss-logical": "^3.0.0", + "postcss-media-minmax": "^4.0.0", + "postcss-nesting": "^7.0.0", + "postcss-overflow-shorthand": "^2.0.0", + "postcss-page-break": "^2.0.0", + "postcss-place": "^4.0.1", + "postcss-pseudo-class-any-link": "^6.0.0", + "postcss-replace-overflow-wrap": "^3.0.0", + "postcss-selector-matches": "^4.0.0", + "postcss-selector-not": "^4.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "react-app/node_modules/postcss-pseudo-class-any-link": { + "version": "6.0.0", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^5.0.0-rc.3" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "react-app/node_modules/postcss-pseudo-class-any-link/node_modules/cssesc": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/postcss-pseudo-class-any-link/node_modules/postcss-selector-parser": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/postcss-reduce-initial": { + "version": "4.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/postcss-reduce-transforms": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/postcss-reduce-transforms/node_modules/postcss-value-parser": { + "version": "3.3.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/postcss-replace-overflow-wrap": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.2" + } + }, + "react-app/node_modules/postcss-safe-parser": { + "version": "5.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^8.1.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "react-app/node_modules/postcss-safe-parser/node_modules/postcss": { + "version": "8.3.6", + "dev": true, + "license": "MIT", + "dependencies": { + "colorette": "^1.2.2", + "nanoid": "^3.1.23", + "source-map-js": "^0.6.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "react-app/node_modules/postcss-selector-matches": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "postcss": "^7.0.2" + } + }, + "react-app/node_modules/postcss-selector-not": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "postcss": "^7.0.2" + } + }, + "react-app/node_modules/postcss-selector-parser": { + "version": "6.0.6", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/postcss-svgo": { + "version": "4.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/postcss-svgo/node_modules/postcss-value-parser": { + "version": "3.3.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/postcss-unique-selectors": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/postcss-value-parser": { + "version": "4.1.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/postcss-values-parser": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "flatten": "^1.0.2", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=6.14.4" + } + }, + "react-app/node_modules/postcss/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/postcss/node_modules/supports-color": { + "version": "6.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/prepend-http": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/pretty-bytes": { + "version": "5.6.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app/node_modules/pretty-error": { + "version": "2.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^2.0.4" + } + }, + "react-app/node_modules/pretty-format": { + "version": "27.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^27.1.1", + "ansi-regex": "^5.0.0", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "react-app/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "react-app/node_modules/process": { + "version": "0.11.10", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "react-app/node_modules/promise": { + "version": "8.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "asap": "~2.0.6" + } + }, + "react-app/node_modules/promise-inflight": { + "version": "1.0.1", + "dev": true, + "license": "ISC" + }, + "react-app/node_modules/promise-polyfill": { + "version": "8.2.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/prompts": { + "version": "2.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "react-app/node_modules/prop-types": { + "version": "15.7.2", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "react-app/node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "license": "MIT" + }, + "react-app/node_modules/proxy-addr": { + "version": "2.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "react-app/node_modules/psl": { + "version": "1.8.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/public-encrypt": { + "version": "4.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "react-app/node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/pump": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "react-app/node_modules/pumpify": { + "version": "1.5.1", + "dev": true, + "license": "MIT", + "dependencies": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "react-app/node_modules/pumpify/node_modules/pump": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "react-app/node_modules/q": { + "version": "1.5.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "react-app/node_modules/qs": { + "version": "6.7.0", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.6" + } + }, + "react-app/node_modules/query-string": { + "version": "4.3.4", + "dev": true, + "license": "MIT", + "dependencies": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/querystring": { + "version": "0.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.x" + } + }, + "react-app/node_modules/querystring-es3": { + "version": "0.2.1", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "react-app/node_modules/querystringify": { + "version": "2.2.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/raf": { + "version": "3.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "performance-now": "^2.1.0" + } + }, + "react-app/node_modules/railroad-diagrams": { + "version": "1.0.0", + "dev": true, + "license": "CC0-1.0" + }, + "react-app/node_modules/randexp": { + "version": "0.4.6", + "dev": true, + "license": "MIT", + "dependencies": { + "discontinuous-range": "1.0.0", + "ret": "~0.1.10" + }, + "engines": { + "node": ">=0.12" + } + }, + "react-app/node_modules/randomfill": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "react-app/node_modules/range-parser": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "react-app/node_modules/raw-body": { + "version": "2.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "react-app/node_modules/raw-body/node_modules/bytes": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "react-app/node_modules/react": { + "version": "17.0.2", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/react-app-polyfill": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "core-js": "^3.6.5", + "object-assign": "^4.1.1", + "promise": "^8.1.0", + "raf": "^3.4.1", + "regenerator-runtime": "^0.13.7", + "whatwg-fetch": "^3.4.1" + }, + "engines": { + "node": ">=10" + } + }, + "react-app/node_modules/react-copy-to-clipboard": { + "version": "5.0.4", + "license": "MIT", + "dependencies": { + "copy-to-clipboard": "^3", + "prop-types": "^15.5.8" + }, + "peerDependencies": { + "react": "^15.3.0 || ^16.0.0 || ^17.0.0" + } + }, + "react-app/node_modules/react-dev-utils": { + "version": "11.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "7.10.4", + "address": "1.1.2", + "browserslist": "4.14.2", + "chalk": "2.4.2", + "cross-spawn": "7.0.3", + "detect-port-alt": "1.1.6", + "escape-string-regexp": "2.0.0", + "filesize": "6.1.0", + "find-up": "4.1.0", + "fork-ts-checker-webpack-plugin": "4.1.6", + "global-modules": "2.0.0", + "globby": "11.0.1", + "gzip-size": "5.1.1", + "immer": "8.0.1", + "is-root": "2.1.0", + "loader-utils": "2.0.0", + "open": "^7.0.2", + "pkg-up": "3.1.0", + "prompts": "2.4.0", + "react-error-overlay": "^6.0.9", + "recursive-readdir": "2.2.2", + "shell-quote": "1.7.2", + "strip-ansi": "6.0.0", + "text-table": "0.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "react-app/node_modules/react-dev-utils/node_modules/@babel/code-frame": { + "version": "7.10.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "react-app/node_modules/react-dev-utils/node_modules/browserslist": { + "version": "4.14.2", + "dev": true, + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001125", + "electron-to-chromium": "^1.3.564", + "escalade": "^3.0.2", + "node-releases": "^1.1.61" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + }, + "react-app/node_modules/react-dev-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/react-dev-utils/node_modules/find-up": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/react-dev-utils/node_modules/globby": { + "version": "11.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app/node_modules/react-dev-utils/node_modules/ignore": { + "version": "5.1.8", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "react-app/node_modules/react-dev-utils/node_modules/locate-path": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/react-dev-utils/node_modules/p-limit": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app/node_modules/react-dev-utils/node_modules/p-locate": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/react-dev-utils/node_modules/p-try": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/react-dev-utils/node_modules/path-exists": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/react-dev-utils/node_modules/pkg-up": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/react-dev-utils/node_modules/pkg-up/node_modules/find-up": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/react-dev-utils/node_modules/pkg-up/node_modules/locate-path": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/react-dev-utils/node_modules/pkg-up/node_modules/p-locate": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/react-dev-utils/node_modules/pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/react-dom": { + "version": "17.0.2", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "scheduler": "^0.20.2" + }, + "peerDependencies": { + "react": "17.0.2" + } + }, + "react-app/node_modules/react-error-boundary": { + "version": "3.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + }, + "peerDependencies": { + "react": ">=16.13.1" + } + }, + "react-app/node_modules/react-error-overlay": { + "version": "6.0.9", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/react-is": { + "version": "17.0.2", + "license": "MIT" + }, + "react-app/node_modules/react-lifecycles-compat": { + "version": "3.0.4", + "license": "MIT" + }, + "react-app/node_modules/react-popper": { + "version": "1.3.11", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.1.2", + "@hypnosphi/create-react-context": "^0.3.1", + "deep-equal": "^1.1.1", + "popper.js": "^1.14.4", + "prop-types": "^15.6.1", + "typed-styles": "^0.0.7", + "warning": "^4.0.2" + }, + "peerDependencies": { + "react": "0.14.x || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "react-app/node_modules/react-refresh": { + "version": "0.8.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/react-resize-detector": { + "version": "6.7.6", + "license": "MIT", + "dependencies": { + "@types/resize-observer-browser": "^0.1.6", + "lodash.debounce": "^4.0.8", + "lodash.throttle": "^4.1.1", + "resize-observer-polyfill": "^1.5.1" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0", + "react-dom": "^16.0.0 || ^17.0.0" + } + }, + "react-app/node_modules/react-router": { + "version": "5.2.1", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "hoist-non-react-statics": "^3.1.0", + "loose-envify": "^1.3.1", + "mini-create-react-context": "^0.4.0", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.6.2", + "react-is": "^16.6.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "peerDependencies": { + "react": ">=15" + } + }, + "react-app/node_modules/react-router-dom": { + "version": "5.3.0", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.2", + "react-router": "5.2.1", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "peerDependencies": { + "react": ">=15" + } + }, + "react-app/node_modules/react-router/node_modules/react-is": { + "version": "16.13.1", + "license": "MIT" + }, + "react-app/node_modules/react-scripts": { + "version": "4.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "7.12.3", + "@pmmmwh/react-refresh-webpack-plugin": "0.4.3", + "@svgr/webpack": "5.5.0", + "@typescript-eslint/eslint-plugin": "^4.5.0", + "@typescript-eslint/parser": "^4.5.0", + "babel-eslint": "^10.1.0", + "babel-jest": "^26.6.0", + "babel-loader": "8.1.0", + "babel-plugin-named-asset-import": "^0.3.7", + "babel-preset-react-app": "^10.0.0", + "bfj": "^7.0.2", + "camelcase": "^6.1.0", + "case-sensitive-paths-webpack-plugin": "2.3.0", + "css-loader": "4.3.0", + "dotenv": "8.2.0", + "dotenv-expand": "5.1.0", + "eslint": "^7.11.0", + "eslint-config-react-app": "^6.0.0", + "eslint-plugin-flowtype": "^5.2.0", + "eslint-plugin-import": "^2.22.1", + "eslint-plugin-jest": "^24.1.0", + "eslint-plugin-jsx-a11y": "^6.3.1", + "eslint-plugin-react": "^7.21.5", + "eslint-plugin-react-hooks": "^4.2.0", + "eslint-plugin-testing-library": "^3.9.2", + "eslint-webpack-plugin": "^2.5.2", + "file-loader": "6.1.1", + "fs-extra": "^9.0.1", + "html-webpack-plugin": "4.5.0", + "identity-obj-proxy": "3.0.0", + "jest": "26.6.0", + "jest-circus": "26.6.0", + "jest-resolve": "26.6.0", + "jest-watch-typeahead": "0.6.1", + "mini-css-extract-plugin": "0.11.3", + "optimize-css-assets-webpack-plugin": "5.0.4", + "pnp-webpack-plugin": "1.6.4", + "postcss-flexbugs-fixes": "4.2.1", + "postcss-loader": "3.0.0", + "postcss-normalize": "8.0.1", + "postcss-preset-env": "6.7.0", + "postcss-safe-parser": "5.0.2", + "prompts": "2.4.0", + "react-app-polyfill": "^2.0.0", + "react-dev-utils": "^11.0.3", + "react-refresh": "^0.8.3", + "resolve": "1.18.1", + "resolve-url-loader": "^3.1.2", + "sass-loader": "^10.0.5", + "semver": "7.3.2", + "style-loader": "1.3.0", + "terser-webpack-plugin": "4.2.3", + "ts-pnp": "1.2.0", + "url-loader": "4.1.1", + "webpack": "4.44.2", + "webpack-dev-server": "3.11.1", + "webpack-manifest-plugin": "2.2.0", + "workbox-webpack-plugin": "5.1.4" + }, + "bin": { + "react-scripts": "bin/react-scripts.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.1.3" + }, + "peerDependencies": { + "react": ">= 16", + "typescript": "^3.2.1 || ^4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "react-app/node_modules/react-scripts/node_modules/@babel/core": { + "version": "7.12.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.1", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.1", + "@babel/parser": "^7.12.3", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "react-app/node_modules/react-scripts/node_modules/@babel/core/node_modules/semver": { + "version": "5.7.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "react-app/node_modules/react-scripts/node_modules/resolve": { + "version": "1.18.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.0.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "react-app/node_modules/react-scripts/node_modules/sass-loader": { + "version": "10.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "neo-async": "^2.6.2", + "schema-utils": "^3.0.0", + "semver": "^7.3.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0", + "sass": "^1.3.0", + "webpack": "^4.36.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "react-app/node_modules/react-scripts/node_modules/schema-utils": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "react-app/node_modules/react-scripts/node_modules/semver": { + "version": "7.3.2", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "react-app/node_modules/react-shallow-renderer": { + "version": "16.14.1", + "license": "MIT", + "dependencies": { + "object-assign": "^4.1.1", + "react-is": "^16.12.0 || ^17.0.0" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0" + } + }, + "react-app/node_modules/react-test-renderer": { + "version": "17.0.2", + "license": "MIT", + "dependencies": { + "object-assign": "^4.1.1", + "react-is": "^17.0.2", + "react-shallow-renderer": "^16.13.1", + "scheduler": "^0.20.2" + }, + "peerDependencies": { + "react": "17.0.2" + } + }, + "react-app/node_modules/react-transition-group": { + "version": "2.9.0", + "license": "BSD-3-Clause", + "dependencies": { + "dom-helpers": "^3.4.0", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2", + "react-lifecycles-compat": "^3.0.4" + }, + "peerDependencies": { + "react": ">=15.0.0", + "react-dom": ">=15.0.0" + } + }, + "react-app/node_modules/reactstrap": { + "version": "8.10.0", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "classnames": "^2.2.3", + "prop-types": "^15.5.8", + "react-popper": "^1.3.6", + "react-transition-group": "^2.3.1" + }, + "peerDependencies": { + "react": ">=16.3.0", + "react-dom": ">=16.3.0" + } + }, + "react-app/node_modules/readdirp": { + "version": "3.6.0", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "react-app/node_modules/recursive-readdir": { + "version": "2.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "minimatch": "3.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/regenerate": { + "version": "1.4.2", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/regenerate-unicode-properties": { + "version": "9.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/regenerator-runtime": { + "version": "0.13.9", + "license": "MIT" + }, + "react-app/node_modules/regenerator-transform": { + "version": "0.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "react-app/node_modules/regex-not": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/regex-parser": { + "version": "2.2.11", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/regexp.prototype.flags": { + "version": "1.3.1", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "react-app/node_modules/regexpu-core": { + "version": "4.8.0", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/regjsgen": { + "version": "0.5.2", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/regjsparser": { + "version": "0.7.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "react-app/node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "react-app/node_modules/relateurl": { + "version": "0.2.7", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "react-app/node_modules/remove-trailing-separator": { + "version": "1.1.0", + "dev": true, + "license": "ISC" + }, + "react-app/node_modules/renderkid": { + "version": "2.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^3.0.1" + } + }, + "react-app/node_modules/renderkid/node_modules/ansi-regex": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/renderkid/node_modules/htmlparser2": { + "version": "6.1.0", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "react-app/node_modules/renderkid/node_modules/strip-ansi": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/repeat-element": { + "version": "1.1.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/repeat-string": { + "version": "1.6.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "react-app/node_modules/requires-port": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/resize-observer-polyfill": { + "version": "1.5.1", + "license": "MIT" + }, + "react-app/node_modules/resolve-cwd": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/resolve-pathname": { + "version": "3.0.0", + "license": "MIT" + }, + "react-app/node_modules/resolve-url": { + "version": "0.2.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/resolve-url-loader": { + "version": "3.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "adjust-sourcemap-loader": "3.0.0", + "camelcase": "5.3.1", + "compose-function": "3.0.3", + "convert-source-map": "1.7.0", + "es6-iterator": "2.0.3", + "loader-utils": "1.2.3", + "postcss": "7.0.36", + "rework": "1.0.1", + "rework-visit": "1.0.0", + "source-map": "0.6.1" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "react-app/node_modules/resolve-url-loader/node_modules/camelcase": { + "version": "5.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/resolve-url-loader/node_modules/convert-source-map": { + "version": "1.7.0", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "react-app/node_modules/resolve-url-loader/node_modules/emojis-list": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "react-app/node_modules/resolve-url-loader/node_modules/json5": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "react-app/node_modules/resolve-url-loader/node_modules/loader-utils": { + "version": "1.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "react-app/node_modules/resolve-url-loader/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/ret": { + "version": "0.1.15", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12" + } + }, + "react-app/node_modules/retry": { + "version": "0.12.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "react-app/node_modules/rework": { + "version": "1.0.1", + "dev": true, + "dependencies": { + "convert-source-map": "^0.3.3", + "css": "^2.0.0" + } + }, + "react-app/node_modules/rework-visit": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/rework/node_modules/convert-source-map": { + "version": "0.3.5", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/rgb-regex": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/rgba-regex": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/ripemd160": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "react-app/node_modules/rollup": { + "version": "1.32.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/node": "*", + "acorn": "^7.1.0" + }, + "bin": { + "rollup": "dist/bin/rollup" + } + }, + "react-app/node_modules/rollup-plugin-babel": { + "version": "4.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "rollup-pluginutils": "^2.8.1" + }, + "peerDependencies": { + "@babel/core": "7 || ^7.0.0-rc.2", + "rollup": ">=0.60.0 <3" + } + }, + "react-app/node_modules/rollup-plugin-terser": { + "version": "5.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.5.5", + "jest-worker": "^24.9.0", + "rollup-pluginutils": "^2.8.2", + "serialize-javascript": "^4.0.0", + "terser": "^4.6.2" + }, + "peerDependencies": { + "rollup": ">=0.66.0 <3" + } + }, + "react-app/node_modules/rollup-plugin-terser/node_modules/jest-worker": { + "version": "24.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">= 6" + } + }, + "react-app/node_modules/rollup-plugin-terser/node_modules/serialize-javascript": { + "version": "4.0.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "react-app/node_modules/rollup-plugin-terser/node_modules/supports-color": { + "version": "6.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/rollup-pluginutils": { + "version": "2.8.2", + "dev": true, + "license": "MIT", + "dependencies": { + "estree-walker": "^0.6.1" + } + }, + "react-app/node_modules/rollup-pluginutils/node_modules/estree-walker": { + "version": "0.6.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/rst-selector-parser": { + "version": "2.2.3", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "lodash.flattendeep": "^4.4.0", + "nearley": "^2.7.10" + } + }, + "react-app/node_modules/rsvp": { + "version": "4.8.5", + "dev": true, + "license": "MIT", + "engines": { + "node": "6.* || >= 7.*" + } + }, + "react-app/node_modules/run-queue": { + "version": "1.0.3", + "dev": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.1.1" + } + }, + "react-app/node_modules/safe-regex": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ret": "~0.1.10" + } + }, + "react-app/node_modules/safer-buffer": { + "version": "2.1.2", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/sane": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + }, + "bin": { + "sane": "src/cli.js" + }, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "react-app/node_modules/sane/node_modules/anymatch": { + "version": "2.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "react-app/node_modules/sane/node_modules/braces": { + "version": "2.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/sane/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/sane/node_modules/cross-spawn": { + "version": "6.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "react-app/node_modules/sane/node_modules/execa": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/sane/node_modules/fill-range": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/sane/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/sane/node_modules/get-stream": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/sane/node_modules/is-extendable": { + "version": "0.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/sane/node_modules/is-number": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/sane/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/sane/node_modules/is-stream": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/sane/node_modules/micromatch": { + "version": "3.1.10", + "dev": true, + "license": "MIT", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/sane/node_modules/normalize-path": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/sane/node_modules/npm-run-path": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/sane/node_modules/path-key": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/sane/node_modules/semver": { + "version": "5.7.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "react-app/node_modules/sane/node_modules/shebang-command": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/sane/node_modules/shebang-regex": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/sane/node_modules/to-regex-range": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/sane/node_modules/which": { + "version": "1.3.1", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "react-app/node_modules/sanitize-html": { + "version": "2.5.0", + "license": "MIT", + "dependencies": { + "deepmerge": "^4.2.2", + "escape-string-regexp": "^4.0.0", + "htmlparser2": "^6.0.0", + "is-plain-object": "^5.0.0", + "klona": "^2.0.3", + "parse-srcset": "^1.0.2", + "postcss": "^8.0.2" + } + }, + "react-app/node_modules/sanitize-html/node_modules/escape-string-regexp": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app/node_modules/sanitize-html/node_modules/htmlparser2": { + "version": "6.1.0", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "react-app/node_modules/sanitize-html/node_modules/postcss": { + "version": "8.3.6", + "license": "MIT", + "dependencies": { + "colorette": "^1.2.2", + "nanoid": "^3.1.23", + "source-map-js": "^0.6.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "react-app/node_modules/sanitize.css": { + "version": "10.0.0", + "dev": true, + "license": "CC0-1.0" + }, + "react-app/node_modules/sass": { + "version": "1.39.0", + "license": "MIT", + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "react-app/node_modules/sax": { + "version": "1.2.4", + "dev": true, + "license": "ISC" + }, + "react-app/node_modules/saxes": { + "version": "5.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "react-app/node_modules/scheduler": { + "version": "0.20.2", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "react-app/node_modules/schema-utils": { + "version": "2.7.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "react-app/node_modules/select-hose": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/selfsigned": { + "version": "1.10.11", + "dev": true, + "license": "MIT", + "dependencies": { + "node-forge": "^0.10.0" + } + }, + "react-app/node_modules/send": { + "version": "0.17.1", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "react-app/node_modules/send/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "react-app/node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/send/node_modules/ms": { + "version": "2.1.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/serve-index": { + "version": "1.9.1", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "react-app/node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "react-app/node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "react-app/node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "dev": true, + "license": "ISC" + }, + "react-app/node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "dev": true, + "license": "ISC" + }, + "react-app/node_modules/serve-static": { + "version": "1.14.1", + "dev": true, + "license": "MIT", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "react-app/node_modules/set-value": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/set-value/node_modules/extend-shallow": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/set-value/node_modules/is-extendable": { + "version": "0.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/set-value/node_modules/is-plain-object": { + "version": "2.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/setimmediate": { + "version": "1.0.5", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/setprototypeof": { + "version": "1.1.1", + "dev": true, + "license": "ISC" + }, + "react-app/node_modules/sha.js": { + "version": "2.4.11", + "dev": true, + "license": "(MIT AND BSD-3-Clause)", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "react-app/node_modules/shell-quote": { + "version": "1.7.2", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/shellwords": { + "version": "0.1.1", + "dev": true, + "license": "MIT", + "optional": true + }, + "react-app/node_modules/simple-swizzle": { + "version": "0.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "react-app/node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/sinon": { + "version": "11.1.2", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^1.8.3", + "@sinonjs/fake-timers": "^7.1.2", + "@sinonjs/samsam": "^6.0.2", + "diff": "^5.0.0", + "nise": "^5.1.0", + "supports-color": "^7.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/sinon" + } + }, + "react-app/node_modules/sinon/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/sinon/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/sisteransi": { + "version": "1.0.5", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/snapdragon": { + "version": "0.8.2", + "dev": true, + "license": "MIT", + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/snapdragon-node": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/snapdragon-util": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/snapdragon/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "react-app/node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/snapdragon/node_modules/extend-shallow": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/snapdragon/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/snapdragon/node_modules/is-data-descriptor": { + "version": "0.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/snapdragon/node_modules/is-extendable": { + "version": "0.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/snapdragon/node_modules/kind-of": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/sockjs": { + "version": "0.3.21", + "dev": true, + "license": "MIT", + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^3.4.0", + "websocket-driver": "^0.7.4" + } + }, + "react-app/node_modules/sockjs-client": { + "version": "1.5.2", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.6", + "eventsource": "^1.0.7", + "faye-websocket": "^0.11.3", + "inherits": "^2.0.4", + "json3": "^3.3.3", + "url-parse": "^1.5.3" + } + }, + "react-app/node_modules/sockjs-client/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "react-app/node_modules/sockjs/node_modules/uuid": { + "version": "3.4.0", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "bin/uuid" + } + }, + "react-app/node_modules/sort-keys": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/source-list-map": { + "version": "2.0.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/source-map-js": { + "version": "0.6.2", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/source-map-resolve": { + "version": "0.5.3", + "dev": true, + "license": "MIT", + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "react-app/node_modules/source-map-url": { + "version": "0.4.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/sourcemap-codec": { + "version": "1.4.8", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/spdy": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "react-app/node_modules/spdy-transport": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "react-app/node_modules/spdy-transport/node_modules/readable-stream": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "react-app/node_modules/split-string": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/ssri": { + "version": "8.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "react-app/node_modules/stable": { + "version": "0.1.8", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/stack-utils": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "react-app/node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/stackframe": { + "version": "1.2.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/static-extend": { + "version": "0.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/static-extend/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/static-extend/node_modules/is-data-descriptor": { + "version": "0.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/static-extend/node_modules/kind-of": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/statuses": { + "version": "1.5.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "react-app/node_modules/stream-browserify": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "react-app/node_modules/stream-each": { + "version": "1.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "react-app/node_modules/stream-http": { + "version": "2.8.3", + "dev": true, + "license": "MIT", + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "react-app/node_modules/stream-shift": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/strict-uri-encode": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/string_decoder": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "react-app/node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "react-app/node_modules/string-length": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "react-app/node_modules/string.prototype.matchall": { + "version": "4.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.2", + "get-intrinsic": "^1.1.1", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.3.1", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "react-app/node_modules/string.prototype.trim": { + "version": "1.2.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "react-app/node_modules/stringify-object": { + "version": "3.3.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/strip-comments": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-extract-comments": "^1.0.0", + "babel-plugin-transform-object-rest-spread": "^6.26.0" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/strip-eof": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/strip-final-newline": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/style-loader": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^2.7.0" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "react-app/node_modules/stylehacks": { + "version": "4.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "react-app/node_modules/stylehacks/node_modules/postcss-selector-parser": { + "version": "3.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/supports-color": { + "version": "5.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/supports-hyperlinks": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/supports-hyperlinks/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/supports-hyperlinks/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/svg-parser": { + "version": "2.0.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/svgo": { + "version": "1.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "react-app/node_modules/svgo/node_modules/css-select": { + "version": "2.1.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "react-app/node_modules/svgo/node_modules/css-what": { + "version": "3.4.2", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "react-app/node_modules/svgo/node_modules/dom-serializer": { + "version": "0.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "react-app/node_modules/svgo/node_modules/domutils": { + "version": "1.7.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "react-app/node_modules/svgo/node_modules/domutils/node_modules/domelementtype": { + "version": "1.3.1", + "dev": true, + "license": "BSD-2-Clause" + }, + "react-app/node_modules/svgo/node_modules/nth-check": { + "version": "1.0.2", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "~1.0.0" + } + }, + "react-app/node_modules/symbol-tree": { + "version": "3.2.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/tar": { + "version": "6.1.11", + "dev": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "react-app/node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "react-app/node_modules/temp-dir": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/tempusdominus-bootstrap-4": { + "version": "5.39.0", + "license": "MIT", + "dependencies": { + "bootstrap": "^4.5.2", + "jquery": "^3.5.1", + "moment": "^2.29.0", + "moment-timezone": "^0.5.31", + "popper.js": "^1.16.1" + }, + "peerDependencies": { + "bootstrap": ">=4.5.2", + "jquery": "^3.5.1", + "moment": "^2.29.0", + "moment-timezone": "^0.5.31", + "popper.js": "^1.16.1", + "tempusdominus-core": "5.19.0" + } + }, + "react-app/node_modules/tempusdominus-core": { + "version": "5.19.0", + "license": "MIT", + "dependencies": { + "jquery": "^3.5.0", + "moment": "~2.24.0", + "moment-timezone": "^0.5.28" + }, + "peerDependencies": { + "jquery": "^3.0", + "moment": "^2.10", + "moment-timezone": "^0.5.0" + } + }, + "react-app/node_modules/tempusdominus-core/node_modules/moment": { + "version": "2.24.0", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "react-app/node_modules/tempy": { + "version": "0.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "temp-dir": "^1.0.0", + "type-fest": "^0.3.1", + "unique-string": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/tempy/node_modules/type-fest": { + "version": "0.3.1", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/terminal-link": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app/node_modules/terser": { + "version": "4.8.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "react-app/node_modules/terser-webpack-plugin": { + "version": "4.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "cacache": "^15.0.5", + "find-cache-dir": "^3.3.1", + "jest-worker": "^26.5.0", + "p-limit": "^3.0.2", + "schema-utils": "^3.0.0", + "serialize-javascript": "^5.0.1", + "source-map": "^0.6.1", + "terser": "^5.3.4", + "webpack-sources": "^1.4.3" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "react-app/node_modules/terser-webpack-plugin/node_modules/commander": { + "version": "2.20.3", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/terser-webpack-plugin/node_modules/find-cache-dir": { + "version": "3.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "react-app/node_modules/terser-webpack-plugin/node_modules/find-up": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/terser-webpack-plugin/node_modules/locate-path": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/terser-webpack-plugin/node_modules/make-dir": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app/node_modules/terser-webpack-plugin/node_modules/p-limit": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app/node_modules/terser-webpack-plugin/node_modules/p-locate": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/terser-webpack-plugin/node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app/node_modules/terser-webpack-plugin/node_modules/p-try": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/terser-webpack-plugin/node_modules/path-exists": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/terser-webpack-plugin/node_modules/pkg-dir": { + "version": "4.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "react-app/node_modules/terser-webpack-plugin/node_modules/semver": { + "version": "6.3.0", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "react-app/node_modules/terser-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/terser-webpack-plugin/node_modules/terser": { + "version": "5.8.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "react-app/node_modules/terser-webpack-plugin/node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "react-app/node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/terser/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/throat": { + "version": "5.0.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/through2": { + "version": "2.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "react-app/node_modules/thunky": { + "version": "1.1.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/timers-browserify": { + "version": "2.0.12", + "dev": true, + "license": "MIT", + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "react-app/node_modules/timsort": { + "version": "0.3.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/tiny-invariant": { + "version": "1.1.0", + "license": "MIT" + }, + "react-app/node_modules/tiny-warning": { + "version": "1.0.3", + "license": "MIT" + }, + "react-app/node_modules/tmpl": { + "version": "1.0.5", + "dev": true, + "license": "BSD-3-Clause" + }, + "react-app/node_modules/to-arraybuffer": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/to-object-path": { + "version": "0.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/to-regex": { + "version": "3.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/toggle-selection": { + "version": "1.0.6", + "license": "MIT" + }, + "react-app/node_modules/toidentifier": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "react-app/node_modules/tough-cookie": { + "version": "4.0.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/tough-cookie/node_modules/universalify": { + "version": "0.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "react-app/node_modules/tr46": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/tryer": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/ts-pnp": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "react-app/node_modules/tslib": { + "version": "2.3.1", + "dev": true, + "license": "0BSD" + }, + "react-app/node_modules/tty-browserify": { + "version": "0.0.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/type": { + "version": "1.2.0", + "dev": true, + "license": "ISC" + }, + "react-app/node_modules/type-fest": { + "version": "0.21.3", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app/node_modules/type-is": { + "version": "1.6.18", + "dev": true, + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "react-app/node_modules/typed-styles": { + "version": "0.0.7", + "license": "MIT" + }, + "react-app/node_modules/typedarray": { + "version": "0.0.6", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/union-value": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/union-value/node_modules/is-extendable": { + "version": "0.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/uniq": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/uniqs": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/unique-filename": { + "version": "1.1.1", + "dev": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "react-app/node_modules/unique-slug": { + "version": "2.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "react-app/node_modules/unique-string": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "crypto-random-string": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/universalify": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "react-app/node_modules/unpipe": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "react-app/node_modules/unquote": { + "version": "1.1.1", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/unset-value": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/unset-value/node_modules/isarray": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/upath": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "react-app/node_modules/urix": { + "version": "0.1.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/url": { + "version": "0.11.0", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "react-app/node_modules/url-loader": { + "version": "4.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "file-loader": "*", + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "file-loader": { + "optional": true + } + } + }, + "react-app/node_modules/url-loader/node_modules/schema-utils": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "react-app/node_modules/url-parse": { + "version": "1.5.3", + "dev": true, + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "react-app/node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/url/node_modules/querystring": { + "version": "0.2.0", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "react-app/node_modules/use": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/util": { + "version": "0.11.1", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "2.0.3" + } + }, + "react-app/node_modules/util.promisify": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "react-app/node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "dev": true, + "license": "ISC" + }, + "react-app/node_modules/utila": { + "version": "0.4.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/utils-merge": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "react-app/node_modules/uuid": { + "version": "8.3.2", + "dev": true, + "license": "MIT", + "optional": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "react-app/node_modules/v8-to-istanbul": { + "version": "7.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "react-app/node_modules/v8-to-istanbul/node_modules/source-map": { + "version": "0.7.3", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "react-app/node_modules/value-equal": { + "version": "1.0.1", + "license": "MIT" + }, + "react-app/node_modules/vary": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "react-app/node_modules/vendors": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "react-app/node_modules/vm-browserify": { + "version": "1.1.2", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/w3c-hr-time": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "react-app/node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "react-app/node_modules/walker": { + "version": "1.0.7", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "makeerror": "1.0.x" + } + }, + "react-app/node_modules/warning": { + "version": "4.0.3", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "react-app/node_modules/watchpack": { + "version": "1.7.5", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + }, + "optionalDependencies": { + "chokidar": "^3.4.1", + "watchpack-chokidar2": "^2.0.1" + } + }, + "react-app/node_modules/watchpack-chokidar2": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "chokidar": "^2.1.8" + } + }, + "react-app/node_modules/watchpack-chokidar2/node_modules/anymatch": { + "version": "2.0.0", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "react-app/node_modules/watchpack-chokidar2/node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/watchpack-chokidar2/node_modules/binary-extensions": { + "version": "1.13.1", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/watchpack-chokidar2/node_modules/braces": { + "version": "2.3.2", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/watchpack-chokidar2/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/watchpack-chokidar2/node_modules/chokidar": { + "version": "2.1.8", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "react-app/node_modules/watchpack-chokidar2/node_modules/fill-range": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/watchpack-chokidar2/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/watchpack-chokidar2/node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, + "react-app/node_modules/watchpack-chokidar2/node_modules/glob-parent": { + "version": "3.1.0", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "react-app/node_modules/watchpack-chokidar2/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/watchpack-chokidar2/node_modules/is-binary-path": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/watchpack-chokidar2/node_modules/is-extendable": { + "version": "0.1.1", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/watchpack-chokidar2/node_modules/is-number": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/watchpack-chokidar2/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/watchpack-chokidar2/node_modules/micromatch": { + "version": "3.1.10", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/watchpack-chokidar2/node_modules/readdirp": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "react-app/node_modules/watchpack-chokidar2/node_modules/to-regex-range": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/wbuf": { + "version": "1.7.3", + "dev": true, + "license": "MIT", + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "react-app/node_modules/webidl-conversions": { + "version": "6.1.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=10.4" + } + }, + "react-app/node_modules/webpack": { + "version": "4.44.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.3.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + }, + "webpack-command": { + "optional": true + } + } + }, + "react-app/node_modules/webpack-dev-middleware": { + "version": "3.7.3", + "dev": true, + "license": "MIT", + "dependencies": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "react-app/node_modules/webpack-dev-middleware/node_modules/mime": { + "version": "2.5.2", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "react-app/node_modules/webpack-dev-server": { + "version": "3.11.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.3.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.8", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.26", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.8", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "sockjs-client": "^1.5.0", + "spdy": "^4.0.2", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "^13.3.2" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 6.11.5" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/ansi-regex": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/anymatch": { + "version": "2.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/binary-extensions": { + "version": "1.13.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/braces": { + "version": "2.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/camelcase": { + "version": "5.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/chokidar": { + "version": "2.1.8", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/cliui": { + "version": "5.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/cliui/node_modules/ansi-regex": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/cliui/node_modules/strip-ansi": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/emoji-regex": { + "version": "7.0.3", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/webpack-dev-server/node_modules/fill-range": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/find-up": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/glob-parent": { + "version": "3.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/import-local": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/is-absolute-url": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/is-binary-path": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/is-extendable": { + "version": "0.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/is-number": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/locate-path": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/micromatch": { + "version": "3.1.10", + "dev": true, + "license": "MIT", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/p-limit": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/p-locate": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/p-try": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/pkg-dir": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/readdirp": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/resolve-cwd": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/resolve-from": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/semver": { + "version": "6.3.0", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/string-width": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/string-width/node_modules/ansi-regex": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/string-width/node_modules/strip-ansi": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/strip-ansi": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/supports-color": { + "version": "6.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/to-regex-range": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/wrap-ansi": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/ws": { + "version": "6.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/yargs": { + "version": "13.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "react-app/node_modules/webpack-dev-server/node_modules/yargs-parser": { + "version": "13.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "react-app/node_modules/webpack-log": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "react-app/node_modules/webpack-log/node_modules/ansi-colors": { + "version": "3.2.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/webpack-log/node_modules/uuid": { + "version": "3.4.0", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "bin/uuid" + } + }, + "react-app/node_modules/webpack-manifest-plugin": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "fs-extra": "^7.0.0", + "lodash": ">=3.5 <5", + "object.entries": "^1.1.0", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=6.11.5" + }, + "peerDependencies": { + "webpack": "2 || 3 || 4" + } + }, + "react-app/node_modules/webpack-manifest-plugin/node_modules/fs-extra": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "react-app/node_modules/webpack-manifest-plugin/node_modules/jsonfile": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "react-app/node_modules/webpack-manifest-plugin/node_modules/universalify": { + "version": "0.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "react-app/node_modules/webpack-sources": { + "version": "1.4.3", + "dev": true, + "license": "MIT", + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "react-app/node_modules/webpack-sources/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/webpack/node_modules/acorn": { + "version": "6.4.2", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "react-app/node_modules/webpack/node_modules/braces": { + "version": "2.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/webpack/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/webpack/node_modules/cacache": { + "version": "12.0.4", + "dev": true, + "license": "ISC", + "dependencies": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "react-app/node_modules/webpack/node_modules/chownr": { + "version": "1.1.4", + "dev": true, + "license": "ISC" + }, + "react-app/node_modules/webpack/node_modules/eslint-scope": { + "version": "4.0.3", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "react-app/node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "react-app/node_modules/webpack/node_modules/fill-range": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/webpack/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/webpack/node_modules/is-extendable": { + "version": "0.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/webpack/node_modules/is-number": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/webpack/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/webpack/node_modules/is-wsl": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "react-app/node_modules/webpack/node_modules/json5": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "react-app/node_modules/webpack/node_modules/loader-utils": { + "version": "1.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "react-app/node_modules/webpack/node_modules/lru-cache": { + "version": "5.1.1", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "react-app/node_modules/webpack/node_modules/micromatch": { + "version": "3.1.10", + "dev": true, + "license": "MIT", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/webpack/node_modules/rimraf": { + "version": "2.7.1", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "react-app/node_modules/webpack/node_modules/schema-utils": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "react-app/node_modules/webpack/node_modules/serialize-javascript": { + "version": "4.0.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "react-app/node_modules/webpack/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/webpack/node_modules/ssri": { + "version": "6.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "figgy-pudding": "^3.5.1" + } + }, + "react-app/node_modules/webpack/node_modules/terser-webpack-plugin": { + "version": "1.4.5", + "dev": true, + "license": "MIT", + "dependencies": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" + } + }, + "react-app/node_modules/webpack/node_modules/to-regex-range": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "react-app/node_modules/webpack/node_modules/yallist": { + "version": "3.1.1", + "dev": true, + "license": "ISC" + }, + "react-app/node_modules/websocket-driver": { + "version": "0.7.4", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "react-app/node_modules/websocket-extensions": { + "version": "0.1.4", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=0.8.0" + } + }, + "react-app/node_modules/whatwg-encoding": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "react-app/node_modules/whatwg-mimetype": { + "version": "2.3.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/whatwg-url": { + "version": "8.7.0", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "react-app/node_modules/workbox-background-sync": { + "version": "5.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "^5.1.4" + } + }, + "react-app/node_modules/workbox-broadcast-update": { + "version": "5.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "^5.1.4" + } + }, + "react-app/node_modules/workbox-build": { + "version": "5.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.8.4", + "@babel/preset-env": "^7.8.4", + "@babel/runtime": "^7.8.4", + "@hapi/joi": "^15.1.0", + "@rollup/plugin-node-resolve": "^7.1.1", + "@rollup/plugin-replace": "^2.3.1", + "@surma/rollup-plugin-off-main-thread": "^1.1.1", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^8.1.0", + "glob": "^7.1.6", + "lodash.template": "^4.5.0", + "pretty-bytes": "^5.3.0", + "rollup": "^1.31.1", + "rollup-plugin-babel": "^4.3.3", + "rollup-plugin-terser": "^5.3.1", + "source-map": "^0.7.3", + "source-map-url": "^0.4.0", + "stringify-object": "^3.3.0", + "strip-comments": "^1.0.2", + "tempy": "^0.3.0", + "upath": "^1.2.0", + "workbox-background-sync": "^5.1.4", + "workbox-broadcast-update": "^5.1.4", + "workbox-cacheable-response": "^5.1.4", + "workbox-core": "^5.1.4", + "workbox-expiration": "^5.1.4", + "workbox-google-analytics": "^5.1.4", + "workbox-navigation-preload": "^5.1.4", + "workbox-precaching": "^5.1.4", + "workbox-range-requests": "^5.1.4", + "workbox-routing": "^5.1.4", + "workbox-strategies": "^5.1.4", + "workbox-streams": "^5.1.4", + "workbox-sw": "^5.1.4", + "workbox-window": "^5.1.4" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "react-app/node_modules/workbox-build/node_modules/fs-extra": { + "version": "8.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "react-app/node_modules/workbox-build/node_modules/jsonfile": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "react-app/node_modules/workbox-build/node_modules/source-map": { + "version": "0.7.3", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "react-app/node_modules/workbox-build/node_modules/universalify": { + "version": "0.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "react-app/node_modules/workbox-cacheable-response": { + "version": "5.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "^5.1.4" + } + }, + "react-app/node_modules/workbox-core": { + "version": "5.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/workbox-expiration": { + "version": "5.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "^5.1.4" + } + }, + "react-app/node_modules/workbox-google-analytics": { + "version": "5.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-background-sync": "^5.1.4", + "workbox-core": "^5.1.4", + "workbox-routing": "^5.1.4", + "workbox-strategies": "^5.1.4" + } + }, + "react-app/node_modules/workbox-navigation-preload": { + "version": "5.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "^5.1.4" + } + }, + "react-app/node_modules/workbox-precaching": { + "version": "5.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "^5.1.4" + } + }, + "react-app/node_modules/workbox-range-requests": { + "version": "5.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "^5.1.4" + } + }, + "react-app/node_modules/workbox-routing": { + "version": "5.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "^5.1.4" + } + }, + "react-app/node_modules/workbox-strategies": { + "version": "5.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "^5.1.4", + "workbox-routing": "^5.1.4" + } + }, + "react-app/node_modules/workbox-streams": { + "version": "5.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "^5.1.4", + "workbox-routing": "^5.1.4" + } + }, + "react-app/node_modules/workbox-sw": { + "version": "5.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/workbox-webpack-plugin": { + "version": "5.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.5.5", + "fast-json-stable-stringify": "^2.0.0", + "source-map-url": "^0.4.0", + "upath": "^1.1.2", + "webpack-sources": "^1.3.0", + "workbox-build": "^5.1.4" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" + } + }, + "react-app/node_modules/workbox-window": { + "version": "5.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "^5.1.4" + } + }, + "react-app/node_modules/worker-farm": { + "version": "1.7.0", + "dev": true, + "license": "MIT", + "dependencies": { + "errno": "~0.1.7" + } + }, + "react-app/node_modules/worker-rpc": { + "version": "0.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "microevent.ts": "~0.1.1" + } + }, + "react-app/node_modules/wrap-ansi": { + "version": "6.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "react-app/node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "react-app/node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/ws": { + "version": "7.5.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "react-app/node_modules/xml-name-validator": { + "version": "3.0.0", + "dev": true, + "license": "Apache-2.0" + }, + "react-app/node_modules/xmlchars": { + "version": "2.2.0", + "dev": true, + "license": "MIT" + }, + "react-app/node_modules/xtend": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "react-app/node_modules/y18n": { + "version": "4.0.3", + "dev": true, + "license": "ISC" + }, + "react-app/node_modules/yaml": { + "version": "1.10.2", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "react-app/node_modules/yargs": { + "version": "15.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/yargs-parser": { + "version": "18.1.3", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/yargs-parser/node_modules/camelcase": { + "version": "5.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/yargs/node_modules/find-up": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/yargs/node_modules/locate-path": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/yargs/node_modules/p-limit": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "react-app/node_modules/yargs/node_modules/p-locate": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "react-app/node_modules/yargs/node_modules/p-try": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "react-app/node_modules/yargs/node_modules/path-exists": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + } + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/compat-data": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", + "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", + "dev": true + }, + "@babel/core": { + "version": "7.15.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.5.tgz", + "integrity": "sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-compilation-targets": "^7.15.4", + "@babel/helper-module-transforms": "^7.15.4", + "@babel/helpers": "^7.15.4", + "@babel/parser": "^7.15.5", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz", + "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", + "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.15.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.16.6", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-function-name": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", + "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", + "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", + "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", + "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-module-imports": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", + "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-module-transforms": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz", + "integrity": "sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.15.4", + "@babel/helper-replace-supers": "^7.15.4", + "@babel/helper-simple-access": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/helper-validator-identifier": "^7.14.9", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", + "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-replace-supers": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", + "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.15.4", + "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-simple-access": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", + "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", + "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.14.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", + "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true + }, + "@babel/helpers": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", + "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", + "dev": true, + "requires": { + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.6.tgz", + "integrity": "sha512-S/TSCcsRuCkmpUuoWijua0Snt+f3ewU/8spLo+4AXJCZfT0bVCzLD5MuOKdrx0mlAptbKzn5AdgEIIKXxXkz9Q==", + "dev": true + }, + "@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + } + } + }, + "@babel/traverse": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", + "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + }, + "@codemirror/autocomplete": { + "version": "0.19.3", + "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-0.19.3.tgz", + "integrity": "sha512-5juP6hVrHAogzQ0JUTQuibE8j1seqeGNJ98qLUPuliI6kLBg5INS4qvUI1Brqye+wYPFu7UHqrrn13RLh5YSzw==", + "requires": { + "@codemirror/language": "^0.19.0", + "@codemirror/state": "^0.19.0", + "@codemirror/text": "^0.19.2", + "@codemirror/tooltip": "^0.19.0", + "@codemirror/view": "^0.19.0", + "@lezer/common": "^0.15.0" + } + }, + "@codemirror/basic-setup": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@codemirror/basic-setup/-/basic-setup-0.19.0.tgz", + "integrity": "sha512-Yhrf7fIz8+INHWOhpWeRwbs8fpc0KsydX9baD7TyYqniLVWyTi0Hwm52mr0f5O+k4YaJPeHAgT3x9gzDXZIvOw==", + "dev": true, + "requires": { + "@codemirror/autocomplete": "^0.19.0", + "@codemirror/closebrackets": "^0.19.0", + "@codemirror/commands": "^0.19.0", + "@codemirror/comment": "^0.19.0", + "@codemirror/fold": "^0.19.0", + "@codemirror/gutter": "^0.19.0", + "@codemirror/highlight": "^0.19.0", + "@codemirror/history": "^0.19.0", + "@codemirror/language": "^0.19.0", + "@codemirror/lint": "^0.19.0", + "@codemirror/matchbrackets": "^0.19.0", + "@codemirror/rectangular-selection": "^0.19.0", + "@codemirror/search": "^0.19.0", + "@codemirror/state": "^0.19.0", + "@codemirror/view": "^0.19.0" + } + }, + "@codemirror/closebrackets": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@codemirror/closebrackets/-/closebrackets-0.19.0.tgz", + "integrity": "sha512-dFWX5OEVYWRNtGaifSbwIAlymnRRjxWMiMbffbAjF7p0zfGHDbdGkiT56q3Xud63h5/tQdSo5dK1iyNTzHz5vg==", + "requires": { + "@codemirror/language": "^0.19.0", + "@codemirror/rangeset": "^0.19.0", + "@codemirror/state": "^0.19.0", + "@codemirror/text": "^0.19.0", + "@codemirror/view": "^0.19.0" + } + }, + "@codemirror/commands": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-0.19.4.tgz", + "integrity": "sha512-EW6ffAIdu7aGWWwEG4xRcKLR+1RXH7hJqMt5mbrxDSc2xAQBgqxIPFglcMeSkC7qqkwPuqv3xavVh1+0gQ0piQ==", + "requires": { + "@codemirror/language": "^0.19.0", + "@codemirror/matchbrackets": "^0.19.0", + "@codemirror/state": "^0.19.2", + "@codemirror/text": "^0.19.0", + "@codemirror/view": "^0.19.0", + "@lezer/common": "^0.15.0" + } + }, + "@codemirror/comment": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@codemirror/comment/-/comment-0.19.0.tgz", + "integrity": "sha512-3hqAd0548fxqOBm4khFMcXVIivX8p0bSlbAuZJ6PNoUn/0wXhxkxowPp0FmFzU2+y37Z+ZQF5cRB5EREWPRIiQ==", + "requires": { + "@codemirror/state": "^0.19.0", + "@codemirror/text": "^0.19.0", + "@codemirror/view": "^0.19.0" + } + }, + "@codemirror/fold": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@codemirror/fold/-/fold-0.19.0.tgz", + "integrity": "sha512-cHbr2hqKe2pMls1Ia1a4IwXly87ljpmvPUKkul6H/Uv9kCwpQLOP3dGMPXbMGm/1hGjBF/0wnc+m2iba9iJBTQ==", + "dev": true, + "requires": { + "@codemirror/gutter": "^0.19.0", + "@codemirror/language": "^0.19.0", + "@codemirror/rangeset": "^0.19.0", + "@codemirror/state": "^0.19.0", + "@codemirror/view": "^0.19.0" + } + }, + "@codemirror/gutter": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@codemirror/gutter/-/gutter-0.19.2.tgz", + "integrity": "sha512-xiayxhc9uq1UXiG/r/E3AAYXZt+EtSdgdQXC4nlMHvbfw2EmtryfzGO3HrgasHRyAW8uNCaO9JO4n7mU7rm1rQ==", + "dev": true, + "requires": { + "@codemirror/rangeset": "^0.19.0", + "@codemirror/state": "^0.19.0", + "@codemirror/view": "^0.19.0" + } + }, + "@codemirror/highlight": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@codemirror/highlight/-/highlight-0.19.5.tgz", + "integrity": "sha512-JDGEH/l/DGpxG2k+mgqMKcuFURIs42eoTB4H4tN7QmzyW/z/MlNKiHHv7pWXyN+H5QvftK5yctsxUu77EZikmw==", + "requires": { + "@codemirror/language": "^0.19.0", + "@codemirror/rangeset": "^0.19.0", + "@codemirror/state": "^0.19.0", + "@codemirror/view": "^0.19.0", + "@lezer/common": "^0.15.0", + "style-mod": "^4.0.0" + } + }, + "@codemirror/history": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@codemirror/history/-/history-0.19.0.tgz", + "integrity": "sha512-E0H+lncH66IMDhaND9jgkjE7s0dhYfjCPmS+Ig2Yes9I8+UIEecIdObj8c8HPCFGctGg3fxXqRAw2mdHl2Wouw==", + "requires": { + "@codemirror/state": "^0.19.0", + "@codemirror/view": "^0.19.0" + } + }, + "@codemirror/language": { + "version": "0.19.3", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-0.19.3.tgz", + "integrity": "sha512-6vjkRYHRJg/z9wdAk75nU2fQwCJBsh2HpkIjKXIHfzISSgLt5qSDxVhPd8Uu8PD5WMmFFP8tX7I9kdIt873o0A==", + "requires": { + "@codemirror/state": "^0.19.0", + "@codemirror/text": "^0.19.0", + "@codemirror/view": "^0.19.0", + "@lezer/common": "^0.15.5", + "@lezer/lr": "^0.15.0" + } + }, + "@codemirror/lint": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-0.19.1.tgz", + "integrity": "sha512-Ef0TnXpF4Q4B+lvBdgHexe1dHbvkKBvBHsLB8HwTYffwjekg1YvEM+6zyjyjG9m6s1Ru0VaCNlNwotLaVZjHGQ==", + "requires": { + "@codemirror/panel": "^0.19.0", + "@codemirror/state": "^0.19.0", + "@codemirror/tooltip": "^0.19.0", + "@codemirror/view": "^0.19.0", + "crelt": "^1.0.5" + } + }, + "@codemirror/matchbrackets": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@codemirror/matchbrackets/-/matchbrackets-0.19.1.tgz", + "integrity": "sha512-jBEW2Uu3hWcrrkwkauaikCAE7s5liCwbccFa6rLK6DzwaynOqCKJGyDsbkfrhikofNRc1yh4V3vwUuxt2u4QbA==", + "requires": { + "@codemirror/language": "^0.19.0", + "@codemirror/state": "^0.19.0", + "@codemirror/view": "^0.19.0", + "@lezer/common": "^0.15.0" + } + }, + "@codemirror/panel": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@codemirror/panel/-/panel-0.19.0.tgz", + "integrity": "sha512-LJuu49xnuhaAztlhnLJQ57ddOirSyf8/lnl7twsQUG/05RkxodBZ9F7q8r5AOLqOkaQOy9WySEKX1Ur8lD9Q5w==", + "requires": { + "@codemirror/state": "^0.19.0", + "@codemirror/view": "^0.19.0" + } + }, + "@codemirror/rangeset": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@codemirror/rangeset/-/rangeset-0.19.1.tgz", + "integrity": "sha512-WaKTEw8JB/3QFlQzpdgRoklopcWvG8O/Xp+rxxOfFKYTaeaejpY/tjpyBBg+Ea65Ka3m7+pPp9d5j/oR2rd9NA==", + "requires": { + "@codemirror/state": "^0.19.0" + } + }, + "@codemirror/rectangular-selection": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@codemirror/rectangular-selection/-/rectangular-selection-0.19.0.tgz", + "integrity": "sha512-KdvoEweBgVsOcqdYFEinYGroS028pwUPkO3REzQC7Z/hT1KNqZUlyfoi6WBv3Gzp8b6l8NNA+rLnnYMSHlcGYA==", + "dev": true, + "requires": { + "@codemirror/state": "^0.19.0", + "@codemirror/text": "^0.19.0", + "@codemirror/view": "^0.19.0" + } + }, + "@codemirror/search": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-0.19.2.tgz", + "integrity": "sha512-TrRxUxyJ/a7HXtUvMZhgkOUbKE1xO33UhXjn1XACEHKWhgovw1vEeEEti9dZejN8/QOOFJed39InUxmp7oQ8HA==", + "requires": { + "@codemirror/panel": "^0.19.0", + "@codemirror/rangeset": "^0.19.0", + "@codemirror/state": "^0.19.2", + "@codemirror/text": "^0.19.0", + "@codemirror/view": "^0.19.0", + "crelt": "^1.0.5" + } + }, + "@codemirror/state": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-0.19.2.tgz", + "integrity": "sha512-dDqCrtkb0c/LYUlvQBLyLfkISEskbZnhvBbcVOF4j2AusJ1ptJ3EGMxBL9G16GP1TOdC1T613gA1J1qc3pbfGQ==", + "requires": { + "@codemirror/text": "^0.19.0" + } + }, + "@codemirror/text": { + "version": "0.19.3", + "resolved": "https://registry.npmjs.org/@codemirror/text/-/text-0.19.3.tgz", + "integrity": "sha512-A0HBPZRwQ72XVMN1tg/pVUnvS5CKboBeHZE7cylYw0ljx9eX+NoYaK7apPSJO/Fwh9XhH9m8Va06EGc11VOzUw==" + }, + "@codemirror/tooltip": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@codemirror/tooltip/-/tooltip-0.19.2.tgz", + "integrity": "sha512-FMMGGLrr62Ck54NEz8yTGpgo8ihobAsC3sbeQg+OpY4jv9dt1yIP5B9LzsIV+TXQB57JZQZxtTqzkhnFq76haw==", + "requires": { + "@codemirror/state": "^0.19.0", + "@codemirror/view": "^0.19.0" + } + }, + "@codemirror/view": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-0.19.7.tgz", + "integrity": "sha512-m9AKO8gec/QnyxR1uq182It0WwauTIaHkdjqtdlKx1IRgknH44SKIJIxwxZt4Y6VDhhivcEbugjoadNy0zR3wQ==", + "requires": { + "@codemirror/rangeset": "^0.19.0", + "@codemirror/state": "^0.19.2", + "@codemirror/text": "^0.19.0", + "style-mod": "^4.0.0", + "w3c-keyname": "^2.2.4" + } + }, + "@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + } + }, + "@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", + "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "dev": true + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@lezer/common": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-0.15.5.tgz", + "integrity": "sha512-ufcjclusHXGdhp4gSPbPD7sUd38SgOej7m5tAEuG2tNPzqzV0d1vwwLh57R6IwW79ml2mb3tUjAoDfqI7v1HEw==" + }, + "@lezer/generator": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/@lezer/generator/-/generator-0.15.1.tgz", + "integrity": "sha512-OlG6ogwrTUeCsKVzPjXX5cFLT3XGESZY75Ust7DLMwmEgH1Awu/E4PGMFQZeTfI5lBWVo10reqXowiOhNKwOYQ==", + "dev": true, + "requires": { + "@lezer/common": "^0.15.0", + "@lezer/lr": "^0.15.0" + } + }, + "@lezer/lr": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-0.15.2.tgz", + "integrity": "sha512-gkQUkKCAw/zxOiTCGhjctV/C+FPmfwqXscM9EGgcYhUZewkLu2AsEl2Vlcral7xtDU0t6xwakT6Fw5jlMvMX6Q==", + "requires": { + "@lezer/common": "^0.15.0" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true + }, + "@types/chai": { + "version": "4.2.21", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.21.tgz", + "integrity": "sha512-yd+9qKmJxm496BOV9CMNaey8TWsikaZOwMRwPHQIjcOJM9oV+fi9ZMNw3JsVnbEEbo2gRTDnGEBv8pjyn67hNg==", + "dev": true + }, + "@types/flot": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/flot/-/flot-0.0.32.tgz", + "integrity": "sha512-aturel4TWMY86N4Pkpc9pSoUd/p8c3BjGj4fTDkaZIpkRPzLH1VXZCAKGUywcFkTqgZMhPJFPWxd4pl87y8h/w==", + "dev": true, + "requires": { + "@types/jquery": "*" + } + }, + "@types/jquery": { + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.6.tgz", + "integrity": "sha512-SmgCQRzGPId4MZQKDj9Hqc6kSXFNWZFHpELkyK8AQhf8Zr6HKfCzFv9ZC1Fv3FyQttJZOlap3qYb12h61iZAIg==", + "dev": true, + "requires": { + "@types/sizzle": "*" + } + }, + "@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, + "@types/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", + "dev": true + }, + "@types/mocha": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.3.tgz", + "integrity": "sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw==", + "dev": true + }, + "@types/node": { + "version": "16.9.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", + "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==", + "dev": true + }, + "@types/sizzle": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", + "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "4.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.31.1.tgz", + "integrity": "sha512-UDqhWmd5i0TvPLmbK5xY3UZB0zEGseF+DHPghZ37Sb83Qd3p8ujhvAtkU4OF46Ka5Pm5kWvFIx0cCTBFKo0alA==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "4.31.1", + "@typescript-eslint/scope-manager": "4.31.1", + "debug": "^4.3.1", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/experimental-utils": { + "version": "4.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.31.1.tgz", + "integrity": "sha512-NtoPsqmcSsWty0mcL5nTZXMf7Ei0Xr2MT8jWjXMVgRK0/1qeQ2jZzLFUh4QtyJ4+/lPUyMw5cSfeeME+Zrtp9Q==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.7", + "@typescript-eslint/scope-manager": "4.31.1", + "@typescript-eslint/types": "4.31.1", + "@typescript-eslint/typescript-estree": "4.31.1", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + } + }, + "@typescript-eslint/parser": { + "version": "4.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.31.1.tgz", + "integrity": "sha512-dnVZDB6FhpIby6yVbHkwTKkn2ypjVIfAR9nh+kYsA/ZL0JlTsd22BiDjouotisY3Irmd3OW1qlk9EI5R8GrvRQ==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "4.31.1", + "@typescript-eslint/types": "4.31.1", + "@typescript-eslint/typescript-estree": "4.31.1", + "debug": "^4.3.1" + } + }, + "@typescript-eslint/scope-manager": { + "version": "4.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.31.1.tgz", + "integrity": "sha512-N1Uhn6SqNtU2XpFSkD4oA+F0PfKdWHyr4bTX0xTj8NRx1314gBDRL1LUuZd5+L3oP+wo6hCbZpaa1in6SwMcVQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.31.1", + "@typescript-eslint/visitor-keys": "4.31.1" + } + }, + "@typescript-eslint/types": { + "version": "4.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.31.1.tgz", + "integrity": "sha512-kixltt51ZJGKENNW88IY5MYqTBA8FR0Md8QdGbJD2pKZ+D5IvxjTYDNtJPDxFBiXmka2aJsITdB1BtO1fsgmsQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "4.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.31.1.tgz", + "integrity": "sha512-EGHkbsUvjFrvRnusk6yFGqrqMBTue5E5ROnS5puj3laGQPasVUgwhrxfcgkdHNFECHAewpvELE1Gjv0XO3mdWg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.31.1", + "@typescript-eslint/visitor-keys": "4.31.1", + "debug": "^4.3.1", + "globby": "^11.0.3", + "is-glob": "^4.0.1", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "4.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.31.1.tgz", + "integrity": "sha512-PCncP8hEqKw6SOJY+3St4LVtoZpPPn+Zlpm7KW5xnviMhdqcsBty4Lsg4J/VECpJjw1CkROaZhH4B8M1OfnXTQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.31.1", + "eslint-visitor-keys": "^2.0.0" + } + }, + "@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", + "dev": true + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "append-transform": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", + "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", + "dev": true, + "requires": { + "default-require-extensions": "^3.0.0" + } + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "argv": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/argv/-/argv-0.0.2.tgz", + "integrity": "sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas=", + "dev": true + }, + "array-includes": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", + "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.5" + } + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "array.prototype.flat": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", + "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + } + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "browserslist": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.0.tgz", + "integrity": "sha512-g2BJ2a0nEYvEFQC208q8mVAhfNwpZ5Mu8BwgtCdZKO3qx98HChmeg448fPdUzld8aFmfLgVh7yymqV+q1lJZ5g==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001254", + "colorette": "^1.3.0", + "electron-to-chromium": "^1.3.830", + "escalade": "^3.1.1", + "node-releases": "^1.1.75" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "caching-transform": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", + "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", + "dev": true, + "requires": { + "hasha": "^5.0.0", + "make-dir": "^3.0.0", + "package-hash": "^4.0.0", + "write-file-atomic": "^3.0.0" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001257", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001257.tgz", + "integrity": "sha512-JN49KplOgHSXpIsVSF+LUyhD8PUp6xPpAXeRrrcBh4KBeP7W864jHn6RvzJgDlrReyeVjMFJL3PLpPvKIxlIHA==", + "dev": true + }, + "chai": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz", + "integrity": "sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true + }, + "chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.3.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "codecov": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.8.3.tgz", + "integrity": "sha512-Y8Hw+V3HgR7V71xWH2vQ9lyS358CbGCldWlJFR0JirqoGtOoas3R3/OclRTvgUYFK29mmJICDPauVKmpqbwhOA==", + "dev": true, + "requires": { + "argv": "0.0.2", + "ignore-walk": "3.0.4", + "js-yaml": "3.14.1", + "teeny-request": "7.1.1", + "urlgrey": "1.0.0" + } + }, + "codemirror-promql": { + "version": "file:module/codemirror-promql", + "requires": { + "@codemirror/autocomplete": "^0.19.3", + "@codemirror/basic-setup": "^0.19.0", + "@codemirror/highlight": "^0.19.5", + "@codemirror/language": "^0.19.3", + "@codemirror/lint": "^0.19.1", + "@codemirror/state": "^0.19.2", + "@codemirror/view": "^0.19.7", + "@lezer/common": "^0.15.5", + "@lezer/generator": "^0.15.1", + "@types/chai": "^4.2.12", + "@types/lru-cache": "^5.1.0", + "@types/mocha": "^8.0.3", + "@types/node": "^16.7.6", + "@typescript-eslint/eslint-plugin": "^4.31.0", + "@typescript-eslint/parser": "^4.31.0", + "chai": "^4.2.0", + "codecov": "^3.8.1", + "eslint": "^7.32.0", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-flowtype": "^5.9.2", + "eslint-plugin-import": "^2.24.2", + "eslint-plugin-prettier": "^4.0.0", + "isomorphic-fetch": "^3.0.0", + "lru-cache": "^6.0.0", + "mocha": "^8.1.2", + "nock": "^13.0.11", + "nyc": "^15.1.0", + "prettier": "^2.3.2", + "ts-loader": "^7.0.4", + "ts-mocha": "^8.0.0", + "ts-node": "^9.0.0", + "typescript": "^4.2.3" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "colorette": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==" + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "crelt": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.5.tgz", + "integrity": "sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA==" + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "default-require-extensions": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", + "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", + "dev": true, + "requires": { + "strip-bom": "^4.0.0" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + } + }, + "diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "electron-to-chromium": { + "version": "1.3.838", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.838.tgz", + "integrity": "sha512-65O6UJiyohFAdX/nc6KJ0xG/4zOn7XCO03kQNNbCeMRGxlWTLzc6Uyi0tFNQuuGWqySZJi8CD2KXPXySVYmzMA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "enhanced-resolve": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + } + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.18.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.6.tgz", + "integrity": "sha512-kAeIT4cku5eNLNuUKhlmtuk1/TRZvQoYccn6TO0cSVdf1kzB0T7+dYuVK9MWM7l+/53W2Q8M7N2c6MQvhXFcUQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.4", + "is-string": "^1.0.7", + "object-inspect": "^1.11.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + } + } + }, + "eslint-config-prettier": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz", + "integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==", + "dev": true, + "requires": {} + }, + "eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "resolve": "^1.20.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-module-utils": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.2.tgz", + "integrity": "sha512-QG8pcgThYOuqxupd06oYTZoNOGaUdTY1PqK+oS6ElF6vs4pBdk/aYxFVQQXzcrAqp9m7cl7lb2ubazX+g16k2Q==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "pkg-dir": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-plugin-flowtype": { + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-5.9.2.tgz", + "integrity": "sha512-qxE/eo9DCN7800MIB/O1ToOiFuOPOlaMJWQY2BEm69oY7RCm3s2X1z4CdgtFvDDWf9RSSugZm1KRhdBMBueKbg==", + "dev": true, + "requires": { + "lodash": "^4.17.15", + "string-natural-compare": "^3.0.1" + } + }, + "eslint-plugin-import": { + "version": "2.24.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.24.2.tgz", + "integrity": "sha512-hNVtyhiEtZmpsabL4neEj+6M5DCLgpYyG9nzJY8lZQeQXEn5UPW1DpUdsMHMXsq98dbNm7nt1w9ZMSVpfJdi8Q==", + "dev": true, + "requires": { + "array-includes": "^3.1.3", + "array.prototype.flat": "^1.2.4", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.6.2", + "find-up": "^2.0.0", + "has": "^1.0.3", + "is-core-module": "^2.6.0", + "minimatch": "^3.0.4", + "object.values": "^1.1.4", + "pkg-up": "^2.0.0", + "read-pkg-up": "^3.0.0", + "resolve": "^1.20.0", + "tsconfig-paths": "^3.11.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-plugin-prettier": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz", + "integrity": "sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + } + }, + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + }, + "espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fast-url-parser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", + "integrity": "sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=", + "dev": true, + "requires": { + "punycode": "^1.3.2" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + } + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", + "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", + "dev": true + }, + "foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + } + }, + "fromentries": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", + "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", + "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, + "dependencies": { + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + } + } + }, + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "dev": true + }, + "graph": { + "version": "file:react-app", + "requires": { + "@codemirror/autocomplete": "^0.19.3", + "@codemirror/closebrackets": "^0.19.0", + "@codemirror/commands": "^0.19.4", + "@codemirror/comment": "^0.19.0", + "@codemirror/highlight": "^0.19.5", + "@codemirror/history": "^0.19.0", + "@codemirror/language": "^0.19.3", + "@codemirror/lint": "^0.19.1", + "@codemirror/matchbrackets": "^0.19.1", + "@codemirror/search": "^0.19.2", + "@codemirror/state": "^0.19.2", + "@codemirror/view": "^0.19.7", + "@forevolve/bootstrap-dark": "^1.0.0", + "@fortawesome/fontawesome-svg-core": "^1.2.14", + "@fortawesome/free-solid-svg-icons": "^5.7.1", + "@fortawesome/react-fontawesome": "^0.1.4", + "@nexucis/fuzzy": "^0.3.0", + "@testing-library/react-hooks": "^7.0.1", + "@types/enzyme": "^3.10.9", + "@types/flot": "0.0.32", + "@types/jest": "^27.0.1", + "@types/jquery": "^3.5.1", + "@types/node": "^16.7.6", + "@types/react": "^17.0.19", + "@types/react-copy-to-clipboard": "^5.0.1", + "@types/react-dom": "^17.0.9", + "@types/react-resize-detector": "^5.0.0", + "@types/react-router-dom": "^5.1.8", + "@types/sanitize-html": "^1.20.2", + "@types/sinon": "^10.0.2", + "@wojtekmaj/enzyme-adapter-react-17": "^0.6.3", + "bootstrap": "^4.6.0", + "codemirror-promql": "0.18.0", + "css.escape": "^1.5.1", + "downshift": "^3.4.8", + "enzyme": "^3.11.0", + "enzyme-to-json": "^3.6.2", + "eslint-config-prettier": "^8.3.0", + "eslint-config-react-app": "^6.0.0", + "eslint-plugin-prettier": "^4.0.0", + "fsevents": "^2.3.2", + "i": "^0.3.6", + "jest-canvas-mock": "^2.3.1", + "jest-fetch-mock": "^3.0.3", + "jquery": "^3.5.1", + "jquery.flot.tooltip": "^0.9.0", + "moment": "^2.24.0", + "moment-timezone": "^0.5.23", + "mutationobserver-shim": "^0.3.7", + "popper.js": "^1.14.3", + "prettier": "^2.3.2", + "react": "^17.0.2", + "react-copy-to-clipboard": "^5.0.4", + "react-dom": "^17.0.2", + "react-resize-detector": "^6.7.6", + "react-router-dom": "^5.2.1", + "react-scripts": "4.0.3", + "react-test-renderer": "^17.0.2", + "reactstrap": "^8.9.0", + "sanitize-html": "^2.3.3", + "sass": "1.39.0", + "sinon": "^11.1.2", + "tempusdominus-bootstrap-4": "^5.1.2", + "tempusdominus-core": "^5.0.3", + "typescript": "^4.4.2" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.15.4", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.15.4", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.15.4", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-member-expression-to-functions": "^7.15.4", + "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/helper-replace-supers": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.14.5", + "regexpu-core": "^4.7.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.2.3", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "dev": true + } + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.15.4", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.14.5", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.15.4", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.15.4", + "@babel/helper-wrap-function": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.15.4", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-wrap-function": { + "version": "7.15.4", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.15.4", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4", + "@babel/plugin-proposal-optional-chaining": "^7.14.5" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.15.4", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.15.4", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.15.4", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-decorators": { + "version": "7.12.1", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-decorators": "^7.12.1" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.15.6", + "dev": true, + "requires": { + "@babel/compat-data": "^7.15.0", + "@babel/helper-compilation-targets": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.15.4" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.15.4", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.15.4", + "@babel/helper-create-class-features-plugin": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-decorators": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-flow": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.14.5" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.15.3", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.15.4", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.14.7", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-flow-strip-types": { + "version": "7.12.1", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-flow": "^7.12.1" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.15.4", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.15.4", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.15.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.15.4", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-module-transforms": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.9", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.14.9", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.14.5" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.15.4", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-react-constant-elements": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.15.1", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.14.9", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-jsx": "^7.14.5", + "@babel/types": "^7.14.9" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/plugin-transform-react-jsx": "^7.14.5" + } + }, + "@babel/plugin-transform-react-pure-annotations": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.14.5", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.12.1", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "resolve": "^1.8.1", + "semver": "^5.5.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "dev": true + } + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.14.6", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.15.4", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-typescript": "^7.14.5" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/preset-env": { + "version": "7.15.6", + "dev": true, + "requires": { + "@babel/compat-data": "^7.15.0", + "@babel/helper-compilation-targets": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.15.4", + "@babel/plugin-proposal-async-generator-functions": "^7.15.4", + "@babel/plugin-proposal-class-properties": "^7.14.5", + "@babel/plugin-proposal-class-static-block": "^7.15.4", + "@babel/plugin-proposal-dynamic-import": "^7.14.5", + "@babel/plugin-proposal-export-namespace-from": "^7.14.5", + "@babel/plugin-proposal-json-strings": "^7.14.5", + "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", + "@babel/plugin-proposal-numeric-separator": "^7.14.5", + "@babel/plugin-proposal-object-rest-spread": "^7.15.6", + "@babel/plugin-proposal-optional-catch-binding": "^7.14.5", + "@babel/plugin-proposal-optional-chaining": "^7.14.5", + "@babel/plugin-proposal-private-methods": "^7.14.5", + "@babel/plugin-proposal-private-property-in-object": "^7.15.4", + "@babel/plugin-proposal-unicode-property-regex": "^7.14.5", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.14.5", + "@babel/plugin-transform-async-to-generator": "^7.14.5", + "@babel/plugin-transform-block-scoped-functions": "^7.14.5", + "@babel/plugin-transform-block-scoping": "^7.15.3", + "@babel/plugin-transform-classes": "^7.15.4", + "@babel/plugin-transform-computed-properties": "^7.14.5", + "@babel/plugin-transform-destructuring": "^7.14.7", + "@babel/plugin-transform-dotall-regex": "^7.14.5", + "@babel/plugin-transform-duplicate-keys": "^7.14.5", + "@babel/plugin-transform-exponentiation-operator": "^7.14.5", + "@babel/plugin-transform-for-of": "^7.15.4", + "@babel/plugin-transform-function-name": "^7.14.5", + "@babel/plugin-transform-literals": "^7.14.5", + "@babel/plugin-transform-member-expression-literals": "^7.14.5", + "@babel/plugin-transform-modules-amd": "^7.14.5", + "@babel/plugin-transform-modules-commonjs": "^7.15.4", + "@babel/plugin-transform-modules-systemjs": "^7.15.4", + "@babel/plugin-transform-modules-umd": "^7.14.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.9", + "@babel/plugin-transform-new-target": "^7.14.5", + "@babel/plugin-transform-object-super": "^7.14.5", + "@babel/plugin-transform-parameters": "^7.15.4", + "@babel/plugin-transform-property-literals": "^7.14.5", + "@babel/plugin-transform-regenerator": "^7.14.5", + "@babel/plugin-transform-reserved-words": "^7.14.5", + "@babel/plugin-transform-shorthand-properties": "^7.14.5", + "@babel/plugin-transform-spread": "^7.14.6", + "@babel/plugin-transform-sticky-regex": "^7.14.5", + "@babel/plugin-transform-template-literals": "^7.14.5", + "@babel/plugin-transform-typeof-symbol": "^7.14.5", + "@babel/plugin-transform-unicode-escapes": "^7.14.5", + "@babel/plugin-transform-unicode-regex": "^7.14.5", + "@babel/preset-modules": "^0.1.4", + "@babel/types": "^7.15.6", + "babel-plugin-polyfill-corejs2": "^0.2.2", + "babel-plugin-polyfill-corejs3": "^0.2.2", + "babel-plugin-polyfill-regenerator": "^0.2.2", + "core-js-compat": "^3.16.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "dev": true + } + } + }, + "@babel/preset-modules": { + "version": "0.1.4", + "dev": true, + "requires": { + "@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" + } + }, + "@babel/preset-react": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-transform-react-display-name": "^7.14.5", + "@babel/plugin-transform-react-jsx": "^7.14.5", + "@babel/plugin-transform-react-jsx-development": "^7.14.5", + "@babel/plugin-transform-react-pure-annotations": "^7.14.5" + } + }, + "@babel/preset-typescript": { + "version": "7.12.1", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-transform-typescript": "^7.12.1" + } + }, + "@babel/runtime": { + "version": "7.15.4", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/runtime-corejs3": { + "version": "7.15.4", + "dev": true, + "requires": { + "core-js-pure": "^3.16.0", + "regenerator-runtime": "^0.13.4" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "dev": true + }, + "@cnakazawa/watch": { + "version": "1.0.4", + "dev": true, + "requires": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + } + }, + "@csstools/convert-colors": { + "version": "1.4.0", + "dev": true + }, + "@csstools/normalize.css": { + "version": "10.1.0", + "dev": true + }, + "@forevolve/bootstrap-dark": { + "version": "1.1.0", + "requires": { + "bootstrap": "^4.6.0", + "jquery": "^3.5.1", + "popper.js": "^1.16.1" + } + }, + "@fortawesome/fontawesome-common-types": { + "version": "0.2.36" + }, + "@fortawesome/fontawesome-svg-core": { + "version": "1.2.36", + "requires": { + "@fortawesome/fontawesome-common-types": "^0.2.36" + } + }, + "@fortawesome/free-solid-svg-icons": { + "version": "5.15.4", + "requires": { + "@fortawesome/fontawesome-common-types": "^0.2.36" + } + }, + "@fortawesome/react-fontawesome": { + "version": "0.1.15", + "requires": { + "prop-types": "^15.7.2" + } + }, + "@gar/promisify": { + "version": "1.1.2", + "dev": true + }, + "@hapi/address": { + "version": "2.1.4", + "dev": true + }, + "@hapi/bourne": { + "version": "1.3.2", + "dev": true + }, + "@hapi/hoek": { + "version": "8.5.1", + "dev": true + }, + "@hapi/joi": { + "version": "15.1.1", + "dev": true, + "requires": { + "@hapi/address": "2.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/topo": "3.x.x" + } + }, + "@hapi/topo": { + "version": "3.1.6", + "dev": true, + "requires": { + "@hapi/hoek": "^8.3.0" + } + }, + "@hypnosphi/create-react-context": { + "version": "0.3.1", + "requires": { + "gud": "^1.0.0", + "warning": "^4.0.3" + } + }, + "@jest/console": { + "version": "26.6.2", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^26.6.2", + "jest-util": "^26.6.2", + "slash": "^3.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.14", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/core": { + "version": "26.6.3", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/reporters": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-changed-files": "^26.6.2", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-resolve-dependencies": "^26.6.3", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "jest-watcher": "^26.6.2", + "micromatch": "^4.0.2", + "p-each-series": "^2.1.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.14", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "jest-resolve": { + "version": "26.6.2", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-fest": { + "version": "0.8.1", + "dev": true + } + } + }, + "@jest/environment": { + "version": "26.6.2", + "dev": true, + "requires": { + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.14", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/fake-timers": { + "version": "26.6.2", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@sinonjs/fake-timers": "^6.0.1", + "@types/node": "*", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@sinonjs/fake-timers": { + "version": "6.0.1", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@types/yargs": { + "version": "15.0.14", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/globals": { + "version": "26.6.2", + "dev": true, + "requires": { + "@jest/environment": "^26.6.2", + "@jest/types": "^26.6.2", + "expect": "^26.6.2" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.14", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/reporters": { + "version": "26.6.2", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "node-notifier": "^8.0.0", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^7.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.14", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "jest-resolve": { + "version": "26.6.2", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + }, + "source-map": { + "version": "0.6.1", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-fest": { + "version": "0.8.1", + "dev": true + } + } + }, + "@jest/source-map": { + "version": "26.6.2", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "dev": true + } + } + }, + "@jest/test-result": { + "version": "26.6.2", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.14", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/test-sequencer": { + "version": "26.6.3", + "dev": true, + "requires": { + "@jest/test-result": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3" + } + }, + "@jest/transform": { + "version": "26.6.2", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^26.6.2", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-util": "^26.6.2", + "micromatch": "^4.0.2", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.14", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/types": { + "version": "27.1.1", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@nexucis/fuzzy": { + "version": "0.3.0" + }, + "@npmcli/fs": { + "version": "1.0.0", + "dev": true, + "requires": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "@npmcli/move-file": { + "version": "1.1.2", + "dev": true, + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "dev": true + } + } + }, + "@pmmmwh/react-refresh-webpack-plugin": { + "version": "0.4.3", + "dev": true, + "requires": { + "ansi-html": "^0.0.7", + "error-stack-parser": "^2.0.6", + "html-entities": "^1.2.1", + "native-url": "^0.2.6", + "schema-utils": "^2.6.5", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "dev": true + } + } + }, + "@rollup/plugin-node-resolve": { + "version": "7.1.3", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.8", + "@types/resolve": "0.0.8", + "builtin-modules": "^3.1.0", + "is-module": "^1.0.0", + "resolve": "^1.14.2" + } + }, + "@rollup/plugin-replace": { + "version": "2.4.2", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + } + }, + "@rollup/pluginutils": { + "version": "3.1.0", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "@types/estree": { + "version": "0.0.39", + "dev": true + } + } + }, + "@sinonjs/commons": { + "version": "1.8.3", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "7.1.2", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@sinonjs/samsam": { + "version": "6.0.2", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.6.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" + } + }, + "@sinonjs/text-encoding": { + "version": "0.7.1", + "dev": true + }, + "@surma/rollup-plugin-off-main-thread": { + "version": "1.4.2", + "dev": true, + "requires": { + "ejs": "^2.6.1", + "magic-string": "^0.25.0" + } + }, + "@svgr/babel-plugin-add-jsx-attribute": { + "version": "5.4.0", + "dev": true + }, + "@svgr/babel-plugin-remove-jsx-attribute": { + "version": "5.4.0", + "dev": true + }, + "@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "5.0.1", + "dev": true + }, + "@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "5.0.1", + "dev": true + }, + "@svgr/babel-plugin-svg-dynamic-title": { + "version": "5.4.0", + "dev": true + }, + "@svgr/babel-plugin-svg-em-dimensions": { + "version": "5.4.0", + "dev": true + }, + "@svgr/babel-plugin-transform-react-native-svg": { + "version": "5.4.0", + "dev": true + }, + "@svgr/babel-plugin-transform-svg-component": { + "version": "5.5.0", + "dev": true + }, + "@svgr/babel-preset": { + "version": "5.5.0", + "dev": true, + "requires": { + "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1", + "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0", + "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0", + "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0", + "@svgr/babel-plugin-transform-svg-component": "^5.5.0" + } + }, + "@svgr/core": { + "version": "5.5.0", + "dev": true, + "requires": { + "@svgr/plugin-jsx": "^5.5.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^7.0.0" + } + }, + "@svgr/hast-util-to-babel-ast": { + "version": "5.5.0", + "dev": true, + "requires": { + "@babel/types": "^7.12.6" + } + }, + "@svgr/plugin-jsx": { + "version": "5.5.0", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@svgr/babel-preset": "^5.5.0", + "@svgr/hast-util-to-babel-ast": "^5.5.0", + "svg-parser": "^2.0.2" + } + }, + "@svgr/plugin-svgo": { + "version": "5.5.0", + "dev": true, + "requires": { + "cosmiconfig": "^7.0.0", + "deepmerge": "^4.2.2", + "svgo": "^1.2.2" + } + }, + "@svgr/webpack": { + "version": "5.5.0", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/plugin-transform-react-constant-elements": "^7.12.1", + "@babel/preset-env": "^7.12.1", + "@babel/preset-react": "^7.12.5", + "@svgr/core": "^5.5.0", + "@svgr/plugin-jsx": "^5.5.0", + "@svgr/plugin-svgo": "^5.5.0", + "loader-utils": "^2.0.0" + } + }, + "@testing-library/react-hooks": { + "version": "7.0.2", + "dev": true, + "requires": { + "@babel/runtime": "^7.12.5", + "@types/react": ">=16.9.0", + "@types/react-dom": ">=16.9.0", + "@types/react-test-renderer": ">=16.9.0", + "react-error-boundary": "^3.1.0" + } + }, + "@types/babel__core": { + "version": "7.1.16", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.3", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.1", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.14.2", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/cheerio": { + "version": "0.22.30", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/enzyme": { + "version": "3.10.9", + "dev": true, + "requires": { + "@types/cheerio": "*", + "@types/react": "*" + } + }, + "@types/eslint": { + "version": "7.28.0", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/estree": { + "version": "0.0.50", + "dev": true + }, + "@types/glob": { + "version": "7.1.4", + "dev": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/graceful-fs": { + "version": "4.1.5", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/history": { + "version": "4.7.9", + "dev": true + }, + "@types/html-minifier-terser": { + "version": "5.1.2", + "dev": true + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.3", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "27.0.1", + "dev": true, + "requires": { + "jest-diff": "^27.0.0", + "pretty-format": "^27.0.0" + } + }, + "@types/minimatch": { + "version": "3.0.5", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.1", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "dev": true + }, + "@types/prettier": { + "version": "2.3.2", + "dev": true + }, + "@types/prop-types": { + "version": "15.7.4", + "dev": true + }, + "@types/q": { + "version": "1.5.5", + "dev": true + }, + "@types/react": { + "version": "17.0.20", + "dev": true, + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "@types/react-copy-to-clipboard": { + "version": "5.0.1", + "dev": true, + "requires": { + "@types/react": "*" + } + }, + "@types/react-dom": { + "version": "17.0.9", + "dev": true, + "requires": { + "@types/react": "*" + } + }, + "@types/react-resize-detector": { + "version": "5.0.0", + "dev": true, + "requires": { + "@types/react": "*" + } + }, + "@types/react-router": { + "version": "5.1.16", + "dev": true, + "requires": { + "@types/history": "*", + "@types/react": "*" + } + }, + "@types/react-router-dom": { + "version": "5.1.8", + "dev": true, + "requires": { + "@types/history": "*", + "@types/react": "*", + "@types/react-router": "*" + } + }, + "@types/react-test-renderer": { + "version": "17.0.1", + "dev": true, + "requires": { + "@types/react": "*" + } + }, + "@types/resize-observer-browser": { + "version": "0.1.6" + }, + "@types/resolve": { + "version": "0.0.8", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/sanitize-html": { + "version": "1.27.2", + "dev": true, + "requires": { + "htmlparser2": "^4.1.0" + } + }, + "@types/scheduler": { + "version": "0.16.2", + "dev": true + }, + "@types/sinon": { + "version": "10.0.2", + "dev": true, + "requires": { + "@sinonjs/fake-timers": "^7.1.0" + } + }, + "@types/source-list-map": { + "version": "0.1.2", + "dev": true + }, + "@types/stack-utils": { + "version": "2.0.1", + "dev": true + }, + "@types/tapable": { + "version": "1.0.8", + "dev": true + }, + "@types/uglify-js": { + "version": "3.13.1", + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "dev": true + } + } + }, + "@types/webpack": { + "version": "4.41.31", + "dev": true, + "requires": { + "@types/node": "*", + "@types/tapable": "^1", + "@types/uglify-js": "*", + "@types/webpack-sources": "*", + "anymatch": "^3.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "dev": true + } + } + }, + "@types/webpack-sources": { + "version": "3.2.0", + "dev": true, + "requires": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "dev": true + } + } + }, + "@types/yargs": { + "version": "16.0.4", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "20.2.1", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.9.0", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.9.0", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.9.0", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.9.0", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.9.0", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.9.0", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@wojtekmaj/enzyme-adapter-react-17": { + "version": "0.6.3", + "dev": true, + "requires": { + "@wojtekmaj/enzyme-adapter-utils": "^0.1.1", + "enzyme-shallow-equal": "^1.0.0", + "has": "^1.0.0", + "object.assign": "^4.1.0", + "object.values": "^1.1.0", + "prop-types": "^15.7.0", + "react-is": "^17.0.2", + "react-test-renderer": "^17.0.0" + } + }, + "@wojtekmaj/enzyme-adapter-utils": { + "version": "0.1.1", + "dev": true, + "requires": { + "function.prototype.name": "^1.1.0", + "has": "^1.0.0", + "object.assign": "^4.1.0", + "object.fromentries": "^2.0.0", + "prop-types": "^15.7.0" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "dev": true + }, + "abab": { + "version": "2.0.5", + "dev": true + }, + "accepts": { + "version": "1.3.7", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn-globals": { + "version": "6.0.0", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "acorn-walk": { + "version": "7.2.0", + "dev": true + }, + "address": { + "version": "1.1.2", + "dev": true + }, + "adjust-sourcemap-loader": { + "version": "3.0.0", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + } + }, + "ajv-errors": { + "version": "1.0.1", + "dev": true, + "requires": {} + }, + "ajv-keywords": { + "version": "3.5.2", + "dev": true, + "requires": {} + }, + "alphanum-sort": { + "version": "1.0.2", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.2", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-html": { + "version": "0.0.7", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "aproba": { + "version": "1.2.0", + "dev": true + }, + "aria-query": { + "version": "4.2.2", + "dev": true, + "requires": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + } + }, + "arity-n": { + "version": "1.0.4", + "dev": true + }, + "arr-diff": { + "version": "4.0.0", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "dev": true + }, + "array-flatten": { + "version": "2.1.2", + "dev": true + }, + "array-uniq": { + "version": "1.0.3", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "dev": true + }, + "array.prototype.filter": { + "version": "1.0.0", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.5" + } + }, + "array.prototype.flatmap": { + "version": "1.2.4", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1", + "function-bind": "^1.1.1" + } + }, + "arrify": { + "version": "2.0.1", + "dev": true + }, + "asap": { + "version": "2.0.6", + "dev": true + }, + "asn1.js": { + "version": "5.4.1", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "dev": true + } + } + }, + "assert": { + "version": "1.5.0", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "dev": true + }, + "util": { + "version": "0.10.3", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assign-symbols": { + "version": "1.0.0", + "dev": true + }, + "ast-types-flow": { + "version": "0.0.7", + "dev": true + }, + "async": { + "version": "2.6.3", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "async-each": { + "version": "1.0.3", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "dev": true + }, + "at-least-node": { + "version": "1.0.0", + "dev": true + }, + "atob": { + "version": "2.1.2", + "dev": true + }, + "autoprefixer": { + "version": "9.8.6", + "dev": true, + "requires": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "colorette": "^1.2.1", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" + } + }, + "axe-core": { + "version": "4.3.3", + "dev": true + }, + "axobject-query": { + "version": "2.2.0", + "dev": true + }, + "babel-eslint": { + "version": "10.1.0", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "dev": true + } + } + }, + "babel-extract-comments": { + "version": "1.0.0", + "dev": true, + "requires": { + "babylon": "^6.18.0" + } + }, + "babel-jest": { + "version": "26.6.3", + "dev": true, + "requires": { + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/babel__core": "^7.1.7", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "slash": "^3.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.14", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "babel-loader": { + "version": "8.1.0", + "dev": true, + "requires": { + "find-cache-dir": "^2.1.0", + "loader-utils": "^1.4.0", + "mkdirp": "^0.5.3", + "pify": "^4.0.1", + "schema-utils": "^2.6.5" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-istanbul": { + "version": "6.0.0", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^4.0.0", + "test-exclude": "^6.0.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "26.6.2", + "dev": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-plugin-macros": { + "version": "2.8.0", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" + }, + "dependencies": { + "cosmiconfig": { + "version": "6.0.0", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + } + } + } + }, + "babel-plugin-named-asset-import": { + "version": "0.3.7", + "dev": true, + "requires": {} + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.2.2", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.2.2", + "semver": "^6.1.1" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "dev": true + } + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.2.4", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.2.2", + "core-js-compat": "^3.14.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.2.2", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.2.2" + } + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "dev": true + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "dev": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "^6.8.0", + "babel-runtime": "^6.26.0" + } + }, + "babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.24", + "dev": true + }, + "babel-preset-current-node-syntax": { + "version": "1.0.1", + "dev": true, + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + } + }, + "babel-preset-jest": { + "version": "26.6.2", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^26.6.2", + "babel-preset-current-node-syntax": "^1.0.0" + } + }, + "babel-preset-react-app": { + "version": "10.0.0", + "dev": true, + "requires": { + "@babel/core": "7.12.3", + "@babel/plugin-proposal-class-properties": "7.12.1", + "@babel/plugin-proposal-decorators": "7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "7.12.1", + "@babel/plugin-proposal-numeric-separator": "7.12.1", + "@babel/plugin-proposal-optional-chaining": "7.12.1", + "@babel/plugin-transform-flow-strip-types": "7.12.1", + "@babel/plugin-transform-react-display-name": "7.12.1", + "@babel/plugin-transform-runtime": "7.12.1", + "@babel/preset-env": "7.12.1", + "@babel/preset-react": "7.12.1", + "@babel/preset-typescript": "7.12.1", + "@babel/runtime": "7.12.1", + "babel-plugin-macros": "2.8.0", + "babel-plugin-transform-react-remove-prop-types": "0.4.24" + }, + "dependencies": { + "@babel/core": { + "version": "7.12.3", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.1", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.1", + "@babel/parser": "^7.12.3", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.12.1", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.12.1", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.12.1", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.12.1", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.12.1", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/preset-env": { + "version": "7.12.1", + "dev": true, + "requires": { + "@babel/compat-data": "^7.12.1", + "@babel/helper-compilation-targets": "^7.12.1", + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-option": "^7.12.1", + "@babel/plugin-proposal-async-generator-functions": "^7.12.1", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-dynamic-import": "^7.12.1", + "@babel/plugin-proposal-export-namespace-from": "^7.12.1", + "@babel/plugin-proposal-json-strings": "^7.12.1", + "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-numeric-separator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.1", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.12.1", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-async-to-generator": "^7.12.1", + "@babel/plugin-transform-block-scoped-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.1", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-computed-properties": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-dotall-regex": "^7.12.1", + "@babel/plugin-transform-duplicate-keys": "^7.12.1", + "@babel/plugin-transform-exponentiation-operator": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-function-name": "^7.12.1", + "@babel/plugin-transform-literals": "^7.12.1", + "@babel/plugin-transform-member-expression-literals": "^7.12.1", + "@babel/plugin-transform-modules-amd": "^7.12.1", + "@babel/plugin-transform-modules-commonjs": "^7.12.1", + "@babel/plugin-transform-modules-systemjs": "^7.12.1", + "@babel/plugin-transform-modules-umd": "^7.12.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", + "@babel/plugin-transform-new-target": "^7.12.1", + "@babel/plugin-transform-object-super": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-property-literals": "^7.12.1", + "@babel/plugin-transform-regenerator": "^7.12.1", + "@babel/plugin-transform-reserved-words": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/plugin-transform-sticky-regex": "^7.12.1", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/plugin-transform-typeof-symbol": "^7.12.1", + "@babel/plugin-transform-unicode-escapes": "^7.12.1", + "@babel/plugin-transform-unicode-regex": "^7.12.1", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.12.1", + "core-js-compat": "^3.6.2", + "semver": "^5.5.0" + } + }, + "@babel/preset-react": { + "version": "7.12.1", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-transform-react-display-name": "^7.12.1", + "@babel/plugin-transform-react-jsx": "^7.12.1", + "@babel/plugin-transform-react-jsx-development": "^7.12.1", + "@babel/plugin-transform-react-jsx-self": "^7.12.1", + "@babel/plugin-transform-react-jsx-source": "^7.12.1", + "@babel/plugin-transform-react-pure-annotations": "^7.12.1" + }, + "dependencies": { + "@babel/plugin-transform-react-jsx-self": { + "version": "7.14.9", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-react-jsx-source": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + } + } + }, + "@babel/runtime": { + "version": "7.12.1", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "semver": { + "version": "5.7.1", + "dev": true + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "core-js": { + "version": "2.6.12", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.1", + "dev": true + } + } + }, + "babylon": { + "version": "6.18.0", + "dev": true + }, + "base": { + "version": "0.11.2", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "base64-js": { + "version": "1.5.1", + "dev": true + }, + "batch": { + "version": "0.6.1", + "dev": true + }, + "bfj": { + "version": "7.0.2", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "check-types": "^11.1.1", + "hoopy": "^0.1.4", + "tryer": "^1.0.1" + } + }, + "bindings": { + "version": "1.5.0", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bluebird": { + "version": "3.7.2", + "dev": true + }, + "bn.js": { + "version": "5.2.0", + "dev": true + }, + "body-parser": { + "version": "1.19.0", + "dev": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "dev": true + }, + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "dev": true + } + } + }, + "bonjour": { + "version": "3.5.0", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "boolbase": { + "version": "1.0.0", + "dev": true + }, + "bootstrap": { + "version": "4.6.0", + "requires": {} + }, + "brorand": { + "version": "1.1.0", + "dev": true + }, + "browser-process-hrtime": { + "version": "1.0.0", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.1.0", + "dev": true, + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.2.1", + "dev": true, + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "dev": true + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "bser": { + "version": "2.1.1", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer": { + "version": "4.9.2", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "dev": true + } + } + }, + "buffer-indexof": { + "version": "1.1.1", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "dev": true + }, + "builtin-modules": { + "version": "3.2.0", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "dev": true + }, + "bytes": { + "version": "3.0.0", + "dev": true + }, + "cacache": { + "version": "15.3.0", + "dev": true, + "requires": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "dev": true + } + } + }, + "cache-base": { + "version": "1.0.1", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "caller-callsite": { + "version": "2.0.0", + "dev": true, + "requires": { + "callsites": "^2.0.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "dev": true + } + } + }, + "caller-path": { + "version": "2.0.0", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "camel-case": { + "version": "4.1.2", + "dev": true, + "requires": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "camelcase": { + "version": "6.2.0", + "dev": true + }, + "caniuse-api": { + "version": "3.0.0", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "capture-exit": { + "version": "2.0.0", + "dev": true, + "requires": { + "rsvp": "^4.8.4" + } + }, + "case-sensitive-paths-webpack-plugin": { + "version": "2.3.0", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "char-regex": { + "version": "1.0.2", + "dev": true + }, + "check-types": { + "version": "11.1.2", + "dev": true + }, + "cheerio": { + "version": "1.0.0-rc.10", + "dev": true, + "requires": { + "cheerio-select": "^1.5.0", + "dom-serializer": "^1.3.2", + "domhandler": "^4.2.0", + "htmlparser2": "^6.1.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "tslib": "^2.2.0" + }, + "dependencies": { + "htmlparser2": { + "version": "6.1.0", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + } + } + }, + "cheerio-select": { + "version": "1.5.0", + "dev": true, + "requires": { + "css-select": "^4.1.3", + "css-what": "^5.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0", + "domutils": "^2.7.0" + } + }, + "chokidar": { + "version": "3.5.2", + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "chownr": { + "version": "2.0.0", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.3", + "dev": true + }, + "ci-info": { + "version": "2.0.0", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "cjs-module-lexer": { + "version": "0.6.0", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "dev": true + } + } + }, + "classnames": { + "version": "2.3.1" + }, + "clean-css": { + "version": "4.2.3", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "dev": true + } + } + }, + "cliui": { + "version": "6.0.0", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "co": { + "version": "4.6.0", + "dev": true + }, + "coa": { + "version": "2.0.2", + "dev": true, + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + } + }, + "collect-v8-coverage": { + "version": "1.0.1", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "3.2.1", + "dev": true, + "requires": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "color-convert": { + "version": "1.9.3", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "dev": true + }, + "color-string": { + "version": "1.6.0", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "combined-stream": { + "version": "1.0.8", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "4.1.1", + "dev": true + }, + "common-tags": { + "version": "1.8.0", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "dev": true + }, + "compose-function": { + "version": "3.0.3", + "dev": true, + "requires": { + "arity-n": "^1.0.4" + } + }, + "compressible": { + "version": "2.0.18", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "dev": true + } + } + }, + "compute-scroll-into-view": { + "version": "1.0.17" + }, + "concat-stream": { + "version": "1.6.2", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "confusing-browser-globals": { + "version": "1.0.10", + "dev": true + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "dev": true + }, + "console-browserify": { + "version": "1.2.0", + "dev": true + }, + "constants-browserify": { + "version": "1.0.0", + "dev": true + }, + "content-disposition": { + "version": "0.5.3", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "dev": true + }, + "cookie": { + "version": "0.4.0", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "copy-descriptor": { + "version": "0.1.1", + "dev": true + }, + "copy-to-clipboard": { + "version": "3.3.1", + "requires": { + "toggle-selection": "^1.0.6" + } + }, + "core-js": { + "version": "3.17.3", + "dev": true + }, + "core-js-compat": { + "version": "3.17.3", + "dev": true, + "requires": { + "browserslist": "^4.17.0", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "dev": true + } + } + }, + "core-js-pure": { + "version": "3.17.3", + "dev": true + }, + "cosmiconfig": { + "version": "7.0.1", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "create-ecdh": { + "version": "4.0.4", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "dev": true + } + } + }, + "create-hash": { + "version": "1.2.0", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-fetch": { + "version": "3.1.4", + "dev": true, + "requires": { + "node-fetch": "2.6.1" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "crypto-random-string": { + "version": "1.0.0", + "dev": true + }, + "css": { + "version": "2.2.4", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "dev": true + } + } + }, + "css-blank-pseudo": { + "version": "0.1.4", + "dev": true, + "requires": { + "postcss": "^7.0.5" + } + }, + "css-color-names": { + "version": "0.0.4", + "dev": true + }, + "css-declaration-sorter": { + "version": "4.0.1", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + } + }, + "css-has-pseudo": { + "version": "0.10.0", + "dev": true, + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^5.0.0-rc.4" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "dev": true + }, + "postcss-selector-parser": { + "version": "5.0.0", + "dev": true, + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "css-loader": { + "version": "4.3.0", + "dev": true, + "requires": { + "camelcase": "^6.0.0", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^2.0.0", + "postcss": "^7.0.32", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.3", + "postcss-modules-scope": "^2.2.0", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^2.7.1", + "semver": "^7.3.2" + } + }, + "css-prefers-color-scheme": { + "version": "3.1.1", + "dev": true, + "requires": { + "postcss": "^7.0.5" + } + }, + "css-select": { + "version": "4.1.3", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^5.0.0", + "domhandler": "^4.2.0", + "domutils": "^2.6.0", + "nth-check": "^2.0.0" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "dev": true + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "dev": true, + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "dev": true + } + } + }, + "css-what": { + "version": "5.0.1", + "dev": true + }, + "css.escape": { + "version": "1.5.1" + }, + "cssdb": { + "version": "4.4.0", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "dev": true + }, + "cssfontparser": { + "version": "1.2.1", + "dev": true + }, + "cssnano": { + "version": "4.1.11", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.8", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + }, + "dependencies": { + "cosmiconfig": { + "version": "5.2.1", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "resolve-from": { + "version": "3.0.0", + "dev": true + } + } + }, + "cssnano-preset-default": { + "version": "4.0.8", + "dev": true, + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.3", + "postcss-unique-selectors": "^4.0.1" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "dev": true + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "dev": true + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "dev": true + }, + "csso": { + "version": "4.2.0", + "dev": true, + "requires": { + "css-tree": "^1.1.2" + }, + "dependencies": { + "css-tree": { + "version": "1.1.3", + "dev": true, + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.14", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "dev": true + } + } + }, + "cssom": { + "version": "0.4.4", + "dev": true + }, + "cssstyle": { + "version": "2.3.0", + "dev": true, + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "dev": true + } + } + }, + "csstype": { + "version": "3.0.9", + "dev": true + }, + "cyclist": { + "version": "1.0.1", + "dev": true + }, + "d": { + "version": "1.0.1", + "dev": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "damerau-levenshtein": { + "version": "1.0.7", + "dev": true + }, + "data-urls": { + "version": "2.0.0", + "dev": true, + "requires": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + } + }, + "decimal.js": { + "version": "10.3.1", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "dev": true + }, + "dedent": { + "version": "0.7.0", + "dev": true + }, + "deep-equal": { + "version": "1.1.1", + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "deepmerge": { + "version": "4.2.2" + }, + "default-gateway": { + "version": "4.2.0", + "dev": true, + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "1.0.0", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "4.1.0", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "1.1.0", + "dev": true + }, + "npm-run-path": { + "version": "2.0.2", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "path-key": { + "version": "2.0.1", + "dev": true + }, + "semver": { + "version": "5.7.1", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "dev": true + }, + "which": { + "version": "1.3.1", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "define-property": { + "version": "2.0.2", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "del": { + "version": "4.1.1", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "dependencies": { + "array-union": { + "version": "1.0.2", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "globby": { + "version": "6.1.0", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "dev": true + } + } + }, + "p-map": { + "version": "2.1.0", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "dev": true + }, + "depd": { + "version": "1.1.2", + "dev": true + }, + "des.js": { + "version": "1.0.1", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "dev": true + }, + "detect-newline": { + "version": "3.1.0", + "dev": true + }, + "detect-node": { + "version": "2.1.0", + "dev": true + }, + "detect-port-alt": { + "version": "1.1.6", + "dev": true, + "requires": { + "address": "^1.0.1", + "debug": "^2.6.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "dev": true + } + } + }, + "diff-sequences": { + "version": "27.0.6", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "dev": true + } + } + }, + "discontinuous-range": { + "version": "1.0.0", + "dev": true + }, + "dns-equal": { + "version": "1.0.0", + "dev": true + }, + "dns-packet": { + "version": "1.3.4", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "dom-converter": { + "version": "0.2.0", + "dev": true, + "requires": { + "utila": "~0.4" + } + }, + "dom-helpers": { + "version": "3.4.0", + "requires": { + "@babel/runtime": "^7.1.2" + } + }, + "dom-serializer": { + "version": "1.3.2", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domain-browser": { + "version": "1.2.0", + "dev": true + }, + "domelementtype": { + "version": "2.2.0" + }, + "domexception": { + "version": "2.0.1", + "dev": true, + "requires": { + "webidl-conversions": "^5.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "5.0.0", + "dev": true + } + } + }, + "domhandler": { + "version": "4.2.2", + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "dot-case": { + "version": "3.0.4", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "dot-prop": { + "version": "5.3.0", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + }, + "dependencies": { + "is-obj": { + "version": "2.0.0", + "dev": true + } + } + }, + "dotenv": { + "version": "8.2.0", + "dev": true + }, + "dotenv-expand": { + "version": "5.1.0", + "dev": true + }, + "downshift": { + "version": "3.4.8", + "requires": { + "@babel/runtime": "^7.4.5", + "compute-scroll-into-view": "^1.0.9", + "prop-types": "^15.7.2", + "react-is": "^16.9.0" + }, + "dependencies": { + "react-is": { + "version": "16.13.1" + } + } + }, + "duplexer": { + "version": "0.1.2", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "ee-first": { + "version": "1.1.1", + "dev": true + }, + "ejs": { + "version": "2.7.4", + "dev": true + }, + "elliptic": { + "version": "6.5.4", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "dev": true + } + } + }, + "emittery": { + "version": "0.7.2", + "dev": true + }, + "emoji-regex": { + "version": "9.2.2", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "entities": { + "version": "2.2.0" + }, + "enzyme": { + "version": "3.11.0", + "dev": true, + "requires": { + "array.prototype.flat": "^1.2.3", + "cheerio": "^1.0.0-rc.3", + "enzyme-shallow-equal": "^1.0.1", + "function.prototype.name": "^1.1.2", + "has": "^1.0.3", + "html-element-map": "^1.2.0", + "is-boolean-object": "^1.0.1", + "is-callable": "^1.1.5", + "is-number-object": "^1.0.4", + "is-regex": "^1.0.5", + "is-string": "^1.0.5", + "is-subset": "^0.1.1", + "lodash.escape": "^4.0.1", + "lodash.isequal": "^4.5.0", + "object-inspect": "^1.7.0", + "object-is": "^1.0.2", + "object.assign": "^4.1.0", + "object.entries": "^1.1.1", + "object.values": "^1.1.1", + "raf": "^3.4.1", + "rst-selector-parser": "^2.2.3", + "string.prototype.trim": "^1.2.1" + } + }, + "enzyme-shallow-equal": { + "version": "1.0.4", + "dev": true, + "requires": { + "has": "^1.0.3", + "object-is": "^1.1.2" + } + }, + "enzyme-to-json": { + "version": "3.6.2", + "dev": true, + "requires": { + "@types/cheerio": "^0.22.22", + "lodash": "^4.17.21", + "react-is": "^16.12.0" + }, + "dependencies": { + "react-is": { + "version": "16.13.1", + "dev": true + } + } + }, + "error-stack-parser": { + "version": "2.0.6", + "dev": true, + "requires": { + "stackframe": "^1.1.1" + } + }, + "es-array-method-boxes-properly": { + "version": "1.0.0", + "dev": true + }, + "es5-ext": { + "version": "0.10.53", + "dev": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "dev": true, + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "escape-html": { + "version": "1.0.3", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "dev": true + }, + "escodegen": { + "version": "2.0.0", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "levn": { + "version": "0.3.0", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "optionator": { + "version": "0.8.3", + "dev": true, + "requires": { + "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" + } + }, + "prelude-ls": { + "version": "1.1.2", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "dev": true, + "optional": true + }, + "type-check": { + "version": "0.3.2", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + } + } + }, + "eslint-config-react-app": { + "version": "6.0.0", + "dev": true, + "requires": { + "confusing-browser-globals": "^1.0.10" + } + }, + "eslint-plugin-jest": { + "version": "24.4.0", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "^4.0.1" + } + }, + "eslint-plugin-jsx-a11y": { + "version": "6.4.1", + "dev": true, + "requires": { + "@babel/runtime": "^7.11.2", + "aria-query": "^4.2.2", + "array-includes": "^3.1.1", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.0.2", + "axobject-query": "^2.2.0", + "damerau-levenshtein": "^1.0.6", + "emoji-regex": "^9.0.0", + "has": "^1.0.3", + "jsx-ast-utils": "^3.1.0", + "language-tags": "^1.0.5" + } + }, + "eslint-plugin-react": { + "version": "7.25.1", + "dev": true, + "requires": { + "array-includes": "^3.1.3", + "array.prototype.flatmap": "^1.2.4", + "doctrine": "^2.1.0", + "estraverse": "^5.2.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.0.4", + "object.entries": "^1.1.4", + "object.fromentries": "^2.0.4", + "object.values": "^1.1.4", + "prop-types": "^15.7.2", + "resolve": "^2.0.0-next.3", + "string.prototype.matchall": "^4.0.5" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "resolve": { + "version": "2.0.0-next.3", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + } + } + }, + "eslint-plugin-react-hooks": { + "version": "4.2.0", + "dev": true, + "requires": {} + }, + "eslint-plugin-testing-library": { + "version": "3.10.2", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "^3.10.1" + }, + "dependencies": { + "@typescript-eslint/experimental-utils": { + "version": "3.10.1", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/types": "3.10.1", + "@typescript-eslint/typescript-estree": "3.10.1", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + } + }, + "@typescript-eslint/types": { + "version": "3.10.1", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "3.10.1", + "dev": true, + "requires": { + "@typescript-eslint/types": "3.10.1", + "@typescript-eslint/visitor-keys": "3.10.1", + "debug": "^4.1.1", + "glob": "^7.1.6", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "3.10.1", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-utils": { + "version": "2.1.0", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "dev": true + } + } + }, + "eslint-webpack-plugin": { + "version": "2.5.4", + "dev": true, + "requires": { + "@types/eslint": "^7.2.6", + "arrify": "^2.0.1", + "jest-worker": "^26.6.2", + "micromatch": "^4.0.2", + "normalize-path": "^3.0.0", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "estraverse": { + "version": "5.2.0", + "dev": true + }, + "estree-walker": { + "version": "1.0.1", + "dev": true + }, + "etag": { + "version": "1.8.1", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "dev": true + }, + "events": { + "version": "3.3.0", + "dev": true + }, + "eventsource": { + "version": "1.1.0", + "dev": true, + "requires": { + "original": "^1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "exec-sh": { + "version": "0.3.6", + "dev": true + }, + "execa": { + "version": "4.1.0", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "exit": { + "version": "0.1.2", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "dev": true + }, + "ms": { + "version": "2.0.0", + "dev": true + } + } + }, + "expect": { + "version": "26.6.2", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-styles": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.14", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "jest-get-type": { + "version": "26.3.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "express": { + "version": "4.17.1", + "dev": true, + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "dev": true + }, + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "dev": true + } + } + }, + "ext": { + "version": "1.5.0", + "dev": true, + "requires": { + "type": "^2.5.0" + }, + "dependencies": { + "type": { + "version": "2.5.0", + "dev": true + } + } + }, + "extend-shallow": { + "version": "3.0.2", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "extglob": { + "version": "2.0.4", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "dev": true + } + } + }, + "faye-websocket": { + "version": "0.11.4", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fb-watchman": { + "version": "2.0.1", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, + "figgy-pudding": { + "version": "3.5.2", + "dev": true + }, + "file-loader": { + "version": "6.1.1", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "dev": true, + "optional": true + }, + "filesize": { + "version": "6.1.0", + "dev": true + }, + "finalhandler": { + "version": "1.1.2", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "2.1.0", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + } + } + }, + "flatten": { + "version": "1.0.3", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "follow-redirects": { + "version": "1.14.4", + "dev": true + }, + "for-in": { + "version": "1.0.2", + "dev": true + }, + "fork-ts-checker-webpack-plugin": { + "version": "4.1.6", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "chalk": "^2.4.1", + "micromatch": "^3.1.10", + "minimatch": "^3.0.4", + "semver": "^5.6.0", + "tapable": "^1.0.0", + "worker-rpc": "^0.1.0" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-extendable": { + "version": "0.1.1", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "semver": { + "version": "5.7.1", + "dev": true + }, + "to-regex-range": { + "version": "2.1.1", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "form-data": { + "version": "3.0.1", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.2.0", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "dev": true + }, + "from2": { + "version": "2.3.0", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-extra": { + "version": "9.1.0", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "function.prototype.name": { + "version": "1.1.4", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2", + "functions-have-names": "^1.2.2" + } + }, + "functions-have-names": { + "version": "1.2.2", + "dev": true + }, + "get-own-enumerable-property-symbols": { + "version": "3.0.2", + "dev": true + }, + "get-stream": { + "version": "5.2.0", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "dev": true + }, + "glob": { + "version": "7.1.7", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "global-modules": { + "version": "2.0.0", + "dev": true, + "requires": { + "global-prefix": "^3.0.0" + } + }, + "global-prefix": { + "version": "3.0.0", + "dev": true, + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "globals": { + "version": "11.12.0", + "dev": true + }, + "growly": { + "version": "1.3.0", + "dev": true, + "optional": true + }, + "gud": { + "version": "1.0.0" + }, + "gzip-size": { + "version": "5.1.1", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "pify": "^4.0.1" + } + }, + "handle-thing": { + "version": "2.0.1", + "dev": true + }, + "harmony-reflect": { + "version": "1.6.2", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.1.0", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "dev": true + } + } + }, + "hash.js": { + "version": "1.1.7", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hex-color-regex": { + "version": "1.1.0", + "dev": true + }, + "history": { + "version": "4.10.1", + "requires": { + "@babel/runtime": "^7.1.2", + "loose-envify": "^1.2.0", + "resolve-pathname": "^3.0.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0", + "value-equal": "^1.0.1" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hoist-non-react-statics": { + "version": "3.3.2", + "requires": { + "react-is": "^16.7.0" + }, + "dependencies": { + "react-is": { + "version": "16.13.1" + } + } + }, + "hoopy": { + "version": "0.1.4", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "hsl-regex": { + "version": "1.0.0", + "dev": true + }, + "hsla-regex": { + "version": "1.0.0", + "dev": true + }, + "html-element-map": { + "version": "1.3.1", + "dev": true, + "requires": { + "array.prototype.filter": "^1.0.0", + "call-bind": "^1.0.2" + } + }, + "html-encoding-sniffer": { + "version": "2.0.1", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.5" + } + }, + "html-entities": { + "version": "1.4.0", + "dev": true + }, + "html-minifier-terser": { + "version": "5.1.1", + "dev": true, + "requires": { + "camel-case": "^4.1.1", + "clean-css": "^4.2.3", + "commander": "^4.1.1", + "he": "^1.2.0", + "param-case": "^3.0.3", + "relateurl": "^0.2.7", + "terser": "^4.6.3" + } + }, + "html-webpack-plugin": { + "version": "4.5.0", + "dev": true, + "requires": { + "@types/html-minifier-terser": "^5.0.0", + "@types/tapable": "^1.0.5", + "@types/webpack": "^4.41.8", + "html-minifier-terser": "^5.0.1", + "loader-utils": "^1.2.3", + "lodash": "^4.17.15", + "pretty-error": "^2.1.1", + "tapable": "^1.1.3", + "util.promisify": "1.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "htmlparser2": { + "version": "4.1.0", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^3.0.0", + "domutils": "^2.0.0", + "entities": "^2.0.0" + }, + "dependencies": { + "domhandler": { + "version": "3.3.0", + "dev": true, + "requires": { + "domelementtype": "^2.0.1" + } + } + } + }, + "http-deceiver": { + "version": "1.2.7", + "dev": true + }, + "http-errors": { + "version": "1.7.2", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.5.3", + "dev": true + }, + "http-proxy": { + "version": "1.18.1", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.19.1", + "dev": true, + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-extendable": { + "version": "0.1.1", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "to-regex-range": { + "version": "2.1.1", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "https-browserify": { + "version": "1.0.0", + "dev": true + }, + "human-signals": { + "version": "1.1.1", + "dev": true + }, + "i": { + "version": "0.3.6" + }, + "iconv-lite": { + "version": "0.4.24", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "4.1.1", + "dev": true, + "requires": { + "postcss": "^7.0.14" + } + }, + "identity-obj-proxy": { + "version": "3.0.0", + "dev": true, + "requires": { + "harmony-reflect": "^1.4.6" + } + }, + "ieee754": { + "version": "1.2.1", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "dev": true + }, + "immer": { + "version": "8.0.1", + "dev": true + }, + "import-cwd": { + "version": "2.1.0", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-from": { + "version": "2.1.0", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "dev": true + } + } + }, + "import-local": { + "version": "3.0.2", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + } + } + }, + "indexes-of": { + "version": "1.0.1", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "dev": true + }, + "ini": { + "version": "1.3.8", + "dev": true + }, + "internal-ip": { + "version": "4.3.0", + "dev": true, + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + } + }, + "ip": { + "version": "1.1.5", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.1", + "dev": true + }, + "is-absolute-url": { + "version": "2.1.0", + "dev": true + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-arguments": { + "version": "1.1.1", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-color-stop": { + "version": "1.1.0", + "dev": true, + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-directory": { + "version": "0.3.1", + "dev": true + }, + "is-docker": { + "version": "2.2.1", + "dev": true + }, + "is-extendable": { + "version": "1.0.1", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + }, + "dependencies": { + "is-plain-object": { + "version": "2.0.4", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "is-generator-fn": { + "version": "2.1.0", + "dev": true + }, + "is-module": { + "version": "1.0.0", + "dev": true + }, + "is-obj": { + "version": "1.0.1", + "dev": true + }, + "is-path-cwd": { + "version": "2.2.0", + "dev": true + }, + "is-path-in-cwd": { + "version": "2.1.0", + "dev": true, + "requires": { + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "dev": true + }, + "is-plain-object": { + "version": "5.0.0" + }, + "is-potential-custom-element-name": { + "version": "1.0.1", + "dev": true + }, + "is-regexp": { + "version": "1.0.0", + "dev": true + }, + "is-resolvable": { + "version": "1.1.0", + "dev": true + }, + "is-root": { + "version": "2.1.0", + "dev": true + }, + "is-subset": { + "version": "0.1.1", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "0.0.1" + }, + "isobject": { + "version": "3.0.1", + "dev": true + }, + "jest": { + "version": "26.6.0", + "dev": true, + "requires": { + "@jest/core": "^26.6.0", + "import-local": "^3.0.2", + "jest-cli": "^26.6.0" + } + }, + "jest-canvas-mock": { + "version": "2.3.1", + "dev": true, + "requires": { + "cssfontparser": "^1.2.1", + "moo-color": "^1.0.2" + } + }, + "jest-changed-files": { + "version": "26.6.2", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "execa": "^4.0.0", + "throat": "^5.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.14", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-circus": { + "version": "26.6.0", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^26.6.0", + "@jest/test-result": "^26.6.0", + "@jest/types": "^26.6.0", + "@types/babel__traverse": "^7.0.4", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^26.6.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^26.6.0", + "jest-matcher-utils": "^26.6.0", + "jest-message-util": "^26.6.0", + "jest-runner": "^26.6.0", + "jest-runtime": "^26.6.0", + "jest-snapshot": "^26.6.0", + "jest-util": "^26.6.0", + "pretty-format": "^26.6.0", + "stack-utils": "^2.0.2", + "throat": "^5.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.14", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "pretty-format": { + "version": "26.6.2", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-cli": { + "version": "26.6.3", + "dev": true, + "requires": { + "@jest/core": "^26.6.3", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "is-ci": "^2.0.0", + "jest-config": "^26.6.3", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "prompts": "^2.0.1", + "yargs": "^15.4.1" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.14", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-config": { + "version": "26.6.3", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^26.6.3", + "@jest/types": "^26.6.2", + "babel-jest": "^26.6.3", + "chalk": "^4.0.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "jest-environment-jsdom": "^26.6.2", + "jest-environment-node": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-jasmine2": "^26.6.3", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.14", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "jest-get-type": { + "version": "26.3.0", + "dev": true + }, + "jest-resolve": { + "version": "26.6.2", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "dev": true + }, + "pretty-format": { + "version": "26.6.2", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + }, + "read-pkg": { + "version": "5.2.0", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-fest": { + "version": "0.8.1", + "dev": true + } + } + }, + "jest-diff": { + "version": "27.2.0", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^27.0.6", + "jest-get-type": "^27.0.6", + "pretty-format": "^27.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-docblock": { + "version": "26.0.0", + "dev": true, + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "26.6.2", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.14", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "jest-get-type": { + "version": "26.3.0", + "dev": true + }, + "pretty-format": { + "version": "26.6.2", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-environment-jsdom": { + "version": "26.6.2", + "dev": true, + "requires": { + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2", + "jsdom": "^16.4.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.14", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-environment-node": { + "version": "26.6.2", + "dev": true, + "requires": { + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.14", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-fetch-mock": { + "version": "3.0.3", + "dev": true, + "requires": { + "cross-fetch": "^3.0.4", + "promise-polyfill": "^8.1.3" + } + }, + "jest-get-type": { + "version": "27.0.6", + "dev": true + }, + "jest-haste-map": { + "version": "26.6.2", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.1.2", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^26.0.0", + "jest-serializer": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.14", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-jasmine2": { + "version": "26.6.3", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^26.6.2", + "is-generator-fn": "^2.0.0", + "jest-each": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2", + "throat": "^5.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.14", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "pretty-format": { + "version": "26.6.2", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-leak-detector": { + "version": "26.6.2", + "dev": true, + "requires": { + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.14", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "jest-get-type": { + "version": "26.3.0", + "dev": true + }, + "pretty-format": { + "version": "26.6.2", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-matcher-utils": { + "version": "26.6.2", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.14", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "diff-sequences": { + "version": "26.6.2", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "jest-diff": { + "version": "26.6.2", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + } + }, + "jest-get-type": { + "version": "26.3.0", + "dev": true + }, + "pretty-format": { + "version": "26.6.2", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-message-util": { + "version": "26.6.2", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.2" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.14", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "pretty-format": { + "version": "26.6.2", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-mock": { + "version": "26.6.2", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.14", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-pnp-resolver": { + "version": "1.2.2", + "dev": true, + "requires": {} + }, + "jest-regex-util": { + "version": "26.0.0", + "dev": true + }, + "jest-resolve": { + "version": "26.6.0", + "dev": true, + "requires": { + "@jest/types": "^26.6.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.0", + "read-pkg-up": "^7.0.1", + "resolve": "^1.17.0", + "slash": "^3.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.14", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-fest": { + "version": "0.8.1", + "dev": true + } + } + }, + "jest-resolve-dependencies": { + "version": "26.6.3", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-snapshot": "^26.6.2" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.14", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-runner": { + "version": "26.6.3", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.7.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-docblock": "^26.0.0", + "jest-haste-map": "^26.6.2", + "jest-leak-detector": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "source-map-support": "^0.5.6", + "throat": "^5.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.14", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "jest-resolve": { + "version": "26.6.2", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-fest": { + "version": "0.8.1", + "dev": true + } + } + }, + "jest-runtime": { + "version": "26.6.3", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/globals": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0", + "cjs-module-lexer": "^0.6.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^15.4.1" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.14", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "jest-resolve": { + "version": "26.6.2", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-fest": { + "version": "0.8.1", + "dev": true + } + } + }, + "jest-serializer": { + "version": "26.6.2", + "dev": true, + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + } + }, + "jest-snapshot": { + "version": "26.6.2", + "dev": true, + "requires": { + "@babel/types": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.0.0", + "chalk": "^4.0.0", + "expect": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-haste-map": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "natural-compare": "^1.4.0", + "pretty-format": "^26.6.2", + "semver": "^7.3.2" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.14", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "diff-sequences": { + "version": "26.6.2", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "jest-diff": { + "version": "26.6.2", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + } + }, + "jest-get-type": { + "version": "26.3.0", + "dev": true + }, + "jest-resolve": { + "version": "26.6.2", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "dev": true + }, + "pretty-format": { + "version": "26.6.2", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + }, + "read-pkg": { + "version": "5.2.0", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-fest": { + "version": "0.8.1", + "dev": true + } + } + }, + "jest-util": { + "version": "26.6.2", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.14", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-validate": { + "version": "26.6.2", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "leven": "^3.1.0", + "pretty-format": "^26.6.2" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.14", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "jest-get-type": { + "version": "26.3.0", + "dev": true + }, + "pretty-format": { + "version": "26.6.2", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-watch-typeahead": { + "version": "0.6.1", + "dev": true, + "requires": { + "ansi-escapes": "^4.3.1", + "chalk": "^4.0.0", + "jest-regex-util": "^26.0.0", + "jest-watcher": "^26.3.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-watcher": { + "version": "26.6.2", + "dev": true, + "requires": { + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^26.6.2", + "string-length": "^4.0.1" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.14", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-worker": { + "version": "26.6.2", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jquery": { + "version": "3.6.0" + }, + "jquery.flot.tooltip": { + "version": "0.9.0" + }, + "jsdom": { + "version": "16.7.0", + "dev": true, + "requires": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "8.5.0", + "dev": true + } + } + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "dev": true + }, + "json3": { + "version": "3.3.3", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "jsx-ast-utils": { + "version": "3.2.0", + "dev": true, + "requires": { + "array-includes": "^3.1.2", + "object.assign": "^4.1.2" + } + }, + "just-extend": { + "version": "4.2.1", + "dev": true + }, + "killable": { + "version": "1.0.1", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "dev": true + }, + "kleur": { + "version": "3.0.3", + "dev": true + }, + "klona": { + "version": "2.0.4" + }, + "language-subtag-registry": { + "version": "0.3.21", + "dev": true + }, + "language-tags": { + "version": "1.0.5", + "dev": true, + "requires": { + "language-subtag-registry": "~0.3.2" + } + }, + "last-call-webpack-plugin": { + "version": "3.0.0", + "dev": true, + "requires": { + "lodash": "^4.17.5", + "webpack-sources": "^1.1.0" + } + }, + "leven": { + "version": "3.1.0", + "dev": true + }, + "lines-and-columns": { + "version": "1.1.6", + "dev": true + }, + "loader-runner": { + "version": "2.4.0", + "dev": true + }, + "loader-utils": { + "version": "2.0.0", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8" + }, + "lodash.escape": { + "version": "4.0.1", + "dev": true + }, + "lodash.get": { + "version": "4.4.2", + "dev": true + }, + "lodash.isequal": { + "version": "4.5.0", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "dev": true + }, + "lodash.template": { + "version": "4.5.0", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.2.0", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0" + } + }, + "lodash.throttle": { + "version": "4.1.1" + }, + "lodash.uniq": { + "version": "4.5.0", + "dev": true + }, + "loglevel": { + "version": "1.7.1", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lower-case": { + "version": "2.0.2", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, + "magic-string": { + "version": "0.25.7", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "make-dir": { + "version": "2.1.0", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "dev": true + } + } + }, + "makeerror": { + "version": "1.0.11", + "dev": true, + "requires": { + "tmpl": "1.0.x" + } + }, + "map-cache": { + "version": "0.2.2", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-data": { + "version": "2.0.4", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "dev": true + }, + "memory-fs": { + "version": "0.4.1", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "dev": true + }, + "merge-stream": { + "version": "2.0.0", + "dev": true + }, + "methods": { + "version": "1.1.2", + "dev": true + }, + "microevent.ts": { + "version": "0.1.1", + "dev": true + }, + "miller-rabin": { + "version": "4.0.1", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "dev": true + } + } + }, + "mime": { + "version": "1.6.0", + "dev": true + }, + "mime-db": { + "version": "1.49.0", + "dev": true + }, + "mime-types": { + "version": "2.1.32", + "dev": true, + "requires": { + "mime-db": "1.49.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "dev": true + }, + "mini-create-react-context": { + "version": "0.4.1", + "requires": { + "@babel/runtime": "^7.12.1", + "tiny-warning": "^1.0.3" + } + }, + "mini-css-extract-plugin": { + "version": "0.11.3", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "schema-utils": { + "version": "1.0.0", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "dev": true + }, + "minipass": { + "version": "3.1.3", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-collect": { + "version": "1.0.2", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mississippi": { + "version": "3.0.0", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + } + }, + "moment": { + "version": "2.29.1" + }, + "moment-timezone": { + "version": "0.5.33", + "requires": { + "moment": ">= 2.9.0" + } + }, + "moo": { + "version": "0.5.1", + "dev": true + }, + "moo-color": { + "version": "1.0.2", + "dev": true, + "requires": { + "color-name": "^1.1.4" + }, + "dependencies": { + "color-name": { + "version": "1.1.4", + "dev": true + } + } + }, + "move-concurrently": { + "version": "1.0.1", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "multicast-dns": { + "version": "6.2.3", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "dev": true + }, + "mutationobserver-shim": { + "version": "0.3.7", + "dev": true + }, + "nan": { + "version": "2.15.0", + "dev": true, + "optional": true + }, + "nanoid": { + "version": "3.1.25" + }, + "nanomatch": { + "version": "1.2.13", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "native-url": { + "version": "0.2.6", + "dev": true, + "requires": { + "querystring": "^0.2.0" + } + }, + "nearley": { + "version": "2.20.1", + "dev": true, + "requires": { + "commander": "^2.19.0", + "moo": "^0.5.0", + "railroad-diagrams": "^1.0.0", + "randexp": "0.4.6" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "dev": true + } + } + }, + "negotiator": { + "version": "0.6.2", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "dev": true + }, + "next-tick": { + "version": "1.0.0", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "dev": true + }, + "nise": { + "version": "5.1.0", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0", + "@sinonjs/fake-timers": "^7.0.4", + "@sinonjs/text-encoding": "^0.7.1", + "just-extend": "^4.0.2", + "path-to-regexp": "^1.7.0" + } + }, + "no-case": { + "version": "3.0.4", + "dev": true, + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node-fetch": { + "version": "2.6.1", + "dev": true + }, + "node-forge": { + "version": "0.10.0", + "dev": true + }, + "node-int64": { + "version": "0.4.0", + "dev": true + }, + "node-libs-browser": { + "version": "2.2.1", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "dev": true + } + } + }, + "node-modules-regexp": { + "version": "1.0.0", + "dev": true + }, + "node-notifier": { + "version": "8.0.2", + "dev": true, + "optional": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^2.2.0", + "semver": "^7.3.2", + "shellwords": "^0.1.1", + "uuid": "^8.3.0", + "which": "^2.0.2" + } + }, + "normalize-range": { + "version": "0.1.2", + "dev": true + }, + "normalize-url": { + "version": "1.9.1", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + }, + "npm-run-path": { + "version": "4.0.1", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "nth-check": { + "version": "2.0.0", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "dev": true + }, + "nwsapi": { + "version": "2.2.0", + "dev": true + }, + "object-assign": { + "version": "4.1.1" + }, + "object-copy": { + "version": "0.1.0", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "dev": true + } + } + }, + "kind-of": { + "version": "3.2.2", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-is": { + "version": "1.1.5", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "object-visit": { + "version": "1.0.1", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.entries": { + "version": "1.1.4", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.2" + } + }, + "object.fromentries": { + "version": "2.0.4", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2", + "has": "^1.0.3" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.2", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2" + } + }, + "object.pick": { + "version": "1.3.0", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "obuf": { + "version": "1.1.2", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "dev": true + }, + "onetime": { + "version": "5.1.2", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "7.4.2", + "dev": true, + "requires": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + } + }, + "opn": { + "version": "5.5.0", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + }, + "dependencies": { + "is-wsl": { + "version": "1.1.0", + "dev": true + } + } + }, + "optimize-css-assets-webpack-plugin": { + "version": "5.0.4", + "dev": true, + "requires": { + "cssnano": "^4.1.10", + "last-call-webpack-plugin": "^3.0.0" + } + }, + "original": { + "version": "1.0.2", + "dev": true, + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "dev": true + }, + "p-each-series": { + "version": "2.2.0", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "dev": true + }, + "p-map": { + "version": "4.0.0", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-retry": { + "version": "3.0.1", + "dev": true, + "requires": { + "retry": "^0.12.0" + } + }, + "pako": { + "version": "1.0.11", + "dev": true + }, + "parallel-transform": { + "version": "1.2.0", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "param-case": { + "version": "3.0.4", + "dev": true, + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "parse-asn1": { + "version": "5.1.6", + "dev": true, + "requires": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "5.2.0", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse-srcset": { + "version": "1.0.2" + }, + "parse5": { + "version": "6.0.1", + "dev": true + }, + "parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "dev": true, + "requires": { + "parse5": "^6.0.1" + } + }, + "parseurl": { + "version": "1.3.3", + "dev": true + }, + "pascal-case": { + "version": "3.1.2", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "pascalcase": { + "version": "0.1.1", + "dev": true + }, + "path-browserify": { + "version": "0.0.1", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "dev": true + }, + "path-to-regexp": { + "version": "1.8.0", + "requires": { + "isarray": "0.0.1" + } + }, + "pbkdf2": { + "version": "3.1.2", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "dev": true + }, + "pify": { + "version": "4.0.1", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pirates": { + "version": "4.0.1", + "dev": true, + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, + "pnp-webpack-plugin": { + "version": "1.6.4", + "dev": true, + "requires": { + "ts-pnp": "^1.1.6" + } + }, + "popper.js": { + "version": "1.16.1" + }, + "portfinder": { + "version": "1.0.28", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "dev": true + }, + "postcss": { + "version": "7.0.36", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-attribute-case-insensitive": { + "version": "4.0.2", + "dev": true, + "requires": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^6.0.2" + } + }, + "postcss-browser-comments": { + "version": "3.0.0", + "dev": true, + "requires": { + "postcss": "^7" + } + }, + "postcss-calc": { + "version": "7.0.5", + "dev": true, + "requires": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "postcss-color-functional-notation": { + "version": "2.0.1", + "dev": true, + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-color-gray": { + "version": "5.0.0", + "dev": true, + "requires": { + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.5", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-color-hex-alpha": { + "version": "5.0.3", + "dev": true, + "requires": { + "postcss": "^7.0.14", + "postcss-values-parser": "^2.0.1" + } + }, + "postcss-color-mod-function": { + "version": "3.0.3", + "dev": true, + "requires": { + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-color-rebeccapurple": { + "version": "4.0.1", + "dev": true, + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-colormin": { + "version": "4.0.3", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "dev": true + } + } + }, + "postcss-convert-values": { + "version": "4.0.1", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "dev": true + } + } + }, + "postcss-custom-media": { + "version": "7.0.8", + "dev": true, + "requires": { + "postcss": "^7.0.14" + } + }, + "postcss-custom-properties": { + "version": "8.0.11", + "dev": true, + "requires": { + "postcss": "^7.0.17", + "postcss-values-parser": "^2.0.1" + } + }, + "postcss-custom-selectors": { + "version": "5.1.2", + "dev": true, + "requires": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^5.0.0-rc.3" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "dev": true + }, + "postcss-selector-parser": { + "version": "5.0.0", + "dev": true, + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-dir-pseudo-class": { + "version": "5.0.0", + "dev": true, + "requires": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^5.0.0-rc.3" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "dev": true + }, + "postcss-selector-parser": { + "version": "5.0.0", + "dev": true, + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-duplicates": { + "version": "4.0.2", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-empty": { + "version": "4.0.1", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-double-position-gradients": { + "version": "1.0.0", + "dev": true, + "requires": { + "postcss": "^7.0.5", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-env-function": { + "version": "2.0.2", + "dev": true, + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-flexbugs-fixes": { + "version": "4.2.1", + "dev": true, + "requires": { + "postcss": "^7.0.26" + } + }, + "postcss-focus-visible": { + "version": "4.0.0", + "dev": true, + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-focus-within": { + "version": "3.0.0", + "dev": true, + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-font-variant": { + "version": "4.0.1", + "dev": true, + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-gap-properties": { + "version": "2.0.0", + "dev": true, + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-image-set-function": { + "version": "3.0.1", + "dev": true, + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-initial": { + "version": "3.0.4", + "dev": true, + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-lab-function": { + "version": "2.0.1", + "dev": true, + "requires": { + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-load-config": { + "version": "2.1.2", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + }, + "dependencies": { + "cosmiconfig": { + "version": "5.2.1", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "resolve-from": { + "version": "3.0.0", + "dev": true + } + } + }, + "postcss-loader": { + "version": "3.0.0", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "schema-utils": { + "version": "1.0.0", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "postcss-logical": { + "version": "3.0.0", + "dev": true, + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-media-minmax": { + "version": "4.0.0", + "dev": true, + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-merge-longhand": { + "version": "4.0.11", + "dev": true, + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "dev": true + } + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-minify-font-values": { + "version": "4.0.2", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "dev": true + } + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "dev": true + } + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "dev": true + } + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "2.0.0", + "dev": true, + "requires": { + "postcss": "^7.0.5" + } + }, + "postcss-modules-local-by-default": { + "version": "3.0.3", + "dev": true, + "requires": { + "icss-utils": "^4.1.1", + "postcss": "^7.0.32", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "2.2.0", + "dev": true, + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" + } + }, + "postcss-modules-values": { + "version": "3.0.0", + "dev": true, + "requires": { + "icss-utils": "^4.0.0", + "postcss": "^7.0.6" + } + }, + "postcss-nesting": { + "version": "7.0.1", + "dev": true, + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-normalize": { + "version": "8.0.1", + "dev": true, + "requires": { + "@csstools/normalize.css": "^10.1.0", + "browserslist": "^4.6.2", + "postcss": "^7.0.17", + "postcss-browser-comments": "^3.0.0", + "sanitize.css": "^10.0.0" + } + }, + "postcss-normalize-charset": { + "version": "4.0.1", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-normalize-display-values": { + "version": "4.0.2", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "dev": true + } + } + }, + "postcss-normalize-positions": { + "version": "4.0.2", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "dev": true + } + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "dev": true + } + } + }, + "postcss-normalize-string": { + "version": "4.0.2", + "dev": true, + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "dev": true + } + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "dev": true + } + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "dev": true + } + } + }, + "postcss-normalize-url": { + "version": "4.0.1", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "normalize-url": { + "version": "3.3.0", + "dev": true + }, + "postcss-value-parser": { + "version": "3.3.1", + "dev": true + } + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.2", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "dev": true + } + } + }, + "postcss-ordered-values": { + "version": "4.1.2", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "dev": true + } + } + }, + "postcss-overflow-shorthand": { + "version": "2.0.0", + "dev": true, + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-page-break": { + "version": "2.0.0", + "dev": true, + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-place": { + "version": "4.0.1", + "dev": true, + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-preset-env": { + "version": "6.7.0", + "dev": true, + "requires": { + "autoprefixer": "^9.6.1", + "browserslist": "^4.6.4", + "caniuse-lite": "^1.0.30000981", + "css-blank-pseudo": "^0.1.4", + "css-has-pseudo": "^0.10.0", + "css-prefers-color-scheme": "^3.1.1", + "cssdb": "^4.4.0", + "postcss": "^7.0.17", + "postcss-attribute-case-insensitive": "^4.0.1", + "postcss-color-functional-notation": "^2.0.1", + "postcss-color-gray": "^5.0.0", + "postcss-color-hex-alpha": "^5.0.3", + "postcss-color-mod-function": "^3.0.3", + "postcss-color-rebeccapurple": "^4.0.1", + "postcss-custom-media": "^7.0.8", + "postcss-custom-properties": "^8.0.11", + "postcss-custom-selectors": "^5.1.2", + "postcss-dir-pseudo-class": "^5.0.0", + "postcss-double-position-gradients": "^1.0.0", + "postcss-env-function": "^2.0.2", + "postcss-focus-visible": "^4.0.0", + "postcss-focus-within": "^3.0.0", + "postcss-font-variant": "^4.0.0", + "postcss-gap-properties": "^2.0.0", + "postcss-image-set-function": "^3.0.1", + "postcss-initial": "^3.0.0", + "postcss-lab-function": "^2.0.1", + "postcss-logical": "^3.0.0", + "postcss-media-minmax": "^4.0.0", + "postcss-nesting": "^7.0.0", + "postcss-overflow-shorthand": "^2.0.0", + "postcss-page-break": "^2.0.0", + "postcss-place": "^4.0.1", + "postcss-pseudo-class-any-link": "^6.0.0", + "postcss-replace-overflow-wrap": "^3.0.0", + "postcss-selector-matches": "^4.0.0", + "postcss-selector-not": "^4.0.0" + } + }, + "postcss-pseudo-class-any-link": { + "version": "6.0.0", + "dev": true, + "requires": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^5.0.0-rc.3" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "dev": true + }, + "postcss-selector-parser": { + "version": "5.0.0", + "dev": true, + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-reduce-initial": { + "version": "4.0.3", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "4.0.2", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "dev": true + } + } + }, + "postcss-replace-overflow-wrap": { + "version": "3.0.0", + "dev": true, + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-safe-parser": { + "version": "5.0.2", + "dev": true, + "requires": { + "postcss": "^8.1.0" + }, + "dependencies": { + "postcss": { + "version": "8.3.6", + "dev": true, + "requires": { + "colorette": "^1.2.2", + "nanoid": "^3.1.23", + "source-map-js": "^0.6.2" + } + } + } + }, + "postcss-selector-matches": { + "version": "4.0.0", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "postcss": "^7.0.2" + } + }, + "postcss-selector-not": { + "version": "4.0.1", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "postcss": "^7.0.2" + } + }, + "postcss-selector-parser": { + "version": "6.0.6", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-svgo": { + "version": "4.0.3", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "dev": true + } + } + }, + "postcss-unique-selectors": { + "version": "4.0.1", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "4.1.0", + "dev": true + }, + "postcss-values-parser": { + "version": "2.0.1", + "dev": true, + "requires": { + "flatten": "^1.0.2", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "prepend-http": { + "version": "1.0.4", + "dev": true + }, + "pretty-bytes": { + "version": "5.6.0", + "dev": true + }, + "pretty-error": { + "version": "2.1.2", + "dev": true, + "requires": { + "lodash": "^4.17.20", + "renderkid": "^2.0.4" + } + }, + "pretty-format": { + "version": "27.2.0", + "dev": true, + "requires": { + "@jest/types": "^27.1.1", + "ansi-regex": "^5.0.0", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "dev": true + } + } + }, + "process": { + "version": "0.11.10", + "dev": true + }, + "promise": { + "version": "8.1.0", + "dev": true, + "requires": { + "asap": "~2.0.6" + } + }, + "promise-inflight": { + "version": "1.0.1", + "dev": true + }, + "promise-polyfill": { + "version": "8.2.0", + "dev": true + }, + "prompts": { + "version": "2.4.0", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "prop-types": { + "version": "15.7.2", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + }, + "dependencies": { + "react-is": { + "version": "16.13.1" + } + } + }, + "proxy-addr": { + "version": "2.0.7", + "dev": true, + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "psl": { + "version": "1.8.0", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "dev": true + } + } + }, + "pump": { + "version": "3.0.0", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "q": { + "version": "1.5.1", + "dev": true + }, + "qs": { + "version": "6.7.0", + "dev": true + }, + "query-string": { + "version": "4.3.4", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.1", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "dev": true + }, + "querystringify": { + "version": "2.2.0", + "dev": true + }, + "raf": { + "version": "3.4.1", + "dev": true, + "requires": { + "performance-now": "^2.1.0" + } + }, + "railroad-diagrams": { + "version": "1.0.0", + "dev": true + }, + "randexp": { + "version": "0.4.6", + "dev": true, + "requires": { + "discontinuous-range": "1.0.0", + "ret": "~0.1.10" + } + }, + "randomfill": { + "version": "1.0.4", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "dev": true + }, + "raw-body": { + "version": "2.4.0", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "dev": true + } + } + }, + "react": { + "version": "17.0.2", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "react-app-polyfill": { + "version": "2.0.0", + "dev": true, + "requires": { + "core-js": "^3.6.5", + "object-assign": "^4.1.1", + "promise": "^8.1.0", + "raf": "^3.4.1", + "regenerator-runtime": "^0.13.7", + "whatwg-fetch": "^3.4.1" + } + }, + "react-copy-to-clipboard": { + "version": "5.0.4", + "requires": { + "copy-to-clipboard": "^3", + "prop-types": "^15.5.8" + } + }, + "react-dev-utils": { + "version": "11.0.4", + "dev": true, + "requires": { + "@babel/code-frame": "7.10.4", + "address": "1.1.2", + "browserslist": "4.14.2", + "chalk": "2.4.2", + "cross-spawn": "7.0.3", + "detect-port-alt": "1.1.6", + "escape-string-regexp": "2.0.0", + "filesize": "6.1.0", + "find-up": "4.1.0", + "fork-ts-checker-webpack-plugin": "4.1.6", + "global-modules": "2.0.0", + "globby": "11.0.1", + "gzip-size": "5.1.1", + "immer": "8.0.1", + "is-root": "2.1.0", + "loader-utils": "2.0.0", + "open": "^7.0.2", + "pkg-up": "3.1.0", + "prompts": "2.4.0", + "react-error-overlay": "^6.0.9", + "recursive-readdir": "2.2.2", + "shell-quote": "1.7.2", + "strip-ansi": "6.0.0", + "text-table": "0.2.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "browserslist": { + "version": "4.14.2", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001125", + "electron-to-chromium": "^1.3.564", + "escalade": "^3.0.2", + "node-releases": "^1.1.61" + } + }, + "escape-string-regexp": { + "version": "2.0.0", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "globby": { + "version": "11.0.1", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + }, + "ignore": { + "version": "5.1.8", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "dev": true + }, + "pkg-up": { + "version": "3.1.0", + "dev": true, + "requires": { + "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "dev": true + } + } + } + } + }, + "react-dom": { + "version": "17.0.2", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "scheduler": "^0.20.2" + } + }, + "react-error-boundary": { + "version": "3.1.3", + "dev": true, + "requires": { + "@babel/runtime": "^7.12.5" + } + }, + "react-error-overlay": { + "version": "6.0.9", + "dev": true + }, + "react-is": { + "version": "17.0.2" + }, + "react-lifecycles-compat": { + "version": "3.0.4" + }, + "react-popper": { + "version": "1.3.11", + "requires": { + "@babel/runtime": "^7.1.2", + "@hypnosphi/create-react-context": "^0.3.1", + "deep-equal": "^1.1.1", + "popper.js": "^1.14.4", + "prop-types": "^15.6.1", + "typed-styles": "^0.0.7", + "warning": "^4.0.2" + } + }, + "react-refresh": { + "version": "0.8.3", + "dev": true + }, + "react-resize-detector": { + "version": "6.7.6", + "requires": { + "@types/resize-observer-browser": "^0.1.6", + "lodash.debounce": "^4.0.8", + "lodash.throttle": "^4.1.1", + "resize-observer-polyfill": "^1.5.1" + } + }, + "react-router": { + "version": "5.2.1", + "requires": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "hoist-non-react-statics": "^3.1.0", + "loose-envify": "^1.3.1", + "mini-create-react-context": "^0.4.0", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.6.2", + "react-is": "^16.6.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "dependencies": { + "react-is": { + "version": "16.13.1" + } + } + }, + "react-router-dom": { + "version": "5.3.0", + "requires": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.2", + "react-router": "5.2.1", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + } + }, + "react-scripts": { + "version": "4.0.3", + "dev": true, + "requires": { + "@babel/core": "7.12.3", + "@pmmmwh/react-refresh-webpack-plugin": "0.4.3", + "@svgr/webpack": "5.5.0", + "@typescript-eslint/eslint-plugin": "^4.5.0", + "@typescript-eslint/parser": "^4.5.0", + "babel-eslint": "^10.1.0", + "babel-jest": "^26.6.0", + "babel-loader": "8.1.0", + "babel-plugin-named-asset-import": "^0.3.7", + "babel-preset-react-app": "^10.0.0", + "bfj": "^7.0.2", + "camelcase": "^6.1.0", + "case-sensitive-paths-webpack-plugin": "2.3.0", + "css-loader": "4.3.0", + "dotenv": "8.2.0", + "dotenv-expand": "5.1.0", + "eslint": "^7.11.0", + "eslint-config-react-app": "^6.0.0", + "eslint-plugin-flowtype": "^5.2.0", + "eslint-plugin-import": "^2.22.1", + "eslint-plugin-jest": "^24.1.0", + "eslint-plugin-jsx-a11y": "^6.3.1", + "eslint-plugin-react": "^7.21.5", + "eslint-plugin-react-hooks": "^4.2.0", + "eslint-plugin-testing-library": "^3.9.2", + "eslint-webpack-plugin": "^2.5.2", + "file-loader": "6.1.1", + "fs-extra": "^9.0.1", + "fsevents": "^2.1.3", + "html-webpack-plugin": "4.5.0", + "identity-obj-proxy": "3.0.0", + "jest": "26.6.0", + "jest-circus": "26.6.0", + "jest-resolve": "26.6.0", + "jest-watch-typeahead": "0.6.1", + "mini-css-extract-plugin": "0.11.3", + "optimize-css-assets-webpack-plugin": "5.0.4", + "pnp-webpack-plugin": "1.6.4", + "postcss-flexbugs-fixes": "4.2.1", + "postcss-loader": "3.0.0", + "postcss-normalize": "8.0.1", + "postcss-preset-env": "6.7.0", + "postcss-safe-parser": "5.0.2", + "prompts": "2.4.0", + "react-app-polyfill": "^2.0.0", + "react-dev-utils": "^11.0.3", + "react-refresh": "^0.8.3", + "resolve": "1.18.1", + "resolve-url-loader": "^3.1.2", + "sass-loader": "^10.0.5", + "semver": "7.3.2", + "style-loader": "1.3.0", + "terser-webpack-plugin": "4.2.3", + "ts-pnp": "1.2.0", + "url-loader": "4.1.1", + "webpack": "4.44.2", + "webpack-dev-server": "3.11.1", + "webpack-manifest-plugin": "2.2.0", + "workbox-webpack-plugin": "5.1.4" + }, + "dependencies": { + "@babel/core": { + "version": "7.12.3", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.1", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.1", + "@babel/parser": "^7.12.3", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "dev": true + } + } + }, + "resolve": { + "version": "1.18.1", + "dev": true, + "requires": { + "is-core-module": "^2.0.0", + "path-parse": "^1.0.6" + } + }, + "sass-loader": { + "version": "10.2.0", + "dev": true, + "requires": { + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "neo-async": "^2.6.2", + "schema-utils": "^3.0.0", + "semver": "^7.3.2" + } + }, + "schema-utils": { + "version": "3.1.1", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "semver": { + "version": "7.3.2", + "dev": true + } + } + }, + "react-shallow-renderer": { + "version": "16.14.1", + "requires": { + "object-assign": "^4.1.1", + "react-is": "^16.12.0 || ^17.0.0" + } + }, + "react-test-renderer": { + "version": "17.0.2", + "requires": { + "object-assign": "^4.1.1", + "react-is": "^17.0.2", + "react-shallow-renderer": "^16.13.1", + "scheduler": "^0.20.2" + } + }, + "react-transition-group": { + "version": "2.9.0", + "requires": { + "dom-helpers": "^3.4.0", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2", + "react-lifecycles-compat": "^3.0.4" + } + }, + "reactstrap": { + "version": "8.10.0", + "requires": { + "@babel/runtime": "^7.12.5", + "classnames": "^2.2.3", + "prop-types": "^15.5.8", + "react-popper": "^1.3.6", + "react-transition-group": "^2.3.1" + } + }, + "readdirp": { + "version": "3.6.0", + "requires": { + "picomatch": "^2.2.1" + } + }, + "recursive-readdir": { + "version": "2.2.2", + "dev": true, + "requires": { + "minimatch": "3.0.4" + } + }, + "regenerate": { + "version": "1.4.2", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "9.0.0", + "dev": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.13.9" + }, + "regenerator-transform": { + "version": "0.14.5", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-not": { + "version": "1.0.2", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regex-parser": { + "version": "2.2.11", + "dev": true + }, + "regexp.prototype.flags": { + "version": "1.3.1", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "regexpu-core": { + "version": "4.8.0", + "dev": true, + "requires": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + } + }, + "regjsgen": { + "version": "0.5.2", + "dev": true + }, + "regjsparser": { + "version": "0.7.0", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "dev": true + }, + "renderkid": { + "version": "2.0.7", + "dev": true, + "requires": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "dev": true + }, + "htmlparser2": { + "version": "6.1.0", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "repeat-element": { + "version": "1.1.4", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "dev": true + }, + "resize-observer-polyfill": { + "version": "1.5.1" + }, + "resolve-cwd": { + "version": "3.0.0", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "dev": true + } + } + }, + "resolve-pathname": { + "version": "3.0.0" + }, + "resolve-url": { + "version": "0.2.1", + "dev": true + }, + "resolve-url-loader": { + "version": "3.1.4", + "dev": true, + "requires": { + "adjust-sourcemap-loader": "3.0.0", + "camelcase": "5.3.1", + "compose-function": "3.0.3", + "convert-source-map": "1.7.0", + "es6-iterator": "2.0.3", + "loader-utils": "1.2.3", + "postcss": "7.0.36", + "rework": "1.0.1", + "rework-visit": "1.0.0", + "source-map": "0.6.1" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "emojis-list": { + "version": "2.1.0", + "dev": true + }, + "json5": { + "version": "1.0.1", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.2.3", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "source-map": { + "version": "0.6.1", + "dev": true + } + } + }, + "ret": { + "version": "0.1.15", + "dev": true + }, + "retry": { + "version": "0.12.0", + "dev": true + }, + "rework": { + "version": "1.0.1", + "dev": true, + "requires": { + "convert-source-map": "^0.3.3", + "css": "^2.0.0" + }, + "dependencies": { + "convert-source-map": { + "version": "0.3.5", + "dev": true + } + } + }, + "rework-visit": { + "version": "1.0.0", + "dev": true + }, + "rgb-regex": { + "version": "1.0.1", + "dev": true + }, + "rgba-regex": { + "version": "1.0.0", + "dev": true + }, + "ripemd160": { + "version": "2.0.2", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rollup": { + "version": "1.32.1", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/node": "*", + "acorn": "^7.1.0" + } + }, + "rollup-plugin-babel": { + "version": "4.4.0", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "rollup-plugin-terser": { + "version": "5.3.1", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "jest-worker": "^24.9.0", + "rollup-pluginutils": "^2.8.2", + "serialize-javascript": "^4.0.0", + "terser": "^4.6.2" + }, + "dependencies": { + "jest-worker": { + "version": "24.9.0", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + } + }, + "serialize-javascript": { + "version": "4.0.0", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "supports-color": { + "version": "6.1.0", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "rollup-pluginutils": { + "version": "2.8.2", + "dev": true, + "requires": { + "estree-walker": "^0.6.1" + }, + "dependencies": { + "estree-walker": { + "version": "0.6.1", + "dev": true + } + } + }, + "rst-selector-parser": { + "version": "2.2.3", + "dev": true, + "requires": { + "lodash.flattendeep": "^4.4.0", + "nearley": "^2.7.10" + } + }, + "rsvp": { + "version": "4.8.5", + "dev": true + }, + "run-queue": { + "version": "1.0.3", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "safe-regex": { + "version": "1.1.0", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "dev": true + }, + "sane": { + "version": "4.1.0", + "dev": true, + "requires": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "braces": { + "version": "2.3.2", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "cross-spawn": { + "version": "6.0.5", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "1.0.0", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "fill-range": { + "version": "4.0.0", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "get-stream": { + "version": "4.1.0", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-stream": { + "version": "1.1.0", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "normalize-path": { + "version": "2.1.1", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "npm-run-path": { + "version": "2.0.2", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "path-key": { + "version": "2.0.1", + "dev": true + }, + "semver": { + "version": "5.7.1", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "dev": true + }, + "to-regex-range": { + "version": "2.1.1", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "which": { + "version": "1.3.1", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "sanitize-html": { + "version": "2.5.0", + "requires": { + "deepmerge": "^4.2.2", + "escape-string-regexp": "^4.0.0", + "htmlparser2": "^6.0.0", + "is-plain-object": "^5.0.0", + "klona": "^2.0.3", + "parse-srcset": "^1.0.2", + "postcss": "^8.0.2" + }, + "dependencies": { + "escape-string-regexp": { + "version": "4.0.0" + }, + "htmlparser2": { + "version": "6.1.0", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "postcss": { + "version": "8.3.6", + "requires": { + "colorette": "^1.2.2", + "nanoid": "^3.1.23", + "source-map-js": "^0.6.2" + } + } + } + }, + "sanitize.css": { + "version": "10.0.0", + "dev": true + }, + "sass": { + "version": "1.39.0", + "requires": { + "chokidar": ">=3.0.0 <4.0.0" + } + }, + "sax": { + "version": "1.2.4", + "dev": true + }, + "saxes": { + "version": "5.0.1", + "dev": true, + "requires": { + "xmlchars": "^2.2.0" + } + }, + "scheduler": { + "version": "0.20.2", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "schema-utils": { + "version": "2.7.1", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + }, + "select-hose": { + "version": "2.0.0", + "dev": true + }, + "selfsigned": { + "version": "1.10.11", + "dev": true, + "requires": { + "node-forge": "^0.10.0" + } + }, + "send": { + "version": "0.17.1", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "dev": true + } + } + }, + "ms": { + "version": "2.1.1", + "dev": true + } + } + }, + "serve-index": { + "version": "1.9.1", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "dev": true + }, + "ms": { + "version": "2.0.0", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "dev": true + } + } + }, + "serve-static": { + "version": "1.14.1", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-value": { + "version": "2.0.1", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shell-quote": { + "version": "1.7.2", + "dev": true + }, + "shellwords": { + "version": "0.1.1", + "dev": true, + "optional": true + }, + "simple-swizzle": { + "version": "0.2.2", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "dev": true + } + } + }, + "sinon": { + "version": "11.1.2", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.8.3", + "@sinonjs/fake-timers": "^7.1.2", + "@sinonjs/samsam": "^6.0.2", + "diff": "^5.0.0", + "nise": "^5.1.0", + "supports-color": "^7.2.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "sisteransi": { + "version": "1.0.5", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "dev": true + }, + "ms": { + "version": "2.0.0", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sockjs": { + "version": "0.3.21", + "dev": true, + "requires": { + "faye-websocket": "^0.11.3", + "uuid": "^3.4.0", + "websocket-driver": "^0.7.4" + }, + "dependencies": { + "uuid": { + "version": "3.4.0", + "dev": true + } + } + }, + "sockjs-client": { + "version": "1.5.2", + "dev": true, + "requires": { + "debug": "^3.2.6", + "eventsource": "^1.0.7", + "faye-websocket": "^0.11.3", + "inherits": "^2.0.4", + "json3": "^3.3.3", + "url-parse": "^1.5.3" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "sort-keys": { + "version": "1.1.2", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "source-list-map": { + "version": "2.0.1", + "dev": true + }, + "source-map-js": { + "version": "0.6.2" + }, + "source-map-resolve": { + "version": "0.5.3", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.1", + "dev": true + }, + "sourcemap-codec": { + "version": "1.4.8", + "dev": true + }, + "spdy": { + "version": "4.0.2", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "split-string": { + "version": "3.1.0", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "ssri": { + "version": "8.0.1", + "dev": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "stable": { + "version": "0.1.8", + "dev": true + }, + "stack-utils": { + "version": "2.0.3", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "dev": true + } + } + }, + "stackframe": { + "version": "1.2.0", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "dev": true + } + } + }, + "statuses": { + "version": "1.5.0", + "dev": true + }, + "stream-browserify": { + "version": "2.0.2", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.1", + "dev": true + }, + "strict-uri-encode": { + "version": "1.1.0", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "dev": true + } + } + }, + "string-length": { + "version": "4.0.2", + "dev": true, + "requires": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + } + }, + "string.prototype.matchall": { + "version": "4.0.5", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.2", + "get-intrinsic": "^1.1.1", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.3.1", + "side-channel": "^1.0.4" + } + }, + "string.prototype.trim": { + "version": "1.2.4", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2" + } + }, + "stringify-object": { + "version": "3.3.0", + "dev": true, + "requires": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + } + }, + "strip-comments": { + "version": "1.0.2", + "dev": true, + "requires": { + "babel-extract-comments": "^1.0.0", + "babel-plugin-transform-object-rest-spread": "^6.26.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "dev": true + }, + "style-loader": { + "version": "1.3.0", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^2.7.0" + } + }, + "stylehacks": { + "version": "4.0.3", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "supports-color": { + "version": "5.5.0", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-hyperlinks": { + "version": "2.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "svg-parser": { + "version": "2.0.4", + "dev": true + }, + "svgo": { + "version": "1.3.2", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "dependencies": { + "css-select": { + "version": "2.1.0", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-what": { + "version": "3.4.2", + "dev": true + }, + "dom-serializer": { + "version": "0.2.2", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "domutils": { + "version": "1.7.0", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + }, + "dependencies": { + "domelementtype": { + "version": "1.3.1", + "dev": true + } + } + }, + "nth-check": { + "version": "1.0.2", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + } + } + }, + "symbol-tree": { + "version": "3.2.4", + "dev": true + }, + "tar": { + "version": "6.1.11", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "dev": true + } + } + }, + "temp-dir": { + "version": "1.0.0", + "dev": true + }, + "tempusdominus-bootstrap-4": { + "version": "5.39.0", + "requires": { + "bootstrap": "^4.5.2", + "jquery": "^3.5.1", + "moment": "^2.29.0", + "moment-timezone": "^0.5.31", + "popper.js": "^1.16.1" + } + }, + "tempusdominus-core": { + "version": "5.19.0", + "requires": { + "jquery": "^3.5.0", + "moment": "~2.24.0", + "moment-timezone": "^0.5.28" + }, + "dependencies": { + "moment": { + "version": "2.24.0" + } + } + }, + "tempy": { + "version": "0.3.0", + "dev": true, + "requires": { + "temp-dir": "^1.0.0", + "type-fest": "^0.3.1", + "unique-string": "^1.0.0" + }, + "dependencies": { + "type-fest": { + "version": "0.3.1", + "dev": true + } + } + }, + "terminal-link": { + "version": "2.1.1", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + } + }, + "terser": { + "version": "4.8.0", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "4.2.3", + "dev": true, + "requires": { + "cacache": "^15.0.5", + "find-cache-dir": "^3.3.1", + "jest-worker": "^26.5.0", + "p-limit": "^3.0.2", + "schema-utils": "^3.0.0", + "serialize-javascript": "^5.0.1", + "source-map": "^0.6.1", + "terser": "^5.3.4", + "webpack-sources": "^1.4.3" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "dev": true + }, + "find-cache-dir": { + "version": "3.3.2", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "make-dir": { + "version": "3.1.0", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + }, + "dependencies": { + "p-limit": { + "version": "2.3.0", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + } + } + }, + "p-try": { + "version": "2.2.0", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "schema-utils": { + "version": "3.1.1", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "semver": { + "version": "6.3.0", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "dev": true + }, + "terser": { + "version": "5.8.0", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "dev": true + } + } + } + } + }, + "throat": { + "version": "5.0.0", + "dev": true + }, + "through2": { + "version": "2.0.5", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "thunky": { + "version": "1.1.0", + "dev": true + }, + "timers-browserify": { + "version": "2.0.12", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timsort": { + "version": "0.3.0", + "dev": true + }, + "tiny-invariant": { + "version": "1.1.0" + }, + "tiny-warning": { + "version": "1.0.3" + }, + "tmpl": { + "version": "1.0.5", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "toggle-selection": { + "version": "1.0.6" + }, + "toidentifier": { + "version": "1.0.0", + "dev": true + }, + "tough-cookie": { + "version": "4.0.0", + "dev": true, + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + }, + "dependencies": { + "universalify": { + "version": "0.1.2", + "dev": true + } + } + }, + "tr46": { + "version": "2.1.0", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, + "tryer": { + "version": "1.0.1", + "dev": true + }, + "ts-pnp": { + "version": "1.2.0", + "dev": true + }, + "tslib": { + "version": "2.3.1", + "dev": true + }, + "tty-browserify": { + "version": "0.0.0", + "dev": true + }, + "type": { + "version": "1.2.0", + "dev": true + }, + "type-fest": { + "version": "0.21.3", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typed-styles": { + "version": "0.0.7" + }, + "typedarray": { + "version": "0.0.6", + "dev": true + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "0.1.1", + "dev": true + } + } + }, + "uniq": { + "version": "1.0.1", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "dev": true + }, + "unique-filename": { + "version": "1.1.1", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unique-string": { + "version": "1.0.0", + "dev": true, + "requires": { + "crypto-random-string": "^1.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "dev": true + }, + "unquote": { + "version": "1.1.1", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "dev": true + }, + "urix": { + "version": "0.1.0", + "dev": true + }, + "url": { + "version": "0.11.0", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "dev": true + } + } + }, + "url-loader": { + "version": "4.1.1", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "url-parse": { + "version": "1.5.3", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1", + "dev": true + }, + "util": { + "version": "0.11.1", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "dev": true + } + } + }, + "util.promisify": { + "version": "1.0.0", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "utila": { + "version": "0.4.0", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "dev": true + }, + "uuid": { + "version": "8.3.2", + "dev": true, + "optional": true + }, + "v8-to-istanbul": { + "version": "7.1.2", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "dev": true + } + } + }, + "value-equal": { + "version": "1.0.1" + }, + "vary": { + "version": "1.1.2", + "dev": true + }, + "vendors": { + "version": "1.0.4", + "dev": true + }, + "vm-browserify": { + "version": "1.1.2", + "dev": true + }, + "w3c-hr-time": { + "version": "1.0.2", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "2.0.0", + "dev": true, + "requires": { + "xml-name-validator": "^3.0.0" + } + }, + "walker": { + "version": "1.0.7", + "dev": true, + "requires": { + "makeerror": "1.0.x" + } + }, + "warning": { + "version": "4.0.3", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "watchpack": { + "version": "1.7.5", + "dev": true, + "requires": { + "chokidar": "^3.4.1", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.1" + } + }, + "watchpack-chokidar2": { + "version": "2.0.1", + "dev": true, + "optional": true, + "requires": { + "chokidar": "^2.1.8" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "dev": true, + "optional": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "dev": true, + "optional": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "dev": true, + "optional": true + }, + "braces": { + "version": "2.3.2", + "dev": true, + "optional": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "dev": true, + "optional": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "chokidar": { + "version": "2.1.8", + "dev": true, + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "fill-range": { + "version": "4.0.0", + "dev": true, + "optional": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "dev": true, + "optional": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "dev": true, + "optional": true + }, + "is-number": { + "version": "3.0.0", + "dev": true, + "optional": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "dev": true, + "optional": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "dev": true, + "optional": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "readdirp": { + "version": "2.2.1", + "dev": true, + "optional": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "to-regex-range": { + "version": "2.1.1", + "dev": true, + "optional": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "wbuf": { + "version": "1.7.3", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "webidl-conversions": { + "version": "6.1.0", + "dev": true + }, + "webpack": { + "version": "4.44.2", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.3.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.2", + "dev": true + }, + "braces": { + "version": "2.3.2", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "cacache": { + "version": "12.0.4", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "chownr": { + "version": "1.1.4", + "dev": true + }, + "eslint-scope": { + "version": "4.0.3", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "estraverse": { + "version": "4.3.0", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-extendable": { + "version": "0.1.1", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-wsl": { + "version": "1.1.0", + "dev": true + }, + "json5": { + "version": "1.0.1", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "lru-cache": { + "version": "5.1.1", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "micromatch": { + "version": "3.1.10", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "rimraf": { + "version": "2.7.1", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "schema-utils": { + "version": "1.0.0", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "serialize-javascript": { + "version": "4.0.0", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "dev": true + }, + "ssri": { + "version": "6.0.2", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "terser-webpack-plugin": { + "version": "1.4.5", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "yallist": { + "version": "3.1.1", + "dev": true + } + } + }, + "webpack-dev-middleware": { + "version": "3.7.3", + "dev": true, + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "mime": { + "version": "2.5.2", + "dev": true + } + } + }, + "webpack-dev-server": { + "version": "3.11.1", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.3.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.8", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.26", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.8", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "sockjs-client": "^1.5.0", + "spdy": "^4.0.2", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "^13.3.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "dev": true + }, + "anymatch": { + "version": "2.0.0", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "dev": true + }, + "braces": { + "version": "2.3.2", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "camelcase": { + "version": "5.3.1", + "dev": true + }, + "chokidar": { + "version": "2.1.8", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "cliui": { + "version": "5.0.0", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "emoji-regex": { + "version": "7.0.3", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-up": { + "version": "3.0.0", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "import-local": { + "version": "2.0.0", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "is-absolute-url": { + "version": "3.0.3", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "locate-path": { + "version": "3.0.0", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "micromatch": { + "version": "3.1.10", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "p-limit": { + "version": "2.3.0", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "readdirp": { + "version": "2.2.1", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "6.3.0", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "6.1.0", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "ws": { + "version": "6.2.2", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "yargs": { + "version": "13.3.2", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "yargs-parser": { + "version": "13.1.2", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "ansi-colors": { + "version": "3.2.4", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "dev": true + } + } + }, + "webpack-manifest-plugin": { + "version": "2.2.0", + "dev": true, + "requires": { + "fs-extra": "^7.0.0", + "lodash": ">=3.5 <5", + "object.entries": "^1.1.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "fs-extra": { + "version": "7.0.1", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "universalify": { + "version": "0.1.2", + "dev": true + } + } + }, + "webpack-sources": { + "version": "1.4.3", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "dev": true + } + } + }, + "websocket-driver": { + "version": "0.7.4", + "dev": true, + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.5", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "dev": true + }, + "whatwg-url": { + "version": "8.7.0", + "dev": true, + "requires": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + } + }, + "workbox-background-sync": { + "version": "5.1.4", + "dev": true, + "requires": { + "workbox-core": "^5.1.4" + } + }, + "workbox-broadcast-update": { + "version": "5.1.4", + "dev": true, + "requires": { + "workbox-core": "^5.1.4" + } + }, + "workbox-build": { + "version": "5.1.4", + "dev": true, + "requires": { + "@babel/core": "^7.8.4", + "@babel/preset-env": "^7.8.4", + "@babel/runtime": "^7.8.4", + "@hapi/joi": "^15.1.0", + "@rollup/plugin-node-resolve": "^7.1.1", + "@rollup/plugin-replace": "^2.3.1", + "@surma/rollup-plugin-off-main-thread": "^1.1.1", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^8.1.0", + "glob": "^7.1.6", + "lodash.template": "^4.5.0", + "pretty-bytes": "^5.3.0", + "rollup": "^1.31.1", + "rollup-plugin-babel": "^4.3.3", + "rollup-plugin-terser": "^5.3.1", + "source-map": "^0.7.3", + "source-map-url": "^0.4.0", + "stringify-object": "^3.3.0", + "strip-comments": "^1.0.2", + "tempy": "^0.3.0", + "upath": "^1.2.0", + "workbox-background-sync": "^5.1.4", + "workbox-broadcast-update": "^5.1.4", + "workbox-cacheable-response": "^5.1.4", + "workbox-core": "^5.1.4", + "workbox-expiration": "^5.1.4", + "workbox-google-analytics": "^5.1.4", + "workbox-navigation-preload": "^5.1.4", + "workbox-precaching": "^5.1.4", + "workbox-range-requests": "^5.1.4", + "workbox-routing": "^5.1.4", + "workbox-strategies": "^5.1.4", + "workbox-streams": "^5.1.4", + "workbox-sw": "^5.1.4", + "workbox-window": "^5.1.4" + }, + "dependencies": { + "fs-extra": { + "version": "8.1.0", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "source-map": { + "version": "0.7.3", + "dev": true + }, + "universalify": { + "version": "0.1.2", + "dev": true + } + } + }, + "workbox-cacheable-response": { + "version": "5.1.4", + "dev": true, + "requires": { + "workbox-core": "^5.1.4" + } + }, + "workbox-core": { + "version": "5.1.4", + "dev": true + }, + "workbox-expiration": { + "version": "5.1.4", + "dev": true, + "requires": { + "workbox-core": "^5.1.4" + } + }, + "workbox-google-analytics": { + "version": "5.1.4", + "dev": true, + "requires": { + "workbox-background-sync": "^5.1.4", + "workbox-core": "^5.1.4", + "workbox-routing": "^5.1.4", + "workbox-strategies": "^5.1.4" + } + }, + "workbox-navigation-preload": { + "version": "5.1.4", + "dev": true, + "requires": { + "workbox-core": "^5.1.4" + } + }, + "workbox-precaching": { + "version": "5.1.4", + "dev": true, + "requires": { + "workbox-core": "^5.1.4" + } + }, + "workbox-range-requests": { + "version": "5.1.4", + "dev": true, + "requires": { + "workbox-core": "^5.1.4" + } + }, + "workbox-routing": { + "version": "5.1.4", + "dev": true, + "requires": { + "workbox-core": "^5.1.4" + } + }, + "workbox-strategies": { + "version": "5.1.4", + "dev": true, + "requires": { + "workbox-core": "^5.1.4", + "workbox-routing": "^5.1.4" + } + }, + "workbox-streams": { + "version": "5.1.4", + "dev": true, + "requires": { + "workbox-core": "^5.1.4", + "workbox-routing": "^5.1.4" + } + }, + "workbox-sw": { + "version": "5.1.4", + "dev": true + }, + "workbox-webpack-plugin": { + "version": "5.1.4", + "dev": true, + "requires": { + "@babel/runtime": "^7.5.5", + "fast-json-stable-stringify": "^2.0.0", + "source-map-url": "^0.4.0", + "upath": "^1.1.2", + "webpack-sources": "^1.3.0", + "workbox-build": "^5.1.4" + } + }, + "workbox-window": { + "version": "5.1.4", + "dev": true, + "requires": { + "workbox-core": "^5.1.4" + } + }, + "worker-farm": { + "version": "1.7.0", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "worker-rpc": { + "version": "0.1.1", + "dev": true, + "requires": { + "microevent.ts": "~0.1.1" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + } + } + }, + "ws": { + "version": "7.5.5", + "dev": true, + "requires": {} + }, + "xml-name-validator": { + "version": "3.0.0", + "dev": true + }, + "xmlchars": { + "version": "2.2.0", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "dev": true + }, + "y18n": { + "version": "4.0.3", + "dev": true + }, + "yaml": { + "version": "1.10.2", + "dev": true + }, + "yargs": { + "version": "15.4.1", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "dev": true + } + } + }, + "yargs-parser": { + "version": "18.1.3", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "dev": true + } + } + } + } + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "hasha": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", + "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", + "dev": true, + "requires": { + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "ignore-walk": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", + "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true + }, + "is-core-module": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz", + "integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-number-object": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", + "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isomorphic-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", + "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", + "dev": true, + "requires": { + "node-fetch": "^2.6.1", + "whatwg-fetch": "^3.4.1" + } + }, + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", + "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", + "dev": true, + "requires": { + "append-transform": "^2.0.0" + } + }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "istanbul-lib-processinfo": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", + "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", + "dev": true, + "requires": { + "archy": "^1.0.0", + "cross-spawn": "^7.0.0", + "istanbul-lib-coverage": "^3.0.0-alpha.1", + "make-dir": "^3.0.0", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "uuid": "^3.3.3" + } + }, + "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==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "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 + } + } + }, + "istanbul-reports": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", + "dev": true + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lodash.set": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", + "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", + "dev": true + }, + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, + "log-symbols": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", + "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", + "dev": true, + "requires": { + "chalk": "^4.0.0" + } + }, + "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==", + "requires": { + "yallist": "^4.0.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "mocha": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.4.0.tgz", + "integrity": "sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ==", + "dev": true, + "requires": { + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.1", + "debug": "4.3.1", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.1.6", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "4.0.0", + "log-symbols": "4.0.0", + "minimatch": "3.0.4", + "ms": "2.1.3", + "nanoid": "3.1.20", + "serialize-javascript": "5.0.1", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "which": "2.0.2", + "wide-align": "1.1.3", + "workerpool": "6.1.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "js-yaml": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", + "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "nanoid": { + "version": "3.1.20", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", + "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "nock": { + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/nock/-/nock-13.1.3.tgz", + "integrity": "sha512-YKj0rKQWMGiiIO+Y65Ut8OEgYM3PplLU2+GAhnPmqZdBd6z5IskgdBqWmjzA6lH3RF0S2a3wiAlrMOF5Iv2Jeg==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "json-stringify-safe": "^5.0.1", + "lodash.set": "^4.3.2", + "propagate": "^2.0.0" + } + }, + "node-fetch": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.2.tgz", + "integrity": "sha512-aLoxToI6RfZ+0NOjmWAgn9+LEd30YCkJKFSyWacNZdEKTit/ZMcKjGkTRo8uWEsnIb/hfKecNPEbln02PdWbcA==", + "dev": true + }, + "node-preload": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", + "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", + "dev": true, + "requires": { + "process-on-spawn": "^1.0.0" + } + }, + "node-releases": { + "version": "1.1.75", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.75.tgz", + "integrity": "sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "nyc": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", + "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", + "dev": true, + "requires": { + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "caching-transform": "^4.0.0", + "convert-source-map": "^1.7.0", + "decamelize": "^1.2.0", + "find-cache-dir": "^3.2.0", + "find-up": "^4.1.0", + "foreground-child": "^2.0.0", + "get-package-type": "^0.1.0", + "glob": "^7.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-hook": "^3.0.0", + "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "make-dir": "^3.0.0", + "node-preload": "^0.2.1", + "p-map": "^3.0.0", + "process-on-spawn": "^1.0.0", + "resolve-from": "^5.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "spawn-wrap": "^2.0.0", + "test-exclude": "^6.0.0", + "yargs": "^15.0.2" + }, + "dependencies": { + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "object-inspect": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.values": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.4.tgz", + "integrity": "sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.2" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "package-hash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", + "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.15", + "hasha": "^5.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==" + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "prettier": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.0.tgz", + "integrity": "sha512-DsEPLY1dE5HF3BxCRBmD4uYZ+5DCbvatnolqTqcxEgKVZnL2kUfyu7b8pPQ5+hTBkdhU9SLUmK0/pHb07RE4WQ==", + "dev": true + }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "process-on-spawn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", + "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", + "dev": true, + "requires": { + "fromentries": "^1.2.0" + } + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "propagate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", + "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", + "dev": true + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "dependencies": { + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + } + } + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "release-zalgo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", + "dev": true, + "requires": { + "es6-error": "^4.0.1" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-support": { + "version": "0.5.20", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", + "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "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 + } + } + }, + "spawn-wrap": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", + "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", + "dev": true, + "requires": { + "foreground-child": "^2.0.0", + "is-windows": "^1.0.2", + "make-dir": "^3.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "which": "^2.0.1" + } + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz", + "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==", + "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "stream-events": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", + "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", + "dev": true, + "requires": { + "stubs": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "string-natural-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", + "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==", + "dev": true + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "stubs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", + "integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls=", + "dev": true + }, + "style-mod": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.0.0.tgz", + "integrity": "sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "table": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", + "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", + "dev": true, + "requires": { + "ajv": "^8.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz", + "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + }, + "teeny-request": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-7.1.1.tgz", + "integrity": "sha512-iwY6rkW5DDGq8hE2YgNQlKbptYpY5Nn2xecjQiNjOXWbKzPGUfmeUBCSQbbr306d7Z7U2N0TPl+/SwYRfua1Dg==", + "dev": true, + "requires": { + "http-proxy-agent": "^4.0.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.1", + "stream-events": "^1.0.5", + "uuid": "^8.0.0" + }, + "dependencies": { + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + } + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "ts-loader": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-7.0.5.tgz", + "integrity": "sha512-zXypEIT6k3oTc+OZNx/cqElrsbBtYqDknf48OZos0NQ3RTt045fBIU8RRSu+suObBzYB355aIPGOe/3kj9h7Ig==", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^1.0.2", + "micromatch": "^4.0.0", + "semver": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "ts-mocha": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/ts-mocha/-/ts-mocha-8.0.0.tgz", + "integrity": "sha512-Kou1yxTlubLnD5C3unlCVO7nh0HERTezjoVhVw/M5S1SqoUec0WgllQvPk3vzPMc6by8m6xD1uR1yRf8lnVUbA==", + "dev": true, + "requires": { + "ts-node": "7.0.1", + "tsconfig-paths": "^3.5.0" + }, + "dependencies": { + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "ts-node": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", + "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", + "dev": true, + "requires": { + "arrify": "^1.0.0", + "buffer-from": "^1.1.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.6", + "yn": "^2.0.0" + } + }, + "yn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=", + "dev": true + } + } + }, + "ts-node": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", + "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", + "dev": true, + "requires": { + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.17", + "yn": "3.1.1" + }, + "dependencies": { + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + } + } + }, + "tsconfig-paths": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz", + "integrity": "sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typescript": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz", + "integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==", + "dev": true + }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urlgrey": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-1.0.0.tgz", + "integrity": "sha512-hJfIzMPJmI9IlLkby8QrsCykQ+SXDeO2W5Q9QTW3QpqZVTx4a/K7p8/5q+/isD8vsbVaFgql/gvAoQCRQ2Cb5w==", + "dev": true, + "requires": { + "fast-url-parser": "^1.1.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "w3c-keyname": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.4.tgz", + "integrity": "sha512-tOhfEwEzFLJzf6d1ZPkYfGj+FWhIpBux9ppoP3rlclw3Z0BZv3N7b7030Z1kYth+6rDuAsXUFr+d0VE6Ed1ikw==" + }, + "whatwg-fetch": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", + "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "workerpool": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", + "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true + }, + "yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "requires": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "dependencies": { + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true + }, + "decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true + } + } + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + } + } +} diff --git a/web/ui/package.json b/web/ui/package.json new file mode 100644 index 000000000..885e9c5cf --- /dev/null +++ b/web/ui/package.json @@ -0,0 +1,19 @@ +{ + "name": "prometheus", + "private": true, + "scripts": { + "build": "bash build_ui.sh --all", + "build:module": "bash build_ui.sh --build-module", + "start": "npm run start -w react-app", + "test": "npm run test --workspaces", + "test:coverage": "npm run test:coverage --workspaces", + "lint": "npm run lint --workspaces" + }, + "workspaces": [ + "react-app", + "module/*" + ], + "engines": { + "npm": ">=7.0.0" + } +} diff --git a/web/ui/react-app/.eslintrc.json b/web/ui/react-app/.eslintrc.json index 1f549df73..3c55d932d 100644 --- a/web/ui/react-app/.eslintrc.json +++ b/web/ui/react-app/.eslintrc.json @@ -6,7 +6,6 @@ "plugin:prettier/recommended" ], "rules": { - "@typescript-eslint/camelcase": "warn", "@typescript-eslint/explicit-function-return-type": ["off"], "eol-last": [ "error", @@ -28,5 +27,6 @@ }, "plugins": [ "prettier" - ] + ], + "ignorePatterns": ["src/vendor/**"] } diff --git a/web/ui/react-app/README.md b/web/ui/react-app/README.md index 6d5b6140d..9fbe16741 100755 --- a/web/ui/react-app/README.md +++ b/web/ui/react-app/README.md @@ -13,18 +13,18 @@ Instead of plain JavaScript, we use [TypeScript](https://www.typescriptlang.org/ To work with the React UI code, you will need to have the following tools installed: * The [Node.js](https://nodejs.org/) JavaScript runtime. -* The [Yarn](https://yarnpkg.com/) package manager. +* The [npm](https://www.npmjs.com/) package manager. Once you installed Node, npm should already be available. * *Recommended:* An editor with TypeScript, React, and [ESLint](https://eslint.org/) linting support. See e.g. [Create React App's editor setup instructions](https://create-react-app.dev/docs/setting-up-your-editor/). If you are not sure which editor to use, we recommend using [Visual Studio Code](https://code.visualstudio.com/docs/languages/typescript). Make sure that [the editor uses the project's TypeScript version rather than its own](https://code.visualstudio.com/docs/typescript/typescript-compiling#_using-the-workspace-version-of-typescript). **NOTE**: When using Visual Studio Code, be sure to open the `web/ui/react-app` directory in the editor instead of the root of the repository. This way, the right ESLint and TypeScript configuration will be picked up from the React workspace. ## Installing npm dependencies -The React UI depends on a large number of [npm](https://www.npmjs.com/) packages. These are not checked in, so you will need to download and install them locally via the Yarn package manager: +The React UI depends on a large number of [npm](https://www.npmjs.com/) packages. These are not checked in, so you will need to download and install them locally via the npm package manager: - yarn + npm install -Yarn consults the `package.json` and `yarn.lock` files for dependencies to install. It creates a `node_modules` directory with all installed dependencies. +npm consults the `package.json` and `package-lock.json` files for dependencies to install. It creates a `node_modules` directory with all installed dependencies. **NOTE**: Remember to change directory to `web/ui/react-app` before running this command and the following commands. @@ -32,7 +32,7 @@ Yarn consults the `package.json` and `yarn.lock` files for dependencies to insta You can start a development server for the React UI outside of a running Prometheus server by running: - yarn start + npm start This will open a browser window with the React app running on http://localhost:3000/. The page will reload if you make edits to the source code. You will also see any lint errors in the console. @@ -44,11 +44,11 @@ Due to a `"proxy": "http://localhost:9090"` setting in the `package.json` file, Create React App uses the [Jest](https://jestjs.io/) framework for running tests. To run tests in interactive watch mode: - yarn test + npm test To generate an HTML-based test coverage report, run: - CI=true yarn test --coverage + CI=true npm test --coverage This creates a `coverage` subdirectory with the generated report. Open `coverage/lcov-report/index.html` in the browser to view it. @@ -62,7 +62,7 @@ We define linting rules for the [ESLint](https://eslint.org/) linter. We recomme To detect and automatically fix lint errors, run: - yarn lint + npm run lint This is also available via the `react-app-lint-fix` target in the main Prometheus `Makefile`. @@ -70,7 +70,7 @@ This is also available via the `react-app-lint-fix` target in the main Prometheu To build a production-optimized version of the React app to a `build` subdirectory, run: - yarn build + npm run build **NOTE:** You will likely not need to do this directly. Instead, this is taken care of by the `build` target in the main Prometheus `Makefile` when building the full binary. @@ -80,4 +80,4 @@ To build a Prometheus binary that includes a compiled-in version of the producti make build -This installs npm dependencies via Yarn, builds a production build of the React app, and then finally compiles in all web assets into the Prometheus binary. +This installs dependencies via npm, builds a production build of the React app, and then finally compiles in all web assets into the Prometheus binary. diff --git a/web/ui/react-app/package.json b/web/ui/react-app/package.json index 9bca4ab16..28a83358a 100644 --- a/web/ui/react-app/package.json +++ b/web/ui/react-app/package.json @@ -3,54 +3,50 @@ "version": "0.1.0", "private": true, "dependencies": { - "@codemirror/autocomplete": "^0.18.3", - "@codemirror/closebrackets": "^0.18.0", - "@codemirror/commands": "^0.18.0", - "@codemirror/comment": "^0.18.0", - "@codemirror/highlight": "^0.18.3", - "@codemirror/history": "^0.18.0", - "@codemirror/language": "^0.18.0", - "@codemirror/lint": "^0.18.1", - "@codemirror/matchbrackets": "^0.18.0", - "@codemirror/search": "^0.18.2", - "@codemirror/state": "^0.18.2", - "@codemirror/view": "^0.18.3", + "@codemirror/autocomplete": "^0.19.3", + "@codemirror/closebrackets": "^0.19.0", + "@codemirror/commands": "^0.19.4", + "@codemirror/comment": "^0.19.0", + "@codemirror/highlight": "^0.19.5", + "@codemirror/history": "^0.19.0", + "@codemirror/language": "^0.19.3", + "@codemirror/lint": "^0.19.1", + "@codemirror/matchbrackets": "^0.19.1", + "@codemirror/search": "^0.19.2", + "@codemirror/state": "^0.19.2", + "@codemirror/view": "^0.19.7", "@forevolve/bootstrap-dark": "^1.0.0", "@fortawesome/fontawesome-svg-core": "^1.2.14", "@fortawesome/free-solid-svg-icons": "^5.7.1", "@fortawesome/react-fontawesome": "^0.1.4", - "@nexucis/fuzzy": "^0.2.2", - "@reach/router": "^1.2.1", + "@nexucis/fuzzy": "^0.3.0", "bootstrap": "^4.6.0", - "codemirror-promql": "^0.16.0", + "codemirror-promql": "0.18.0", "css.escape": "^1.5.1", "downshift": "^3.4.8", - "enzyme-to-json": "^3.4.3", "i": "^0.3.6", "jquery": "^3.5.1", "jquery.flot.tooltip": "^0.9.0", - "jsdom": "^16.4.0", "moment": "^2.24.0", "moment-timezone": "^0.5.23", "popper.js": "^1.14.3", - "react": "^16.7.0", - "react-copy-to-clipboard": "^5.0.1", - "react-dom": "^16.7.0", - "react-resize-detector": "^5.0.7", - "react-scripts": "3.4.4", - "react-test-renderer": "^16.9.0", + "react": "^17.0.2", + "react-copy-to-clipboard": "^5.0.4", + "react-dom": "^17.0.2", + "react-resize-detector": "^6.7.6", + "react-router-dom": "^5.2.1", + "react-test-renderer": "^17.0.2", "reactstrap": "^8.9.0", "sanitize-html": "^2.3.3", - "sass": "1.32.10", + "sass": "1.39.0", "tempusdominus-bootstrap-4": "^5.1.2", - "tempusdominus-core": "^5.0.3", - "typescript": "^3.3.3", - "use-media": "^1.4.0" + "tempusdominus-core": "^5.0.3" }, "scripts": { "start": "react-scripts start", "build": "react-scripts build", - "test": "react-scripts test --runInBand", + "test": "react-scripts test --runInBand --resetMocks=false", + "test:coverage": "react-scripts test --runInBand --resetMocks=false --no-watch --coverage", "test:debug": "react-scripts --inspect-brk test --runInBand --no-cache", "eject": "react-scripts eject", "lint:ci": "eslint --quiet \"src/**/*.{ts,tsx}\"", @@ -68,39 +64,32 @@ "not op_mini all" ], "devDependencies": { - "@testing-library/react-hooks": "^3.1.1", - "@types/enzyme": "^3.10.3", - "@types/enzyme-adapter-react-16": "^1.0.5", - "@types/flot": "0.0.31", - "@types/jest": "^26.0.10", + "@testing-library/react-hooks": "^7.0.1", + "@types/enzyme": "^3.10.9", + "@types/flot": "0.0.32", + "@types/jest": "^27.0.1", "@types/jquery": "^3.5.1", - "@types/moment-timezone": "^0.5.10", - "@types/node": "^12.11.1", - "@types/reach__router": "^1.2.6", - "@types/react": "^16.8.2", - "@types/react-copy-to-clipboard": "^5.0.0", - "@types/react-dom": "^16.8.0", + "@types/node": "^16.7.6", + "@types/react": "^17.0.19", + "@types/react-copy-to-clipboard": "^5.0.1", + "@types/react-dom": "^17.0.9", "@types/react-resize-detector": "^5.0.0", - "@types/reactstrap": "^8.7.2", + "@types/react-router-dom": "^5.1.8", "@types/sanitize-html": "^1.20.2", - "@types/sinon": "^9.0.4", - "@typescript-eslint/eslint-plugin": "2.x", - "@typescript-eslint/parser": "2.x", - "enzyme": "^3.10.0", - "enzyme-adapter-react-16": "^1.15.1", - "eslint": "6.x", - "eslint-config-prettier": "^6.4.0", - "eslint-config-react-app": "^5.0.2", - "eslint-plugin-flowtype": "4.x", - "eslint-plugin-import": "2.x", - "eslint-plugin-jsx-a11y": "6.x", - "eslint-plugin-prettier": "^3.1.1", - "eslint-plugin-react": "7.x", - "eslint-plugin-react-hooks": "2.x", + "@types/sinon": "^10.0.2", + "@wojtekmaj/enzyme-adapter-react-17": "^0.6.3", + "enzyme": "^3.11.0", + "enzyme-to-json": "^3.6.2", + "eslint-config-prettier": "^8.3.0", + "eslint-config-react-app": "^6.0.0", + "eslint-plugin-prettier": "^4.0.0", + "jest-canvas-mock": "^2.3.1", "jest-fetch-mock": "^3.0.3", "mutationobserver-shim": "^0.3.7", - "prettier": "^1.18.2", - "sinon": "^9.0.3" + "prettier": "^2.3.2", + "react-scripts": "4.0.3", + "sinon": "^11.1.2", + "typescript": "^4.4.2" }, "proxy": "http://localhost:9090", "jest": { @@ -110,5 +99,8 @@ "transformIgnorePatterns": [ "/node_modules/(?!codemirror-promql).+(js|jsx)$" ] + }, + "optionalDependencies": { + "fsevents": "^2.3.2" } } diff --git a/web/ui/react-app/src/App.test.tsx b/web/ui/react-app/src/App.test.tsx index 6ccdf9ffe..9e7a6d744 100755 --- a/web/ui/react-app/src/App.test.tsx +++ b/web/ui/react-app/src/App.test.tsx @@ -3,7 +3,7 @@ import { shallow } from 'enzyme'; import App from './App'; import Navigation from './Navbar'; import { Container } from 'reactstrap'; -import { Router } from '@reach/router'; +import { Route } from 'react-router-dom'; import { AlertsPage, ConfigPage, @@ -33,11 +33,11 @@ describe('App', () => { TargetsPage, TSDBStatusPage, PanelListPage, - ].forEach(component => { + ].forEach((component) => { const c = app.find(component); expect(c).toHaveLength(1); }); - expect(app.find(Router)).toHaveLength(1); + expect(app.find(Route)).toHaveLength(9); expect(app.find(Container)).toHaveLength(1); }); }); diff --git a/web/ui/react-app/src/App.tsx b/web/ui/react-app/src/App.tsx index 9370ca48a..49f0c6439 100755 --- a/web/ui/react-app/src/App.tsx +++ b/web/ui/react-app/src/App.tsx @@ -2,8 +2,7 @@ import React, { FC } from 'react'; import Navigation from './Navbar'; import { Container } from 'reactstrap'; -import { Router, Redirect } from '@reach/router'; -import useMedia from 'use-media'; +import { BrowserRouter as Router, Redirect, Switch, Route } from 'react-router-dom'; import { AlertsPage, ConfigPage, @@ -19,6 +18,7 @@ import { PathPrefixContext } from './contexts/PathPrefixContext'; import { ThemeContext, themeName, themeSetting } from './contexts/ThemeContext'; import { Theme, themeLocalStorageKey } from './Theme'; import { useLocalStorage } from './hooks/useLocalStorage'; +import useMedia from './hooks/useMedia'; interface AppProps { consolesLink: string | null; @@ -69,25 +69,45 @@ const App: FC = ({ consolesLink }) => { > - - - - - {/* + + + + + + {/* NOTE: Any route added here needs to also be added to the list of React-handled router paths ("reactRouterPaths") in /web/web.go. */} - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); diff --git a/web/ui/react-app/src/Navbar.tsx b/web/ui/react-app/src/Navbar.tsx index 52b15aef9..277cef46a 100644 --- a/web/ui/react-app/src/Navbar.tsx +++ b/web/ui/react-app/src/Navbar.tsx @@ -1,5 +1,5 @@ import React, { FC, useState } from 'react'; -import { Link } from '@reach/router'; +import { Link } from 'react-router-dom'; import { Collapse, Navbar, @@ -26,7 +26,7 @@ const Navigation: FC = ({ consolesLink }) => { return ( - + Prometheus @@ -37,12 +37,12 @@ const Navigation: FC = ({ consolesLink }) => { )} - + Alerts - + Graph @@ -51,25 +51,25 @@ const Navigation: FC = ({ consolesLink }) => { Status - + Runtime & Build Information - + TSDB Status - + Command-Line Flags - + Configuration - + Rules - + Targets - + Service Discovery diff --git a/web/ui/react-app/src/components/Checkbox.test.tsx b/web/ui/react-app/src/components/Checkbox.test.tsx index 52258f72d..0abebbaf0 100755 --- a/web/ui/react-app/src/components/Checkbox.test.tsx +++ b/web/ui/react-app/src/components/Checkbox.test.tsx @@ -8,7 +8,7 @@ const MockCmp: React.FC = () =>
; describe('Checkbox', () => { it('renders with subcomponents', () => { const checkBox = shallow(); - [FormGroup, Input, Label].forEach(component => expect(checkBox.find(component)).toHaveLength(1)); + [FormGroup, Input, Label].forEach((component) => expect(checkBox.find(component)).toHaveLength(1)); }); it('passes down the correct FormGroup props', () => { diff --git a/web/ui/react-app/src/components/ToggleMoreLess.test.tsx b/web/ui/react-app/src/components/ToggleMoreLess.test.tsx index dc3c5a0f9..cc683efae 100644 --- a/web/ui/react-app/src/components/ToggleMoreLess.test.tsx +++ b/web/ui/react-app/src/components/ToggleMoreLess.test.tsx @@ -23,11 +23,6 @@ describe('ToggleMoreLess', () => { it('renders a show less btn if clicked', () => { tggleBtn.find(Button).simulate('click'); - expect( - tggleBtn - .find(Button) - .render() - .text() - ).toEqual('show less'); + expect(tggleBtn.find(Button).render().text()).toEqual('show less'); }); }); diff --git a/web/ui/react-app/src/components/withStartingIndicator.tsx b/web/ui/react-app/src/components/withStartingIndicator.tsx index 8f15d854e..0f29d8b1e 100644 --- a/web/ui/react-app/src/components/withStartingIndicator.tsx +++ b/web/ui/react-app/src/components/withStartingIndicator.tsx @@ -23,17 +23,17 @@ export const StartingContent: FC = ({ status, isUnexpected

Starting up...

- {status?.max! > 0 ? ( + {status && status.max > 0 ? (

- Replaying WAL ({status?.current}/{status?.max}) + Replaying WAL ({status.current}/{status.max})

@@ -43,13 +43,15 @@ export const StartingContent: FC = ({ status, isUnexpected ); }; -export const withStartingIndicator = (Page: ComponentType): FC => ({ ...rest }) => { - const pathPrefix = usePathPrefix(); - const { ready, walReplayStatus, isUnexpected } = useFetchReadyInterval(pathPrefix); +export const withStartingIndicator = + >(Page: ComponentType): FC => + ({ ...rest }) => { + const pathPrefix = usePathPrefix(); + const { ready, walReplayStatus, isUnexpected } = useFetchReadyInterval(pathPrefix); - if (ready || isUnexpected) { - return ; - } + if (ready || isUnexpected) { + return ; + } - return ; -}; + return ; + }; diff --git a/web/ui/react-app/src/components/withStatusIndicator.tsx b/web/ui/react-app/src/components/withStatusIndicator.tsx index b2d9f18b3..aa536911f 100644 --- a/web/ui/react-app/src/components/withStatusIndicator.tsx +++ b/web/ui/react-app/src/components/withStatusIndicator.tsx @@ -10,37 +10,35 @@ interface StatusIndicatorProps { componentTitle?: string; } -export const withStatusIndicator = (Component: ComponentType): FC => ({ - error, - isLoading, - customErrorMsg, - componentTitle, - ...rest -}) => { - if (error) { - return ( - - {customErrorMsg ? ( - customErrorMsg - ) : ( - <> - Error: Error fetching {componentTitle || Component.displayName}: {error.message} - - )} - - ); - } +export const withStatusIndicator = + >( // eslint-disable-line @typescript-eslint/no-explicit-any + Component: ComponentType + ): FC => + ({ error, isLoading, customErrorMsg, componentTitle, ...rest }) => { + if (error) { + return ( + + {customErrorMsg ? ( + customErrorMsg + ) : ( + <> + Error: Error fetching {componentTitle || Component.displayName}: {error.message} + + )} + + ); + } - if (isLoading) { - return ( - - ); - } - return ; -}; + if (isLoading) { + return ( + + ); + } + return ; + }; diff --git a/web/ui/react-app/src/contexts/PathPrefixContext.tsx b/web/ui/react-app/src/contexts/PathPrefixContext.tsx index 38e4eec09..787762814 100644 --- a/web/ui/react-app/src/contexts/PathPrefixContext.tsx +++ b/web/ui/react-app/src/contexts/PathPrefixContext.tsx @@ -2,7 +2,7 @@ import React from 'react'; const PathPrefixContext = React.createContext(''); -function usePathPrefix() { +function usePathPrefix(): string { return React.useContext(PathPrefixContext); } diff --git a/web/ui/react-app/src/contexts/ThemeContext.tsx b/web/ui/react-app/src/contexts/ThemeContext.tsx index d8cfe12de..9ee84cf5e 100644 --- a/web/ui/react-app/src/contexts/ThemeContext.tsx +++ b/web/ui/react-app/src/contexts/ThemeContext.tsx @@ -17,6 +17,6 @@ export const ThemeContext = React.createContext({ setTheme: (s: themeSetting) => {}, }); -export const useTheme = () => { +export const useTheme = (): ThemeCtx => { return React.useContext(ThemeContext); }; diff --git a/web/ui/react-app/src/globals.ts b/web/ui/react-app/src/globals.ts index 58755cf86..d2a5f1d50 100644 --- a/web/ui/react-app/src/globals.ts +++ b/web/ui/react-app/src/globals.ts @@ -1,4 +1,6 @@ import jquery from 'jquery'; +// eslint-disable-next-line @typescript-eslint/no-explicit-any (window as any).jQuery = jquery; +// eslint-disable-next-line @typescript-eslint/no-explicit-any (window as any).moment = require('moment'); diff --git a/web/ui/react-app/src/hooks/useFetch.ts b/web/ui/react-app/src/hooks/useFetch.ts index 52e5a5d4b..e220ff6aa 100644 --- a/web/ui/react-app/src/hooks/useFetch.ts +++ b/web/ui/react-app/src/hooks/useFetch.ts @@ -10,19 +10,15 @@ export interface FetchState { isLoading: boolean; } -export interface FetchStateReady { - ready: boolean; - isUnexpected: boolean; - isLoading: boolean; -} - export interface FetchStateReadyInterval { ready: boolean; isUnexpected: boolean; walReplayStatus: WALReplayStatus; } -export const useFetch = (url: string, options?: RequestInit): FetchState => { +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export const useFetch = >(url: string, options?: RequestInit): FetchState => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any const [response, setResponse] = useState>({ status: 'start fetching' } as any); const [error, setError] = useState(); const [isLoading, setIsLoading] = useState(true); @@ -38,7 +34,8 @@ export const useFetch = (url: string, options?: RequestInit): Fetc const json = (await res.json()) as APIResponse; setResponse(json); setIsLoading(false); - } catch (error) { + } catch (err: unknown) { + const error = err as Error; setError(error); } }; @@ -54,6 +51,7 @@ let wasReady = false; export const useFetchReadyInterval = (pathPrefix: string, options?: RequestInit): FetchStateReadyInterval => { const [ready, setReady] = useState(false); const [isUnexpected, setIsUnexpected] = useState(false); + // eslint-disable-next-line @typescript-eslint/no-explicit-any const [walReplayStatus, setWALReplayStatus] = useState({} as any); useEffect(() => { diff --git a/web/ui/react-app/src/hooks/useMedia.ts b/web/ui/react-app/src/hooks/useMedia.ts new file mode 100644 index 000000000..7d542987a --- /dev/null +++ b/web/ui/react-app/src/hooks/useMedia.ts @@ -0,0 +1,17 @@ +import { useEffect, useState } from 'react'; + +// A hook to determine whether a CSS media query finds any matches. +const useMedia = (query: string): boolean => { + const mediaQuery = window.matchMedia(query); + const [matches, setMatches] = useState(mediaQuery.matches); + + useEffect(() => { + const handler = () => setMatches(mediaQuery.matches); + mediaQuery.addEventListener('change', handler); + return () => mediaQuery.removeEventListener('change', handler); + }, [mediaQuery]); + + return matches; +}; + +export default useMedia; diff --git a/web/ui/react-app/src/pages/alerts/AlertContents.test.tsx b/web/ui/react-app/src/pages/alerts/AlertContents.test.tsx index 403cad6be..0eafd35ef 100644 --- a/web/ui/react-app/src/pages/alerts/AlertContents.test.tsx +++ b/web/ui/react-app/src/pages/alerts/AlertContents.test.tsx @@ -21,7 +21,7 @@ describe('AlertsContent', () => { { selector: '#inactive-toggler', propName: 'inactive' }, { selector: '#pending-toggler', propName: 'pending' }, { selector: '#firing-toggler', propName: 'firing' }, - ].forEach(testCase => { + ].forEach((testCase) => { it(`toggles the ${testCase.propName} checkbox from true to false when clicked and back to true when clicked again`, () => { expect(wrapper.find(testCase.selector).prop('checked')).toBe(true); wrapper.find(testCase.selector).simulate('change', { target: { checked: false } }); diff --git a/web/ui/react-app/src/pages/alerts/AlertContents.tsx b/web/ui/react-app/src/pages/alerts/AlertContents.tsx index 99d4c9688..5165eae5b 100644 --- a/web/ui/react-app/src/pages/alerts/AlertContents.tsx +++ b/web/ui/react-app/src/pages/alerts/AlertContents.tsx @@ -6,6 +6,7 @@ import { isPresent } from '../../utils'; import { Rule } from '../../types/types'; import { useLocalStorage } from '../../hooks/useLocalStorage'; +// eslint-disable-next-line @typescript-eslint/no-explicit-any export type RuleState = keyof RuleStatus; export interface RuleStatus { @@ -83,7 +84,7 @@ const AlertsContent: FC = ({ groups = [], statsCount }) => {
{groups.map((group, i) => { - const hasFilterOn = group.rules.some(rule => filter[rule.state]); + const hasFilterOn = group.rules.some((rule) => filter[rule.state]); return hasFilterOn ? ( @@ -108,6 +109,7 @@ interface GroupInfoProps { } export const GroupInfo: FC = ({ rules, children }) => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any const statesCounter = rules.reduce( (acc, r) => { return { diff --git a/web/ui/react-app/src/pages/alerts/Alerts.tsx b/web/ui/react-app/src/pages/alerts/Alerts.tsx index a1624d7a8..81f3d33ba 100644 --- a/web/ui/react-app/src/pages/alerts/Alerts.tsx +++ b/web/ui/react-app/src/pages/alerts/Alerts.tsx @@ -1,5 +1,4 @@ import React, { FC } from 'react'; -import { RouteComponentProps } from '@reach/router'; import { useFetch } from '../../hooks/useFetch'; import { withStatusIndicator } from '../../components/withStatusIndicator'; import AlertsContent, { RuleStatus, AlertsProps } from './AlertContents'; @@ -8,7 +7,7 @@ import { API_PATH } from '../../constants/constants'; const AlertsWithStatusIndicator = withStatusIndicator(AlertsContent); -const Alerts: FC = () => { +const Alerts: FC = () => { const pathPrefix = usePathPrefix(); const { response, error, isLoading } = useFetch(`${pathPrefix}/${API_PATH}/rules?type=alert`); @@ -19,7 +18,7 @@ const Alerts: FC = () => { }; if (response.data && response.data.groups) { - response.data.groups.forEach(el => el.rules.forEach(r => ruleStatsCount[r.state]++)); + response.data.groups.forEach((el) => el.rules.forEach((r) => ruleStatsCount[r.state]++)); } return ; diff --git a/web/ui/react-app/src/pages/alerts/CollapsibleAlertPanel.tsx b/web/ui/react-app/src/pages/alerts/CollapsibleAlertPanel.tsx index 8a5197aa7..ef45c205f 100644 --- a/web/ui/react-app/src/pages/alerts/CollapsibleAlertPanel.tsx +++ b/web/ui/react-app/src/pages/alerts/CollapsibleAlertPanel.tsx @@ -1,5 +1,5 @@ import React, { FC, useState, Fragment } from 'react'; -import { Link } from '@reach/router'; +import { Link } from 'react-router-dom'; import { Alert, Collapse, Table, Badge } from 'reactstrap'; import { RuleStatus } from './AlertContents'; import { Rule } from '../../types/types'; diff --git a/web/ui/react-app/src/pages/config/Config.tsx b/web/ui/react-app/src/pages/config/Config.tsx index 82474e106..50288b372 100644 --- a/web/ui/react-app/src/pages/config/Config.tsx +++ b/web/ui/react-app/src/pages/config/Config.tsx @@ -1,5 +1,4 @@ import React, { useState, FC } from 'react'; -import { RouteComponentProps } from '@reach/router'; import { Button } from 'reactstrap'; import CopyToClipboard from 'react-copy-to-clipboard'; @@ -28,7 +27,7 @@ export const ConfigContent: FC = ({ error, data }) => {

Configuration  { setCopied(result); setTimeout(setCopied, 1500); @@ -44,7 +43,7 @@ export const ConfigContent: FC = ({ error, data }) => { ); }; -const Config: FC = () => { +const Config: FC = () => { const pathPrefix = usePathPrefix(); const { response, error } = useFetch(`${pathPrefix}/${API_PATH}/status/config`); return ; diff --git a/web/ui/react-app/src/pages/flags/Flags.test.tsx b/web/ui/react-app/src/pages/flags/Flags.test.tsx index 4fdc8519f..be7b8f9b3 100644 --- a/web/ui/react-app/src/pages/flags/Flags.test.tsx +++ b/web/ui/react-app/src/pages/flags/Flags.test.tsx @@ -67,11 +67,7 @@ describe('Flags', () => { it('is sorted by flag by default', (): void => { const w = shallow(); - const td = w - .find('tbody') - .find('td') - .find('span') - .first(); + const td = w.find('tbody').find('td').find('span').first(); expect(td.html()).toBe('--alertmanager.notification-queue-capacity'); }); @@ -82,11 +78,7 @@ describe('Flags', () => { .find('td') .filterWhere((td): boolean => td.hasClass('Flag')); th.simulate('click'); - const td = w - .find('tbody') - .find('td') - .find('span') - .first(); + const td = w.find('tbody').find('td').find('span').first(); expect(td.html()).toBe('--web.user-assets'); }); @@ -97,7 +89,7 @@ describe('Flags', () => { const tds = w .find('tbody') .find('td') - .filterWhere(code => code.hasClass('flag-item')); + .filterWhere((code) => code.hasClass('flag-item')); expect(tds.length).toEqual(3); }); @@ -108,7 +100,7 @@ describe('Flags', () => { const tds = w .find('tbody') .find('td') - .filterWhere(code => code.hasClass('flag-value')); + .filterWhere((code) => code.hasClass('flag-value')); expect(tds.length).toEqual(1); }); }); diff --git a/web/ui/react-app/src/pages/flags/Flags.tsx b/web/ui/react-app/src/pages/flags/Flags.tsx index 06e2434b8..62ccf6361 100644 --- a/web/ui/react-app/src/pages/flags/Flags.tsx +++ b/web/ui/react-app/src/pages/flags/Flags.tsx @@ -1,5 +1,4 @@ import React, { ChangeEvent, FC, useState } from 'react'; -import { RouteComponentProps } from '@reach/router'; import { Input, InputGroup, Table } from 'reactstrap'; import { withStatusIndicator } from '../../components/withStatusIndicator'; import { useFetch } from '../../hooks/useFetch'; @@ -22,15 +21,14 @@ interface FlagsProps { data?: FlagMap; } -const compareAlphaFn = (keys: boolean, reverse: boolean) => ( - [k1, v1]: [string, string], - [k2, v2]: [string, string] -): number => { - const a = keys ? k1 : v1; - const b = keys ? k2 : v2; - const reverser = reverse ? -1 : 1; - return reverser * a.localeCompare(b); -}; +const compareAlphaFn = + (keys: boolean, reverse: boolean) => + ([k1, v1]: [string, string], [k2, v2]: [string, string]): number => { + const a = keys ? k1 : v1; + const b = keys ? k2 : v2; + const reverser = reverse ? -1 : 1; + return reverser * a.localeCompare(b); + }; const getSortIcon = (b: boolean | undefined): IconDefinition => { if (b === undefined) { @@ -124,7 +122,7 @@ const FlagsWithStatusIndicator = withStatusIndicator(FlagsContent); FlagsContent.displayName = 'Flags'; -const Flags: FC = () => { +const Flags: FC = () => { const pathPrefix = usePathPrefix(); const { response, error, isLoading } = useFetch(`${pathPrefix}/${API_PATH}/status/flags`); return ; diff --git a/web/ui/react-app/src/pages/graph/CMExpressionInput.test.tsx b/web/ui/react-app/src/pages/graph/CMExpressionInput.test.tsx index d9f6f8744..9d46b9e2c 100644 --- a/web/ui/react-app/src/pages/graph/CMExpressionInput.test.tsx +++ b/web/ui/react-app/src/pages/graph/CMExpressionInput.test.tsx @@ -33,14 +33,14 @@ describe('CMExpressionInput', () => { }); it('renders a search icon when it is not loading', () => { - const addon = expressionInput.find(InputGroupAddon).filterWhere(addon => addon.prop('addonType') === 'prepend'); + const addon = expressionInput.find(InputGroupAddon).filterWhere((addon) => addon.prop('addonType') === 'prepend'); const icon = addon.find(FontAwesomeIcon); expect(icon.prop('icon')).toEqual(faSearch); }); it('renders a loading icon when it is loading', () => { const expressionInput = mount(); - const addon = expressionInput.find(InputGroupAddon).filterWhere(addon => addon.prop('addonType') === 'prepend'); + const addon = expressionInput.find(InputGroupAddon).filterWhere((addon) => addon.prop('addonType') === 'prepend'); const icon = addon.find(FontAwesomeIcon); expect(icon.prop('icon')).toEqual(faSpinner); expect(icon.prop('spin')).toBe(true); @@ -52,11 +52,8 @@ describe('CMExpressionInput', () => { }); it('renders an execute button', () => { - const addon = expressionInput.find(InputGroupAddon).filterWhere(addon => addon.prop('addonType') === 'append'); - const button = addon - .find(Button) - .find('.execute-btn') - .first(); + const addon = expressionInput.find(InputGroupAddon).filterWhere((addon) => addon.prop('addonType') === 'append'); + const button = addon.find(Button).find('.execute-btn').first(); expect(button.prop('color')).toEqual('primary'); expect(button.text()).toEqual('Execute'); }); @@ -65,7 +62,7 @@ describe('CMExpressionInput', () => { const spyExecuteQuery = jest.fn(); const props = { ...expressionInputProps, executeQuery: spyExecuteQuery }; const wrapper = mount(); - const btn = wrapper.find(Button).filterWhere(btn => btn.hasClass('execute-btn')); + const btn = wrapper.find(Button).filterWhere((btn) => btn.hasClass('execute-btn')); btn.simulate('click'); expect(spyExecuteQuery).toHaveBeenCalledTimes(1); }); diff --git a/web/ui/react-app/src/pages/graph/CMExpressionInput.tsx b/web/ui/react-app/src/pages/graph/CMExpressionInput.tsx index 668d2f6fd..d85feb263 100644 --- a/web/ui/react-app/src/pages/graph/CMExpressionInput.tsx +++ b/web/ui/react-app/src/pages/graph/CMExpressionInput.tsx @@ -11,7 +11,6 @@ import { closeBrackets, closeBracketsKeymap } from '@codemirror/closebrackets'; import { highlightSelectionMatches } from '@codemirror/search'; import { commentKeymap } from '@codemirror/comment'; import { lintKeymap } from '@codemirror/lint'; -import { PromQLExtension, CompleteStrategy } from 'codemirror-promql'; import { autocompletion, completionKeymap, CompletionContext, CompletionResult } from '@codemirror/autocomplete'; import { baseTheme, lightTheme, darkTheme, promqlHighlighter } from './CMTheme'; @@ -19,8 +18,9 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faSearch, faSpinner, faGlobeEurope } from '@fortawesome/free-solid-svg-icons'; import MetricsExplorer from './MetricsExplorer'; import { usePathPrefix } from '../../contexts/PathPrefixContext'; -import { newCompleteStrategy } from 'codemirror-promql/cjs/complete'; import { useTheme } from '../../contexts/ThemeContext'; +import { CompleteStrategy, PromQLExtension } from 'codemirror-promql'; +import { newCompleteStrategy } from 'codemirror-promql/dist/cjs/complete'; const promqlExtension = new PromQLExtension(); @@ -49,7 +49,7 @@ export class HistoryCompleteStrategy implements CompleteStrategy { } promQL(context: CompletionContext): Promise | CompletionResult | null { - return Promise.resolve(this.complete.promQL(context)).then(res => { + return Promise.resolve(this.complete.promQL(context)).then((res) => { const { state, pos } = context; const tree = syntaxTree(state).resolve(pos, -1); const start = res != null ? res.from : tree.from; @@ -61,7 +61,7 @@ export class HistoryCompleteStrategy implements CompleteStrategy { const historyItems: CompletionResult = { from: start, to: pos, - options: this.queryHistory.map(q => ({ + options: this.queryHistory.map((q) => ({ label: q.length < 80 ? q : q.slice(0, 76).concat('...'), detail: 'past query', apply: q, diff --git a/web/ui/react-app/src/pages/graph/DataTable.test.tsx b/web/ui/react-app/src/pages/graph/DataTable.test.tsx index 1e4fbd460..84cad8a39 100755 --- a/web/ui/react-app/src/pages/graph/DataTable.test.tsx +++ b/web/ui/react-app/src/pages/graph/DataTable.test.tsx @@ -69,12 +69,7 @@ describe('DataTable', () => { const table = dataTable.find(Table); table.find('tr').forEach((row, idx) => { expect(row.find(SeriesName)).toHaveLength(1); - expect( - row - .find('td') - .at(1) - .text() - ).toEqual(`${idx}`); + expect(row.find('td').at(1).text()).toEqual(`${idx}`); }); }); }); @@ -83,7 +78,7 @@ describe('DataTable', () => { const dataTableProps: QueryResult = { data: { resultType: 'vector', - result: Array.from(Array(10001).keys()).map(i => { + result: Array.from(Array(10001).keys()).map((i) => { return { metric: { __name__: `metric_name_${i}`, @@ -104,12 +99,7 @@ describe('DataTable', () => { it('renders a warning', () => { const alerts = dataTable.find(Alert); - expect( - alerts - .first() - .render() - .text() - ).toEqual('Warning: Fetched 10001 metrics, only displaying first 10000.'); + expect(alerts.first().render().text()).toEqual('Warning: Fetched 10001 metrics, only displaying first 10000.'); }); }); @@ -117,7 +107,7 @@ describe('DataTable', () => { const dataTableProps: QueryResult = { data: { resultType: 'vector', - result: Array.from(Array(1001).keys()).map(i => { + result: Array.from(Array(1001).keys()).map((i) => { return { metric: { __name__: `metric_name_${i}`, @@ -133,12 +123,9 @@ describe('DataTable', () => { it('renders a warning', () => { const alerts = dataTable.find(Alert); - expect( - alerts - .first() - .render() - .text() - ).toEqual('Notice: Showing more than 1000 series, turning off label formatting for performance reasons.'); + expect(alerts.first().render().text()).toEqual( + 'Notice: Showing more than 1000 series, turning off label formatting for performance reasons.' + ); }); }); diff --git a/web/ui/react-app/src/pages/graph/DataTable.tsx b/web/ui/react-app/src/pages/graph/DataTable.tsx index 592135e0e..d82d88cf9 100644 --- a/web/ui/react-app/src/pages/graph/DataTable.tsx +++ b/web/ui/react-app/src/pages/graph/DataTable.tsx @@ -62,24 +62,22 @@ const DataTable: FC = ({ data }) => { const doFormat = data.result.length <= maxFormattableSize; switch (data.resultType) { case 'vector': - rows = (limitSeries(data.result) as InstantSample[]).map( - (s: InstantSample, index: number): ReactNode => { - return ( - - - - - {s.value[1]} - - ); - } - ); + rows = (limitSeries(data.result) as InstantSample[]).map((s: InstantSample, index: number): ReactNode => { + return ( + + + + + {s.value[1]} + + ); + }); limited = rows.length !== data.result.length; break; case 'matrix': rows = (limitSeries(data.result) as RangeSamples[]).map((s, index) => { const valueText = s.values - .map(v => { + .map((v) => { return v[1] + ' @' + v[0]; }) .join('\n'); diff --git a/web/ui/react-app/src/pages/graph/ExpressionInput.test.tsx b/web/ui/react-app/src/pages/graph/ExpressionInput.test.tsx index 86970f59e..f78a2eb7d 100644 --- a/web/ui/react-app/src/pages/graph/ExpressionInput.test.tsx +++ b/web/ui/react-app/src/pages/graph/ExpressionInput.test.tsx @@ -47,14 +47,14 @@ describe('ExpressionInput', () => { }); it('renders a search icon when it is not loading', () => { - const addon = expressionInput.find(InputGroupAddon).filterWhere(addon => addon.prop('addonType') === 'prepend'); + const addon = expressionInput.find(InputGroupAddon).filterWhere((addon) => addon.prop('addonType') === 'prepend'); const icon = addon.find(FontAwesomeIcon); expect(icon.prop('icon')).toEqual(faSearch); }); it('renders a loading icon when it is loading', () => { const expressionInput = mount(); - const addon = expressionInput.find(InputGroupAddon).filterWhere(addon => addon.prop('addonType') === 'prepend'); + const addon = expressionInput.find(InputGroupAddon).filterWhere((addon) => addon.prop('addonType') === 'prepend'); const icon = addon.find(FontAwesomeIcon); expect(icon.prop('icon')).toEqual(faSpinner); expect(icon.prop('spin')).toBe(true); @@ -75,7 +75,7 @@ describe('ExpressionInput', () => { const downshift = expressionInput.find(Downshift); const input = downshift.find(Input); downshift.setState({ isOpen: false }); - ['Home', 'End', 'ArrowUp', 'ArrowDown'].forEach(key => { + ['Home', 'End', 'ArrowUp', 'ArrowDown'].forEach((key) => { const event = getKeyEvent(key); input.simulate('keydown', event); const nativeEvent = event.nativeEvent as any; @@ -122,7 +122,7 @@ describe('ExpressionInput', () => { const spyExecuteQuery = jest.fn(); const props = { ...expressionInputProps, executeQuery: spyExecuteQuery }; const wrapper = mount(); - const btn = wrapper.find(Button).filterWhere(btn => btn.hasClass('execute-btn')); + const btn = wrapper.find(Button).filterWhere((btn) => btn.hasClass('execute-btn')); btn.simulate('click'); expect(spyExecuteQuery).toHaveBeenCalledTimes(1); }); @@ -226,7 +226,7 @@ describe('ExpressionInput', () => { const downshift = expressionInput.find(Downshift); const input = downshift.find(Input); downshift.setState({ isOpen: true }); - ['ArrowUp', 'ArrowDown'].forEach(key => { + ['ArrowUp', 'ArrowDown'].forEach((key) => { const event = getKeyEvent(key); input.simulate('keydown', event); const nativeEvent = event.nativeEvent as any; @@ -248,7 +248,7 @@ describe('ExpressionInput', () => { const ul = downshift.find('ul'); expect(ul.prop('className')).toEqual('card list-group'); const items = ul.find('li'); - expect(items.map(item => item.text()).join(', ')).toEqual( + expect(items.map((item) => item.text()).join(', ')).toEqual( 'node_cpu_guest_seconds_total, node_cpu_seconds_total, instance:node_cpu_utilisation:rate1m' ); }); @@ -256,11 +256,8 @@ describe('ExpressionInput', () => { }); it('renders an execute Button', () => { - const addon = expressionInput.find(InputGroupAddon).filterWhere(addon => addon.prop('addonType') === 'append'); - const button = addon - .find(Button) - .find('.execute-btn') - .first(); + const addon = expressionInput.find(InputGroupAddon).filterWhere((addon) => addon.prop('addonType') === 'append'); + const button = addon.find(Button).find('.execute-btn').first(); expect(button.prop('color')).toEqual('primary'); expect(button.text()).toEqual('Execute'); }); diff --git a/web/ui/react-app/src/pages/graph/ExpressionInput.tsx b/web/ui/react-app/src/pages/graph/ExpressionInput.tsx index bc6f52293..5fde8ea31 100644 --- a/web/ui/react-app/src/pages/graph/ExpressionInput.tsx +++ b/web/ui/react-app/src/pages/graph/ExpressionInput.tsx @@ -1,11 +1,11 @@ import React, { Component } from 'react'; -import { Button, InputGroup, InputGroupAddon, InputGroupText, Input } from 'reactstrap'; +import { Button, Input, InputGroup, InputGroupAddon, InputGroupText } from 'reactstrap'; import Downshift, { ControllerStateAndHelpers } from 'downshift'; import sanitizeHTML from 'sanitize-html'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import { faSearch, faSpinner, faGlobeEurope } from '@fortawesome/free-solid-svg-icons'; +import { faGlobeEurope, faSearch, faSpinner } from '@fortawesome/free-solid-svg-icons'; import MetricsExplorer from './MetricsExplorer'; import { Fuzzy, FuzzyResult } from '@nexucis/fuzzy'; @@ -37,34 +37,38 @@ class ExpressionInput extends Component { - const { offsetHeight, clientHeight, scrollHeight } = this.exprInputRef.current!; - const offset = offsetHeight - clientHeight; // Needed in order for the height to be more accurate. - this.setState({ height: scrollHeight + offset }); + setHeight = (): void => { + if (this.exprInputRef.current) { + const { offsetHeight, clientHeight, scrollHeight } = this.exprInputRef.current; + const offset = offsetHeight - clientHeight; // Needed in order for the height to be more accurate. + this.setState({ height: scrollHeight + offset }); + } }; - handleInput = () => { - this.setValue(this.exprInputRef.current!.value); + handleInput = (): void => { + if (this.exprInputRef.current) { + this.setValue(this.exprInputRef.current.value); + } }; - setValue = (value: string) => { + setValue = (value: string): void => { const { onExpressionChange } = this.props; onExpressionChange(value); this.setState({ height: 'auto' }, this.setHeight); }; - componentDidUpdate(prevProps: ExpressionInputProps) { + componentDidUpdate(prevProps: ExpressionInputProps): void { const { value } = this.props; if (value !== prevProps.value) { this.setValue(value); } } - handleKeyPress = (event: React.KeyboardEvent) => { + handleKeyPress = (event: React.KeyboardEvent): void => { const { executeQuery } = this.props; if (event.key === 'Enter' && !event.shiftKey) { executeQuery(); @@ -72,11 +76,12 @@ class ExpressionInput extends Component { + getSearchMatches = (input: string, expressions: string[]): FuzzyResult[] => { return fuz.filter(input.replace(/ /g, ''), expressions); }; - createAutocompleteSection = (downshift: ControllerStateAndHelpers) => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + createAutocompleteSection = (downshift: ControllerStateAndHelpers): JSX.Element | null => { const { inputValue = '', closeMenu, highlightedIndex } = downshift; const autocompleteSections = { 'Query History': this.props.queryHistory, @@ -84,9 +89,9 @@ class ExpressionInput extends Component { - const matches = this.getSearchMatches(inputValue!, items); + const matches = this.getSearchMatches(inputValue, items); return !matches.length ? acc : [ @@ -94,7 +99,7 @@ class ExpressionInput extends Component
  • {title}
  • {matches - .slice(0, 100) // Limit DOM rendering to 100 results, as DOM rendering is sloooow. + .slice(0, 100) // Limit DOM rendering to 100 results, as DOM rendering is slow. .map((result: FuzzyResult) => { const itemProps = downshift.getItemProps({ key: result.original, @@ -131,19 +136,19 @@ class ExpressionInput extends Component { + openMetricsExplorer = (): void => { this.setState({ showMetricsExplorer: true, }); }; - updateShowMetricsExplorer = (show: boolean) => { + updateShowMetricsExplorer = (show: boolean): void => { this.setState({ showMetricsExplorer: show, }); }; - insertAtCursor = (value: string) => { + insertAtCursor = (value: string): void => { if (!this.exprInputRef.current) return; const startPosition = this.exprInputRef.current.selectionStart; @@ -161,13 +166,13 @@ class ExpressionInput extends Component - {downshift => ( + {(downshift) => (
    @@ -191,11 +196,13 @@ class ExpressionInput extends Component diff --git a/web/ui/react-app/src/pages/graph/Graph.test.tsx b/web/ui/react-app/src/pages/graph/Graph.test.tsx index b5bdc93b8..582aa5a4f 100644 --- a/web/ui/react-app/src/pages/graph/Graph.test.tsx +++ b/web/ui/react-app/src/pages/graph/Graph.test.tsx @@ -9,6 +9,20 @@ describe('Graph', () => { beforeAll(() => { jest.spyOn(window, 'requestAnimationFrame').mockImplementation((cb: any) => cb()); }); + + // Source: https://github.com/maslianok/react-resize-detector#testing-with-enzyme-and-jest + beforeEach(() => { + window.ResizeObserver = jest.fn().mockImplementation(() => ({ + observe: jest.fn(), + unobserve: jest.fn(), + disconnect: jest.fn(), + })); + }); + + afterEach(() => { + window.ResizeObserver = ResizeObserver; + }); + describe('data is returned', () => { const props: any = { queryParams: { @@ -78,9 +92,9 @@ describe('Graph', () => { }; it('renders a graph with props', () => { const graph = shallow(); - const div = graph.find('div').filterWhere(elem => elem.prop('className') === 'graph-test'); + const div = graph.find('div').filterWhere((elem) => elem.prop('className') === 'graph-test'); const resize = div.find(ReactResizeDetector); - const innerdiv = div.find('div').filterWhere(elem => elem.prop('className') === 'graph-chart'); + const innerdiv = div.find('div').filterWhere((elem) => elem.prop('className') === 'graph-chart'); expect(resize.prop('handleWidth')).toBe(true); expect(div).toHaveLength(1); expect(innerdiv).toHaveLength(1); @@ -264,10 +278,7 @@ describe('Graph', () => { ); (graph.instance() as any).plot(); // create chart const spyPlotSetAndDraw = jest.spyOn(graph.instance() as any, 'plotSetAndDraw'); - graph - .find('.legend-item') - .at(0) - .simulate('mouseover'); + graph.find('.legend-item').at(0).simulate('mouseover'); expect(spyPlotSetAndDraw).toHaveBeenCalledTimes(1); }); it('should call spyPlotSetAndDraw with chartDate from state as default value', () => { diff --git a/web/ui/react-app/src/pages/graph/Graph.tsx b/web/ui/react-app/src/pages/graph/Graph.tsx index fd1b9f78c..91a3ea05e 100644 --- a/web/ui/react-app/src/pages/graph/Graph.tsx +++ b/web/ui/react-app/src/pages/graph/Graph.tsx @@ -42,6 +42,7 @@ export interface GraphExemplar { seriesLabels: { [key: string]: string }; labels: { [key: string]: string }; data: number[][]; + // eslint-disable-next-line @typescript-eslint/no-explicit-any points: any; // This is used to specify the symbol. color: string; } @@ -67,7 +68,7 @@ class Graph extends PureComponent { selectedExemplarLabels: { exemplar: {}, series: {} }, }; - componentDidUpdate(prevProps: GraphProps) { + componentDidUpdate(prevProps: GraphProps): void { const { data, stacked, useLocalTime, showExemplars } = this.props; if (prevProps.data !== data) { this.selectedSeriesIndexes = []; @@ -102,7 +103,7 @@ class Graph extends PureComponent { } } - componentDidMount() { + componentDidMount(): void { this.plot(); $(`.graph-${this.props.id}`).bind('plotclick', (event, pos, item) => { @@ -130,11 +131,13 @@ class Graph extends PureComponent { }); } - componentWillUnmount() { + componentWillUnmount(): void { this.destroyPlot(); } - plot = (data: (GraphSeries | GraphExemplar)[] = [...this.state.chartData.series, ...this.state.chartData.exemplars]) => { + plot = ( + data: (GraphSeries | GraphExemplar)[] = [...this.state.chartData.series, ...this.state.chartData.exemplars] + ): void => { if (!this.chartRef.current) { return; } @@ -143,7 +146,7 @@ class Graph extends PureComponent { this.$chart = $.plot($(this.chartRef.current), data, getOptions(this.props.stacked, this.props.useLocalTime)); }; - destroyPlot = () => { + destroyPlot = (): void => { if (isPresent(this.$chart)) { this.$chart.destroy(); } @@ -151,21 +154,21 @@ class Graph extends PureComponent { plotSetAndDraw( data: (GraphSeries | GraphExemplar)[] = [...this.state.chartData.series, ...this.state.chartData.exemplars] - ) { + ): void { if (isPresent(this.$chart)) { this.$chart.setData(data); this.$chart.draw(); } } - handleSeriesSelect = (selected: number[], selectedIndex: number) => { + handleSeriesSelect = (selected: number[], selectedIndex: number): void => { const { chartData } = this.state; this.plot( this.selectedSeriesIndexes.length === 1 && this.selectedSeriesIndexes.includes(selectedIndex) ? [...chartData.series.map(toHoverColor(selectedIndex, this.props.stacked)), ...chartData.exemplars] : [ ...chartData.series.filter((_, i) => selected.includes(i)), - ...chartData.exemplars.filter(exemplar => { + ...chartData.exemplars.filter((exemplar) => { series: for (const i in selected) { for (const name in chartData.series[selected[i]].labels) { if (exemplar.seriesLabels[name] !== chartData.series[selected[i]].labels[name]) { @@ -181,7 +184,7 @@ class Graph extends PureComponent { this.selectedSeriesIndexes = selected; }; - handleSeriesHover = (index: number) => () => { + handleSeriesHover = (index: number) => (): void => { if (this.rafID) { cancelAnimationFrame(this.rafID); } @@ -193,18 +196,18 @@ class Graph extends PureComponent { }); }; - handleLegendMouseOut = () => { + handleLegendMouseOut = (): void => { cancelAnimationFrame(this.rafID); this.plotSetAndDraw(); }; - handleResize = () => { + handleResize = (): void => { if (isPresent(this.$chart)) { this.plot(this.$chart.getData() as (GraphSeries | GraphExemplar)[]); } }; - render() { + render(): JSX.Element { const { chartData, selectedExemplarLabels } = this.state; const selectedLabels = selectedExemplarLabels as { exemplar: { [key: string]: string }; diff --git a/web/ui/react-app/src/pages/graph/GraphControls.test.tsx b/web/ui/react-app/src/pages/graph/GraphControls.test.tsx index 519196115..c9bff8271 100755 --- a/web/ui/react-app/src/pages/graph/GraphControls.test.tsx +++ b/web/ui/react-app/src/pages/graph/GraphControls.test.tsx @@ -3,7 +3,7 @@ import { shallow } from 'enzyme'; import GraphControls from './GraphControls'; import { Button, ButtonGroup, Form, InputGroup, InputGroupAddon, Input } from 'reactstrap'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import { faSquare, faPlus, faMinus, faChartArea, faChartLine } from '@fortawesome/free-solid-svg-icons'; +import { faPlus, faMinus, faChartArea, faChartLine } from '@fortawesome/free-solid-svg-icons'; import TimeInput from './TimeInput'; const defaultGraphControlProps = { @@ -59,9 +59,9 @@ describe('GraphControls', () => { title: 'Increase range', icon: faPlus, }, - ].forEach(testCase => { + ].forEach((testCase) => { const controls = shallow(); - const addon = controls.find(InputGroupAddon).filterWhere(addon => addon.prop('addonType') === testCase.position); + const addon = controls.find(InputGroupAddon).filterWhere((addon) => addon.prop('addonType') === testCase.position); const button = addon.find(Button); const icon = button.find(FontAwesomeIcon); expect(button.prop('title')).toEqual(testCase.title); @@ -109,7 +109,7 @@ describe('GraphControls', () => { it('renders a resolution Input with props', () => { const controls = shallow(); - const input = controls.find(Input).filterWhere(input => input.prop('className') === 'resolution-input'); + const input = controls.find(Input).filterWhere((input) => input.prop('className') === 'resolution-input'); expect(input.prop('placeholder')).toEqual('Res. (s)'); expect(input.prop('defaultValue')).toEqual('10'); expect(input.prop('innerRef')).toEqual({ current: null }); @@ -140,10 +140,10 @@ describe('GraphControls', () => { icon: faChartArea, active: false, }, - ].forEach(testCase => { + ].forEach((testCase) => { const controls = shallow(); const group = controls.find(ButtonGroup); - const btn = group.find(Button).filterWhere(btn => btn.prop('title') === testCase.title); + const btn = group.find(Button).filterWhere((btn) => btn.prop('title') === testCase.title); expect(btn.prop('active')).toEqual(testCase.active); const icon = btn.find(FontAwesomeIcon); expect(icon.prop('icon')).toEqual(testCase.icon); @@ -160,14 +160,14 @@ describe('GraphControls', () => { title: 'Show stacked graph', active: false, }, - ].forEach(testCase => { + ].forEach((testCase) => { const results: boolean[] = []; const onChange = (stacked: boolean): void => { results.push(stacked); }; const controls = shallow(); const group = controls.find(ButtonGroup); - const btn = group.find(Button).filterWhere(btn => btn.prop('title') === testCase.title); + const btn = group.find(Button).filterWhere((btn) => btn.prop('title') === testCase.title); const onClick = btn.prop('onClick'); if (onClick) { onClick({} as React.MouseEvent); diff --git a/web/ui/react-app/src/pages/graph/GraphControls.tsx b/web/ui/react-app/src/pages/graph/GraphControls.tsx index c465e4395..0200cdf36 100644 --- a/web/ui/react-app/src/pages/graph/GraphControls.tsx +++ b/web/ui/react-app/src/pages/graph/GraphControls.tsx @@ -1,10 +1,10 @@ import React, { Component } from 'react'; -import { Button, ButtonGroup, Form, InputGroup, InputGroupAddon, Input } from 'reactstrap'; +import { Button, ButtonGroup, Form, Input, InputGroup, InputGroupAddon } from 'reactstrap'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import { faPlus, faMinus, faChartArea, faChartLine } from '@fortawesome/free-solid-svg-icons'; +import { faChartArea, faChartLine, faMinus, faPlus } from '@fortawesome/free-solid-svg-icons'; import TimeInput from './TimeInput'; -import { parseDuration, formatDuration } from '../../utils'; +import { formatDuration, parseDuration } from '../../utils'; interface GraphControlsProps { range: number; @@ -46,7 +46,7 @@ class GraphControls extends Component { 182 * 24 * 60 * 60, 365 * 24 * 60 * 60, 730 * 24 * 60 * 60, - ].map(s => s * 1000); + ].map((s) => s * 1000); onChangeRangeInput = (rangeText: string): void => { const range = parseDuration(rangeText); @@ -58,7 +58,7 @@ class GraphControls extends Component { }; changeRangeInput = (range: number): void => { - this.rangeRef.current!.value = formatDuration(range); + this.setCurrentRangeValue(formatDuration(range)); }; increaseRange = (): void => { @@ -81,18 +81,24 @@ class GraphControls extends Component { } }; - componentDidUpdate(prevProps: GraphControlsProps) { + componentDidUpdate(prevProps: GraphControlsProps): void { if (prevProps.range !== this.props.range) { this.changeRangeInput(this.props.range); } if (prevProps.resolution !== this.props.resolution) { - this.resolutionRef.current!.value = this.props.resolution !== null ? this.props.resolution.toString() : ''; + this.setCurrentRangeValue(this.props.resolution !== null ? this.props.resolution.toString() : ''); } } - render() { + setCurrentRangeValue(value: string): void { + if (this.rangeRef.current) { + this.rangeRef.current.value = value; + } + } + + render(): JSX.Element { return ( -
    e.preventDefault()}> + e.preventDefault()}>
    `; @@ -154,7 +159,10 @@ export const getOptions = (stacked: boolean, useLocalTime: boolean): jquery.flot }; // This was adapted from Flot's color generation code. -export const getColors = (data: { resultType: string; result: Array<{ metric: Metric; values: [number, string][] }> }) => { +export const getColors = (data: { + resultType: string; + result: Array<{ metric: Metric; values: [number, string][] }>; +}): Color[] => { const colorPool = ['#edc240', '#afd8f8', '#cb4b4b', '#4da74d', '#9440ed']; const colorPoolSize = colorPool.length; let variation = 0; @@ -180,6 +188,7 @@ export const getColors = (data: { resultType: string; result: Array<{ metric: Me export const normalizeData = ({ queryParams, data, exemplars, stacked }: GraphProps): GraphData => { const colors = getColors(data); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion const { startTime, endTime, resolution } = queryParams!; let sum = 0; @@ -233,7 +242,7 @@ export const normalizeData = ({ queryParams, data, exemplars, stacked }: GraphPr index, }; }), - exemplars: Object.values(buckets).flatMap(bucket => { + exemplars: Object.values(buckets).flatMap((bucket) => { if (bucket.length === 1) { return bucket[0]; } @@ -256,7 +265,7 @@ export const normalizeData = ({ queryParams, data, exemplars, stacked }: GraphPr }; }; -export const parseValue = (value: string) => { +export const parseValue = (value: string): null | number => { const val = parseFloat(value); // "+Inf", "-Inf", "+Inf" will be parsed into NaN by parseFloat(). They // can't be graphed, so show them as gaps (null). @@ -290,7 +299,7 @@ const exemplarSymbol = (ctx: CanvasRenderingContext2D, x: number, y: number) => const stdDeviation = (sum: number, values: number[]): number => { const avg = sum / values.length; let squaredAvg = 0; - values.map(value => (squaredAvg += (value - avg) ** 2)); + values.map((value) => (squaredAvg += (value - avg) ** 2)); squaredAvg = squaredAvg / values.length; return Math.sqrt(squaredAvg); }; diff --git a/web/ui/react-app/src/pages/graph/GraphTabContent.tsx b/web/ui/react-app/src/pages/graph/GraphTabContent.tsx index 66b1b8cf5..e31c7a280 100644 --- a/web/ui/react-app/src/pages/graph/GraphTabContent.tsx +++ b/web/ui/react-app/src/pages/graph/GraphTabContent.tsx @@ -5,6 +5,7 @@ import { QueryParams, ExemplarData } from '../../types/types'; import { isPresent } from '../../utils'; interface GraphTabContentProps { + // eslint-disable-next-line @typescript-eslint/no-explicit-any data: any; exemplars: ExemplarData; stacked: boolean; diff --git a/web/ui/react-app/src/pages/graph/Legend.tsx b/web/ui/react-app/src/pages/graph/Legend.tsx index 8a4068897..5e98904ee 100644 --- a/web/ui/react-app/src/pages/graph/Legend.tsx +++ b/web/ui/react-app/src/pages/graph/Legend.tsx @@ -18,36 +18,38 @@ export class Legend extends PureComponent { state = { selectedIndexes: [] as number[], }; - componentDidUpdate(prevProps: LegendProps) { + componentDidUpdate(prevProps: LegendProps): void { if (this.props.shouldReset && prevProps.shouldReset !== this.props.shouldReset) { this.setState({ selectedIndexes: [] }); } } - handleSeriesSelect = (index: number) => (ev: React.MouseEvent) => { - // TODO: add proper event type - const { selectedIndexes } = this.state; + handleSeriesSelect = + (index: number) => + (ev: React.MouseEvent): void => { + // TODO: add proper event type + const { selectedIndexes } = this.state; - let selected = [index]; - if (ev.ctrlKey || ev.metaKey) { - const { chartData } = this.props; - if (selectedIndexes.includes(index)) { - selected = selectedIndexes.filter(idx => idx !== index); - } else { - selected = - // Flip the logic - In case none is selected ctrl + click should deselect clicked series. - selectedIndexes.length === 0 - ? chartData.reduce((acc, _, i) => (i === index ? acc : [...acc, i]), []) - : [...selectedIndexes, index]; // Select multiple. + let selected = [index]; + if (ev.ctrlKey || ev.metaKey) { + const { chartData } = this.props; + if (selectedIndexes.includes(index)) { + selected = selectedIndexes.filter((idx) => idx !== index); + } else { + selected = + // Flip the logic - In case none is selected ctrl + click should deselect clicked series. + selectedIndexes.length === 0 + ? chartData.reduce((acc, _, i) => (i === index ? acc : [...acc, i]), []) + : [...selectedIndexes, index]; // Select multiple. + } + } else if (selectedIndexes.length === 1 && selectedIndexes.includes(index)) { + selected = []; } - } else if (selectedIndexes.length === 1 && selectedIndexes.includes(index)) { - selected = []; - } - this.setState({ selectedIndexes: selected }); - this.props.onSeriesToggle(selected, index); - }; + this.setState({ selectedIndexes: selected }); + this.props.onSeriesToggle(selected, index); + }; - render() { + render(): JSX.Element { const { chartData, onLegendMouseOut, onHover } = this.props; const { selectedIndexes } = this.state; const canUseHover = chartData.length > 1 && selectedIndexes.length === 0; diff --git a/web/ui/react-app/src/pages/graph/MetricsExplorer.tsx b/web/ui/react-app/src/pages/graph/MetricsExplorer.tsx index 005eb956f..8c01ba757 100644 --- a/web/ui/react-app/src/pages/graph/MetricsExplorer.tsx +++ b/web/ui/react-app/src/pages/graph/MetricsExplorer.tsx @@ -8,22 +8,22 @@ interface Props { insertAtCursor(value: string): void; } -class MetricsExplorer extends Component { - handleMetricClick = (query: string) => { +class MetricsExplorer extends Component { + handleMetricClick = (query: string): void => { this.props.insertAtCursor(query); this.props.updateShow(false); }; - toggle = () => { + toggle = (): void => { this.props.updateShow(!this.props.show); }; - render() { + render(): JSX.Element { return ( Metrics Explorer - {this.props.metrics.map(metric => ( + {this.props.metrics.map((metric) => (

    {metric}

    diff --git a/web/ui/react-app/src/pages/graph/Panel.test.tsx b/web/ui/react-app/src/pages/graph/Panel.test.tsx index ed686f85f..2d702b6fb 100644 --- a/web/ui/react-app/src/pages/graph/Panel.test.tsx +++ b/web/ui/react-app/src/pages/graph/Panel.test.tsx @@ -75,7 +75,7 @@ describe('Panel', () => { }); it('renders a TabPane with a TimeInput and a DataTable when in table mode', () => { - const tab = panel.find(TabPane).filterWhere(tab => tab.prop('tabId') === 'table'); + const tab = panel.find(TabPane).filterWhere((tab) => tab.prop('tabId') === 'table'); const timeInput = tab.find(TimeInput); expect(timeInput.prop('time')).toEqual(defaultProps.options.endTime); expect(timeInput.prop('range')).toEqual(defaultProps.options.range); @@ -151,9 +151,10 @@ describe('Panel', () => { //change query without executing panel.setProps({ options: { ...defaultProps.options, expr: newExpr } }); expect(executeQuerySpy).toHaveBeenCalledTimes(0); + const debounceExecuteQuerySpy = jest.spyOn(instance, 'debounceExecuteQuery'); //execute query implicitly with time change panel.setProps({ options: { ...defaultProps.options, expr: newExpr, endTime: 1575744840 } }); - expect(executeQuerySpy).toHaveBeenCalledTimes(1); + expect(debounceExecuteQuerySpy).toHaveBeenCalledTimes(1); }); }); }); diff --git a/web/ui/react-app/src/pages/graph/Panel.tsx b/web/ui/react-app/src/pages/graph/Panel.tsx index e58714f4c..1dca06ad0 100644 --- a/web/ui/react-app/src/pages/graph/Panel.tsx +++ b/web/ui/react-app/src/pages/graph/Panel.tsx @@ -13,6 +13,7 @@ import TimeInput from './TimeInput'; import QueryStatsView, { QueryStats } from './QueryStatsView'; import { QueryParams, ExemplarData } from '../../types/types'; import { API_PATH } from '../../constants/constants'; +import { debounce } from '../../utils'; interface PanelProps { options: PanelOptions; @@ -31,6 +32,7 @@ interface PanelProps { } interface PanelState { + // eslint-disable-next-line @typescript-eslint/no-explicit-any data: any; // TODO: Type data. exemplars: ExemplarData; lastQueryParams: QueryParams | null; @@ -68,6 +70,7 @@ export const PanelDefaultOptions: PanelOptions = { class Panel extends Component { private abortInFlightFetch: (() => void) | null = null; + private debounceExecuteQuery: () => void; constructor(props: PanelProps) { super(props); @@ -82,25 +85,28 @@ class Panel extends Component { stats: null, exprInputValue: props.options.expr, }; + + this.debounceExecuteQuery = debounce(this.executeQuery.bind(this), 250); } - componentDidUpdate({ options: prevOpts }: PanelProps) { + componentDidUpdate({ options: prevOpts }: PanelProps): void { const { endTime, range, resolution, showExemplars, type } = this.props.options; - if ( - prevOpts.endTime !== endTime || - prevOpts.range !== range || - prevOpts.resolution !== resolution || - prevOpts.type !== type || - showExemplars !== prevOpts.showExemplars - ) { + + if (prevOpts.endTime !== endTime || prevOpts.range !== range) { + this.debounceExecuteQuery(); + return; + } + + if (prevOpts.resolution !== resolution || prevOpts.type !== type || showExemplars !== prevOpts.showExemplars) { this.executeQuery(); } } - componentDidMount() { + componentDidMount(): void { this.executeQuery(); } + // eslint-disable-next-line @typescript-eslint/no-explicit-any executeQuery = async (): Promise => { const { exprInputValue: expr } = this.state; const queryStart = Date.now(); @@ -151,7 +157,7 @@ class Panel extends Component { cache: 'no-store', credentials: 'same-origin', signal: abortController.signal, - }).then(resp => resp.json()); + }).then((resp) => resp.json()); if (query.status !== 'success') { throw new Error(query.error || 'invalid response JSON'); @@ -163,7 +169,7 @@ class Panel extends Component { cache: 'no-store', credentials: 'same-origin', signal: abortController.signal, - }).then(resp => resp.json()); + }).then((resp) => resp.json()); if (exemplars.status !== 'success') { throw new Error(exemplars.error || 'invalid response JSON'); @@ -198,7 +204,8 @@ class Panel extends Component { loading: false, }); this.abortInFlightFetch = null; - } catch (error) { + } catch (err: unknown) { + const error = err as Error; if (error.name === 'AbortError') { // Aborts are expected, don't show an error for them. return; @@ -210,7 +217,7 @@ class Panel extends Component { } }; - setOptions(opts: object): void { + setOptions(opts: Partial): void { const newOpts = { ...this.props.options, ...opts }; this.props.onOptionsChanged(newOpts); } @@ -230,15 +237,15 @@ class Panel extends Component { return this.props.options.endTime; }; - handleChangeEndTime = (endTime: number | null) => { + handleChangeEndTime = (endTime: number | null): void => { this.setOptions({ endTime: endTime }); }; - handleChangeResolution = (resolution: number | null) => { + handleChangeResolution = (resolution: number | null): void => { this.setOptions({ resolution: resolution }); }; - handleChangeType = (type: PanelType) => { + handleChangeType = (type: PanelType): void => { if (this.props.options.type === type) { return; } @@ -247,19 +254,19 @@ class Panel extends Component { this.setOptions({ type: type }); }; - handleChangeStacking = (stacked: boolean) => { + handleChangeStacking = (stacked: boolean): void => { this.setOptions({ stacked: stacked }); }; - handleChangeShowExemplars = (show: boolean) => { + handleChangeShowExemplars = (show: boolean): void => { this.setOptions({ showExemplars: show }); }; - handleTimeRangeSelection = (startTime: number, endTime: number) => { + handleTimeRangeSelection = (startTime: number, endTime: number): void => { this.setOptions({ range: endTime - startTime, endTime: endTime }); }; - render() { + render(): JSX.Element { const { pastQueries, metricNames, options } = this.props; return (
    diff --git a/web/ui/react-app/src/pages/graph/PanelList.tsx b/web/ui/react-app/src/pages/graph/PanelList.tsx index 43ff6f1d6..026e12329 100644 --- a/web/ui/react-app/src/pages/graph/PanelList.tsx +++ b/web/ui/react-app/src/pages/graph/PanelList.tsx @@ -1,5 +1,4 @@ import React, { FC, useState, useEffect } from 'react'; -import { RouteComponentProps } from '@reach/router'; import { Alert, Button } from 'reactstrap'; import Panel, { PanelOptions, PanelDefaultOptions } from './Panel'; @@ -12,12 +11,12 @@ import { API_PATH } from '../../constants/constants'; export type PanelMeta = { key: string; options: PanelOptions; id: string }; -export const updateURL = (nextPanels: PanelMeta[]) => { +export const updateURL = (nextPanels: PanelMeta[]): void => { const query = encodePanelOptionsToQueryString(nextPanels); window.history.pushState({}, '', query); }; -interface PanelListContentProps extends RouteComponentProps { +interface PanelListContentProps { panels: PanelMeta[]; metrics: string[]; useLocalTime: boolean; @@ -92,8 +91,8 @@ export const PanelListContent: FC = ({ key={id} id={id} options={options} - onOptionsChanged={opts => - callAll(setPanels, updateURL)(panels.map(p => (id === p.id ? { ...p, options: opts } : p))) + onOptionsChanged={(opts) => + callAll(setPanels, updateURL)(panels.map((p) => (id === p.id ? { ...p, options: opts } : p))) } removePanel={() => callAll( @@ -122,7 +121,7 @@ export const PanelListContent: FC = ({ ); }; -const PanelList: FC = () => { +const PanelList: FC = () => { const [delta, setDelta] = useState(0); const [useExperimentalEditor, setUseExperimentalEditor] = useLocalStorage('use-new-editor', true); const [useLocalTime, setUseLocalTime] = useLocalStorage('use-local-time', false); diff --git a/web/ui/react-app/src/pages/graph/QueryStatsView.tsx b/web/ui/react-app/src/pages/graph/QueryStatsView.tsx index a125e451b..8bfd91c74 100644 --- a/web/ui/react-app/src/pages/graph/QueryStatsView.tsx +++ b/web/ui/react-app/src/pages/graph/QueryStatsView.tsx @@ -6,7 +6,7 @@ export interface QueryStats { resultSeries: number; } -const QueryStatsView: FC = props => { +const QueryStatsView: FC = (props) => { const { loadTime, resolution, resultSeries } = props; return ( diff --git a/web/ui/react-app/src/pages/graph/SeriesName.test.tsx b/web/ui/react-app/src/pages/graph/SeriesName.test.tsx index 4eaf68105..f75cf9603 100755 --- a/web/ui/react-app/src/pages/graph/SeriesName.test.tsx +++ b/web/ui/react-app/src/pages/graph/SeriesName.test.tsx @@ -55,7 +55,7 @@ describe('SeriesName', () => { const child = seriesName.childAt(i); const text = child .children() - .map(ch => ch.text()) + .map((ch) => ch.text()) .join(''); switch (child.children().length) { case 1: diff --git a/web/ui/react-app/src/pages/graph/SeriesName.tsx b/web/ui/react-app/src/pages/graph/SeriesName.tsx index 0fb8bd285..d76a780ba 100644 --- a/web/ui/react-app/src/pages/graph/SeriesName.tsx +++ b/web/ui/react-app/src/pages/graph/SeriesName.tsx @@ -29,7 +29,7 @@ const SeriesName: FC = ({ labels, format }) => { return (
    - {labels!.__name__ || ''} + {labels ? labels.__name__ : ''} {'{'} {labelNodes} {'}'} @@ -46,7 +46,7 @@ const SeriesName: FC = ({ labels, format }) => { } // Return a simple text node. This is much faster to scroll through // for longer lists (hundreds of items). - return <>{metricToSeriesName(labels!)}; + return <>{metricToSeriesName(labels)}; }; export default SeriesName; diff --git a/web/ui/react-app/src/pages/graph/TimeInput.test.tsx b/web/ui/react-app/src/pages/graph/TimeInput.test.tsx index 9c59c8014..b92556f58 100644 --- a/web/ui/react-app/src/pages/graph/TimeInput.test.tsx +++ b/web/ui/react-app/src/pages/graph/TimeInput.test.tsx @@ -39,11 +39,11 @@ describe('TimeInput', () => { title: 'Increase time', icon: faChevronRight, }, - ].forEach(button => { + ].forEach((button) => { const onChangeTime = sinon.spy(); const timeInput = shallow(); - const addon = timeInput.find(InputGroupAddon).filterWhere(addon => addon.prop('addonType') === button.position); - const btn = addon.find(Button).filterWhere(btn => btn.prop('title') === button.title); + const addon = timeInput.find(InputGroupAddon).filterWhere((addon) => addon.prop('addonType') === button.position); + const btn = addon.find(Button).filterWhere((btn) => btn.prop('title') === button.title); const icon = btn.find(FontAwesomeIcon); expect(icon.prop('icon')).toEqual(button.icon); expect(icon.prop('fixedWidth')).toBe(true); diff --git a/web/ui/react-app/src/pages/graph/TimeInput.tsx b/web/ui/react-app/src/pages/graph/TimeInput.tsx index 4a0e4dd1e..7fad66f29 100644 --- a/web/ui/react-app/src/pages/graph/TimeInput.tsx +++ b/web/ui/react-app/src/pages/graph/TimeInput.tsx @@ -1,21 +1,21 @@ import $ from 'jquery'; import React, { Component } from 'react'; -import { Button, InputGroup, InputGroupAddon, Input } from 'reactstrap'; +import { Button, Input, InputGroup, InputGroupAddon } from 'reactstrap'; import moment from 'moment-timezone'; import 'tempusdominus-core'; import 'tempusdominus-bootstrap-4'; -import '../../../node_modules/tempusdominus-bootstrap-4/build/css/tempusdominus-bootstrap-4.min.css'; +import 'tempusdominus-bootstrap-4/build/css/tempusdominus-bootstrap-4.min.css'; import { dom, library } from '@fortawesome/fontawesome-svg-core'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { + faArrowDown, + faArrowUp, + faCalendarCheck, faChevronLeft, faChevronRight, - faCalendarCheck, - faArrowUp, - faArrowDown, faTimes, } from '@fortawesome/free-solid-svg-icons'; @@ -33,13 +33,14 @@ interface TimeInputProps { class TimeInput extends Component { private timeInputRef = React.createRef(); + // eslint-disable-next-line @typescript-eslint/no-explicit-any private $time: any = null; getBaseTime = (): number => { return this.props.time || moment().valueOf(); }; - calcShiftRange = () => this.props.range / 2; + calcShiftRange = (): number => this.props.range / 2; increaseTime = (): void => { const time = this.getBaseTime() + this.calcShiftRange(); @@ -59,8 +60,11 @@ class TimeInput extends Component { return this.props.useLocalTime ? moment.tz.guess() : 'UTC'; }; - componentDidMount() { - this.$time = $(this.timeInputRef.current!); + componentDidMount(): void { + if (!this.timeInputRef.current) { + return; + } + this.$time = $(this.timeInputRef.current); this.$time.datetimepicker({ icons: { @@ -78,20 +82,21 @@ class TimeInput extends Component { defaultDate: this.props.time, }); + // eslint-disable-next-line @typescript-eslint/no-explicit-any this.$time.on('change.datetimepicker', (e: any) => { // The end time can also be set by dragging a section on the graph, // and that value will have decimal places. - if (e.date && e.date.valueOf() !== Math.trunc(this.props.time?.valueOf()!)) { + if (e.date && e.date.valueOf() !== Math.trunc(this.props.time?.valueOf() || NaN)) { this.props.onChangeTime(e.date.valueOf()); } }); } - componentWillUnmount() { + componentWillUnmount(): void { this.$time.datetimepicker('destroy'); } - componentDidUpdate(prevProps: TimeInputProps) { + componentDidUpdate(prevProps: TimeInputProps): void { const { time, useLocalTime } = this.props; if (prevProps.time !== time) { this.$time.datetimepicker('date', time ? moment(time) : null); @@ -101,7 +106,7 @@ class TimeInput extends Component { } } - render() { + render(): JSX.Element { return ( @@ -115,7 +120,7 @@ class TimeInput extends Component { innerRef={this.timeInputRef} onFocus={() => this.$time.datetimepicker('show')} onBlur={() => this.$time.datetimepicker('hide')} - onKeyDown={e => ['Escape', 'Enter'].includes(e.key) && this.$time.datetimepicker('hide')} + onKeyDown={(e) => ['Escape', 'Enter'].includes(e.key) && this.$time.datetimepicker('hide')} /> {/* CAUTION: While the datetimepicker also has an option to show a 'clear' button, diff --git a/web/ui/react-app/src/pages/rules/Rules.tsx b/web/ui/react-app/src/pages/rules/Rules.tsx index 3a849fb92..56f36b420 100644 --- a/web/ui/react-app/src/pages/rules/Rules.tsx +++ b/web/ui/react-app/src/pages/rules/Rules.tsx @@ -1,5 +1,4 @@ import React, { FC } from 'react'; -import { RouteComponentProps } from '@reach/router'; import { useFetch } from '../../hooks/useFetch'; import { withStatusIndicator } from '../../components/withStatusIndicator'; import { RulesMap, RulesContent } from './RulesContent'; @@ -8,7 +7,7 @@ import { API_PATH } from '../../constants/constants'; const RulesWithStatusIndicator = withStatusIndicator(RulesContent); -const Rules: FC = () => { +const Rules: FC = () => { const pathPrefix = usePathPrefix(); const { response, error, isLoading } = useFetch(`${pathPrefix}/${API_PATH}/rules`); diff --git a/web/ui/react-app/src/pages/rules/RulesContent.tsx b/web/ui/react-app/src/pages/rules/RulesContent.tsx index 3977431f4..e7adfee39 100644 --- a/web/ui/react-app/src/pages/rules/RulesContent.tsx +++ b/web/ui/react-app/src/pages/rules/RulesContent.tsx @@ -1,8 +1,7 @@ import React, { FC } from 'react'; -import { RouteComponentProps } from '@reach/router'; import { APIResponse } from '../../hooks/useFetch'; import { Alert, Table, Badge } from 'reactstrap'; -import { Link } from '@reach/router'; +import { Link } from 'react-router-dom'; import { formatRelative, createExpressionLink, humanizeDuration, formatDuration } from '../../utils'; import { Rule } from '../../types/types'; import { now } from 'moment'; @@ -23,7 +22,7 @@ export interface RulesMap { groups: RuleGroup[]; } -const GraphExpressionLink: FC<{ expr: string; text: string; title: string }> = props => { +const GraphExpressionLink: FC<{ expr: string; text: string; title: string }> = (props) => { return ( <> {props.title}: @@ -35,7 +34,7 @@ const GraphExpressionLink: FC<{ expr: string; text: string; title: string }> = p ); }; -export const RulesContent: FC = ({ response }) => { +export const RulesContent: FC = ({ response }) => { const getBadgeColor = (state: string) => { switch (state) { case 'ok': diff --git a/web/ui/react-app/src/pages/serviceDiscovery/LabelsTable.tsx b/web/ui/react-app/src/pages/serviceDiscovery/LabelsTable.tsx index b621df100..01c657c3a 100644 --- a/web/ui/react-app/src/pages/serviceDiscovery/LabelsTable.tsx +++ b/web/ui/react-app/src/pages/serviceDiscovery/LabelsTable.tsx @@ -1,5 +1,4 @@ import React, { FC, useState } from 'react'; -import { RouteComponentProps } from '@reach/router'; import { Badge, Table } from 'reactstrap'; import { TargetLabels } from './Services'; import { ToggleMoreLess } from '../../components/ToggleMoreLess'; @@ -21,7 +20,7 @@ const formatLabels = (labels: Record | string) => { }); }; -export const LabelsTable: FC = ({ value, name }) => { +export const LabelsTable: FC = ({ value, name }) => { const [showMore, setShowMore] = useState(false); return ( diff --git a/web/ui/react-app/src/pages/serviceDiscovery/Services.tsx b/web/ui/react-app/src/pages/serviceDiscovery/Services.tsx index f2892dab6..28d6db6dc 100644 --- a/web/ui/react-app/src/pages/serviceDiscovery/Services.tsx +++ b/web/ui/react-app/src/pages/serviceDiscovery/Services.tsx @@ -1,8 +1,7 @@ import React, { FC } from 'react'; -import { RouteComponentProps } from '@reach/router'; import { useFetch } from '../../hooks/useFetch'; import { LabelsTable } from './LabelsTable'; -import { Target, Labels, DroppedTarget } from '../targets/target'; +import { DroppedTarget, Labels, Target } from '../targets/target'; import { withStatusIndicator } from '../../components/withStatusIndicator'; import { mapObjEntries } from '../../utils'; @@ -20,7 +19,10 @@ export interface TargetLabels { isDropped: boolean; } -export const processSummary = (activeTargets: Target[], droppedTargets: DroppedTarget[]) => { +export const processSummary = ( + activeTargets: Target[], + droppedTargets: DroppedTarget[] +): Record => { const targets: Record = {}; // Get targets of each type along with the total and active end points @@ -49,7 +51,7 @@ export const processSummary = (activeTargets: Target[], droppedTargets: DroppedT return targets; }; -export const processTargets = (activeTargets: Target[], droppedTargets: DroppedTarget[]) => { +export const processTargets = (activeTargets: Target[], droppedTargets: DroppedTarget[]): Record => { const labels: Record = {}; for (const target of activeTargets) { @@ -106,7 +108,7 @@ ServiceDiscoveryContent.displayName = 'ServiceDiscoveryContent'; const ServicesWithStatusIndicator = withStatusIndicator(ServiceDiscoveryContent); -const ServiceDiscovery: FC = () => { +const ServiceDiscovery: FC = () => { const pathPrefix = usePathPrefix(); const { response, error, isLoading } = useFetch(`${pathPrefix}/${API_PATH}/targets`); return ( diff --git a/web/ui/react-app/src/pages/status/Status.tsx b/web/ui/react-app/src/pages/status/Status.tsx index 518662cff..20d2e9e99 100644 --- a/web/ui/react-app/src/pages/status/Status.tsx +++ b/web/ui/react-app/src/pages/status/Status.tsx @@ -1,5 +1,4 @@ import React, { Fragment, FC } from 'react'; -import { RouteComponentProps } from '@reach/router'; import { Table } from 'reactstrap'; import { withStatusIndicator } from '../../components/withStatusIndicator'; import { useFetch } from '../../hooks/useFetch'; @@ -13,6 +12,7 @@ interface StatusPageProps { export const statusConfig: Record< string, + // eslint-disable-next-line @typescript-eslint/no-explicit-any { title?: string; customizeValue?: (v: any, key: string) => any; customRow?: boolean; skip?: boolean } > = { startTime: { title: 'Start time', customizeValue: (v: string) => new Date(v).toUTCString() }, @@ -58,7 +58,7 @@ export const StatusContent: FC = ({ data, title }) => { {Object.entries(data).map(([k, v]) => { - const { title = k, customizeValue = (val: any) => val, customRow, skip } = statusConfig[k] || {}; + const { title = k, customizeValue = (val: string) => val, customRow, skip } = statusConfig[k] || {}; if (skip) { return null; } @@ -83,7 +83,7 @@ const StatusWithStatusIndicator = withStatusIndicator(StatusContent); StatusContent.displayName = 'Status'; -const Status: FC = () => { +const Status: FC = () => { const pathPrefix = usePathPrefix(); const path = `${pathPrefix}/${API_PATH}`; diff --git a/web/ui/react-app/src/pages/targets/EndpointLink.test.tsx b/web/ui/react-app/src/pages/targets/EndpointLink.test.tsx index e48efa64d..6ec682942 100644 --- a/web/ui/react-app/src/pages/targets/EndpointLink.test.tsx +++ b/web/ui/react-app/src/pages/targets/EndpointLink.test.tsx @@ -24,16 +24,16 @@ describe('EndpointLink', () => { expect(anchor.children().text()).toEqual('http://100.99.128.71:9115/probe'); expect(endpointLink.find('br')).toHaveLength(1); expect(badges).toHaveLength(2); - const moduleLabel = badges.filterWhere(badge => badge.children().text() === 'module="http_2xx"'); + const moduleLabel = badges.filterWhere((badge) => badge.children().text() === 'module="http_2xx"'); expect(moduleLabel.length).toEqual(1); - const targetLabel = badges.filterWhere(badge => badge.children().text() === 'target="http://some-service"'); + const targetLabel = badges.filterWhere((badge) => badge.children().text() === 'target="http://some-service"'); expect(targetLabel.length).toEqual(1); }); it('renders an alert if url is invalid', () => { const endpointLink = shallow(); const err = endpointLink.find(Alert); - expect(err.render().text()).toEqual('Error: Invalid URL'); + expect(err.render().text()).toEqual('Error: Invalid URL: afdsacas'); }); it('handles params with multiple values correctly', () => { diff --git a/web/ui/react-app/src/pages/targets/EndpointLink.tsx b/web/ui/react-app/src/pages/targets/EndpointLink.tsx index d0376a140..083017225 100644 --- a/web/ui/react-app/src/pages/targets/EndpointLink.tsx +++ b/web/ui/react-app/src/pages/targets/EndpointLink.tsx @@ -10,10 +10,11 @@ const EndpointLink: FC = ({ endpoint, globalUrl }) => { let url: URL; try { url = new URL(endpoint); - } catch (e) { + } catch (err: unknown) { + const error = err as Error; return ( - Error: {e.message} + Error: {error.message} ); } diff --git a/web/ui/react-app/src/pages/targets/Filter.test.tsx b/web/ui/react-app/src/pages/targets/Filter.test.tsx index dc2451137..620866f76 100644 --- a/web/ui/react-app/src/pages/targets/Filter.test.tsx +++ b/web/ui/react-app/src/pages/targets/Filter.test.tsx @@ -15,7 +15,7 @@ describe('Filter', () => { showUnhealthy: true, }; let setFilter: SinonSpy; - let filterWrapper: ShallowWrapper, Component<{}, {}, Component>>; + let filterWrapper: ShallowWrapper, Component>; beforeEach(() => { setFilter = sinon.spy(); setExpaned = sinon.spy(); diff --git a/web/ui/react-app/src/pages/targets/ScrapePoolList.test.tsx b/web/ui/react-app/src/pages/targets/ScrapePoolList.test.tsx index 2ae951707..dc400de99 100644 --- a/web/ui/react-app/src/pages/targets/ScrapePoolList.test.tsx +++ b/web/ui/react-app/src/pages/targets/ScrapePoolList.test.tsx @@ -25,6 +25,9 @@ describe('ScrapePoolList', () => { const div = document.createElement('div'); div.id = `series-labels-${pool}-${idx}`; document.body.appendChild(div); + const div2 = document.createElement('div'); + div2.id = `scrape-duration-${pool}-${idx}`; + document.body.appendChild(div2); }); }); mock = fetchMock.mockResponse(JSON.stringify(sampleApiResponse)); @@ -47,7 +50,7 @@ describe('ScrapePoolList', () => { expect(panels).toHaveLength(3); const activeTargets: Target[] = sampleApiResponse.data.activeTargets as Target[]; activeTargets.forEach(({ scrapePool }: Target) => { - const panel = scrapePoolList.find(ScrapePoolPanel).filterWhere(panel => panel.prop('scrapePool') === scrapePool); + const panel = scrapePoolList.find(ScrapePoolPanel).filterWhere((panel) => panel.prop('scrapePool') === scrapePool); expect(panel).toHaveLength(1); }); }); diff --git a/web/ui/react-app/src/pages/targets/ScrapePoolList.tsx b/web/ui/react-app/src/pages/targets/ScrapePoolList.tsx index 72868f741..a5f218363 100644 --- a/web/ui/react-app/src/pages/targets/ScrapePoolList.tsx +++ b/web/ui/react-app/src/pages/targets/ScrapePoolList.tsx @@ -34,12 +34,12 @@ export const ScrapePoolContent: FC = ({ activeTargets }) => <> {Object.keys(targetGroups) - .filter(scrapePool => { + .filter((scrapePool) => { const targetGroup = targetGroups[scrapePool]; const isHealthy = targetGroup.upCount === targetGroup.targets.length; return (isHealthy && showHealthy) || (!isHealthy && showUnhealthy); }) - .map(scrapePool => ( + .map((scrapePool) => ( { const scrapePoolPanel = shallow(); it('renders a container', () => { - const div = scrapePoolPanel.find('div').filterWhere(elem => elem.hasClass('container')); + const div = scrapePoolPanel.find('div').filterWhere((elem) => elem.hasClass('container')); expect(div).toHaveLength(1); }); @@ -57,6 +57,9 @@ describe('ScrapePoolPanel', () => { const div = document.createElement('div'); div.id = `series-labels-prometheus-0`; document.body.appendChild(div); + const div2 = document.createElement('div'); + div2.id = `scrape-duration-prometheus-0`; + document.body.appendChild(div2); const scrapePoolPanel = mount(); const btn = scrapePoolPanel.find(Button); @@ -76,7 +79,7 @@ describe('ScrapePoolPanel', () => { const headers = table.find('th'); expect(table).toHaveLength(1); expect(headers).toHaveLength(6); - columns.forEach(col => { + columns.forEach((col) => { expect(headers.contains(col)); }); }); @@ -94,7 +97,7 @@ describe('ScrapePoolPanel', () => { }); it('renders a badge for health', () => { - const td = row.find('td').filterWhere(elem => Boolean(elem.hasClass('state'))); + const td = row.find('td').filterWhere((elem) => Boolean(elem.hasClass('state'))); const badge = td.find(Badge); expect(badge).toHaveLength(1); expect(badge.prop('color')).toEqual(getColor(health)); @@ -109,17 +112,17 @@ describe('ScrapePoolPanel', () => { }); it('renders last scrape time', () => { - const lastScrapeCell = row.find('td').filterWhere(elem => Boolean(elem.hasClass('last-scrape'))); + const lastScrapeCell = row.find('td').filterWhere((elem) => Boolean(elem.hasClass('last-scrape'))); expect(lastScrapeCell).toHaveLength(1); }); it('renders last scrape duration', () => { - const lastScrapeCell = row.find('td').filterWhere(elem => Boolean(elem.hasClass('scrape-duration'))); + const lastScrapeCell = row.find('td').filterWhere((elem) => Boolean(elem.hasClass('scrape-duration'))); expect(lastScrapeCell).toHaveLength(1); }); it('renders a badge for Errors', () => { - const td = row.find('td').filterWhere(elem => Boolean(elem.hasClass('errors'))); + const td = row.find('td').filterWhere((elem) => Boolean(elem.hasClass('errors'))); const badge = td.find(Badge); expect(badge).toHaveLength(lastError ? 1 : 0); if (lastError) { diff --git a/web/ui/react-app/src/pages/targets/ScrapePoolPanel.tsx b/web/ui/react-app/src/pages/targets/ScrapePoolPanel.tsx index 0fe90c490..35ff99eb2 100644 --- a/web/ui/react-app/src/pages/targets/ScrapePoolPanel.tsx +++ b/web/ui/react-app/src/pages/targets/ScrapePoolPanel.tsx @@ -5,9 +5,10 @@ import styles from './ScrapePoolPanel.module.css'; import { Target } from './target'; import EndpointLink from './EndpointLink'; import TargetLabels from './TargetLabels'; +import TargetScrapeDuration from './TargetScrapeDuration'; import { now } from 'moment'; import { ToggleMoreLess } from '../../components/ToggleMoreLess'; -import { formatRelative, humanizeDuration } from '../../utils'; +import { formatRelative } from '../../utils'; interface PanelProps { scrapePool: string; @@ -37,7 +38,7 @@ const ScrapePoolPanel: FC = ({ scrapePool, targetGroup, expanded, to
    - {columns.map(column => ( + {columns.map((column) => ( ))} @@ -54,6 +55,8 @@ const ScrapePoolPanel: FC = ({ scrapePool, targetGroup, expanded, to lastScrape, lastScrapeDuration, health, + scrapeInterval, + scrapeTimeout, } = target; const color = getColor(health); @@ -69,7 +72,15 @@ const ScrapePoolPanel: FC = ({ scrapePool, targetGroup, expanded, to - + ); diff --git a/web/ui/react-app/src/pages/targets/TargetLabels.test.tsx b/web/ui/react-app/src/pages/targets/TargetLabels.test.tsx index 1f7d56dc4..3ebe34f64 100644 --- a/web/ui/react-app/src/pages/targets/TargetLabels.test.tsx +++ b/web/ui/react-app/src/pages/targets/TargetLabels.test.tsx @@ -23,7 +23,7 @@ describe('targetLabels', () => { const targetLabels = shallow(); it('renders a div of series labels', () => { - const div = targetLabels.find('div').filterWhere(elem => elem.hasClass('series-labels-container')); + const div = targetLabels.find('div').filterWhere((elem) => elem.hasClass('series-labels-container')); expect(div).toHaveLength(1); expect(div.prop('id')).toEqual('series-labels-cortex/node-exporter_group/0-1'); }); @@ -33,7 +33,7 @@ describe('targetLabels', () => { Object.keys(l).forEach((labelName: string): void => { const badge = targetLabels .find(Badge) - .filterWhere(badge => badge.children().text() === `${labelName}="${l[labelName]}"`); + .filterWhere((badge) => badge.children().text() === `${labelName}="${l[labelName]}"`); expect(badge).toHaveLength(1); }); expect(targetLabels.find(Badge)).toHaveLength(3); diff --git a/web/ui/react-app/src/pages/targets/TargetLabels.tsx b/web/ui/react-app/src/pages/targets/TargetLabels.tsx index fdc7ae070..2664cda96 100644 --- a/web/ui/react-app/src/pages/targets/TargetLabels.tsx +++ b/web/ui/react-app/src/pages/targets/TargetLabels.tsx @@ -14,7 +14,7 @@ export interface TargetLabelsProps { scrapePool: string; } -const formatLabels = (labels: Labels): string[] => Object.keys(labels).map(key => `${key}="${labels[key]}"`); +const formatLabels = (labels: Labels): string[] => Object.keys(labels).map((key) => `${key}="${labels[key]}"`); const TargetLabels: FC = ({ discoveredLabels, labels, idx, scrapePool }) => { const [tooltipOpen, setTooltipOpen] = useState(false); @@ -25,7 +25,7 @@ const TargetLabels: FC = ({ discoveredLabels, labels, idx, sc return ( <>
    - {Object.keys(labels).map(labelName => { + {Object.keys(labels).map((labelName) => { return ( {`${labelName}="${labels[labelName]}"`} diff --git a/web/ui/react-app/src/pages/targets/TargetScrapeDuration.tsx b/web/ui/react-app/src/pages/targets/TargetScrapeDuration.tsx new file mode 100644 index 000000000..66fac4e08 --- /dev/null +++ b/web/ui/react-app/src/pages/targets/TargetScrapeDuration.tsx @@ -0,0 +1,41 @@ +import React, { FC, Fragment, useState } from 'react'; +import { Tooltip } from 'reactstrap'; +import 'css.escape'; +import { humanizeDuration } from '../../utils'; + +export interface TargetScrapeDurationProps { + duration: number; + interval: string; + timeout: string; + idx: number; + scrapePool: string; +} + +const TargetScrapeDuration: FC = ({ duration, interval, timeout, idx, scrapePool }) => { + const [scrapeTooltipOpen, setScrapeTooltipOpen] = useState(false); + const id = `scrape-duration-${scrapePool}-${idx}`; + + return ( + <> +
    + {humanizeDuration(duration * 1000)} +
    + setScrapeTooltipOpen(!scrapeTooltipOpen)} + target={CSS.escape(id)} + style={{ maxWidth: 'none', textAlign: 'left' }} + > + + Interval: {interval} +
    +
    + + Timeout: {timeout} + +
    + + ); +}; + +export default TargetScrapeDuration; diff --git a/web/ui/react-app/src/pages/targets/Targets.tsx b/web/ui/react-app/src/pages/targets/Targets.tsx index 0883d1c81..cc7647aca 100644 --- a/web/ui/react-app/src/pages/targets/Targets.tsx +++ b/web/ui/react-app/src/pages/targets/Targets.tsx @@ -1,8 +1,7 @@ import React, { FC } from 'react'; -import { RouteComponentProps } from '@reach/router'; import ScrapePoolList from './ScrapePoolList'; -const Targets: FC = () => { +const Targets: FC = () => { return ( <>

    Targets

    diff --git a/web/ui/react-app/src/pages/targets/__testdata__/testdata.ts b/web/ui/react-app/src/pages/targets/__testdata__/testdata.ts index 53f6a7e48..443aca3dc 100644 --- a/web/ui/react-app/src/pages/targets/__testdata__/testdata.ts +++ b/web/ui/react-app/src/pages/targets/__testdata__/testdata.ts @@ -1,5 +1,3 @@ -/* eslint @typescript-eslint/camelcase: 0 */ - import { ScrapePools } from '../target'; export const targetGroups: ScrapePools = Object.freeze({ @@ -25,6 +23,8 @@ export const targetGroups: ScrapePools = Object.freeze({ lastScrape: '2019-11-04T11:52:14.759299-07:00', lastScrapeDuration: 36560147, health: 'up', + scrapeInterval: '15s', + scrapeTimeout: '500ms', }, { discoveredLabels: { @@ -45,6 +45,8 @@ export const targetGroups: ScrapePools = Object.freeze({ lastScrape: '2019-11-04T11:52:24.731096-07:00', lastScrapeDuration: 49448763, health: 'up', + scrapeInterval: '15s', + scrapeTimeout: '500ms', }, { discoveredLabels: { @@ -65,6 +67,8 @@ export const targetGroups: ScrapePools = Object.freeze({ lastScrape: '2019-11-04T11:52:13.516654-07:00', lastScrapeDuration: 120916592, health: 'down', + scrapeInterval: '15s', + scrapeTimeout: '500ms', }, ], }, @@ -89,6 +93,8 @@ export const targetGroups: ScrapePools = Object.freeze({ lastScrape: '2019-11-04T11:52:14.145703-07:00', lastScrapeDuration: 3842307, health: 'up', + scrapeInterval: '15s', + scrapeTimeout: '500ms', }, ], }, @@ -113,6 +119,8 @@ export const targetGroups: ScrapePools = Object.freeze({ lastScrape: '2019-11-04T11:52:18.479731-07:00', lastScrapeDuration: 4050976, health: 'up', + scrapeInterval: '15s', + scrapeTimeout: '500ms', }, ], }, diff --git a/web/ui/react-app/src/pages/targets/target.test.ts b/web/ui/react-app/src/pages/targets/target.test.ts index e17ab59e7..4b0b47d13 100644 --- a/web/ui/react-app/src/pages/targets/target.test.ts +++ b/web/ui/react-app/src/pages/targets/target.test.ts @@ -1,5 +1,3 @@ -/* eslint @typescript-eslint/camelcase: 0 */ - import { sampleApiResponse } from './__testdata__/testdata'; import { groupTargets, Target, ScrapePools, getColor } from './target'; @@ -8,7 +6,7 @@ describe('groupTargets', () => { const targetGroups: ScrapePools = groupTargets(targets); it('groups a list of targets by scrape job', () => { - ['blackbox', 'prometheus/test', 'node_exporter'].forEach(scrapePool => { + ['blackbox', 'prometheus/test', 'node_exporter'].forEach((scrapePool) => { expect(Object.keys(targetGroups)).toContain(scrapePool); }); Object.keys(targetGroups).forEach((scrapePool: string): void => { diff --git a/web/ui/react-app/src/pages/targets/target.ts b/web/ui/react-app/src/pages/targets/target.ts index 909c67e7b..faa89bb18 100644 --- a/web/ui/react-app/src/pages/targets/target.ts +++ b/web/ui/react-app/src/pages/targets/target.ts @@ -12,6 +12,8 @@ export interface Target { lastScrape: string; lastScrapeDuration: number; health: string; + scrapeInterval: string; + scrapeTimeout: string; } export interface DroppedTarget { diff --git a/web/ui/react-app/src/pages/tsdbStatus/TSDBStatus.test.tsx b/web/ui/react-app/src/pages/tsdbStatus/TSDBStatus.test.tsx index d6d41708f..b7c683115 100644 --- a/web/ui/react-app/src/pages/tsdbStatus/TSDBStatus.test.tsx +++ b/web/ui/react-app/src/pages/tsdbStatus/TSDBStatus.test.tsx @@ -121,11 +121,7 @@ describe('TSDB Stats', () => { credentials: 'same-origin', }); - const headStats = page - .find(Table) - .at(0) - .find('tbody') - .find('td'); + const headStats = page.find(Table).at(0).find('tbody').find('td'); ['508', '937', '1234', '2020-06-07T08:00:00.000Z (1591516800000)', '2020-08-31T18:00:00.143Z (1598896800143)'].forEach( (value, i) => { expect(headStats.at(i).text()).toEqual(value); @@ -170,11 +166,7 @@ describe('TSDB Stats', () => { expect(page.find('h2').text()).toEqual('TSDB Status'); - const headStats = page - .find(Table) - .at(0) - .find('tbody') - .find('td'); + const headStats = page.find(Table).at(0).find('tbody').find('td'); ['0', '0', '0', 'No datapoints yet', 'No datapoints yet'].forEach((value, i) => { expect(headStats.at(i).text()).toEqual(value); }); @@ -199,11 +191,7 @@ describe('TSDB Stats', () => { expect(page.find('h2').text()).toEqual('TSDB Status'); - const headStats = page - .find(Table) - .at(0) - .find('tbody') - .find('td'); + const headStats = page.find(Table).at(0).find('tbody').find('td'); ['1', '0', '0', 'Error parsing time (9223372036854776000)', 'Error parsing time (-9223372036854776000)'].forEach( (value, i) => { expect(headStats.at(i).text()).toEqual(value); diff --git a/web/ui/react-app/src/pages/tsdbStatus/TSDBStatus.tsx b/web/ui/react-app/src/pages/tsdbStatus/TSDBStatus.tsx index 37fc71cb2..bc4dfe99b 100644 --- a/web/ui/react-app/src/pages/tsdbStatus/TSDBStatus.tsx +++ b/web/ui/react-app/src/pages/tsdbStatus/TSDBStatus.tsx @@ -1,5 +1,4 @@ import React, { FC } from 'react'; -import { RouteComponentProps } from '@reach/router'; import { Table } from 'reactstrap'; import { useFetch } from '../../hooks/useFetch'; @@ -113,7 +112,7 @@ TSDBStatusContent.displayName = 'TSDBStatusContent'; const TSDBStatusContentWithStatusIndicator = withStatusIndicator(TSDBStatusContent); -const TSDBStatus: FC = () => { +const TSDBStatus: FC = () => { const pathPrefix = usePathPrefix(); const { response, error, isLoading } = useFetch(`${pathPrefix}/${API_PATH}/status/tsdb`); diff --git a/web/ui/react-app/src/setupTests.ts b/web/ui/react-app/src/setupTests.ts index 4a62858cc..f4d3d39b6 100644 --- a/web/ui/react-app/src/setupTests.ts +++ b/web/ui/react-app/src/setupTests.ts @@ -1,22 +1,39 @@ import { configure } from 'enzyme'; -import Adapter from 'enzyme-adapter-react-16'; +import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; import { GlobalWithFetchMock } from 'jest-fetch-mock'; import 'mutationobserver-shim'; // Needed for CodeMirror. import './globals'; +import 'jest-canvas-mock'; configure({ adapter: new Adapter() }); const customGlobal: GlobalWithFetchMock = global as GlobalWithFetchMock; customGlobal.fetch = require('jest-fetch-mock'); customGlobal.fetchMock = customGlobal.fetch; +// https://stackoverflow.com/questions/39830580/jest-test-fails-typeerror-window-matchmedia-is-not-a-function +// https://jestjs.io/docs/manual-mocks#mocking-methods-which-are-not-implemented-in-jsdom +Object.defineProperty(window, 'matchMedia', { + writable: true, + value: jest.fn().mockImplementation((query) => ({ + matches: false, + media: query, + onchange: null, + addListener: jest.fn(), // Deprecated + removeListener: jest.fn(), // Deprecated + addEventListener: jest.fn(), + removeEventListener: jest.fn(), + dispatchEvent: jest.fn(), + })), +}); + // CodeMirror in the expression input requires this DOM API. When we upgrade react-scripts // and the associated Jest deps, hopefully this won't be needed anymore. -document.getSelection = function() { +document.getSelection = function () { return { - addRange: function() { + addRange: function () { return; }, - removeAllRanges: function() { + removeAllRanges: function () { return; }, }; diff --git a/web/ui/react-app/src/themes/_bootstrap_dark.scss b/web/ui/react-app/src/themes/_bootstrap_dark.scss index 327e0a710..e256aa4d7 100644 --- a/web/ui/react-app/src/themes/_bootstrap_dark.scss +++ b/web/ui/react-app/src/themes/_bootstrap_dark.scss @@ -5,14 +5,14 @@ and https://github.com/ForEvolve/bootstrap-dark/issues/49 */ -@import 'node_modules/bootstrap/scss/functions'; -@import 'node_modules/bootstrap/scss/variables'; +@import '~bootstrap/scss/functions'; +@import '~bootstrap/scss/variables'; -@import 'node_modules/@forevolve/bootstrap-dark/scss/dark-variables'; +@import '~@forevolve/bootstrap-dark/scss/dark-variables'; -@import 'node_modules/bootstrap/scss/mixins'; -@import 'node_modules/@forevolve/bootstrap-dark/scss/mixins-overrides'; -@import 'node_modules/@forevolve/bootstrap-dark/scss/dark-mixins'; +@import '~bootstrap/scss/mixins'; +@import '~@forevolve/bootstrap-dark/scss/mixins-overrides'; +@import '~@forevolve/bootstrap-dark/scss/dark-mixins'; html { font-family: sans-serif; // 2 @@ -33,51 +33,51 @@ body.bootstrap-dark { } .bootstrap-dark { - @import 'node_modules/bootstrap/scss/root'; - @import 'node_modules/bootstrap/scss/type'; - @import 'node_modules/bootstrap/scss/images'; - @import 'node_modules/bootstrap/scss/code'; - @import 'node_modules/bootstrap/scss/grid'; + @import '~bootstrap/scss/root'; + @import '~bootstrap/scss/type'; + @import '~bootstrap/scss/images'; + @import '~bootstrap/scss/code'; + @import '~bootstrap/scss/grid'; - @import 'node_modules/bootstrap/scss/tables'; - @import 'node_modules/@forevolve/bootstrap-dark/scss/dark-tables'; + @import '~bootstrap/scss/tables'; + @import '~@forevolve/bootstrap-dark/scss/dark-tables'; - @import 'node_modules/bootstrap/scss/forms'; - @import 'node_modules/@forevolve/bootstrap-dark/scss/form-overrides'; + @import '~bootstrap/scss/forms'; + @import '~@forevolve/bootstrap-dark/scss/form-overrides'; - @import 'node_modules/bootstrap/scss/buttons'; - @import 'node_modules/bootstrap/scss/transitions'; - @import 'node_modules/bootstrap/scss/dropdown'; - @import 'node_modules/bootstrap/scss/button-group'; + @import '~bootstrap/scss/buttons'; + @import '~bootstrap/scss/transitions'; + @import '~bootstrap/scss/dropdown'; + @import '~bootstrap/scss/button-group'; - @import 'node_modules/bootstrap/scss/input-group'; - @import 'node_modules/@forevolve/bootstrap-dark/scss/dark-input-group'; + @import '~bootstrap/scss/input-group'; + @import '~@forevolve/bootstrap-dark/scss/dark-input-group'; - @import 'node_modules/bootstrap/scss/custom-forms'; - @import 'node_modules/bootstrap/scss/nav'; - @import 'node_modules/bootstrap/scss/navbar'; - @import 'node_modules/bootstrap/scss/card'; - @import 'node_modules/bootstrap/scss/breadcrumb'; - @import 'node_modules/bootstrap/scss/pagination'; - @import 'node_modules/bootstrap/scss/badge'; - @import 'node_modules/bootstrap/scss/jumbotron'; - @import 'node_modules/bootstrap/scss/alert'; - @import 'node_modules/bootstrap/scss/progress'; - @import 'node_modules/bootstrap/scss/media'; - @import 'node_modules/bootstrap/scss/list-group'; - @import 'node_modules/bootstrap/scss/close'; - @import 'node_modules/bootstrap/scss/toasts'; - @import 'node_modules/bootstrap/scss/modal'; - @import 'node_modules/bootstrap/scss/tooltip'; - @import 'node_modules/bootstrap/scss/popover'; - @import 'node_modules/bootstrap/scss/carousel'; - @import 'node_modules/bootstrap/scss/spinners'; - @import 'node_modules/bootstrap/scss/utilities'; + @import '~bootstrap/scss/custom-forms'; + @import '~bootstrap/scss/nav'; + @import '~bootstrap/scss/navbar'; + @import '~bootstrap/scss/card'; + @import '~bootstrap/scss/breadcrumb'; + @import '~bootstrap/scss/pagination'; + @import '~bootstrap/scss/badge'; + @import '~bootstrap/scss/jumbotron'; + @import '~bootstrap/scss/alert'; + @import '~bootstrap/scss/progress'; + @import '~bootstrap/scss/media'; + @import '~bootstrap/scss/list-group'; + @import '~bootstrap/scss/close'; + @import '~bootstrap/scss/toasts'; + @import '~bootstrap/scss/modal'; + @import '~bootstrap/scss/tooltip'; + @import '~bootstrap/scss/popover'; + @import '~bootstrap/scss/carousel'; + @import '~bootstrap/scss/spinners'; + @import '~bootstrap/scss/utilities'; .navbar-themed { @extend .bg-dark; @extend .navbar-dark; } - @import 'node_modules/@forevolve/bootstrap-dark/scss/dark-styles'; + @import '~@forevolve/bootstrap-dark/scss/dark-styles'; } diff --git a/web/ui/react-app/src/themes/_bootstrap_light.scss b/web/ui/react-app/src/themes/_bootstrap_light.scss index e33fc3ec7..13f437362 100644 --- a/web/ui/react-app/src/themes/_bootstrap_light.scss +++ b/web/ui/react-app/src/themes/_bootstrap_light.scss @@ -6,14 +6,14 @@ and https://github.com/ForEvolve/bootstrap-dark/issues/49 */ -@import 'node_modules/bootstrap/scss/functions'; -@import 'node_modules/bootstrap/scss/variables'; +@import '~bootstrap/scss/functions'; +@import '~bootstrap/scss/variables'; -@import 'node_modules/bootstrap/scss/mixins'; -@import 'node_modules/@forevolve/bootstrap-dark/scss/mixins-overrides'; +@import '~bootstrap/scss/mixins'; +@import '~@forevolve/bootstrap-dark/scss/mixins-overrides'; /* Add reboot styles using light theme variables */ -@import 'node_modules/bootstrap/scss/reboot'; +@import '~bootstrap/scss/reboot'; body.bootstrap { margin: 0; // 1 @@ -27,41 +27,41 @@ body.bootstrap { } .bootstrap { - @import 'node_modules/bootstrap/scss/root'; - @import 'node_modules/bootstrap/scss/type'; - @import 'node_modules/bootstrap/scss/images'; - @import 'node_modules/bootstrap/scss/code'; - @import 'node_modules/bootstrap/scss/grid'; - @import 'node_modules/bootstrap/scss/tables'; + @import '~bootstrap/scss/root'; + @import '~bootstrap/scss/type'; + @import '~bootstrap/scss/images'; + @import '~bootstrap/scss/code'; + @import '~bootstrap/scss/grid'; + @import '~bootstrap/scss/tables'; - @import 'node_modules/bootstrap/scss/forms'; - @import 'node_modules/@forevolve/bootstrap-dark/scss/form-overrides'; + @import '~bootstrap/scss/forms'; + @import '~@forevolve/bootstrap-dark/scss/form-overrides'; - @import 'node_modules/bootstrap/scss/buttons'; - @import 'node_modules/bootstrap/scss/transitions'; - @import 'node_modules/bootstrap/scss/dropdown'; - @import 'node_modules/bootstrap/scss/button-group'; - @import 'node_modules/bootstrap/scss/input-group'; - @import 'node_modules/bootstrap/scss/custom-forms'; - @import 'node_modules/bootstrap/scss/nav'; - @import 'node_modules/bootstrap/scss/navbar'; - @import 'node_modules/bootstrap/scss/card'; - @import 'node_modules/bootstrap/scss/breadcrumb'; - @import 'node_modules/bootstrap/scss/pagination'; - @import 'node_modules/bootstrap/scss/badge'; - @import 'node_modules/bootstrap/scss/jumbotron'; - @import 'node_modules/bootstrap/scss/alert'; - @import 'node_modules/bootstrap/scss/progress'; - @import 'node_modules/bootstrap/scss/media'; - @import 'node_modules/bootstrap/scss/list-group'; - @import 'node_modules/bootstrap/scss/close'; - @import 'node_modules/bootstrap/scss/toasts'; - @import 'node_modules/bootstrap/scss/modal'; - @import 'node_modules/bootstrap/scss/tooltip'; - @import 'node_modules/bootstrap/scss/popover'; - @import 'node_modules/bootstrap/scss/carousel'; - @import 'node_modules/bootstrap/scss/spinners'; - @import 'node_modules/bootstrap/scss/utilities'; + @import '~bootstrap/scss/buttons'; + @import '~bootstrap/scss/transitions'; + @import '~bootstrap/scss/dropdown'; + @import '~bootstrap/scss/button-group'; + @import '~bootstrap/scss/input-group'; + @import '~bootstrap/scss/custom-forms'; + @import '~bootstrap/scss/nav'; + @import '~bootstrap/scss/navbar'; + @import '~bootstrap/scss/card'; + @import '~bootstrap/scss/breadcrumb'; + @import '~bootstrap/scss/pagination'; + @import '~bootstrap/scss/badge'; + @import '~bootstrap/scss/jumbotron'; + @import '~bootstrap/scss/alert'; + @import '~bootstrap/scss/progress'; + @import '~bootstrap/scss/media'; + @import '~bootstrap/scss/list-group'; + @import '~bootstrap/scss/close'; + @import '~bootstrap/scss/toasts'; + @import '~bootstrap/scss/modal'; + @import '~bootstrap/scss/tooltip'; + @import '~bootstrap/scss/popover'; + @import '~bootstrap/scss/carousel'; + @import '~bootstrap/scss/spinners'; + @import '~bootstrap/scss/utilities'; .navbar-themed { @extend .bg-light; diff --git a/web/ui/react-app/src/themes/_shared.scss b/web/ui/react-app/src/themes/_shared.scss index d9a8138fe..c47d07f8b 100644 --- a/web/ui/react-app/src/themes/_shared.scss +++ b/web/ui/react-app/src/themes/_shared.scss @@ -135,8 +135,9 @@ input[type='checkbox']:checked + label { flex-wrap: nowrap; } -.alert.alert-danger { - margin-bottom: 10px; +.alert { + padding: 10px; + margin-bottom: .2rem; } .nav-tabs .nav-link { @@ -320,6 +321,7 @@ input[type='checkbox']:checked + label { display: flex; justify-content: space-between; margin-bottom: 10px; + margin-top: 10px; padding: 10px; } diff --git a/web/ui/react-app/src/types/index.d.ts b/web/ui/react-app/src/types/index.d.ts index c809c1d90..7033555b2 100644 --- a/web/ui/react-app/src/types/index.d.ts +++ b/web/ui/react-app/src/types/index.d.ts @@ -1,9 +1,7 @@ declare namespace jquery.flot { - // eslint-disable-next-line @typescript-eslint/class-name-casing interface plot extends jquery.flot.plot { destroy: () => void; } - // eslint-disable-next-line @typescript-eslint/class-name-casing interface plotOptions extends jquery.flot.plotOptions { tooltip: { show?: boolean; diff --git a/web/ui/react-app/src/utils/index.ts b/web/ui/react-app/src/utils/index.ts index a452cd266..ca714970f 100644 --- a/web/ui/react-app/src/utils/index.ts +++ b/web/ui/react-app/src/utils/index.ts @@ -3,13 +3,11 @@ import moment from 'moment-timezone'; import { PanelOptions, PanelType, PanelDefaultOptions } from '../pages/graph/Panel'; import { PanelMeta } from '../pages/graph/PanelList'; -export const generateID = () => { - return `_${Math.random() - .toString(36) - .substr(2, 9)}`; +export const generateID = (): string => { + return `_${Math.random().toString(36).substr(2, 9)}`; }; -export const byEmptyString = (p: string) => p.length > 0; +export const byEmptyString = (p: string): boolean => p.length > 0; export const isPresent = (obj: T): obj is NonNullable => obj !== null && obj !== undefined; @@ -23,12 +21,12 @@ export const escapeHTML = (str: string): string => { '/': '/', }; - return String(str).replace(/[&<>"'/]/g, function(s) { + return String(str).replace(/[&<>"'/]/g, function (s) { return entityMap[s]; }); }; -export const metricToSeriesName = (labels: { [key: string]: string }) => { +export const metricToSeriesName = (labels: { [key: string]: string }): string => { if (labels === null) { return 'scalar'; } @@ -219,11 +217,13 @@ export const parseOption = (param: string): Partial => { return {}; }; -export const formatParam = (key: string) => (paramName: string, value: number | string | boolean) => { - return `g${key}.${paramName}=${encodeURIComponent(value)}`; -}; +export const formatParam = + (key: string) => + (paramName: string, value: number | string | boolean): string => { + return `g${key}.${paramName}=${encodeURIComponent(value)}`; + }; -export const toQueryString = ({ key, options }: PanelMeta) => { +export const toQueryString = ({ key, options }: PanelMeta): string => { const formatWithKey = formatParam(key); const { expr, type, stacked, range, endTime, resolution, showExemplars } = options; const time = isPresent(endTime) ? formatTime(endTime) : false; @@ -239,27 +239,46 @@ export const toQueryString = ({ key, options }: PanelMeta) => { return urlParams.filter(byEmptyString).join('&'); }; -export const encodePanelOptionsToQueryString = (panels: PanelMeta[]) => { +export const encodePanelOptionsToQueryString = (panels: PanelMeta[]): string => { return `?${panels.map(toQueryString).join('&')}`; }; -export const createExpressionLink = (expr: string) => { +export const createExpressionLink = (expr: string): string => { return `../graph?g0.expr=${encodeURIComponent(expr)}&g0.tab=1&g0.stacked=0&g0.show_exemplars=0.g0.range_input=1h.`; }; export const mapObjEntries = ( o: T, cb: ([k, v]: [string, T[key]], i: number, arr: [string, T[key]][]) => Z -) => Object.entries(o).map(cb); +): Z[] => Object.entries(o).map(cb); -export const callAll = (...fns: Array<(...args: any) => void>) => (...args: any) => { - // eslint-disable-next-line prefer-spread - fns.filter(Boolean).forEach(fn => fn.apply(null, args)); -}; +export const callAll = + ( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + ...fns: Array<(...args: any) => void> + ) => + // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types + (...args: any): void => { + // eslint-disable-next-line prefer-spread + fns.filter(Boolean).forEach((fn) => fn.apply(null, args)); + }; -export const parsePrometheusFloat = (value: string) => { +export const parsePrometheusFloat = (value: string): string | number => { if (isNaN(Number(value))) { return value; } else { return Number(value); } }; + +export function debounce( + func: (...args: Params) => unknown, + timeout: number +): (...args: Params) => void { + let timer: NodeJS.Timeout; + return (...args: Params) => { + clearTimeout(timer); + timer = setTimeout(() => { + func(...args); + }, timeout); + }; +} diff --git a/web/ui/react-app/src/utils/utils.test.ts b/web/ui/react-app/src/utils/utils.test.ts index c7fcc635c..99a72d7b8 100644 --- a/web/ui/react-app/src/utils/utils.test.ts +++ b/web/ui/react-app/src/utils/utils.test.ts @@ -136,7 +136,7 @@ describe('Utils', () => { }, ]; - tests.forEach(t => { + tests.forEach((t) => { it(t.input, () => { const d = parseDuration(t.input); expect(d).toEqual(t.output); @@ -148,7 +148,7 @@ describe('Utils', () => { describe('should fail to parse invalid durations', () => { const tests = ['1', '1y1m1d', '-1w', '1.5d', 'd', '']; - tests.forEach(t => { + tests.forEach((t) => { it(t, () => { expect(parseDuration(t)).toBe(null); }); diff --git a/web/ui/react-app/tsconfig.json b/web/ui/react-app/tsconfig.json index 15dc86f99..8615ce31c 100644 --- a/web/ui/react-app/tsconfig.json +++ b/web/ui/react-app/tsconfig.json @@ -17,9 +17,12 @@ "resolveJsonModule": true, "isolatedModules": true, "noEmit": true, - "jsx": "preserve" + "jsx": "react-jsx", + "noFallthroughCasesInSwitch": true }, "include": [ - "src", "test", "react-app-env.d.ts" + "src", + "test", + "react-app-env.d.ts" ] } diff --git a/web/ui/react-app/yarn.lock b/web/ui/react-app/yarn.lock deleted file mode 100644 index 2fba496ff..000000000 --- a/web/ui/react-app/yarn.lock +++ /dev/null @@ -1,12381 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/code-frame@7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" - integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== - dependencies: - "@babel/highlight" "^7.8.3" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.14.5", "@babel/code-frame@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" - integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== - dependencies: - "@babel/highlight" "^7.14.5" - -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.14.5", "@babel/compat-data@^7.14.7", "@babel/compat-data@^7.9.0": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.7.tgz#7b047d7a3a89a67d2258dc61f604f098f1bc7e08" - integrity sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw== - -"@babel/core@7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" - integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.0" - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helpers" "^7.9.0" - "@babel/parser" "^7.9.0" - "@babel/template" "^7.8.6" - "@babel/traverse" "^7.9.0" - "@babel/types" "^7.9.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.13" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/core@^7.1.0", "@babel/core@^7.4.5": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.14.8.tgz#20cdf7c84b5d86d83fac8710a8bc605a7ba3f010" - integrity sha512-/AtaeEhT6ErpDhInbXmjHcUQXH0L0TEgscfcxk1qbOvLuKCa5aZT0SOOtDKFY96/CLROwbLSKyFor6idgNaU4Q== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.14.8" - "@babel/helper-compilation-targets" "^7.14.5" - "@babel/helper-module-transforms" "^7.14.8" - "@babel/helpers" "^7.14.8" - "@babel/parser" "^7.14.8" - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.14.8" - "@babel/types" "^7.14.8" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.1.2" - semver "^6.3.0" - source-map "^0.5.0" - -"@babel/generator@^7.14.8", "@babel/generator@^7.4.0", "@babel/generator@^7.9.0": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.14.8.tgz#bf86fd6af96cf3b74395a8ca409515f89423e070" - integrity sha512-cYDUpvIzhBVnMzRoY1fkSEhK/HmwEVwlyULYgn/tMQYd6Obag3ylCjONle3gdErfXBW61SVTlR9QR7uWlgeIkg== - dependencies: - "@babel/types" "^7.14.8" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/helper-annotate-as-pure@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.14.5.tgz#7bf478ec3b71726d56a8ca5775b046fc29879e61" - integrity sha512-EivH9EgBIb+G8ij1B2jAwSH36WnGvkQSEC6CkX/6v6ZFlw5fVOHvsgGF4uiEHO2GzMvunZb6tDLQEQSdrdocrA== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.14.5.tgz#b939b43f8c37765443a19ae74ad8b15978e0a191" - integrity sha512-YTA/Twn0vBXDVGJuAX6PwW7x5zQei1luDDo2Pl6q1qZ7hVNl0RZrhHCQG/ArGpR29Vl7ETiB8eJyrvpuRp300w== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.14.5", "@babel/helper-compilation-targets@^7.8.7": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz#7a99c5d0967911e972fe2c3411f7d5b498498ecf" - integrity sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw== - dependencies: - "@babel/compat-data" "^7.14.5" - "@babel/helper-validator-option" "^7.14.5" - browserslist "^4.16.6" - semver "^6.3.0" - -"@babel/helper-create-class-features-plugin@^7.14.5", "@babel/helper-create-class-features-plugin@^7.14.6", "@babel/helper-create-class-features-plugin@^7.8.3": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.8.tgz#a6f8c3de208b1e5629424a9a63567f56501955fc" - integrity sha512-bpYvH8zJBWzeqi1o+co8qOrw+EXzQ/0c74gVmY205AWXy9nifHrOg77y+1zwxX5lXE7Icq4sPlSQ4O2kWBrteQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-member-expression-to-functions" "^7.14.7" - "@babel/helper-optimise-call-expression" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" - "@babel/helper-split-export-declaration" "^7.14.5" - -"@babel/helper-create-regexp-features-plugin@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz#c7d5ac5e9cf621c26057722fb7a8a4c5889358c4" - integrity sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A== - dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - regexpu-core "^4.7.1" - -"@babel/helper-define-polyfill-provider@^0.2.2": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz#0525edec5094653a282688d34d846e4c75e9c0b6" - integrity sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew== - dependencies: - "@babel/helper-compilation-targets" "^7.13.0" - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/traverse" "^7.13.0" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - semver "^6.1.2" - -"@babel/helper-explode-assignable-expression@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.14.5.tgz#8aa72e708205c7bb643e45c73b4386cdf2a1f645" - integrity sha512-Htb24gnGJdIGT4vnRKMdoXiOIlqOLmdiUYpAQ0mYfgVT/GDm8GOYhgi4GL+hMKrkiPRohO4ts34ELFsGAPQLDQ== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-function-name@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz#89e2c474972f15d8e233b52ee8c480e2cfcd50c4" - integrity sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ== - dependencies: - "@babel/helper-get-function-arity" "^7.14.5" - "@babel/template" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/helper-get-function-arity@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz#25fbfa579b0937eee1f3b805ece4ce398c431815" - integrity sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-hoist-variables@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz#e0dd27c33a78e577d7c8884916a3e7ef1f7c7f8d" - integrity sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-member-expression-to-functions@^7.14.5", "@babel/helper-member-expression-to-functions@^7.14.7": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz#97e56244beb94211fe277bd818e3a329c66f7970" - integrity sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.14.5", "@babel/helper-module-imports@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz#6d1a44df6a38c957aa7c312da076429f11b422f3" - integrity sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-module-transforms@^7.14.5", "@babel/helper-module-transforms@^7.14.8", "@babel/helper-module-transforms@^7.9.0": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.14.8.tgz#d4279f7e3fd5f4d5d342d833af36d4dd87d7dc49" - integrity sha512-RyE+NFOjXn5A9YU1dkpeBaduagTlZ0+fccnIcAGbv1KGUlReBj7utF7oEth8IdIBQPcux0DDgW5MFBH2xu9KcA== - dependencies: - "@babel/helper-module-imports" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" - "@babel/helper-simple-access" "^7.14.8" - "@babel/helper-split-export-declaration" "^7.14.5" - "@babel/helper-validator-identifier" "^7.14.8" - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.14.8" - "@babel/types" "^7.14.8" - -"@babel/helper-optimise-call-expression@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz#f27395a8619e0665b3f0364cddb41c25d71b499c" - integrity sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" - integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== - -"@babel/helper-remap-async-to-generator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.14.5.tgz#51439c913612958f54a987a4ffc9ee587a2045d6" - integrity sha512-rLQKdQU+HYlxBwQIj8dk4/0ENOUEhA/Z0l4hN8BexpvmSMN9oA9EagjnhnDpNsRdWCfjwa4mn/HyBXO9yhQP6A== - dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - "@babel/helper-wrap-function" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/helper-replace-supers@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz#0ecc0b03c41cd567b4024ea016134c28414abb94" - integrity sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.14.5" - "@babel/helper-optimise-call-expression" "^7.14.5" - "@babel/traverse" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/helper-simple-access@^7.14.5", "@babel/helper-simple-access@^7.14.8": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz#82e1fec0644a7e775c74d305f212c39f8fe73924" - integrity sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg== - dependencies: - "@babel/types" "^7.14.8" - -"@babel/helper-skip-transparent-expression-wrappers@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.14.5.tgz#96f486ac050ca9f44b009fbe5b7d394cab3a0ee4" - integrity sha512-dmqZB7mrb94PZSAOYtr+ZN5qt5owZIAgqtoTuqiFbHFtxgEcmQlRJVI+bO++fciBunXtB6MK7HrzrfcAzIz2NQ== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-split-export-declaration@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz#22b23a54ef51c2b7605d851930c1976dd0bc693a" - integrity sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.8": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.8.tgz#32be33a756f29e278a0d644fa08a2c9e0f88a34c" - integrity sha512-ZGy6/XQjllhYQrNw/3zfWRwZCTVSiBLZ9DHVZxn9n2gip/7ab8mv2TWlKPIBk26RwedCBoWdjLmn+t9na2Gcow== - -"@babel/helper-validator-option@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" - integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== - -"@babel/helper-wrap-function@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.14.5.tgz#5919d115bf0fe328b8a5d63bcb610f51601f2bff" - integrity sha512-YEdjTCq+LNuNS1WfxsDCNpgXkJaIyqco6DAelTUjT4f2KIWC1nBcaCaSdHTBqQVLnTBexBcVcFhLSU1KnYuePQ== - dependencies: - "@babel/helper-function-name" "^7.14.5" - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/helpers@^7.14.8", "@babel/helpers@^7.9.0": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.14.8.tgz#839f88f463025886cff7f85a35297007e2da1b77" - integrity sha512-ZRDmI56pnV+p1dH6d+UN6GINGz7Krps3+270qqI9UJ4wxYThfAIcI5i7j5vXC4FJ3Wap+S9qcebxeYiqn87DZw== - dependencies: - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.14.8" - "@babel/types" "^7.14.8" - -"@babel/highlight@^7.14.5", "@babel/highlight@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" - integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== - dependencies: - "@babel/helper-validator-identifier" "^7.14.5" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.14.5", "@babel/parser@^7.14.8", "@babel/parser@^7.4.3", "@babel/parser@^7.7.0", "@babel/parser@^7.9.0": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.8.tgz#66fd41666b2d7b840bd5ace7f7416d5ac60208d4" - integrity sha512-syoCQFOoo/fzkWDeM0dLEZi5xqurb5vuyzwIMNZRNun+N/9A4cUZeQaE7dTrB8jGaKuJRBtEOajtnmw0I5hvvA== - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.14.5.tgz#4b467302e1548ed3b1be43beae2cc9cf45e0bb7e" - integrity sha512-ZoJS2XCKPBfTmL122iP6NM9dOg+d4lc9fFk3zxc8iDjvt8Pk4+TlsHSKhIPf6X+L5ORCdBzqMZDjL/WHj7WknQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" - "@babel/plugin-proposal-optional-chaining" "^7.14.5" - -"@babel/plugin-proposal-async-generator-functions@^7.14.7", "@babel/plugin-proposal-async-generator-functions@^7.8.3": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.7.tgz#784a48c3d8ed073f65adcf30b57bcbf6c8119ace" - integrity sha512-RK8Wj7lXLY3bqei69/cc25gwS5puEc3dknoFPFbqfy3XxYQBQFvu4ioWpafMBAB+L9NyptQK4nMOa5Xz16og8Q== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-remap-async-to-generator" "^7.14.5" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-class-properties@7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz#5e06654af5cd04b608915aada9b2a6788004464e" - integrity sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-proposal-class-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz#40d1ee140c5b1e31a350f4f5eed945096559b42e" - integrity sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-proposal-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.14.5.tgz#158e9e10d449c3849ef3ecde94a03d9f1841b681" - integrity sha512-KBAH5ksEnYHCegqseI5N9skTdxgJdmDoAOc0uXa+4QMYKeZD0w5IARh4FMlTNtaHhbB8v+KzMdTgxMMzsIy6Yg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-proposal-decorators@7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.8.3.tgz#2156860ab65c5abf068c3f67042184041066543e" - integrity sha512-e3RvdvS4qPJVTe288DlXjwKflpfy1hr0j5dz5WpIYYeP7vQZg2WfAEIp8k5/Lwis/m5REXEteIz6rrcDtXXG7w== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-decorators" "^7.8.3" - -"@babel/plugin-proposal-dynamic-import@^7.14.5", "@babel/plugin-proposal-dynamic-import@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz#0c6617df461c0c1f8fff3b47cd59772360101d2c" - integrity sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-proposal-export-namespace-from@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz#dbad244310ce6ccd083072167d8cea83a52faf76" - integrity sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-proposal-json-strings@^7.14.5", "@babel/plugin-proposal-json-strings@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz#38de60db362e83a3d8c944ac858ddf9f0c2239eb" - integrity sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-proposal-logical-assignment-operators@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz#6e6229c2a99b02ab2915f82571e0cc646a40c738" - integrity sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-proposal-nullish-coalescing-operator@7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz#e4572253fdeed65cddeecfdab3f928afeb2fd5d2" - integrity sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.14.5", "@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz#ee38589ce00e2cc59b299ec3ea406fcd3a0fdaf6" - integrity sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-proposal-numeric-separator@7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz#5d6769409699ec9b3b68684cd8116cedff93bad8" - integrity sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - -"@babel/plugin-proposal-numeric-separator@^7.14.5", "@babel/plugin-proposal-numeric-separator@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz#83631bf33d9a51df184c2102a069ac0c58c05f18" - integrity sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-proposal-object-rest-spread@^7.14.7", "@babel/plugin-proposal-object-rest-spread@^7.9.0": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.7.tgz#5920a2b3df7f7901df0205974c0641b13fd9d363" - integrity sha512-082hsZz+sVabfmDWo1Oct1u1AgbKbUAyVgmX4otIc7bdsRgHBXwTwb3DpDmD4Eyyx6DNiuz5UAATT655k+kL5g== - dependencies: - "@babel/compat-data" "^7.14.7" - "@babel/helper-compilation-targets" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.14.5" - -"@babel/plugin-proposal-optional-catch-binding@^7.14.5", "@babel/plugin-proposal-optional-catch-binding@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz#939dd6eddeff3a67fdf7b3f044b5347262598c3c" - integrity sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-proposal-optional-chaining@7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz#31db16b154c39d6b8a645292472b98394c292a58" - integrity sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - -"@babel/plugin-proposal-optional-chaining@^7.14.5", "@babel/plugin-proposal-optional-chaining@^7.9.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz#fa83651e60a360e3f13797eef00b8d519695b603" - integrity sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-proposal-private-methods@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz#37446495996b2945f30f5be5b60d5e2aa4f5792d" - integrity sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-proposal-private-property-in-object@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.5.tgz#9f65a4d0493a940b4c01f8aa9d3f1894a587f636" - integrity sha512-62EyfyA3WA0mZiF2e2IV9mc9Ghwxcg8YTu8BS4Wss4Y3PY725OmS9M0qLORbJwLqFtGh+jiE4wAmocK2CTUK2Q== - dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - "@babel/helper-create-class-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - -"@babel/plugin-proposal-unicode-property-regex@^7.14.5", "@babel/plugin-proposal-unicode-property-regex@^7.4.4", "@babel/plugin-proposal-unicode-property-regex@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz#0f95ee0e757a5d647f378daa0eca7e93faa8bbe8" - integrity sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" - integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-decorators@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.14.5.tgz#eafb9c0cbe09c8afeb964ba3a7bbd63945a72f20" - integrity sha512-c4sZMRWL4GSvP1EXy0woIP7m4jkVcEuG8R1TOZxPBPtp4FSM/kiPZub9UIs/Jrb5ZAOzvTUSGYrWsrSu1JvoPw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-flow@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.14.5.tgz#2ff654999497d7d7d142493260005263731da180" - integrity sha512-9WK5ZwKCdWHxVuU13XNT6X73FGmutAXeor5lGFq6qhOFtMFUF4jkbijuyUdZZlpYq6E2hZeZf/u3959X9wsv0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-json-strings@^7.8.0", "@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz#000e2e25d8673cce49300517a3eda44c263e4201" - integrity sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.0", "@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-private-property-in-object@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" - integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-typescript@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz#b82c6ce471b165b5ce420cf92914d6fb46225716" - integrity sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-arrow-functions@^7.14.5", "@babel/plugin-transform-arrow-functions@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz#f7187d9588a768dd080bf4c9ffe117ea62f7862a" - integrity sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-async-to-generator@^7.14.5", "@babel/plugin-transform-async-to-generator@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz#72c789084d8f2094acb945633943ef8443d39e67" - integrity sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA== - dependencies: - "@babel/helper-module-imports" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-remap-async-to-generator" "^7.14.5" - -"@babel/plugin-transform-block-scoped-functions@^7.14.5", "@babel/plugin-transform-block-scoped-functions@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz#e48641d999d4bc157a67ef336aeb54bc44fd3ad4" - integrity sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-block-scoping@^7.14.5", "@babel/plugin-transform-block-scoping@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.5.tgz#8cc63e61e50f42e078e6f09be775a75f23ef9939" - integrity sha512-LBYm4ZocNgoCqyxMLoOnwpsmQ18HWTQvql64t3GvMUzLQrNoV1BDG0lNftC8QKYERkZgCCT/7J5xWGObGAyHDw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-classes@^7.14.5", "@babel/plugin-transform-classes@^7.9.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.5.tgz#0e98e82097b38550b03b483f9b51a78de0acb2cf" - integrity sha512-J4VxKAMykM06K/64z9rwiL6xnBHgB1+FVspqvlgCdwD1KUbQNfszeKVVOMh59w3sztHYIZDgnhOC4WbdEfHFDA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-optimise-call-expression" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" - "@babel/helper-split-export-declaration" "^7.14.5" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.14.5", "@babel/plugin-transform-computed-properties@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz#1b9d78987420d11223d41195461cc43b974b204f" - integrity sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-destructuring@^7.14.7", "@babel/plugin-transform-destructuring@^7.8.3": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz#0ad58ed37e23e22084d109f185260835e5557576" - integrity sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-dotall-regex@^7.14.5", "@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz#2f6bf76e46bdf8043b4e7e16cf24532629ba0c7a" - integrity sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-duplicate-keys@^7.14.5", "@babel/plugin-transform-duplicate-keys@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz#365a4844881bdf1501e3a9f0270e7f0f91177954" - integrity sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-exponentiation-operator@^7.14.5", "@babel/plugin-transform-exponentiation-operator@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz#5154b8dd6a3dfe6d90923d61724bd3deeb90b493" - integrity sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-flow-strip-types@7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.9.0.tgz#8a3538aa40434e000b8f44a3c5c9ac7229bd2392" - integrity sha512-7Qfg0lKQhEHs93FChxVLAvhBshOPQDtJUTVHr/ZwQNRccCm4O9D79r9tVSoV8iNwjP1YgfD+e/fgHcPkN1qEQg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-flow" "^7.8.3" - -"@babel/plugin-transform-for-of@^7.14.5", "@babel/plugin-transform-for-of@^7.9.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.14.5.tgz#dae384613de8f77c196a8869cbf602a44f7fc0eb" - integrity sha512-CfmqxSUZzBl0rSjpoQSFoR9UEj3HzbGuGNL21/iFTmjb5gFggJp3ph0xR1YBhexmLoKRHzgxuFvty2xdSt6gTA== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-function-name@^7.14.5", "@babel/plugin-transform-function-name@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz#e81c65ecb900746d7f31802f6bed1f52d915d6f2" - integrity sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ== - dependencies: - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-literals@^7.14.5", "@babel/plugin-transform-literals@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz#41d06c7ff5d4d09e3cf4587bd3ecf3930c730f78" - integrity sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-member-expression-literals@^7.14.5", "@babel/plugin-transform-member-expression-literals@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz#b39cd5212a2bf235a617d320ec2b48bcc091b8a7" - integrity sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-modules-amd@^7.14.5", "@babel/plugin-transform-modules-amd@^7.9.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz#4fd9ce7e3411cb8b83848480b7041d83004858f7" - integrity sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g== - dependencies: - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-commonjs@^7.14.5", "@babel/plugin-transform-modules-commonjs@^7.9.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.5.tgz#7aaee0ea98283de94da98b28f8c35701429dad97" - integrity sha512-en8GfBtgnydoao2PS+87mKyw62k02k7kJ9ltbKe0fXTHrQmG6QZZflYuGI1VVG7sVpx4E1n7KBpNlPb8m78J+A== - dependencies: - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-simple-access" "^7.14.5" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-systemjs@^7.14.5", "@babel/plugin-transform-modules-systemjs@^7.9.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.14.5.tgz#c75342ef8b30dcde4295d3401aae24e65638ed29" - integrity sha512-mNMQdvBEE5DcMQaL5LbzXFMANrQjd2W7FPzg34Y4yEz7dBgdaC+9B84dSO+/1Wba98zoDbInctCDo4JGxz1VYA== - dependencies: - "@babel/helper-hoist-variables" "^7.14.5" - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-identifier" "^7.14.5" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-umd@^7.14.5", "@babel/plugin-transform-modules-umd@^7.9.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz#fb662dfee697cce274a7cda525190a79096aa6e0" - integrity sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA== - dependencies: - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.14.7", "@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.7.tgz#60c06892acf9df231e256c24464bfecb0908fd4e" - integrity sha512-DTNOTaS7TkW97xsDMrp7nycUVh6sn/eq22VaxWfEdzuEbRsiaOU0pqU7DlyUGHVsbQbSghvjKRpEl+nUCKGQSg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" - -"@babel/plugin-transform-new-target@^7.14.5", "@babel/plugin-transform-new-target@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz#31bdae8b925dc84076ebfcd2a9940143aed7dbf8" - integrity sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-object-super@^7.14.5", "@babel/plugin-transform-object-super@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz#d0b5faeac9e98597a161a9cf78c527ed934cdc45" - integrity sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" - -"@babel/plugin-transform-parameters@^7.14.5", "@babel/plugin-transform-parameters@^7.8.7": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.5.tgz#49662e86a1f3ddccac6363a7dfb1ff0a158afeb3" - integrity sha512-Tl7LWdr6HUxTmzQtzuU14SqbgrSKmaR77M0OKyq4njZLQTPfOvzblNKyNkGwOfEFCEx7KeYHQHDI0P3F02IVkA== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-property-literals@^7.14.5", "@babel/plugin-transform-property-literals@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz#0ddbaa1f83db3606f1cdf4846fa1dfb473458b34" - integrity sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-react-constant-elements@^7.0.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.14.5.tgz#41790d856f7c5cec82d2bcf5d0e5064d682522ed" - integrity sha512-NBqLEx1GxllIOXJInJAQbrnwwYJsV3WaMHIcOwD8rhYS0AabTWn7kHdHgPgu5RmHLU0q4DMxhAMu8ue/KampgQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-react-display-name@7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz#70ded987c91609f78353dd76d2fb2a0bb991e8e5" - integrity sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-react-display-name@^7.14.5", "@babel/plugin-transform-react-display-name@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.14.5.tgz#baa92d15c4570411301a85a74c13534873885b65" - integrity sha512-07aqY1ChoPgIxsuDviptRpVkWCSbXWmzQqcgy65C6YSFOfPFvb/DX3bBRHh7pCd/PMEEYHYWUTSVkCbkVainYQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-react-jsx-development@^7.14.5", "@babel/plugin-transform-react-jsx-development@^7.9.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.14.5.tgz#1a6c73e2f7ed2c42eebc3d2ad60b0c7494fcb9af" - integrity sha512-rdwG/9jC6QybWxVe2UVOa7q6cnTpw8JRRHOxntG/h6g/guAOe6AhtQHJuJh5FwmnXIT1bdm5vC2/5huV8ZOorQ== - dependencies: - "@babel/plugin-transform-react-jsx" "^7.14.5" - -"@babel/plugin-transform-react-jsx-self@^7.9.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.14.5.tgz#703b5d1edccd342179c2a99ee8c7065c2b4403cc" - integrity sha512-M/fmDX6n0cfHK/NLTcPmrfVAORKDhK8tyjDhyxlUjYyPYYO8FRWwuxBA3WBx8kWN/uBUuwGa3s/0+hQ9JIN3Tg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-react-jsx-source@^7.9.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.14.5.tgz#79f728e60e6dbd31a2b860b0bf6c9765918acf1d" - integrity sha512-1TpSDnD9XR/rQ2tzunBVPThF5poaYT9GqP+of8fAtguYuI/dm2RkrMBDemsxtY0XBzvW7nXjYM0hRyKX9QYj7Q== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-react-jsx@^7.14.5", "@babel/plugin-transform-react-jsx@^7.9.1": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.5.tgz#39749f0ee1efd8a1bd729152cf5f78f1d247a44a" - integrity sha512-7RylxNeDnxc1OleDm0F5Q/BSL+whYRbOAR+bwgCxIr0L32v7UFh/pz1DLMZideAUxKT6eMoS2zQH6fyODLEi8Q== - dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - "@babel/helper-module-imports" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-jsx" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/plugin-transform-react-pure-annotations@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.14.5.tgz#18de612b84021e3a9802cbc212c9d9f46d0d11fc" - integrity sha512-3X4HpBJimNxW4rhUy/SONPyNQHp5YRr0HhJdT2OH1BRp0of7u3Dkirc7x9FRJMKMqTBI079VZ1hzv7Ouuz///g== - dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-regenerator@^7.14.5", "@babel/plugin-transform-regenerator@^7.8.7": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz#9676fd5707ed28f522727c5b3c0aa8544440b04f" - integrity sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg== - dependencies: - regenerator-transform "^0.14.2" - -"@babel/plugin-transform-reserved-words@^7.14.5", "@babel/plugin-transform-reserved-words@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz#c44589b661cfdbef8d4300dcc7469dffa92f8304" - integrity sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-runtime@7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.0.tgz#45468c0ae74cc13204e1d3b1f4ce6ee83258af0b" - integrity sha512-pUu9VSf3kI1OqbWINQ7MaugnitRss1z533436waNXp+0N3ur3zfut37sXiQMxkuCF4VUjwZucen/quskCh7NHw== - dependencies: - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - resolve "^1.8.1" - semver "^5.5.1" - -"@babel/plugin-transform-shorthand-properties@^7.14.5", "@babel/plugin-transform-shorthand-properties@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz#97f13855f1409338d8cadcbaca670ad79e091a58" - integrity sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-spread@^7.14.6", "@babel/plugin-transform-spread@^7.8.3": - version "7.14.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.14.6.tgz#6bd40e57fe7de94aa904851963b5616652f73144" - integrity sha512-Zr0x0YroFJku7n7+/HH3A2eIrGMjbmAIbJSVv0IZ+t3U2WUQUA64S/oeied2e+MaGSjmt4alzBCsK9E8gh+fag== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" - -"@babel/plugin-transform-sticky-regex@^7.14.5", "@babel/plugin-transform-sticky-regex@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz#5b617542675e8b7761294381f3c28c633f40aeb9" - integrity sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-template-literals@^7.14.5", "@babel/plugin-transform-template-literals@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz#a5f2bc233937d8453885dc736bdd8d9ffabf3d93" - integrity sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-typeof-symbol@^7.14.5", "@babel/plugin-transform-typeof-symbol@^7.8.4": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz#39af2739e989a2bd291bf6b53f16981423d457d4" - integrity sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-typescript@^7.9.0": - version "7.14.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.14.6.tgz#6e9c2d98da2507ebe0a883b100cde3c7279df36c" - integrity sha512-XlTdBq7Awr4FYIzqhmYY80WN0V0azF74DMPyFqVHBvf81ZUgc4X7ZOpx6O8eLDK6iM5cCQzeyJw0ynTaefixRA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.6" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-typescript" "^7.14.5" - -"@babel/plugin-transform-unicode-escapes@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz#9d4bd2a681e3c5d7acf4f57fa9e51175d91d0c6b" - integrity sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-unicode-regex@^7.14.5", "@babel/plugin-transform-unicode-regex@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz#4cd09b6c8425dd81255c7ceb3fb1836e7414382e" - integrity sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/preset-env@7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.0.tgz#a5fc42480e950ae8f5d9f8f2bbc03f52722df3a8" - integrity sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ== - dependencies: - "@babel/compat-data" "^7.9.0" - "@babel/helper-compilation-targets" "^7.8.7" - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-proposal-async-generator-functions" "^7.8.3" - "@babel/plugin-proposal-dynamic-import" "^7.8.3" - "@babel/plugin-proposal-json-strings" "^7.8.3" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-proposal-numeric-separator" "^7.8.3" - "@babel/plugin-proposal-object-rest-spread" "^7.9.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" - "@babel/plugin-proposal-optional-chaining" "^7.9.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" - "@babel/plugin-syntax-async-generators" "^7.8.0" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - "@babel/plugin-syntax-json-strings" "^7.8.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - "@babel/plugin-syntax-numeric-separator" "^7.8.0" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - "@babel/plugin-transform-arrow-functions" "^7.8.3" - "@babel/plugin-transform-async-to-generator" "^7.8.3" - "@babel/plugin-transform-block-scoped-functions" "^7.8.3" - "@babel/plugin-transform-block-scoping" "^7.8.3" - "@babel/plugin-transform-classes" "^7.9.0" - "@babel/plugin-transform-computed-properties" "^7.8.3" - "@babel/plugin-transform-destructuring" "^7.8.3" - "@babel/plugin-transform-dotall-regex" "^7.8.3" - "@babel/plugin-transform-duplicate-keys" "^7.8.3" - "@babel/plugin-transform-exponentiation-operator" "^7.8.3" - "@babel/plugin-transform-for-of" "^7.9.0" - "@babel/plugin-transform-function-name" "^7.8.3" - "@babel/plugin-transform-literals" "^7.8.3" - "@babel/plugin-transform-member-expression-literals" "^7.8.3" - "@babel/plugin-transform-modules-amd" "^7.9.0" - "@babel/plugin-transform-modules-commonjs" "^7.9.0" - "@babel/plugin-transform-modules-systemjs" "^7.9.0" - "@babel/plugin-transform-modules-umd" "^7.9.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" - "@babel/plugin-transform-new-target" "^7.8.3" - "@babel/plugin-transform-object-super" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.8.7" - "@babel/plugin-transform-property-literals" "^7.8.3" - "@babel/plugin-transform-regenerator" "^7.8.7" - "@babel/plugin-transform-reserved-words" "^7.8.3" - "@babel/plugin-transform-shorthand-properties" "^7.8.3" - "@babel/plugin-transform-spread" "^7.8.3" - "@babel/plugin-transform-sticky-regex" "^7.8.3" - "@babel/plugin-transform-template-literals" "^7.8.3" - "@babel/plugin-transform-typeof-symbol" "^7.8.4" - "@babel/plugin-transform-unicode-regex" "^7.8.3" - "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.9.0" - browserslist "^4.9.1" - core-js-compat "^3.6.2" - invariant "^2.2.2" - levenary "^1.1.1" - semver "^5.5.0" - -"@babel/preset-env@^7.4.5": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.14.8.tgz#254942f5ca80ccabcfbb2a9f524c74bca574005b" - integrity sha512-a9aOppDU93oArQ51H+B8M1vH+tayZbuBqzjOhntGetZVa+4tTu5jp+XTwqHGG2lxslqomPYVSjIxQkFwXzgnxg== - dependencies: - "@babel/compat-data" "^7.14.7" - "@babel/helper-compilation-targets" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-option" "^7.14.5" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.14.5" - "@babel/plugin-proposal-async-generator-functions" "^7.14.7" - "@babel/plugin-proposal-class-properties" "^7.14.5" - "@babel/plugin-proposal-class-static-block" "^7.14.5" - "@babel/plugin-proposal-dynamic-import" "^7.14.5" - "@babel/plugin-proposal-export-namespace-from" "^7.14.5" - "@babel/plugin-proposal-json-strings" "^7.14.5" - "@babel/plugin-proposal-logical-assignment-operators" "^7.14.5" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.14.5" - "@babel/plugin-proposal-numeric-separator" "^7.14.5" - "@babel/plugin-proposal-object-rest-spread" "^7.14.7" - "@babel/plugin-proposal-optional-catch-binding" "^7.14.5" - "@babel/plugin-proposal-optional-chaining" "^7.14.5" - "@babel/plugin-proposal-private-methods" "^7.14.5" - "@babel/plugin-proposal-private-property-in-object" "^7.14.5" - "@babel/plugin-proposal-unicode-property-regex" "^7.14.5" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.14.5" - "@babel/plugin-transform-async-to-generator" "^7.14.5" - "@babel/plugin-transform-block-scoped-functions" "^7.14.5" - "@babel/plugin-transform-block-scoping" "^7.14.5" - "@babel/plugin-transform-classes" "^7.14.5" - "@babel/plugin-transform-computed-properties" "^7.14.5" - "@babel/plugin-transform-destructuring" "^7.14.7" - "@babel/plugin-transform-dotall-regex" "^7.14.5" - "@babel/plugin-transform-duplicate-keys" "^7.14.5" - "@babel/plugin-transform-exponentiation-operator" "^7.14.5" - "@babel/plugin-transform-for-of" "^7.14.5" - "@babel/plugin-transform-function-name" "^7.14.5" - "@babel/plugin-transform-literals" "^7.14.5" - "@babel/plugin-transform-member-expression-literals" "^7.14.5" - "@babel/plugin-transform-modules-amd" "^7.14.5" - "@babel/plugin-transform-modules-commonjs" "^7.14.5" - "@babel/plugin-transform-modules-systemjs" "^7.14.5" - "@babel/plugin-transform-modules-umd" "^7.14.5" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.14.7" - "@babel/plugin-transform-new-target" "^7.14.5" - "@babel/plugin-transform-object-super" "^7.14.5" - "@babel/plugin-transform-parameters" "^7.14.5" - "@babel/plugin-transform-property-literals" "^7.14.5" - "@babel/plugin-transform-regenerator" "^7.14.5" - "@babel/plugin-transform-reserved-words" "^7.14.5" - "@babel/plugin-transform-shorthand-properties" "^7.14.5" - "@babel/plugin-transform-spread" "^7.14.6" - "@babel/plugin-transform-sticky-regex" "^7.14.5" - "@babel/plugin-transform-template-literals" "^7.14.5" - "@babel/plugin-transform-typeof-symbol" "^7.14.5" - "@babel/plugin-transform-unicode-escapes" "^7.14.5" - "@babel/plugin-transform-unicode-regex" "^7.14.5" - "@babel/preset-modules" "^0.1.4" - "@babel/types" "^7.14.8" - babel-plugin-polyfill-corejs2 "^0.2.2" - babel-plugin-polyfill-corejs3 "^0.2.2" - babel-plugin-polyfill-regenerator "^0.2.2" - core-js-compat "^3.15.0" - semver "^6.3.0" - -"@babel/preset-modules@^0.1.3", "@babel/preset-modules@^0.1.4": - version "0.1.4" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" - integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== - 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" - -"@babel/preset-react@7.9.1": - version "7.9.1" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.9.1.tgz#b346403c36d58c3bb544148272a0cefd9c28677a" - integrity sha512-aJBYF23MPj0RNdp/4bHnAP0NVqqZRr9kl0NAOP4nJCex6OYVio59+dnQzsAWFuogdLyeaKA1hmfUIVZkY5J+TQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-transform-react-display-name" "^7.8.3" - "@babel/plugin-transform-react-jsx" "^7.9.1" - "@babel/plugin-transform-react-jsx-development" "^7.9.0" - "@babel/plugin-transform-react-jsx-self" "^7.9.0" - "@babel/plugin-transform-react-jsx-source" "^7.9.0" - -"@babel/preset-react@^7.0.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.14.5.tgz#0fbb769513f899c2c56f3a882fa79673c2d4ab3c" - integrity sha512-XFxBkjyObLvBaAvkx1Ie95Iaq4S/GUEIrejyrntQ/VCMKUYvKLoyKxOBzJ2kjA3b6rC9/KL6KXfDC2GqvLiNqQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-option" "^7.14.5" - "@babel/plugin-transform-react-display-name" "^7.14.5" - "@babel/plugin-transform-react-jsx" "^7.14.5" - "@babel/plugin-transform-react-jsx-development" "^7.14.5" - "@babel/plugin-transform-react-pure-annotations" "^7.14.5" - -"@babel/preset-typescript@7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.9.0.tgz#87705a72b1f0d59df21c179f7c3d2ef4b16ce192" - integrity sha512-S4cueFnGrIbvYJgwsVFKdvOmpiL0XGw9MFW9D0vgRys5g36PBhZRL8NX8Gr2akz8XRtzq6HuDXPD/1nniagNUg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-transform-typescript" "^7.9.0" - -"@babel/runtime-corejs3@^7.10.2", "@babel/runtime-corejs3@^7.12.1": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.14.8.tgz#68539e0129f13eb1ed9a9aa273d3542b93c88384" - integrity sha512-4dMD5QRBkumn45oweR0SxoNtt15oz3BUBAQ8cIx7HJqZTtE8zjpM0My8aHJHVnyf4XfRg6DNzaE1080WLBiC1w== - dependencies: - core-js-pure "^3.15.0" - regenerator-runtime "^0.13.4" - -"@babel/runtime@7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.0.tgz#337eda67401f5b066a6f205a3113d4ac18ba495b" - integrity sha512-cTIudHnzuWLS56ik4DnRnqqNf8MkdUzV4iFFI1h7Jo9xvrpQROYaAnaSd2mHLQAzzZAPfATynX5ord6YlNYNMA== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.8.tgz#7119a56f421018852694290b9f9148097391b446" - integrity sha512-twj3L8Og5SaCRCErB4x4ajbvBIVV77CGeFglHpeg5WC5FF8TZzBWXtTJ4MqaD9QszLYTtr+IsaAL2rEUevb+eg== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/template@^7.14.5", "@babel/template@^7.4.0", "@babel/template@^7.8.6": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.14.5.tgz#a9bc9d8b33354ff6e55a9c60d1109200a68974f4" - integrity sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/parser" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.14.5", "@babel/traverse@^7.14.8", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.0", "@babel/traverse@^7.9.0": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.8.tgz#c0253f02677c5de1a8ff9df6b0aacbec7da1a8ce" - integrity sha512-kexHhzCljJcFNn1KYAQ6A5wxMRzq9ebYpEDV4+WdNyr3i7O44tanbDOR/xjiG2F3sllan+LgwK+7OMk0EmydHg== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.14.8" - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-hoist-variables" "^7.14.5" - "@babel/helper-split-export-declaration" "^7.14.5" - "@babel/parser" "^7.14.8" - "@babel/types" "^7.14.8" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.14.5", "@babel/types@^7.14.8", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.9.0": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.8.tgz#38109de8fcadc06415fbd9b74df0065d4d41c728" - integrity sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q== - dependencies: - "@babel/helper-validator-identifier" "^7.14.8" - to-fast-properties "^2.0.0" - -"@cnakazawa/watch@^1.0.3": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" - integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== - dependencies: - exec-sh "^0.3.2" - minimist "^1.2.0" - -"@codemirror/autocomplete@^0.18.3": - version "0.18.8" - resolved "https://registry.yarnpkg.com/@codemirror/autocomplete/-/autocomplete-0.18.8.tgz#e82847071bd28029356055a498492659911c70a2" - integrity sha512-Va1Q763Vu/rVmIazru/ZnO2kkWVq6SlmMEjeD0qmxLAypyP6j/QNdpmaPDI1qb/+Mb9VFZBbac6a0aLTTi8qxQ== - dependencies: - "@codemirror/language" "^0.18.0" - "@codemirror/state" "^0.18.0" - "@codemirror/text" "^0.18.0" - "@codemirror/tooltip" "^0.18.4" - "@codemirror/view" "^0.18.0" - lezer-tree "^0.13.0" - -"@codemirror/closebrackets@^0.18.0": - version "0.18.0" - resolved "https://registry.yarnpkg.com/@codemirror/closebrackets/-/closebrackets-0.18.0.tgz#4bd7e9227ed6e90e590fa6d289d34b0c065cb8cf" - integrity sha512-O1RAgUkzF4nq/B8IyXenZKZ1rJi2Mc7I6y4IhWhELiTnjyQy7YdAthTsJ40mNr8kZ6gRbasYe3K7TraITElZJA== - dependencies: - "@codemirror/language" "^0.18.0" - "@codemirror/rangeset" "^0.18.0" - "@codemirror/state" "^0.18.0" - "@codemirror/text" "^0.18.0" - "@codemirror/view" "^0.18.0" - -"@codemirror/commands@^0.18.0": - version "0.18.3" - resolved "https://registry.yarnpkg.com/@codemirror/commands/-/commands-0.18.3.tgz#56283873fae9dd0c937da7dd0af5eadc9b378e9c" - integrity sha512-nHYDG13qOirioXTAKmjl10W2L0eZ1ftvmTwvUTNY27UWVBPFSpk5zDXP3WqJ0mgMhQ4AOFLJaTjJEO3hmPComg== - dependencies: - "@codemirror/language" "^0.18.0" - "@codemirror/matchbrackets" "^0.18.0" - "@codemirror/state" "^0.18.0" - "@codemirror/text" "^0.18.0" - "@codemirror/view" "^0.18.0" - lezer-tree "^0.13.0" - -"@codemirror/comment@^0.18.0": - version "0.18.1" - resolved "https://registry.yarnpkg.com/@codemirror/comment/-/comment-0.18.1.tgz#e39c8b6937b86852246decb3441683c66b03abf4" - integrity sha512-Inhqs0F24WE28Fcp1dBZghwixBGv1HDwY9MjE0d5tpMY/IPGI6uT30fGyHAXrir6hUqk7eJRkO4UYnODGOnoIA== - dependencies: - "@codemirror/state" "^0.18.0" - "@codemirror/text" "^0.18.0" - "@codemirror/view" "^0.18.0" - -"@codemirror/highlight@^0.18.3": - version "0.18.4" - resolved "https://registry.yarnpkg.com/@codemirror/highlight/-/highlight-0.18.4.tgz#83dfd402d7cbfe67dc9d0cb93a25755321014829" - integrity sha512-3azJntqWrShOIq/0kVcdMc9k7ACL0LQErgK+A6aWXmCj5Mx0gShq+Iajy8AMQ2zB0v3nhCBgFaniL1LLD5m5hQ== - dependencies: - "@codemirror/language" "^0.18.0" - "@codemirror/rangeset" "^0.18.0" - "@codemirror/state" "^0.18.0" - "@codemirror/view" "^0.18.0" - lezer-tree "^0.13.0" - style-mod "^4.0.0" - -"@codemirror/history@^0.18.0": - version "0.18.1" - resolved "https://registry.yarnpkg.com/@codemirror/history/-/history-0.18.1.tgz#853cde4b138b172235d58f945871f0fc08b7310a" - integrity sha512-Aad3p4zs6UYKCUMXYjh7cvPK0ajuL+rMib9yBZ61w81LLl6OkM31Xrn9J6CLJmPxCwP3OJFiqBmNSBQ05oIsTw== - dependencies: - "@codemirror/state" "^0.18.3" - "@codemirror/view" "^0.18.0" - -"@codemirror/language@^0.18.0": - version "0.18.2" - resolved "https://registry.yarnpkg.com/@codemirror/language/-/language-0.18.2.tgz#92b0e2ba0debfa8473d805efdabda5c24376cb16" - integrity sha512-2Kz0Xyfvt1Ex2KfTUcYZ3IBxpnFCqHaJijwZknGBT7JXv9dwbOPs9SfPfL4oxVuDIHZx8JTPfoV3LTTJrm8M3Q== - dependencies: - "@codemirror/state" "^0.18.0" - "@codemirror/text" "^0.18.0" - "@codemirror/view" "^0.18.0" - lezer "^0.13.4" - lezer-tree "^0.13.0" - -"@codemirror/lint@^0.18.1": - version "0.18.4" - resolved "https://registry.yarnpkg.com/@codemirror/lint/-/lint-0.18.4.tgz#4cdbb4fd6fee3ac8384df62a99efefe099932feb" - integrity sha512-H77qYfZOmo1kKf0ZQagzk/JRGVhIpwP0hq1TSO6DFC1WLjW6gcsFJO5NDMS86enm0KX0w4/IkA7PItz2mjmHhQ== - dependencies: - "@codemirror/panel" "^0.18.1" - "@codemirror/state" "^0.18.0" - "@codemirror/tooltip" "^0.18.4" - "@codemirror/view" "^0.18.0" - crelt "^1.0.5" - -"@codemirror/matchbrackets@^0.18.0": - version "0.18.0" - resolved "https://registry.yarnpkg.com/@codemirror/matchbrackets/-/matchbrackets-0.18.0.tgz#64a493090d942de19f15a9ed3cb0fa19ed55f18b" - integrity sha512-dPDopnZVkD54sSYdmQbyQbPdiuIA83p7XxX6Hp1ScEkOjukwCiFXiA/84x10FUTsQpUYp8bDzm7gwII119bGIw== - dependencies: - "@codemirror/language" "^0.18.0" - "@codemirror/state" "^0.18.0" - "@codemirror/view" "^0.18.0" - lezer-tree "^0.13.0" - -"@codemirror/panel@^0.18.1": - version "0.18.2" - resolved "https://registry.yarnpkg.com/@codemirror/panel/-/panel-0.18.2.tgz#f82dd69fc82d752ec5d6269bbdecbbdb8df69529" - integrity sha512-ea/g2aAKtfmie1kD7C8GDutD/5u+uzRJr/varUiAbHKr1sAdjtz5xYvC3GBAMYMan1GOh0vD5zP1yEupJl3b3Q== - dependencies: - "@codemirror/state" "^0.18.0" - "@codemirror/view" "^0.18.0" - -"@codemirror/rangeset@^0.18.0", "@codemirror/rangeset@^0.18.2": - version "0.18.4" - resolved "https://registry.yarnpkg.com/@codemirror/rangeset/-/rangeset-0.18.4.tgz#84b615906236019107332a023116d2031f63b7bf" - integrity sha512-HHAebb85KoNrnzKG7Z3bOK3HirstPFFB5tu70QfSaUgSZeWnsSgcmGk033rMLGYV9GNTiibWKpqRPaCuyOUk7w== - dependencies: - "@codemirror/state" "^0.18.0" - -"@codemirror/search@^0.18.2": - version "0.18.4" - resolved "https://registry.yarnpkg.com/@codemirror/search/-/search-0.18.4.tgz#cb258c994db78df8c74c0350b84a0c275cfa2711" - integrity sha512-3chVkMPzl+pTUSqtimTicebhti4SLpvkj03pQx2aPZScXxIiYuDk4cLdIJK9omjmO1+oycRKbOrqvG7iZJJwMg== - dependencies: - "@codemirror/panel" "^0.18.1" - "@codemirror/rangeset" "^0.18.0" - "@codemirror/state" "^0.18.6" - "@codemirror/text" "^0.18.0" - "@codemirror/view" "^0.18.0" - crelt "^1.0.5" - -"@codemirror/state@^0.18.0", "@codemirror/state@^0.18.2", "@codemirror/state@^0.18.3", "@codemirror/state@^0.18.6": - version "0.18.7" - resolved "https://registry.yarnpkg.com/@codemirror/state/-/state-0.18.7.tgz#3339a732387bb2c034987c57ccf0649ef2f7c4c1" - integrity sha512-cVyTiAC9vv90NKmGOfNtBjyIem3BqKui1L5Hfcxurp8K9votQj2oH9COcgWPnQ2Xs64yC70tEuTt9DF1pj5PFQ== - dependencies: - "@codemirror/text" "^0.18.0" - -"@codemirror/text@^0.18.0", "@codemirror/text@^0.18.1": - version "0.18.1" - resolved "https://registry.yarnpkg.com/@codemirror/text/-/text-0.18.1.tgz#badacd628b8485932f8a42468bca1a106e210f93" - integrity sha512-vjXs6mi1F418kucTPlFvnCt9glKnjtYssdXb8mm1oaY/F5O+tgGVepm9Z8F7AKWCQvW8Bns1D3uLz/DOIEywIw== - -"@codemirror/tooltip@^0.18.4": - version "0.18.4" - resolved "https://registry.yarnpkg.com/@codemirror/tooltip/-/tooltip-0.18.4.tgz#981bc0ced792c6754148edbc1f60092f3fa54207" - integrity sha512-LDlDOSEfjoG24uapLN7exK3Z3JchYFKUwWqo1x/9YdlAkmD1ik7cMSQZboCquP1uJVcXhtbpKmaO6vENGVaarg== - dependencies: - "@codemirror/state" "^0.18.0" - "@codemirror/view" "^0.18.0" - -"@codemirror/view@^0.18.0", "@codemirror/view@^0.18.3": - version "0.18.19" - resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-0.18.19.tgz#9d4f943a9e79ae00f6ad2ace0d6c759624faa86f" - integrity sha512-TmazVl8H3L+aYwlNb8xk6qADRb8KiYOO047pz51R4mGCg4Ja2siSjXktZgUvklsyWbUY7h9q+oAf4piH+mQZTw== - dependencies: - "@codemirror/rangeset" "^0.18.2" - "@codemirror/state" "^0.18.0" - "@codemirror/text" "^0.18.1" - style-mod "^4.0.0" - w3c-keyname "^2.2.4" - -"@csstools/convert-colors@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" - integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== - -"@csstools/normalize.css@^10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18" - integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== - -"@forevolve/bootstrap-dark@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@forevolve/bootstrap-dark/-/bootstrap-dark-1.1.0.tgz#ac52beb02763817e935623bbcfb2aeda55b50583" - integrity sha512-A3ucpEpxPoTVO490lZZCfjPXxv832l7mm1IxX3bXyxvgwnPGXDLyh7dWrphXKO8YBAu3EswbBEu3VSW8NRMW3A== - dependencies: - bootstrap "^4.6.0" - jquery "^3.5.1" - popper.js "^1.16.1" - -"@fortawesome/fontawesome-common-types@^0.2.35": - version "0.2.35" - resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.35.tgz#01dd3d054da07a00b764d78748df20daf2b317e9" - integrity sha512-IHUfxSEDS9dDGqYwIW7wTN6tn/O8E0n5PcAHz9cAaBoZw6UpG20IG/YM3NNLaGPwPqgjBAFjIURzqoQs3rrtuw== - -"@fortawesome/fontawesome-svg-core@^1.2.14": - version "1.2.35" - resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.35.tgz#85aea8c25645fcec88d35f2eb1045c38d3e65cff" - integrity sha512-uLEXifXIL7hnh2sNZQrIJWNol7cTVIzwI+4qcBIq9QWaZqUblm0IDrtSqbNg+3SQf8SMGHkiSigD++rHmCHjBg== - dependencies: - "@fortawesome/fontawesome-common-types" "^0.2.35" - -"@fortawesome/free-solid-svg-icons@^5.7.1": - version "5.15.3" - resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.3.tgz#52eebe354f60dc77e0bde934ffc5c75ffd04f9d8" - integrity sha512-XPeeu1IlGYqz4VWGRAT5ukNMd4VHUEEJ7ysZ7pSSgaEtNvSo+FLurybGJVmiqkQdK50OkSja2bfZXOeyMGRD8Q== - dependencies: - "@fortawesome/fontawesome-common-types" "^0.2.35" - -"@fortawesome/react-fontawesome@^0.1.4": - version "0.1.14" - resolved "https://registry.yarnpkg.com/@fortawesome/react-fontawesome/-/react-fontawesome-0.1.14.tgz#bf28875c3935b69ce2dc620e1060b217a47f64ca" - integrity sha512-4wqNb0gRLVaBm/h+lGe8UfPPivcbuJ6ecI4hIgW0LjI7kzpYB9FkN0L9apbVzg+lsBdcTf0AlBtODjcSX5mmKA== - dependencies: - prop-types "^15.7.2" - -"@hapi/address@2.x.x": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" - integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== - -"@hapi/bourne@1.x.x": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" - integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== - -"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": - version "8.5.1" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" - integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== - -"@hapi/joi@^15.0.0": - version "15.1.1" - resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" - integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== - dependencies: - "@hapi/address" "2.x.x" - "@hapi/bourne" "1.x.x" - "@hapi/hoek" "8.x.x" - "@hapi/topo" "3.x.x" - -"@hapi/topo@3.x.x": - version "3.1.6" - resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" - integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== - dependencies: - "@hapi/hoek" "^8.3.0" - -"@hypnosphi/create-react-context@^0.3.1": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@hypnosphi/create-react-context/-/create-react-context-0.3.1.tgz#f8bfebdc7665f5d426cba3753e0e9c7d3154d7c6" - integrity sha512-V1klUed202XahrWJLLOT3EXNeCpFHCcJntdFGI15ntCwau+jfT386w7OFTMaCqOgXUH1fa0w/I1oZs+i/Rfr0A== - dependencies: - gud "^1.0.0" - warning "^4.0.3" - -"@jest/console@^24.7.1", "@jest/console@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" - integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== - dependencies: - "@jest/source-map" "^24.9.0" - chalk "^2.0.1" - slash "^2.0.0" - -"@jest/core@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.9.0.tgz#2ceccd0b93181f9c4850e74f2a9ad43d351369c4" - integrity sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A== - dependencies: - "@jest/console" "^24.7.1" - "@jest/reporters" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - ansi-escapes "^3.0.0" - chalk "^2.0.1" - exit "^0.1.2" - graceful-fs "^4.1.15" - jest-changed-files "^24.9.0" - jest-config "^24.9.0" - jest-haste-map "^24.9.0" - jest-message-util "^24.9.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.9.0" - jest-resolve-dependencies "^24.9.0" - jest-runner "^24.9.0" - jest-runtime "^24.9.0" - jest-snapshot "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" - jest-watcher "^24.9.0" - micromatch "^3.1.10" - p-each-series "^1.0.0" - realpath-native "^1.1.0" - rimraf "^2.5.4" - slash "^2.0.0" - strip-ansi "^5.0.0" - -"@jest/environment@^24.3.0", "@jest/environment@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18" - integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ== - dependencies: - "@jest/fake-timers" "^24.9.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - jest-mock "^24.9.0" - -"@jest/fake-timers@^24.3.0", "@jest/fake-timers@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" - integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== - dependencies: - "@jest/types" "^24.9.0" - jest-message-util "^24.9.0" - jest-mock "^24.9.0" - -"@jest/reporters@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.9.0.tgz#86660eff8e2b9661d042a8e98a028b8d631a5b43" - integrity sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw== - dependencies: - "@jest/environment" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" - exit "^0.1.2" - glob "^7.1.2" - istanbul-lib-coverage "^2.0.2" - istanbul-lib-instrument "^3.0.1" - istanbul-lib-report "^2.0.4" - istanbul-lib-source-maps "^3.0.1" - istanbul-reports "^2.2.6" - jest-haste-map "^24.9.0" - jest-resolve "^24.9.0" - jest-runtime "^24.9.0" - jest-util "^24.9.0" - jest-worker "^24.6.0" - node-notifier "^5.4.2" - slash "^2.0.0" - source-map "^0.6.0" - string-length "^2.0.0" - -"@jest/source-map@^24.3.0", "@jest/source-map@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" - integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== - dependencies: - callsites "^3.0.0" - graceful-fs "^4.1.15" - source-map "^0.6.0" - -"@jest/test-result@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" - integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== - dependencies: - "@jest/console" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/istanbul-lib-coverage" "^2.0.0" - -"@jest/test-sequencer@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz#f8f334f35b625a4f2f355f2fe7e6036dad2e6b31" - integrity sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A== - dependencies: - "@jest/test-result" "^24.9.0" - jest-haste-map "^24.9.0" - jest-runner "^24.9.0" - jest-runtime "^24.9.0" - -"@jest/transform@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56" - integrity sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ== - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^24.9.0" - babel-plugin-istanbul "^5.1.0" - chalk "^2.0.1" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.1.15" - jest-haste-map "^24.9.0" - jest-regex-util "^24.9.0" - jest-util "^24.9.0" - micromatch "^3.1.10" - pirates "^4.0.1" - realpath-native "^1.1.0" - slash "^2.0.0" - source-map "^0.6.1" - write-file-atomic "2.4.1" - -"@jest/types@^24.3.0", "@jest/types@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" - integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^13.0.0" - -"@jest/types@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" - integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" - -"@mrmlnc/readdir-enhanced@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" - integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== - dependencies: - call-me-maybe "^1.0.1" - glob-to-regexp "^0.3.0" - -"@nexucis/fuzzy@^0.2.2": - version "0.2.2" - resolved "https://registry.yarnpkg.com/@nexucis/fuzzy/-/fuzzy-0.2.2.tgz#60b2bd611e50a82170634027bd52751042622bea" - integrity sha512-XcBAj4bePw7rvQB86AOCnDCKAkm5JkVZh4JyVFlo4XXC/yuI4u2oTr4IQZLBsqrhI4ekZwVy3kwmO5kQ02NZzA== - -"@nodelib/fs.stat@^1.1.2": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" - integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== - -"@reach/router@^1.2.1": - version "1.3.4" - resolved "https://registry.yarnpkg.com/@reach/router/-/router-1.3.4.tgz#d2574b19370a70c80480ed91f3da840136d10f8c" - integrity sha512-+mtn9wjlB9NN2CNnnC/BRYtwdKBfSyyasPYraNAyvaV1occr/5NnB4CVzjEZipNHwYebQwcndGUmpFzxAUoqSA== - dependencies: - create-react-context "0.3.0" - invariant "^2.2.3" - prop-types "^15.6.1" - react-lifecycles-compat "^3.0.4" - -"@sinonjs/commons@^1.6.0", "@sinonjs/commons@^1.7.0", "@sinonjs/commons@^1.8.1": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" - integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@^6.0.0", "@sinonjs/fake-timers@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" - integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== - dependencies: - "@sinonjs/commons" "^1.7.0" - -"@sinonjs/samsam@^5.3.1": - version "5.3.1" - resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-5.3.1.tgz#375a45fe6ed4e92fca2fb920e007c48232a6507f" - integrity sha512-1Hc0b1TtyfBu8ixF/tpfSHTVWKwCBLY4QJbkgnE7HcwyvT2xArDxb4K7dMgqRm3szI+LJbzmW/s4xxEhv6hwDg== - dependencies: - "@sinonjs/commons" "^1.6.0" - lodash.get "^4.4.2" - type-detect "^4.0.8" - -"@sinonjs/text-encoding@^0.7.1": - version "0.7.1" - resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5" - integrity sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ== - -"@svgr/babel-plugin-add-jsx-attribute@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz#dadcb6218503532d6884b210e7f3c502caaa44b1" - integrity sha512-j7KnilGyZzYr/jhcrSYS3FGWMZVaqyCG0vzMCwzvei0coIkczuYMcniK07nI0aHJINciujjH11T72ICW5eL5Ig== - -"@svgr/babel-plugin-remove-jsx-attribute@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-4.2.0.tgz#297550b9a8c0c7337bea12bdfc8a80bb66f85abc" - integrity sha512-3XHLtJ+HbRCH4n28S7y/yZoEQnRpl0tvTZQsHqvaeNXPra+6vE5tbRliH3ox1yZYPCxrlqaJT/Mg+75GpDKlvQ== - -"@svgr/babel-plugin-remove-jsx-empty-expression@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-4.2.0.tgz#c196302f3e68eab6a05e98af9ca8570bc13131c7" - integrity sha512-yTr2iLdf6oEuUE9MsRdvt0NmdpMBAkgK8Bjhl6epb+eQWk6abBaX3d65UZ3E3FWaOwePyUgNyNCMVG61gGCQ7w== - -"@svgr/babel-plugin-replace-jsx-attribute-value@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-4.2.0.tgz#310ec0775de808a6a2e4fd4268c245fd734c1165" - integrity sha512-U9m870Kqm0ko8beHawRXLGLvSi/ZMrl89gJ5BNcT452fAjtF2p4uRzXkdzvGJJJYBgx7BmqlDjBN/eCp5AAX2w== - -"@svgr/babel-plugin-svg-dynamic-title@^4.3.3": - version "4.3.3" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.3.3.tgz#2cdedd747e5b1b29ed4c241e46256aac8110dd93" - integrity sha512-w3Be6xUNdwgParsvxkkeZb545VhXEwjGMwExMVBIdPQJeyMQHqm9Msnb2a1teHBqUYL66qtwfhNkbj1iarCG7w== - -"@svgr/babel-plugin-svg-em-dimensions@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-4.2.0.tgz#9a94791c9a288108d20a9d2cc64cac820f141391" - integrity sha512-C0Uy+BHolCHGOZ8Dnr1zXy/KgpBOkEUYY9kI/HseHVPeMbluaX3CijJr7D4C5uR8zrc1T64nnq/k63ydQuGt4w== - -"@svgr/babel-plugin-transform-react-native-svg@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-4.2.0.tgz#151487322843359a1ca86b21a3815fd21a88b717" - integrity sha512-7YvynOpZDpCOUoIVlaaOUU87J4Z6RdD6spYN4eUb5tfPoKGSF9OG2NuhgYnq4jSkAxcpMaXWPf1cePkzmqTPNw== - -"@svgr/babel-plugin-transform-svg-component@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-4.2.0.tgz#5f1e2f886b2c85c67e76da42f0f6be1b1767b697" - integrity sha512-hYfYuZhQPCBVotABsXKSCfel2slf/yvJY8heTVX1PCTaq/IgASq1IyxPPKJ0chWREEKewIU/JMSsIGBtK1KKxw== - -"@svgr/babel-preset@^4.3.3": - version "4.3.3" - resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-4.3.3.tgz#a75d8c2f202ac0e5774e6bfc165d028b39a1316c" - integrity sha512-6PG80tdz4eAlYUN3g5GZiUjg2FMcp+Wn6rtnz5WJG9ITGEF1pmFdzq02597Hn0OmnQuCVaBYQE1OVFAnwOl+0A== - dependencies: - "@svgr/babel-plugin-add-jsx-attribute" "^4.2.0" - "@svgr/babel-plugin-remove-jsx-attribute" "^4.2.0" - "@svgr/babel-plugin-remove-jsx-empty-expression" "^4.2.0" - "@svgr/babel-plugin-replace-jsx-attribute-value" "^4.2.0" - "@svgr/babel-plugin-svg-dynamic-title" "^4.3.3" - "@svgr/babel-plugin-svg-em-dimensions" "^4.2.0" - "@svgr/babel-plugin-transform-react-native-svg" "^4.2.0" - "@svgr/babel-plugin-transform-svg-component" "^4.2.0" - -"@svgr/core@^4.3.3": - version "4.3.3" - resolved "https://registry.yarnpkg.com/@svgr/core/-/core-4.3.3.tgz#b37b89d5b757dc66e8c74156d00c368338d24293" - integrity sha512-qNuGF1QON1626UCaZamWt5yedpgOytvLj5BQZe2j1k1B8DUG4OyugZyfEwBeXozCUwhLEpsrgPrE+eCu4fY17w== - dependencies: - "@svgr/plugin-jsx" "^4.3.3" - camelcase "^5.3.1" - cosmiconfig "^5.2.1" - -"@svgr/hast-util-to-babel-ast@^4.3.2": - version "4.3.2" - resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-4.3.2.tgz#1d5a082f7b929ef8f1f578950238f630e14532b8" - integrity sha512-JioXclZGhFIDL3ddn4Kiq8qEqYM2PyDKV0aYno8+IXTLuYt6TOgHUbUAAFvqtb0Xn37NwP0BTHglejFoYr8RZg== - dependencies: - "@babel/types" "^7.4.4" - -"@svgr/plugin-jsx@^4.3.3": - version "4.3.3" - resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-4.3.3.tgz#e2ba913dbdfbe85252a34db101abc7ebd50992fa" - integrity sha512-cLOCSpNWQnDB1/v+SUENHH7a0XY09bfuMKdq9+gYvtuwzC2rU4I0wKGFEp1i24holdQdwodCtDQdFtJiTCWc+w== - dependencies: - "@babel/core" "^7.4.5" - "@svgr/babel-preset" "^4.3.3" - "@svgr/hast-util-to-babel-ast" "^4.3.2" - svg-parser "^2.0.0" - -"@svgr/plugin-svgo@^4.3.1": - version "4.3.1" - resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-4.3.1.tgz#daac0a3d872e3f55935c6588dd370336865e9e32" - integrity sha512-PrMtEDUWjX3Ea65JsVCwTIXuSqa3CG9px+DluF1/eo9mlDrgrtFE7NE/DjdhjJgSM9wenlVBzkzneSIUgfUI/w== - dependencies: - cosmiconfig "^5.2.1" - merge-deep "^3.0.2" - svgo "^1.2.2" - -"@svgr/webpack@4.3.3": - version "4.3.3" - resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-4.3.3.tgz#13cc2423bf3dff2d494f16b17eb7eacb86895017" - integrity sha512-bjnWolZ6KVsHhgyCoYRFmbd26p8XVbulCzSG53BDQqAr+JOAderYK7CuYrB3bDjHJuF6LJ7Wrr42+goLRV9qIg== - dependencies: - "@babel/core" "^7.4.5" - "@babel/plugin-transform-react-constant-elements" "^7.0.0" - "@babel/preset-env" "^7.4.5" - "@babel/preset-react" "^7.0.0" - "@svgr/core" "^4.3.3" - "@svgr/plugin-jsx" "^4.3.3" - "@svgr/plugin-svgo" "^4.3.1" - loader-utils "^1.2.3" - -"@testing-library/react-hooks@^3.1.1": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@testing-library/react-hooks/-/react-hooks-3.7.0.tgz#6d75c5255ef49bce39b6465bf6b49e2dac84919e" - integrity sha512-TwfbY6BWtWIHitjT05sbllyLIProcysC0dF0q1bbDa7OHLC6A6rJOYJwZ13hzfz3O4RtOuInmprBozJRyyo7/g== - dependencies: - "@babel/runtime" "^7.12.5" - "@types/testing-library__react-hooks" "^3.4.0" - -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== - -"@types/babel__core@^7.1.0": - version "7.1.15" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.15.tgz#2ccfb1ad55a02c83f8e0ad327cbc332f55eb1024" - integrity sha512-bxlMKPDbY8x5h6HBwVzEOk2C8fb6SLfYQ5Jw3uBYuYF1lfWk/kbLd81la82vrIkBb0l+JdmrZaDikPrNxpS/Ew== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.3" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.3.tgz#f456b4b2ce79137f768aa130d2423d2f0ccfaba5" - integrity sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.1" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" - integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.14.2.tgz#ffcd470bbb3f8bf30481678fb5502278ca833a43" - integrity sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA== - dependencies: - "@babel/types" "^7.3.0" - -"@types/cheerio@*", "@types/cheerio@^0.22.22": - version "0.22.30" - resolved "https://registry.yarnpkg.com/@types/cheerio/-/cheerio-0.22.30.tgz#6c1ded70d20d890337f0f5144be2c5e9ce0936e6" - integrity sha512-t7ZVArWZlq3dFa9Yt33qFBQIK4CQd1Q3UJp0V+UhP6vgLWLM6Qug7vZuRSGXg45zXeB1Fm5X2vmBkEX58LV2Tw== - dependencies: - "@types/node" "*" - -"@types/enzyme-adapter-react-16@^1.0.5": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@types/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.0.6.tgz#8aca7ae2fd6c7137d869b6616e696d21bb8b0cec" - integrity sha512-VonDkZ15jzqDWL8mPFIQnnLtjwebuL9YnDkqeCDYnB4IVgwUm0mwKkqhrxLL6mb05xm7qqa3IE95m8CZE9imCg== - dependencies: - "@types/enzyme" "*" - -"@types/enzyme@*", "@types/enzyme@^3.10.3": - version "3.10.9" - resolved "https://registry.yarnpkg.com/@types/enzyme/-/enzyme-3.10.9.tgz#b2d7c7429a37d994c156b6f361e83f271a60c8aa" - integrity sha512-dx5UvcWe2Vtye6S9Hw2rFB7Ul9uMXOAje2FAbXvVYieQDNle9qPAo7DfvFMSztZ9NFiD3dVZ4JsRYGTrSLynJg== - dependencies: - "@types/cheerio" "*" - "@types/react" "*" - -"@types/eslint-visitor-keys@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" - integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== - -"@types/flot@0.0.31": - version "0.0.31" - resolved "https://registry.yarnpkg.com/@types/flot/-/flot-0.0.31.tgz#0daca37c6c855b69a0a7e2e37dd0f84b3db8c8c1" - integrity sha512-X+RcMQCqPlQo8zPT6cUFTd/PoYBShMQlHUeOXf05jWlfYnvLuRmluB9z+2EsOKFgUzqzZve5brx+gnFxBaHEUw== - dependencies: - "@types/jquery" "*" - -"@types/glob@^7.1.1": - version "7.1.4" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.4.tgz#ea59e21d2ee5c517914cb4bc8e4153b99e566672" - integrity sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA== - dependencies: - "@types/minimatch" "*" - "@types/node" "*" - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" - integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== - -"@types/istanbul-lib-report@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" - integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^1.1.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" - integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== - dependencies: - "@types/istanbul-lib-coverage" "*" - "@types/istanbul-lib-report" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" - integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/jest@^26.0.10": - version "26.0.24" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.24.tgz#943d11976b16739185913a1936e0de0c4a7d595a" - integrity sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w== - dependencies: - jest-diff "^26.0.0" - pretty-format "^26.0.0" - -"@types/jquery@*", "@types/jquery@^3.5.1": - version "3.5.6" - resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.5.6.tgz#97ac8e36dccd8ad8ed3f3f3b48933614d9fd8cf0" - integrity sha512-SmgCQRzGPId4MZQKDj9Hqc6kSXFNWZFHpELkyK8AQhf8Zr6HKfCzFv9ZC1Fv3FyQttJZOlap3qYb12h61iZAIg== - dependencies: - "@types/sizzle" "*" - -"@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5": - version "7.0.8" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.8.tgz#edf1bf1dbf4e04413ca8e5b17b3b7d7d54b59818" - integrity sha512-YSBPTLTVm2e2OoQIDYx8HaeWJ5tTToLH67kXR7zYNGupXMEHa2++G8k+DczX2cFVgalypqtyZIcU19AFcmOpmg== - -"@types/minimatch@*": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" - integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== - -"@types/moment-timezone@^0.5.10": - version "0.5.30" - resolved "https://registry.yarnpkg.com/@types/moment-timezone/-/moment-timezone-0.5.30.tgz#340ed45fe3e715f4a011f5cfceb7cb52aad46fc7" - integrity sha512-aDVfCsjYnAQaV/E9Qc24C5Njx1CoDjXsEgkxtp9NyXDpYu4CCbmclb6QhWloS9UTU/8YROUEEdEkWI0D7DxnKg== - dependencies: - moment-timezone "*" - -"@types/node@*": - version "16.4.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.4.6.tgz#1734d119dfa8fede5606d35ae10f9fc9c84d889b" - integrity sha512-FKyawK3o5KL16AwbeFajen8G4K3mmqUrQsehn5wNKs8IzlKHE8TfnSmILXVMVziAEcnB23u1RCFU1NT6hSyr7Q== - -"@types/node@^12.11.1": - version "12.20.17" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.17.tgz#ffd44c2801fc527a6fe6e86bc9b900261df1c87e" - integrity sha512-so8EHl4S6MmatPS0f9sE1ND94/ocbcEshW5OpyYthRqeRpiYyW2uXYTo/84kmfdfeNrDycARkvuiXl6nO40NGg== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - -"@types/prop-types@*": - version "15.7.4" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" - integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== - -"@types/q@^1.5.1": - version "1.5.5" - resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.5.tgz#75a2a8e7d8ab4b230414505d92335d1dcb53a6df" - integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ== - -"@types/reach__router@^1.2.6": - version "1.3.9" - resolved "https://registry.yarnpkg.com/@types/reach__router/-/reach__router-1.3.9.tgz#d3aaac0072665c81063cc6c557c18dadd642b226" - integrity sha512-N6rqQqTTAV/zKLfK3iq9Ww3wqCEhTZvsilhl0zI09zETdVq1QGmJH6+/xnj8AFUWIrle2Cqo+PGM/Ltr1vBb9w== - dependencies: - "@types/react" "*" - -"@types/react-copy-to-clipboard@^5.0.0": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@types/react-copy-to-clipboard/-/react-copy-to-clipboard-5.0.1.tgz#7d9c2c0af52e2e8106ebe2b9fde4f02859af7a3d" - integrity sha512-CDuRrJWEIdfKFC4vbwpXT3vk0O4gA/I/Kxu/1npUvGc2Yey5swPvsgO3JEnQkIUwdnYUbwUYDE/fTFQVgqr4oA== - dependencies: - "@types/react" "*" - -"@types/react-dom@^16.8.0": - version "16.9.14" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.14.tgz#674b8f116645fe5266b40b525777fc6bb8eb3bcd" - integrity sha512-FIX2AVmPTGP30OUJ+0vadeIFJJ07Mh1m+U0rxfgyW34p3rTlXI+nlenvAxNn4BP36YyI9IJ/+UJ7Wu22N1pI7A== - dependencies: - "@types/react" "^16" - -"@types/react-resize-detector@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@types/react-resize-detector/-/react-resize-detector-5.0.0.tgz#18ac4e6d518581bec6345845b7f08232f4cca8a5" - integrity sha512-JTqR0G+RcC6Guqi/JXQBq3jewflumUGd4fDUucmZN9L1d8TZuRHzDTtrmgYWrgLvRTBTV6FjegmLeV1UnrIuzw== - dependencies: - "@types/react" "*" - -"@types/react-test-renderer@*": - version "17.0.1" - resolved "https://registry.yarnpkg.com/@types/react-test-renderer/-/react-test-renderer-17.0.1.tgz#3120f7d1c157fba9df0118dae20cb0297ee0e06b" - integrity sha512-3Fi2O6Zzq/f3QR9dRnlnHso9bMl7weKCviFmfF6B4LS1Uat6Hkm15k0ZAQuDz+UBq6B3+g+NM6IT2nr5QgPzCw== - dependencies: - "@types/react" "*" - -"@types/react@*": - version "17.0.15" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.15.tgz#c7533dc38025677e312606502df7656a6ea626d0" - integrity sha512-uTKHDK9STXFHLaKv6IMnwp52fm0hwU+N89w/p9grdUqcFA6WuqDyPhaWopbNyE1k/VhgzmHl8pu1L4wITtmlLw== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" - -"@types/react@^16", "@types/react@^16.8.2": - version "16.14.11" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.14.11.tgz#992a0cd4b66b9f27315042b5d96e976717368f04" - integrity sha512-Don0MtsZZ3fjwTJ2BsoqkyOy7e176KplEAKOpr/4XDdzinlyJBn9yfsKn5mcSgn4kh1B22+3tBnzBC1z63ybtQ== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" - -"@types/reactstrap@^8.7.2": - version "8.7.2" - resolved "https://registry.yarnpkg.com/@types/reactstrap/-/reactstrap-8.7.2.tgz#0ab86f35e472e8f2002eaf8c7a42193c9cea6add" - integrity sha512-8sYGS/LhG+ic8vhLwxhuVn+TSqS1lKzplm9BHv4JaQoetStAi9uOqP2VREfefIRT3JnOq5Y+G7Afdryvn+UgZQ== - dependencies: - reactstrap "*" - -"@types/sanitize-html@^1.20.2": - version "1.27.2" - resolved "https://registry.yarnpkg.com/@types/sanitize-html/-/sanitize-html-1.27.2.tgz#f7bf16ca4b1408278f97ae737f0377a08a10b35c" - integrity sha512-DrH26m7CV6PB4YVckjbSIx+xloB7HBolr9Ctm0gZBffSu5dDV4yJKFQGPquJlReVW+xmg59gx+b/8/qYHxZEuw== - dependencies: - htmlparser2 "^4.1.0" - -"@types/scheduler@*": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" - integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== - -"@types/sinon@^9.0.4": - version "9.0.11" - resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-9.0.11.tgz#7af202dda5253a847b511c929d8b6dda170562eb" - integrity sha512-PwP4UY33SeeVKodNE37ZlOsR9cReypbMJOhZ7BVE0lB+Hix3efCOxiJWiE5Ia+yL9Cn2Ch72EjFTRze8RZsNtg== - dependencies: - "@types/sinonjs__fake-timers" "*" - -"@types/sinonjs__fake-timers@*": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.3.tgz#79df6f358ae8f79e628fe35a63608a0ea8e7cf08" - integrity sha512-E1dU4fzC9wN2QK2Cr1MLCfyHM8BoNnRFvuf45LYMPNDA+WqbNzC45S4UzPxvp1fFJ1rvSGU0bPvdd35VLmXG8g== - -"@types/sizzle@*": - version "2.3.3" - resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.3.tgz#ff5e2f1902969d305225a047c8a0fd5c915cebef" - integrity sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ== - -"@types/stack-utils@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" - integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== - -"@types/testing-library__react-hooks@^3.4.0": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@types/testing-library__react-hooks/-/testing-library__react-hooks-3.4.1.tgz#b8d7311c6c1f7db3103e94095fe901f8fef6e433" - integrity sha512-G4JdzEcq61fUyV6wVW9ebHWEiLK2iQvaBuCHHn9eMSbZzVh4Z4wHnUGIvQOYCCYeu5DnUtFyNYuAAgbSaO/43Q== - dependencies: - "@types/react-test-renderer" "*" - -"@types/yargs-parser@*": - version "20.2.1" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129" - integrity sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw== - -"@types/yargs@^13.0.0": - version "13.0.12" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.12.tgz#d895a88c703b78af0465a9de88aa92c61430b092" - integrity sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ== - dependencies: - "@types/yargs-parser" "*" - -"@types/yargs@^15.0.0": - version "15.0.14" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.14.tgz#26d821ddb89e70492160b66d10a0eb6df8f6fb06" - integrity sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ== - dependencies: - "@types/yargs-parser" "*" - -"@typescript-eslint/eslint-plugin@2.x", "@typescript-eslint/eslint-plugin@^2.10.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz#6f8ce8a46c7dea4a6f1d171d2bb8fbae6dac2be9" - integrity sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ== - dependencies: - "@typescript-eslint/experimental-utils" "2.34.0" - functional-red-black-tree "^1.0.1" - regexpp "^3.0.0" - tsutils "^3.17.1" - -"@typescript-eslint/experimental-utils@2.34.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz#d3524b644cdb40eebceca67f8cf3e4cc9c8f980f" - integrity sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA== - dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.34.0" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" - -"@typescript-eslint/parser@2.x", "@typescript-eslint/parser@^2.10.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.34.0.tgz#50252630ca319685420e9a39ca05fe185a256bc8" - integrity sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA== - dependencies: - "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "2.34.0" - "@typescript-eslint/typescript-estree" "2.34.0" - eslint-visitor-keys "^1.1.0" - -"@typescript-eslint/typescript-estree@2.34.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz#14aeb6353b39ef0732cc7f1b8285294937cf37d5" - integrity sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg== - dependencies: - debug "^4.1.1" - eslint-visitor-keys "^1.1.0" - glob "^7.1.6" - is-glob "^4.0.1" - lodash "^4.17.15" - semver "^7.3.2" - tsutils "^3.17.1" - -"@webassemblyjs/ast@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" - integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ== - dependencies: - "@webassemblyjs/helper-module-context" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/wast-parser" "1.8.5" - -"@webassemblyjs/floating-point-hex-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" - integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ== - -"@webassemblyjs/helper-api-error@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" - integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA== - -"@webassemblyjs/helper-buffer@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" - integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q== - -"@webassemblyjs/helper-code-frame@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" - integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ== - dependencies: - "@webassemblyjs/wast-printer" "1.8.5" - -"@webassemblyjs/helper-fsm@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" - integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow== - -"@webassemblyjs/helper-module-context@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" - integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g== - dependencies: - "@webassemblyjs/ast" "1.8.5" - mamacro "^0.0.3" - -"@webassemblyjs/helper-wasm-bytecode@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" - integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ== - -"@webassemblyjs/helper-wasm-section@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" - integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - -"@webassemblyjs/ieee754@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" - integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" - integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" - integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw== - -"@webassemblyjs/wasm-edit@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" - integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/helper-wasm-section" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - "@webassemblyjs/wasm-opt" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - "@webassemblyjs/wast-printer" "1.8.5" - -"@webassemblyjs/wasm-gen@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" - integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/ieee754" "1.8.5" - "@webassemblyjs/leb128" "1.8.5" - "@webassemblyjs/utf8" "1.8.5" - -"@webassemblyjs/wasm-opt@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" - integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - -"@webassemblyjs/wasm-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" - integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-api-error" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/ieee754" "1.8.5" - "@webassemblyjs/leb128" "1.8.5" - "@webassemblyjs/utf8" "1.8.5" - -"@webassemblyjs/wast-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" - integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/floating-point-hex-parser" "1.8.5" - "@webassemblyjs/helper-api-error" "1.8.5" - "@webassemblyjs/helper-code-frame" "1.8.5" - "@webassemblyjs/helper-fsm" "1.8.5" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/wast-printer@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" - integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/wast-parser" "1.8.5" - "@xtuc/long" "4.2.2" - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -abab@^2.0.0, abab@^2.0.3, abab@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" - integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== - -accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== - dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" - -acorn-globals@^4.1.0, acorn-globals@^4.3.0: - version "4.3.4" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" - integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== - dependencies: - acorn "^6.0.1" - acorn-walk "^6.0.1" - -acorn-globals@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" - integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== - dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" - -acorn-jsx@^5.2.0: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn-walk@^6.0.1: - version "6.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" - integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== - -acorn-walk@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - -acorn@^5.5.3: - version "5.7.4" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" - integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== - -acorn@^6.0.1, acorn@^6.0.4, acorn@^6.2.1: - version "6.4.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" - integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== - -acorn@^7.1.1: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -acorn@^8.2.4: - version "8.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.4.1.tgz#56c36251fc7cabc7096adc18f05afe814321a28c" - integrity sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA== - -address@1.1.2, address@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" - integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== - -adjust-sourcemap-loader@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz#5ae12fb5b7b1c585e80bbb5a63ec163a1a45e61e" - integrity sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw== - dependencies: - loader-utils "^2.0.0" - regex-parser "^2.2.11" - -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - -airbnb-prop-types@^2.16.0: - version "2.16.0" - resolved "https://registry.yarnpkg.com/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz#b96274cefa1abb14f623f804173ee97c13971dc2" - integrity sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg== - dependencies: - array.prototype.find "^2.1.1" - function.prototype.name "^1.1.2" - is-regex "^1.1.0" - object-is "^1.1.2" - object.assign "^4.1.0" - object.entries "^1.1.2" - prop-types "^15.7.2" - prop-types-exact "^1.2.0" - react-is "^16.13.1" - -ajv-errors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" - integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== - -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -alphanum-sort@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" - integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= - -ansi-colors@^3.0.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" - integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== - -ansi-escapes@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== - -ansi-escapes@^4.2.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-html@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" - integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - -ansi-regex@^4.0.0, ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== - -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -aria-query@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc" - integrity sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w= - dependencies: - ast-types-flow "0.0.7" - commander "^2.11.0" - -aria-query@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" - integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== - dependencies: - "@babel/runtime" "^7.10.2" - "@babel/runtime-corejs3" "^7.10.2" - -arity-n@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/arity-n/-/arity-n-1.0.4.tgz#d9e76b11733e08569c0847ae7b39b2860b30b745" - integrity sha1-2edrEXM+CFacCEeuezmyhgswt0U= - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= - -array-flatten@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" - integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== - -array-includes@^3.0.3, array-includes@^3.1.1, array-includes@^3.1.2, array-includes@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a" - integrity sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - get-intrinsic "^1.1.1" - is-string "^1.0.5" - -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= - dependencies: - array-uniq "^1.0.1" - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -array.prototype.filter@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array.prototype.filter/-/array.prototype.filter-1.0.0.tgz#24d63e38983cdc6bf023a3c574b2f2a3f384c301" - integrity sha512-TfO1gz+tLm+Bswq0FBOXPqAchtCr2Rn48T8dLJoRFl8NoEosjZmzptmuo1X8aZBzZcqsR1W8U761tjACJtngTQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0" - es-array-method-boxes-properly "^1.0.0" - is-string "^1.0.5" - -array.prototype.find@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.1.1.tgz#3baca26108ca7affb08db06bf0be6cb3115a969c" - integrity sha512-mi+MYNJYLTx2eNYy+Yh6raoQacCsNeeMUaspFPh9Y141lFSsWxxB8V9mM2ye+eqiRs917J6/pJ4M9ZPzenWckA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.4" - -array.prototype.flat@^1.2.1, array.prototype.flat@^1.2.3, array.prototype.flat@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" - integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" - -array.prototype.flatmap@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz#94cfd47cc1556ec0747d97f7c7738c58122004c9" - integrity sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" - function-bind "^1.1.1" - -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= - -asap@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= - -asn1.js@^5.2.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" - -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= - -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== - dependencies: - object-assign "^4.1.1" - util "0.10.3" - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -ast-types-flow@0.0.7, ast-types-flow@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" - integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= - -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== - -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - -async@^2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== - dependencies: - lodash "^4.17.14" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -autoprefixer@^9.6.1: - version "9.8.6" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f" - integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg== - dependencies: - browserslist "^4.12.0" - caniuse-lite "^1.0.30001109" - colorette "^1.2.1" - normalize-range "^0.1.2" - num2fraction "^1.2.2" - postcss "^7.0.32" - postcss-value-parser "^4.1.0" - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" - integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== - -axe-core@^4.0.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.3.2.tgz#fcf8777b82c62cfc69c7e9f32c0d2226287680e7" - integrity sha512-5LMaDRWm8ZFPAEdzTYmgjjEdj1YnQcpfrVajO/sn/LhbpGp0Y0H64c2hLZI1gRMxfA+w1S71Uc/nHaOXgcCvGg== - -axobject-query@^2.0.2, axobject-query@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" - integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== - -babel-code-frame@^6.22.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-eslint@10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" - integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.7.0" - "@babel/traverse" "^7.7.0" - "@babel/types" "^7.7.0" - eslint-visitor-keys "^1.0.0" - resolve "^1.12.0" - -babel-extract-comments@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz#0a2aedf81417ed391b85e18b4614e693a0351a21" - integrity sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ== - dependencies: - babylon "^6.18.0" - -babel-jest@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54" - integrity sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw== - dependencies: - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/babel__core" "^7.1.0" - babel-plugin-istanbul "^5.1.0" - babel-preset-jest "^24.9.0" - chalk "^2.4.2" - slash "^2.0.0" - -babel-loader@8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" - integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== - dependencies: - find-cache-dir "^2.1.0" - loader-utils "^1.4.0" - mkdirp "^0.5.3" - pify "^4.0.1" - schema-utils "^2.6.5" - -babel-plugin-dynamic-import-node@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" - integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== - dependencies: - object.assign "^4.1.0" - -babel-plugin-istanbul@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" - integrity sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - find-up "^3.0.0" - istanbul-lib-instrument "^3.3.0" - test-exclude "^5.2.3" - -babel-plugin-jest-hoist@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756" - integrity sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw== - dependencies: - "@types/babel__traverse" "^7.0.6" - -babel-plugin-macros@2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" - integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== - dependencies: - "@babel/runtime" "^7.7.2" - cosmiconfig "^6.0.0" - resolve "^1.12.0" - -babel-plugin-named-asset-import@^0.3.6: - version "0.3.7" - resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.7.tgz#156cd55d3f1228a5765774340937afc8398067dd" - integrity sha512-squySRkf+6JGnvjoUtDEjSREJEBirnXi9NqP6rjSYsylxQxqBTz+pkmf395i9E2zsvmYUaI40BHo6SqZUdydlw== - -babel-plugin-polyfill-corejs2@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz#e9124785e6fd94f94b618a7954e5693053bf5327" - integrity sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ== - dependencies: - "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.2.2" - semver "^6.1.1" - -babel-plugin-polyfill-corejs3@^0.2.2: - version "0.2.4" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.4.tgz#68cb81316b0e8d9d721a92e0009ec6ecd4cd2ca9" - integrity sha512-z3HnJE5TY/j4EFEa/qpQMSbcUJZ5JQi+3UFjXzn6pQCmIKc5Ug5j98SuYyH+m4xQnvKlMDIW4plLfgyVnd0IcQ== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.2" - core-js-compat "^3.14.0" - -babel-plugin-polyfill-regenerator@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz#b310c8d642acada348c1fa3b3e6ce0e851bee077" - integrity sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.2" - -babel-plugin-syntax-object-rest-spread@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" - integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= - -babel-plugin-transform-object-rest-spread@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" - integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY= - dependencies: - babel-plugin-syntax-object-rest-spread "^6.8.0" - babel-runtime "^6.26.0" - -babel-plugin-transform-react-remove-prop-types@0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" - integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== - -babel-preset-jest@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" - integrity sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg== - dependencies: - "@babel/plugin-syntax-object-rest-spread" "^7.0.0" - babel-plugin-jest-hoist "^24.9.0" - -babel-preset-react-app@^9.1.2: - version "9.1.2" - resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-9.1.2.tgz#54775d976588a8a6d1a99201a702befecaf48030" - integrity sha512-k58RtQOKH21NyKtzptoAvtAODuAJJs3ZhqBMl456/GnXEQ/0La92pNmwgWoMn5pBTrsvk3YYXdY7zpY4e3UIxA== - dependencies: - "@babel/core" "7.9.0" - "@babel/plugin-proposal-class-properties" "7.8.3" - "@babel/plugin-proposal-decorators" "7.8.3" - "@babel/plugin-proposal-nullish-coalescing-operator" "7.8.3" - "@babel/plugin-proposal-numeric-separator" "7.8.3" - "@babel/plugin-proposal-optional-chaining" "7.9.0" - "@babel/plugin-transform-flow-strip-types" "7.9.0" - "@babel/plugin-transform-react-display-name" "7.8.3" - "@babel/plugin-transform-runtime" "7.9.0" - "@babel/preset-env" "7.9.0" - "@babel/preset-react" "7.9.1" - "@babel/preset-typescript" "7.9.0" - "@babel/runtime" "7.9.0" - babel-plugin-macros "2.8.0" - babel-plugin-transform-react-remove-prop-types "0.4.24" - -babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base64-js@^1.0.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -batch@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bluebird@^3.5.5: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.0.0, bn.js@^5.1.1: - version "5.2.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" - integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== - -body-parser@1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" - integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== - dependencies: - bytes "3.1.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "1.7.2" - iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.7.0" - raw-body "2.4.0" - type-is "~1.6.17" - -bonjour@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" - integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= - dependencies: - array-flatten "^2.1.0" - deep-equal "^1.0.1" - dns-equal "^1.0.0" - dns-txt "^2.0.2" - multicast-dns "^6.0.1" - multicast-dns-service-types "^1.1.0" - -boolbase@^1.0.0, boolbase@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= - -bootstrap@^4.5.2, bootstrap@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.6.0.tgz#97b9f29ac98f98dfa43bf7468262d84392552fd7" - integrity sha512-Io55IuQY3kydzHtbGvQya3H+KorS/M9rSNyfCGCg9WZ4pyT/lCxIlpJgG1GXW/PswzC84Tr2fBYi+7+jFVQQBw== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== - -browser-resolve@^1.11.3: - version "1.11.3" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" - integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== - dependencies: - resolve "1.1.7" - -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.3" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== - dependencies: - pako "~1.0.5" - -browserslist@4.10.0: - version "4.10.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.10.0.tgz#f179737913eaf0d2b98e4926ac1ca6a15cbcc6a9" - integrity sha512-TpfK0TDgv71dzuTsEAlQiHeWQ/tiPqgNZVdv046fvNtBZrjbv2O3TsWCDU0AWGJJKCF/KsjNdLzR9hXOsh/CfA== - dependencies: - caniuse-lite "^1.0.30001035" - electron-to-chromium "^1.3.378" - node-releases "^1.1.52" - pkg-up "^3.1.0" - -browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.16.6, browserslist@^4.6.2, browserslist@^4.6.4, browserslist@^4.9.1: - version "4.16.6" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" - integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== - dependencies: - caniuse-lite "^1.0.30001219" - colorette "^1.2.2" - electron-to-chromium "^1.3.723" - escalade "^3.1.1" - node-releases "^1.1.71" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -buffer-indexof@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" - integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= - -bytes@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== - -cacache@^12.0.2: - version "12.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" - integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - -cacache@^13.0.1: - version "13.0.1" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-13.0.1.tgz#a8000c21697089082f85287a1aec6e382024a71c" - integrity sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w== - dependencies: - chownr "^1.1.2" - figgy-pudding "^3.5.1" - fs-minipass "^2.0.0" - glob "^7.1.4" - graceful-fs "^4.2.2" - infer-owner "^1.0.4" - lru-cache "^5.1.1" - minipass "^3.0.0" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.2" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - p-map "^3.0.0" - promise-inflight "^1.0.1" - rimraf "^2.7.1" - ssri "^7.0.0" - unique-filename "^1.1.1" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -call-me-maybe@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" - integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= - -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= - dependencies: - caller-callsite "^2.0.0" - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camel-case@^4.1.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" - integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== - dependencies: - pascal-case "^3.1.2" - tslib "^2.0.3" - -camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -caniuse-api@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" - integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== - dependencies: - browserslist "^4.0.0" - caniuse-lite "^1.0.0" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001219: - version "1.0.30001248" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001248.tgz#26ab45e340f155ea5da2920dadb76a533cb8ebce" - integrity sha512-NwlQbJkxUFJ8nMErnGtT0QTM2TJ33xgz4KXJSMIrjXIbDVdaYueGyjOrLKRtJC+rTiWfi6j5cnZN1NBiSBJGNw== - -capture-exit@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" - integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== - dependencies: - rsvp "^4.8.4" - -case-sensitive-paths-webpack-plugin@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz#23ac613cc9a856e4f88ff8bb73bbb5e989825cf7" - integrity sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ== - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - -chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^4.0.0, chalk@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad" - integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - -cheerio-select@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-1.5.0.tgz#faf3daeb31b17c5e1a9dabcee288aaf8aafa5823" - integrity sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg== - dependencies: - css-select "^4.1.3" - css-what "^5.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - domutils "^2.7.0" - -cheerio@^1.0.0-rc.3: - version "1.0.0-rc.10" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.10.tgz#2ba3dcdfcc26e7956fc1f440e61d51c643379f3e" - integrity sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw== - dependencies: - cheerio-select "^1.5.0" - dom-serializer "^1.3.2" - domhandler "^4.2.0" - htmlparser2 "^6.1.0" - parse5 "^6.0.1" - parse5-htmlparser2-tree-adapter "^6.0.1" - tslib "^2.2.0" - -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.3.0, chokidar@^3.4.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" - integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -chokidar@^2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" - -chownr@^1.1.1, chownr@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== - -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -classnames@^2.2.3: - version "2.3.1" - resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e" - integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA== - -clean-css@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" - integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== - dependencies: - source-map "~0.6.0" - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-width@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" - integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== - -cli-width@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" - integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== - -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - -clone-deep@^0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.2.4.tgz#4e73dd09e9fb971cc38670c5dced9c1896481cc6" - integrity sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY= - dependencies: - for-own "^0.1.3" - is-plain-object "^2.0.1" - kind-of "^3.0.2" - lazy-cache "^1.0.3" - shallow-clone "^0.1.2" - -clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= - -coa@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" - integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== - dependencies: - "@types/q" "^1.5.1" - chalk "^2.4.1" - q "^1.1.2" - -codemirror-promql@^0.16.0: - version "0.16.0" - resolved "https://registry.yarnpkg.com/codemirror-promql/-/codemirror-promql-0.16.0.tgz#c51ca8ce1772a228ebfdbc8431550b2385670d46" - integrity sha512-/npytsj103ccWSMWffxibDuS+0p8DFneB7eRdUQULNVOsF+QSif2fqohjz6C9OmM+r58hA5qmdBUdhtogqsvEQ== - dependencies: - lezer-promql "^0.19.0" - lru-cache "^6.0.0" - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0, color-convert@^1.9.3: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@^1.0.0, color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-string@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.6.0.tgz#c3915f61fe267672cb7e1e064c9d692219f6c312" - integrity sha512-c/hGS+kRWJutUBEngKKmk4iH3sD59MBkoxVapS/0wgpCz2u7XsNloxknyvBhzwEs1IbV36D9PwqLPJ2DTu3vMA== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" - -color@^3.0.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" - integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== - dependencies: - color-convert "^1.9.3" - color-string "^1.6.0" - -colorette@^1.2.1, colorette@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" - integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== - -combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -commander@^2.11.0, commander@^2.19.0, commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - -common-tags@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" - integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= - -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -compose-function@3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/compose-function/-/compose-function-3.0.3.tgz#9ed675f13cc54501d30950a486ff6a7ba3ab185f" - integrity sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8= - dependencies: - arity-n "^1.0.4" - -compressible@~2.0.16: - version "2.0.18" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" - -compute-scroll-into-view@^1.0.9: - version "1.0.17" - resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz#6a88f18acd9d42e9cf4baa6bec7e0522607ab7ab" - integrity sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -concat-stream@^1.5.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -confusing-browser-globals@^1.0.9: - version "1.0.10" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59" - integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA== - -connect-history-api-fallback@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" - integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== - -console-browserify@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= - -contains-path@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" - integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= - -content-disposition@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" - integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== - dependencies: - safe-buffer "5.1.2" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -convert-source-map@1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== - dependencies: - safe-buffer "~5.1.1" - -convert-source-map@^0.3.3: - version "0.3.5" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" - integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= - -convert-source-map@^1.4.0, convert-source-map@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" - integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== - dependencies: - safe-buffer "~5.1.1" - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= - -cookie@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" - integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== - -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -copy-to-clipboard@^3: - version "3.3.1" - resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz#115aa1a9998ffab6196f93076ad6da3b913662ae" - integrity sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw== - dependencies: - toggle-selection "^1.0.6" - -core-js-compat@^3.14.0, core-js-compat@^3.15.0, core-js-compat@^3.6.2: - version "3.15.2" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.15.2.tgz#47272fbb479880de14b4e6081f71f3492f5bd3cb" - integrity sha512-Wp+BJVvwopjI+A1EFqm2dwUmWYXrvucmtIB2LgXn/Rb+gWPKYxtmb4GKHGKG/KGF1eK9jfjzT38DITbTOCX/SQ== - dependencies: - browserslist "^4.16.6" - semver "7.0.0" - -core-js-pure@^3.15.0: - version "3.15.2" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.15.2.tgz#c8e0874822705f3385d3197af9348f7c9ae2e3ce" - integrity sha512-D42L7RYh1J2grW8ttxoY1+17Y4wXZeKe7uyplAI3FkNQyI5OgBIAjUfFiTPfL1rs0qLpxaabITNbjKl1Sp82tA== - -core-js@^2.4.0: - version "2.6.12" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" - integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== - -core-js@^3.5.0: - version "3.15.2" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.15.2.tgz#740660d2ff55ef34ce664d7e2455119c5bdd3d61" - integrity sha512-tKs41J7NJVuaya8DxIOCnl8QuPHx5/ZVbFo1oKgVl1qHFBBrDctzQGtuLjPpRdNTWmKPH6oEvgN/MUID+l485Q== - -core-util-is@1.0.2, core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -cosmiconfig@^5.0.0, cosmiconfig@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - -cosmiconfig@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" - integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.1.0" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.7.2" - -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== - dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -create-react-context@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/create-react-context/-/create-react-context-0.3.0.tgz#546dede9dc422def0d3fc2fe03afe0bc0f4f7d8c" - integrity sha512-dNldIoSuNSvlTJ7slIKC/ZFGKexBMBrrcc+TTe1NdmROnaASuLPvqpwj9v4XS4uXZ8+YPu0sNmShX2rXI5LNsw== - dependencies: - gud "^1.0.0" - warning "^4.0.3" - -crelt@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/crelt/-/crelt-1.0.5.tgz#57c0d52af8c859e354bace1883eb2e1eb182bb94" - integrity sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA== - -cross-fetch@^3.0.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.4.tgz#9723f3a3a247bf8b89039f3a380a9244e8fa2f39" - integrity sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ== - dependencies: - node-fetch "2.6.1" - -cross-spawn@7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" - integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -cross-spawn@^6.0.0, cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -css-blank-pseudo@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" - integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== - dependencies: - postcss "^7.0.5" - -css-color-names@0.0.4, css-color-names@^0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" - integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= - -css-declaration-sorter@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" - integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== - dependencies: - postcss "^7.0.1" - timsort "^0.3.0" - -css-has-pseudo@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee" - integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== - dependencies: - postcss "^7.0.6" - postcss-selector-parser "^5.0.0-rc.4" - -css-loader@3.4.2: - version "3.4.2" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.4.2.tgz#d3fdb3358b43f233b78501c5ed7b1c6da6133202" - integrity sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA== - dependencies: - camelcase "^5.3.1" - cssesc "^3.0.0" - icss-utils "^4.1.1" - loader-utils "^1.2.3" - normalize-path "^3.0.0" - postcss "^7.0.23" - postcss-modules-extract-imports "^2.0.0" - postcss-modules-local-by-default "^3.0.2" - postcss-modules-scope "^2.1.1" - postcss-modules-values "^3.0.0" - postcss-value-parser "^4.0.2" - schema-utils "^2.6.0" - -css-prefers-color-scheme@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4" - integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== - dependencies: - postcss "^7.0.5" - -css-select-base-adapter@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" - integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== - -css-select@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" - integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== - dependencies: - boolbase "^1.0.0" - css-what "^3.2.1" - domutils "^1.7.0" - nth-check "^1.0.2" - -css-select@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067" - integrity sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA== - dependencies: - boolbase "^1.0.0" - css-what "^5.0.0" - domhandler "^4.2.0" - domutils "^2.6.0" - nth-check "^2.0.0" - -css-tree@1.0.0-alpha.37: - version "1.0.0-alpha.37" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" - integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== - dependencies: - mdn-data "2.0.4" - source-map "^0.6.1" - -css-tree@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" - integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== - dependencies: - mdn-data "2.0.14" - source-map "^0.6.1" - -css-what@^3.2.1: - version "3.4.2" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" - integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== - -css-what@^5.0.0, css-what@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.0.1.tgz#3efa820131f4669a8ac2408f9c32e7c7de9f4cad" - integrity sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg== - -css.escape@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" - integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s= - -css@^2.0.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" - integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== - dependencies: - inherits "^2.0.3" - source-map "^0.6.1" - source-map-resolve "^0.5.2" - urix "^0.1.0" - -cssdb@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" - integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== - -cssesc@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" - integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -cssnano-preset-default@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz#920622b1fc1e95a34e8838203f1397a504f2d3ff" - integrity sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ== - dependencies: - css-declaration-sorter "^4.0.1" - cssnano-util-raw-cache "^4.0.1" - postcss "^7.0.0" - postcss-calc "^7.0.1" - postcss-colormin "^4.0.3" - postcss-convert-values "^4.0.1" - postcss-discard-comments "^4.0.2" - postcss-discard-duplicates "^4.0.2" - postcss-discard-empty "^4.0.1" - postcss-discard-overridden "^4.0.1" - postcss-merge-longhand "^4.0.11" - postcss-merge-rules "^4.0.3" - postcss-minify-font-values "^4.0.2" - postcss-minify-gradients "^4.0.2" - postcss-minify-params "^4.0.2" - postcss-minify-selectors "^4.0.2" - postcss-normalize-charset "^4.0.1" - postcss-normalize-display-values "^4.0.2" - postcss-normalize-positions "^4.0.2" - postcss-normalize-repeat-style "^4.0.2" - postcss-normalize-string "^4.0.2" - postcss-normalize-timing-functions "^4.0.2" - postcss-normalize-unicode "^4.0.1" - postcss-normalize-url "^4.0.1" - postcss-normalize-whitespace "^4.0.2" - postcss-ordered-values "^4.1.2" - postcss-reduce-initial "^4.0.3" - postcss-reduce-transforms "^4.0.2" - postcss-svgo "^4.0.3" - postcss-unique-selectors "^4.0.1" - -cssnano-util-get-arguments@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" - integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= - -cssnano-util-get-match@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" - integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= - -cssnano-util-raw-cache@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" - integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== - dependencies: - postcss "^7.0.0" - -cssnano-util-same-parent@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" - integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== - -cssnano@^4.1.10: - version "4.1.11" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.11.tgz#c7b5f5b81da269cb1fd982cb960c1200910c9a99" - integrity sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g== - dependencies: - cosmiconfig "^5.0.0" - cssnano-preset-default "^4.0.8" - is-resolvable "^1.0.0" - postcss "^7.0.0" - -csso@^4.0.2: - version "4.2.0" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" - integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== - dependencies: - css-tree "^1.1.2" - -cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0", cssom@^0.3.4, cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssom@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" - integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== - -cssstyle@^1.0.0, cssstyle@^1.1.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1" - integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA== - dependencies: - cssom "0.3.x" - -cssstyle@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" - integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== - dependencies: - cssom "~0.3.6" - -csstype@^3.0.2: - version "3.0.8" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.8.tgz#d2266a792729fb227cd216fb572f43728e1ad340" - integrity sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw== - -cyclist@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" - integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= - -d@1, d@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" - integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== - dependencies: - es5-ext "^0.10.50" - type "^1.0.1" - -damerau-levenshtein@^1.0.4, damerau-levenshtein@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz#64368003512a1a6992593741a09a9d31a836f55d" - integrity sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw== - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" - -data-urls@^1.0.0, data-urls@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" - integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== - dependencies: - abab "^2.0.0" - whatwg-mimetype "^2.2.0" - whatwg-url "^7.0.0" - -data-urls@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" - integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== - dependencies: - abab "^2.0.3" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" - -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" - integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== - dependencies: - ms "2.1.2" - -debug@^3.1.1, debug@^3.2.5, debug@^3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -decimal.js@^10.2.1: - version "10.3.1" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" - integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -deep-equal@^1.0.1, deep-equal@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" - integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== - dependencies: - is-arguments "^1.0.4" - is-date-object "^1.0.1" - is-regex "^1.0.4" - object-is "^1.0.1" - object-keys "^1.1.1" - regexp.prototype.flags "^1.2.0" - -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= - -deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== - -default-gateway@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" - integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== - dependencies: - execa "^1.0.0" - ip-regex "^2.1.0" - -define-properties@^1.1.2, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -del@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" - integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== - dependencies: - "@types/glob" "^7.1.1" - globby "^6.1.0" - is-path-cwd "^2.0.0" - is-path-in-cwd "^2.0.0" - p-map "^2.0.0" - pify "^4.0.1" - rimraf "^2.6.3" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= - -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= - -detect-newline@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" - integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= - -detect-node@^2.0.4: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" - integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== - -detect-port-alt@1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" - integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== - dependencies: - address "^1.0.1" - debug "^2.6.0" - -diff-sequences@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" - integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== - -diff-sequences@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" - integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== - -diff@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dir-glob@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" - integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag== - dependencies: - arrify "^1.0.1" - path-type "^3.0.0" - -discontinuous-range@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/discontinuous-range/-/discontinuous-range-1.0.0.tgz#e38331f0844bba49b9a9cb71c771585aab1bc65a" - integrity sha1-44Mx8IRLukm5qctxx3FYWqsbxlo= - -dns-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" - integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= - -dns-packet@^1.3.1: - version "1.3.4" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f" - integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA== - dependencies: - ip "^1.1.0" - safe-buffer "^5.0.1" - -dns-txt@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" - integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= - dependencies: - buffer-indexof "^1.0.0" - -doctrine@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" - integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= - dependencies: - esutils "^2.0.2" - isarray "^1.0.0" - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dom-converter@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" - integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== - dependencies: - utila "~0.4" - -dom-helpers@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.4.0.tgz#e9b369700f959f62ecde5a6babde4bccd9169af8" - integrity sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA== - dependencies: - "@babel/runtime" "^7.1.2" - -dom-serializer@0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== - dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" - -dom-serializer@^1.0.1, dom-serializer@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" - integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" - -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== - -domelementtype@1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== - -domelementtype@^2.0.1, domelementtype@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" - integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== - -domexception@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" - integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== - dependencies: - webidl-conversions "^4.0.2" - -domexception@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" - integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== - dependencies: - webidl-conversions "^5.0.0" - -domhandler@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.3.0.tgz#6db7ea46e4617eb15cf875df68b2b8524ce0037a" - integrity sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA== - dependencies: - domelementtype "^2.0.1" - -domhandler@^4.0.0, domhandler@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.2.0.tgz#f9768a5f034be60a89a27c2e4d0f74eba0d8b059" - integrity sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA== - dependencies: - domelementtype "^2.2.0" - -domutils@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== - dependencies: - dom-serializer "0" - domelementtype "1" - -domutils@^2.0.0, domutils@^2.5.2, domutils@^2.6.0, domutils@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.7.0.tgz#8ebaf0c41ebafcf55b0b72ec31c56323712c5442" - integrity sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - -dot-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" - integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -dot-prop@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" - integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== - dependencies: - is-obj "^2.0.0" - -dotenv-expand@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" - integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== - -dotenv@8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" - integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== - -downshift@^3.4.8: - version "3.4.8" - resolved "https://registry.yarnpkg.com/downshift/-/downshift-3.4.8.tgz#06b7ad9e9c423a58e8a9049b2a00a5d19c7ef954" - integrity sha512-dZL3iNL/LbpHNzUQAaVq/eTD1ocnGKKjbAl/848Q0KEp6t81LJbS37w3f93oD6gqqAnjdgM7Use36qZSipHXBw== - dependencies: - "@babel/runtime" "^7.4.5" - compute-scroll-into-view "^1.0.9" - prop-types "^15.7.2" - react-is "^16.9.0" - -duplexer@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== - -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - -electron-to-chromium@^1.3.378, electron-to-chromium@^1.3.723: - version "1.3.790" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.790.tgz#5c569290929d92c8094fa08c79bc9393ca9e94e7" - integrity sha512-epMH/S2MkhBv+Y0+nHK8dC7bzmOaPwcmiYqt+VwxSUJLgPzkqZnGUEQ8eVhy5zGmgWm9tDDdXkHDzOEsVU979A== - -elliptic@^6.5.3: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -emoji-regex@^7.0.1, emoji-regex@^7.0.2: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.0.0: - version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= - -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - -end-of-stream@^1.0.0, end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -enhanced-resolve@^4.1.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" - integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.5.0" - tapable "^1.0.0" - -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -enzyme-adapter-react-16@^1.15.1: - version "1.15.6" - resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.6.tgz#fd677a658d62661ac5afd7f7f541f141f8085901" - integrity sha512-yFlVJCXh8T+mcQo8M6my9sPgeGzj85HSHi6Apgf1Cvq/7EL/J9+1JoJmJsRxZgyTvPMAqOEpRSu/Ii/ZpyOk0g== - dependencies: - enzyme-adapter-utils "^1.14.0" - enzyme-shallow-equal "^1.0.4" - has "^1.0.3" - object.assign "^4.1.2" - object.values "^1.1.2" - prop-types "^15.7.2" - react-is "^16.13.1" - react-test-renderer "^16.0.0-0" - semver "^5.7.0" - -enzyme-adapter-utils@^1.14.0: - version "1.14.0" - resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.14.0.tgz#afbb0485e8033aa50c744efb5f5711e64fbf1ad0" - integrity sha512-F/z/7SeLt+reKFcb7597IThpDp0bmzcH1E9Oabqv+o01cID2/YInlqHbFl7HzWBl4h3OdZYedtwNDOmSKkk0bg== - dependencies: - airbnb-prop-types "^2.16.0" - function.prototype.name "^1.1.3" - has "^1.0.3" - object.assign "^4.1.2" - object.fromentries "^2.0.3" - prop-types "^15.7.2" - semver "^5.7.1" - -enzyme-shallow-equal@^1.0.1, enzyme-shallow-equal@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.4.tgz#b9256cb25a5f430f9bfe073a84808c1d74fced2e" - integrity sha512-MttIwB8kKxypwHvRynuC3ahyNc+cFbR8mjVIltnmzQ0uKGqmsfO4bfBuLxb0beLNPhjblUEYvEbsg+VSygvF1Q== - dependencies: - has "^1.0.3" - object-is "^1.1.2" - -enzyme-to-json@^3.4.3: - version "3.6.2" - resolved "https://registry.yarnpkg.com/enzyme-to-json/-/enzyme-to-json-3.6.2.tgz#94f85c413bcae8ab67be53b0a94b69a560e27823" - integrity sha512-Ynm6Z6R6iwQ0g2g1YToz6DWhxVnt8Dy1ijR2zynRKxTyBGA8rCDXU3rs2Qc4OKvUvc2Qoe1bcFK6bnPs20TrTg== - dependencies: - "@types/cheerio" "^0.22.22" - lodash "^4.17.21" - react-is "^16.12.0" - -enzyme@^3.10.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-3.11.0.tgz#71d680c580fe9349f6f5ac6c775bc3e6b7a79c28" - integrity sha512-Dw8/Gs4vRjxY6/6i9wU0V+utmQO9kvh9XLnz3LIudviOnVYDEe2ec+0k+NQoMamn1VrjKgCUOWj5jG/5M5M0Qw== - dependencies: - array.prototype.flat "^1.2.3" - cheerio "^1.0.0-rc.3" - enzyme-shallow-equal "^1.0.1" - function.prototype.name "^1.1.2" - has "^1.0.3" - html-element-map "^1.2.0" - is-boolean-object "^1.0.1" - is-callable "^1.1.5" - is-number-object "^1.0.4" - is-regex "^1.0.5" - is-string "^1.0.5" - is-subset "^0.1.1" - lodash.escape "^4.0.1" - lodash.isequal "^4.5.0" - object-inspect "^1.7.0" - object-is "^1.0.2" - object.assign "^4.1.0" - object.entries "^1.1.1" - object.values "^1.1.1" - raf "^3.4.1" - rst-selector-parser "^2.2.3" - string.prototype.trim "^1.2.1" - -errno@^0.1.3, errno@~0.1.7: - version "0.1.8" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" - integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== - dependencies: - prr "~1.0.1" - -error-ex@^1.2.0, error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.17.2, es-abstract@^1.17.4, es-abstract@^1.18.0, es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2, es-abstract@^1.18.2: - version "1.18.3" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.3.tgz#25c4c3380a27aa203c44b2b685bba94da31b63e0" - integrity sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.2" - is-callable "^1.2.3" - is-negative-zero "^2.0.1" - is-regex "^1.1.3" - is-string "^1.0.6" - object-inspect "^1.10.3" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.1" - -es-array-method-boxes-properly@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" - integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -es5-ext@^0.10.35, es5-ext@^0.10.50: - version "0.10.53" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" - integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== - dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.3" - next-tick "~1.0.0" - -es6-iterator@2.0.3, es6-iterator@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-symbol@^3.1.1, es6-symbol@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" - integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== - dependencies: - d "^1.0.1" - ext "^1.1.2" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= - -escape-string-regexp@2.0.0, escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -escodegen@^1.11.0, escodegen@^1.9.1: - version "1.14.3" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" - integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== - dependencies: - esprima "^4.0.1" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -escodegen@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" - integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== - dependencies: - esprima "^4.0.1" - estraverse "^5.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -eslint-config-prettier@^6.4.0: - version "6.15.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz#7f93f6cb7d45a92f1537a70ecc06366e1ac6fed9" - integrity sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw== - dependencies: - get-stdin "^6.0.0" - -eslint-config-react-app@^5.0.2, eslint-config-react-app@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz#698bf7aeee27f0cea0139eaef261c7bf7dd623df" - integrity sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ== - dependencies: - confusing-browser-globals "^1.0.9" - -eslint-import-resolver-node@^0.3.2, eslint-import-resolver-node@^0.3.4: - version "0.3.4" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" - integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== - dependencies: - debug "^2.6.9" - resolve "^1.13.1" - -eslint-loader@3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-3.0.3.tgz#e018e3d2722381d982b1201adb56819c73b480ca" - integrity sha512-+YRqB95PnNvxNp1HEjQmvf9KNvCin5HXYYseOXVC2U0KEcw4IkQ2IQEBG46j7+gW39bMzeu0GsUhVbBY3Votpw== - dependencies: - fs-extra "^8.1.0" - loader-fs-cache "^1.0.2" - loader-utils "^1.2.3" - object-hash "^2.0.1" - schema-utils "^2.6.1" - -eslint-module-utils@^2.4.1, eslint-module-utils@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.1.tgz#b51be1e473dd0de1c5ea638e22429c2490ea8233" - integrity sha512-ZXI9B8cxAJIH4nfkhTwcRTEAnrVfobYqwjWy/QMCZ8rHkZHFjf9yO4BzpiF9kCSfNlMG54eKigISHpX0+AaT4A== - dependencies: - debug "^3.2.7" - pkg-dir "^2.0.0" - -eslint-plugin-flowtype@4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.6.0.tgz#82b2bd6f21770e0e5deede0228e456cb35308451" - integrity sha512-W5hLjpFfZyZsXfo5anlu7HM970JBDqbEshAJUkeczP6BFCIfJXuiIBQXyberLRtOStT0OGPF8efeTbxlHk4LpQ== - dependencies: - lodash "^4.17.15" - -eslint-plugin-flowtype@4.x: - version "4.7.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.7.0.tgz#903a6ea3eb5cbf4c7ba7fa73cc43fc39ab7e4a70" - integrity sha512-M+hxhSCk5QBEValO5/UqrS4UunT+MgplIJK5wA1sCtXjzBcZkpTGRwxmLHhGpbHcrmQecgt6ZL/KDdXWqGB7VA== - dependencies: - lodash "^4.17.15" - -eslint-plugin-import@2.20.1: - version "2.20.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz#802423196dcb11d9ce8435a5fc02a6d3b46939b3" - integrity sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw== - dependencies: - array-includes "^3.0.3" - array.prototype.flat "^1.2.1" - contains-path "^0.1.0" - debug "^2.6.9" - doctrine "1.5.0" - eslint-import-resolver-node "^0.3.2" - eslint-module-utils "^2.4.1" - has "^1.0.3" - minimatch "^3.0.4" - object.values "^1.1.0" - read-pkg-up "^2.0.0" - resolve "^1.12.0" - -eslint-plugin-import@2.x: - version "2.23.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.23.4.tgz#8dceb1ed6b73e46e50ec9a5bb2411b645e7d3d97" - integrity sha512-6/wP8zZRsnQFiR3iaPFgh5ImVRM1WN5NUWfTIRqwOdeiGJlBcSk82o1FEVq8yXmy4lkIzTo7YhHCIxlU/2HyEQ== - dependencies: - array-includes "^3.1.3" - array.prototype.flat "^1.2.4" - debug "^2.6.9" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.4" - eslint-module-utils "^2.6.1" - find-up "^2.0.0" - has "^1.0.3" - is-core-module "^2.4.0" - minimatch "^3.0.4" - object.values "^1.1.3" - pkg-up "^2.0.0" - read-pkg-up "^3.0.0" - resolve "^1.20.0" - tsconfig-paths "^3.9.0" - -eslint-plugin-jsx-a11y@6.2.3: - version "6.2.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz#b872a09d5de51af70a97db1eea7dc933043708aa" - integrity sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg== - dependencies: - "@babel/runtime" "^7.4.5" - aria-query "^3.0.0" - array-includes "^3.0.3" - ast-types-flow "^0.0.7" - axobject-query "^2.0.2" - damerau-levenshtein "^1.0.4" - emoji-regex "^7.0.2" - has "^1.0.3" - jsx-ast-utils "^2.2.1" - -eslint-plugin-jsx-a11y@6.x: - version "6.4.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz#a2d84caa49756942f42f1ffab9002436391718fd" - integrity sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg== - dependencies: - "@babel/runtime" "^7.11.2" - aria-query "^4.2.2" - array-includes "^3.1.1" - ast-types-flow "^0.0.7" - axe-core "^4.0.2" - axobject-query "^2.2.0" - damerau-levenshtein "^1.0.6" - emoji-regex "^9.0.0" - has "^1.0.3" - jsx-ast-utils "^3.1.0" - language-tags "^1.0.5" - -eslint-plugin-prettier@^3.1.1: - version "3.4.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.0.tgz#cdbad3bf1dbd2b177e9825737fe63b476a08f0c7" - integrity sha512-UDK6rJT6INSfcOo545jiaOwB701uAIt2/dR7WnFQoGCVl1/EMqdANBmwUaqqQ45aXprsTGzSa39LI1PyuRBxxw== - dependencies: - prettier-linter-helpers "^1.0.0" - -eslint-plugin-react-hooks@2.x: - version "2.5.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-2.5.1.tgz#4ef5930592588ce171abeb26f400c7fbcbc23cd0" - integrity sha512-Y2c4b55R+6ZzwtTppKwSmK/Kar8AdLiC2f9NADCuxbcTgPPg41Gyqa6b9GppgXSvCtkRw43ZE86CT5sejKC6/g== - -eslint-plugin-react-hooks@^1.6.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz#6210b6d5a37205f0b92858f895a4e827020a7d04" - integrity sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA== - -eslint-plugin-react@7.19.0: - version "7.19.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.19.0.tgz#6d08f9673628aa69c5559d33489e855d83551666" - integrity sha512-SPT8j72CGuAP+JFbT0sJHOB80TX/pu44gQ4vXH/cq+hQTiY2PuZ6IHkqXJV6x1b28GDdo1lbInjKUrrdUf0LOQ== - dependencies: - array-includes "^3.1.1" - doctrine "^2.1.0" - has "^1.0.3" - jsx-ast-utils "^2.2.3" - object.entries "^1.1.1" - object.fromentries "^2.0.2" - object.values "^1.1.1" - prop-types "^15.7.2" - resolve "^1.15.1" - semver "^6.3.0" - string.prototype.matchall "^4.0.2" - xregexp "^4.3.0" - -eslint-plugin-react@7.x: - version "7.24.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.24.0.tgz#eadedfa351a6f36b490aa17f4fa9b14e842b9eb4" - integrity sha512-KJJIx2SYx7PBx3ONe/mEeMz4YE0Lcr7feJTCMyyKb/341NcjuAgim3Acgan89GfPv7nxXK2+0slu0CWXYM4x+Q== - dependencies: - array-includes "^3.1.3" - array.prototype.flatmap "^1.2.4" - doctrine "^2.1.0" - has "^1.0.3" - jsx-ast-utils "^2.4.1 || ^3.0.0" - minimatch "^3.0.4" - object.entries "^1.1.4" - object.fromentries "^2.0.4" - object.values "^1.1.4" - prop-types "^15.7.2" - resolve "^2.0.0-next.3" - string.prototype.matchall "^4.0.5" - -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-scope@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-utils@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" - integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-utils@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - -eslint@6.x, eslint@^6.6.0: - version "6.8.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" - integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== - dependencies: - "@babel/code-frame" "^7.0.0" - ajv "^6.10.0" - chalk "^2.1.0" - cross-spawn "^6.0.5" - debug "^4.0.1" - doctrine "^3.0.0" - eslint-scope "^5.0.0" - eslint-utils "^1.4.3" - eslint-visitor-keys "^1.1.0" - espree "^6.1.2" - esquery "^1.0.1" - esutils "^2.0.2" - file-entry-cache "^5.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" - globals "^12.1.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - inquirer "^7.0.0" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.14" - minimatch "^3.0.4" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - optionator "^0.8.3" - progress "^2.0.0" - regexpp "^2.0.1" - semver "^6.1.2" - strip-ansi "^5.2.0" - strip-json-comments "^3.0.1" - table "^5.2.3" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -espree@^6.1.2: - version "6.2.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" - integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== - dependencies: - acorn "^7.1.1" - acorn-jsx "^5.2.0" - eslint-visitor-keys "^1.1.0" - -esprima@^4.0.0, esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.0.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.1.0, esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1, estraverse@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= - -eventemitter3@^4.0.0: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -events@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -eventsource@^1.0.7: - version "1.1.0" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.1.0.tgz#00e8ca7c92109e94b0ddf32dac677d841028cfaf" - integrity sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg== - dependencies: - original "^1.0.0" - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -exec-sh@^0.3.2: - version "0.3.6" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc" - integrity sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w== - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expect@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca" - integrity sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q== - dependencies: - "@jest/types" "^24.9.0" - ansi-styles "^3.2.0" - jest-get-type "^24.9.0" - jest-matcher-utils "^24.9.0" - jest-message-util "^24.9.0" - jest-regex-util "^24.9.0" - -express@^4.17.1: - version "4.17.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" - integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== - dependencies: - accepts "~1.3.7" - array-flatten "1.1.1" - body-parser "1.19.0" - content-disposition "0.5.3" - content-type "~1.0.4" - cookie "0.4.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "~1.1.2" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "~1.1.2" - fresh "0.5.2" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.5" - qs "6.7.0" - range-parser "~1.2.1" - safe-buffer "5.1.2" - send "0.17.1" - serve-static "1.14.1" - setprototypeof "1.1.1" - statuses "~1.5.0" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -ext@^1.1.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" - integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== - dependencies: - type "^2.0.0" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - -fast-deep-equal@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-diff@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" - integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== - -fast-glob@^2.0.2: - version "2.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" - integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== - dependencies: - "@mrmlnc/readdir-enhanced" "^2.2.1" - "@nodelib/fs.stat" "^1.1.2" - glob-parent "^3.1.0" - is-glob "^4.0.0" - merge2 "^1.2.3" - micromatch "^3.1.10" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -faye-websocket@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" - integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= - dependencies: - websocket-driver ">=0.5.1" - -faye-websocket@~0.11.1: - version "0.11.4" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" - integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== - dependencies: - websocket-driver ">=0.5.1" - -fb-watchman@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" - integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== - dependencies: - bser "2.1.1" - -figgy-pudding@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" - integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== - -figures@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" - integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== - dependencies: - flat-cache "^2.0.1" - -file-loader@4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-4.3.0.tgz#780f040f729b3d18019f20605f723e844b8a58af" - integrity sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA== - dependencies: - loader-utils "^1.2.3" - schema-utils "^2.5.0" - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -filesize@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.0.1.tgz#f850b509909c7c86f7e450ea19006c31c2ed3d2f" - integrity sha512-u4AYWPgbI5GBhs6id1KdImZWn5yfyFrrQ8OWZdN7ZMfA8Bf4HcO0BGo9bmUIEV8yrp8I1xVfJ/dn90GtFNNJcg== - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -finalhandler@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.3" - statuses "~1.5.0" - unpipe "~1.0.0" - -find-cache-dir@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" - integrity sha1-yN765XyKUqinhPnjHFfHQumToLk= - dependencies: - commondir "^1.0.1" - mkdirp "^0.5.1" - pkg-dir "^1.0.0" - -find-cache-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-cache-dir@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" - integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - -find-up@4.1.0, find-up@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - -find-up@^2.0.0, find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -flat-cache@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" - integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== - dependencies: - flatted "^2.0.0" - rimraf "2.6.3" - write "1.0.3" - -flatted@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" - integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== - -flatten@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" - integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== - -flush-write-stream@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - -follow-redirects@^1.0.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.1.tgz#d9114ded0a1cfdd334e164e6662ad02bfd91ff43" - integrity sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg== - -for-each@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" - -for-in@^0.1.3: - version "0.1.8" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" - integrity sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE= - -for-in@^1.0.1, for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -for-own@^0.1.3: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= - dependencies: - for-in "^1.0.1" - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - -fork-ts-checker-webpack-plugin@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz#a1642c0d3e65f50c2cc1742e9c0a80f441f86b19" - integrity sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ== - dependencies: - babel-code-frame "^6.22.0" - chalk "^2.4.1" - chokidar "^3.3.0" - micromatch "^3.1.10" - minimatch "^3.0.4" - semver "^5.6.0" - tapable "^1.0.0" - worker-rpc "^0.1.0" - -form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= - -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - -fs-extra@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" - integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" - integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== - -fsevents@^1.2.7: - version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -function.prototype.name@^1.1.2, function.prototype.name@^1.1.3: - version "1.1.4" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.4.tgz#e4ea839b9d3672ae99d0efd9f38d9191c5eaac83" - integrity sha512-iqy1pIotY/RmhdFZygSSlW0wko2yxkSCKqsuv4pr8QESohpYyG/Z7B/XXvPRKTJS//960rgguE5mSRUsDdaJrQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - functions-have-names "^1.2.2" - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= - -functions-have-names@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.2.tgz#98d93991c39da9361f8e50b337c4f6e41f120e21" - integrity sha512-bLgc3asbWdwPbx2mNk2S49kmJCuQeu0nfmaOgbs8WIyzzkw3r4htszdIi9Q9EMezDPTYuJx2wvjZ/EwgAthpnA== - -gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - -get-own-enumerable-property-symbols@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" - integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== - -get-stdin@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" - integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== - -get-stream@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - dependencies: - assert-plus "^1.0.0" - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob-parent@^5.0.0, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-to-regexp@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" - integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= - -glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global-modules@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - -global-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" - integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== - dependencies: - ini "^1.3.5" - kind-of "^6.0.2" - which "^1.3.1" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^12.1.0: - version "12.4.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" - integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== - dependencies: - type-fest "^0.8.1" - -globby@8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" - integrity sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w== - dependencies: - array-union "^1.0.1" - dir-glob "2.0.0" - fast-glob "^2.0.2" - glob "^7.1.2" - ignore "^3.3.5" - pify "^3.0.0" - slash "^1.0.0" - -globby@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" - integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= - dependencies: - array-union "^1.0.1" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2: - version "4.2.6" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" - integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== - -growly@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" - integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= - -gud@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0" - integrity sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw== - -gzip-size@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" - integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== - dependencies: - duplexer "^0.1.1" - pify "^4.0.1" - -handle-thing@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" - integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" - -harmony-reflect@^1.4.6: - version "1.6.2" - resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" - integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" - -has-bigints@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" - integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-symbols@^1.0.1, has-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" - integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has@^1.0.0, has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -he@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -hex-color-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" - integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== - -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== - -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -hsl-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" - integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= - -hsla-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" - integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= - -html-element-map@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/html-element-map/-/html-element-map-1.3.1.tgz#44b2cbcfa7be7aa4ff59779e47e51012e1c73c08" - integrity sha512-6XMlxrAFX4UEEGxctfFnmrFaaZFNf9i5fNuV5wZ3WWQ4FVaNP1aX1LkX9j2mfEx1NpjeE/rL3nmgEn23GdFmrg== - dependencies: - array.prototype.filter "^1.0.0" - call-bind "^1.0.2" - -html-encoding-sniffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" - integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== - dependencies: - whatwg-encoding "^1.0.1" - -html-encoding-sniffer@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" - integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== - dependencies: - whatwg-encoding "^1.0.5" - -html-entities@^1.3.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc" - integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -html-minifier-terser@^5.0.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054" - integrity sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg== - dependencies: - camel-case "^4.1.1" - clean-css "^4.2.3" - commander "^4.1.1" - he "^1.2.0" - param-case "^3.0.3" - relateurl "^0.2.7" - terser "^4.6.3" - -html-webpack-plugin@4.0.0-beta.11: - version "4.0.0-beta.11" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.11.tgz#3059a69144b5aecef97708196ca32f9e68677715" - integrity sha512-4Xzepf0qWxf8CGg7/WQM5qBB2Lc/NFI7MhU59eUDTkuQp3skZczH4UA1d6oQyDEIoMDgERVhRyTdtUPZ5s5HBg== - dependencies: - html-minifier-terser "^5.0.1" - loader-utils "^1.2.3" - lodash "^4.17.15" - pretty-error "^2.1.1" - tapable "^1.1.3" - util.promisify "1.0.0" - -htmlparser2@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-4.1.0.tgz#9a4ef161f2e4625ebf7dfbe6c0a2f52d18a59e78" - integrity sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q== - dependencies: - domelementtype "^2.0.1" - domhandler "^3.0.0" - domutils "^2.0.0" - entities "^2.0.0" - -htmlparser2@^6.0.0, htmlparser2@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" - integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.0.0" - domutils "^2.5.2" - entities "^2.0.0" - -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" - integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= - -http-errors@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" - integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -http-errors@~1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-parser-js@>=0.5.1: - version "0.5.3" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" - integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== - -http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - -http-proxy-middleware@0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" - integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== - dependencies: - http-proxy "^1.17.0" - is-glob "^4.0.0" - lodash "^4.17.11" - micromatch "^3.1.10" - -http-proxy@^1.17.0: - version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= - -https-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" - integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== - dependencies: - agent-base "6" - debug "4" - -i@^0.3.6: - version "0.3.6" - resolved "https://registry.yarnpkg.com/i/-/i-0.3.6.tgz#d96c92732076f072711b6b10fd7d4f65ad8ee23d" - integrity sha1-2WyScyB28HJxG2sQ/X1PZa2O4j0= - -iconv-lite@0.4.24, iconv-lite@^0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -icss-utils@^4.0.0, icss-utils@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" - integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== - dependencies: - postcss "^7.0.14" - -identity-obj-proxy@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" - integrity sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ= - dependencies: - harmony-reflect "^1.4.6" - -ieee754@^1.1.4: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= - -ignore@^3.3.5: - version "3.3.10" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" - integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== - -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - -immer@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/immer/-/immer-1.10.0.tgz#bad67605ba9c810275d91e1c2a47d4582e98286d" - integrity sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg== - -import-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" - integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= - dependencies: - import-from "^2.1.0" - -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= - dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" - -import-fresh@^3.0.0, import-fresh@^3.1.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-from@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" - integrity sha1-M1238qev/VOqpHHUuAId7ja387E= - dependencies: - resolve-from "^3.0.0" - -import-local@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" - integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== - dependencies: - pkg-dir "^3.0.0" - resolve-cwd "^2.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -indexes-of@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" - integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= - -infer-owner@^1.0.3, infer-owner@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -ini@^1.3.5: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -inquirer@7.0.4: - version "7.0.4" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.4.tgz#99af5bde47153abca23f5c7fc30db247f39da703" - integrity sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ== - dependencies: - ansi-escapes "^4.2.1" - chalk "^2.4.2" - cli-cursor "^3.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.15" - mute-stream "0.0.8" - run-async "^2.2.0" - rxjs "^6.5.3" - string-width "^4.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" - -inquirer@^7.0.0: - version "7.3.3" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" - integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.19" - mute-stream "0.0.8" - run-async "^2.4.0" - rxjs "^6.6.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - -internal-ip@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" - integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== - dependencies: - default-gateway "^4.2.0" - ipaddr.js "^1.9.0" - -internal-slot@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" - integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== - dependencies: - get-intrinsic "^1.1.0" - has "^1.0.3" - side-channel "^1.0.4" - -invariant@^2.2.2, invariant@^2.2.3, invariant@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - -ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= - -ip@^1.1.0, ip@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= - -ipaddr.js@1.9.1, ipaddr.js@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -is-absolute-url@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" - integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= - -is-absolute-url@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" - integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-arguments@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9" - integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg== - dependencies: - call-bind "^1.0.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== - -is-bigint@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.2.tgz#ffb381442503235ad245ea89e45b3dbff040ee5a" - integrity sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA== - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - dependencies: - binary-extensions "^1.0.0" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-boolean-object@^1.0.1, is-boolean-object@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.1.tgz#3c0878f035cb821228d350d2e1e36719716a3de8" - integrity sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng== - dependencies: - call-bind "^1.0.2" - -is-buffer@^1.0.2, is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.1.5, is-callable@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" - integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== - -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - -is-color-stop@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" - integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= - dependencies: - css-color-names "^0.0.4" - hex-color-regex "^1.1.0" - hsl-regex "^1.0.0" - hsla-regex "^1.0.0" - rgb-regex "^1.0.1" - rgba-regex "^1.0.0" - -is-core-module@^2.2.0, is-core-module@^2.4.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.5.0.tgz#f754843617c70bfd29b7bd87327400cda5c18491" - integrity sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg== - dependencies: - has "^1.0.3" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-date-object@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.4.tgz#550cfcc03afada05eea3dd30981c7b09551f73e5" - integrity sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A== - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= - -is-docker@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.0, is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== - -is-number-object@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.5.tgz#6edfaeed7950cff19afedce9fbfca9ee6dd289eb" - integrity sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw== - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= - -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - -is-path-cwd@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - -is-path-in-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" - integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== - dependencies: - is-path-inside "^2.1.0" - -is-path-inside@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" - integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== - dependencies: - path-is-inside "^1.0.2" - -is-plain-obj@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= - -is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-plain-object@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" - integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== - -is-potential-custom-element-name@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" - integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== - -is-regex@^1.0.4, is-regex@^1.0.5, is-regex@^1.1.0, is-regex@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.3.tgz#d029f9aff6448b93ebbe3f33dac71511fdcbef9f" - integrity sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ== - dependencies: - call-bind "^1.0.2" - has-symbols "^1.0.2" - -is-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" - integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= - -is-resolvable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" - integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== - -is-root@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" - integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== - -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - -is-string@^1.0.5, is-string@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.6.tgz#3fe5d5992fb0d93404f32584d4b0179a71b54a5f" - integrity sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w== - -is-subset@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6" - integrity sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY= - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= - -is-wsl@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= - -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - -istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" - integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== - -istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" - integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== - dependencies: - "@babel/generator" "^7.4.0" - "@babel/parser" "^7.4.3" - "@babel/template" "^7.4.0" - "@babel/traverse" "^7.4.3" - "@babel/types" "^7.4.0" - istanbul-lib-coverage "^2.0.5" - semver "^6.0.0" - -istanbul-lib-report@^2.0.4: - version "2.0.8" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" - integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== - dependencies: - istanbul-lib-coverage "^2.0.5" - make-dir "^2.1.0" - supports-color "^6.1.0" - -istanbul-lib-source-maps@^3.0.1: - version "3.0.6" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" - integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^2.0.5" - make-dir "^2.1.0" - rimraf "^2.6.3" - source-map "^0.6.1" - -istanbul-reports@^2.2.6: - version "2.2.7" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.7.tgz#5d939f6237d7b48393cc0959eab40cd4fd056931" - integrity sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg== - dependencies: - html-escaper "^2.0.0" - -jest-changed-files@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039" - integrity sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg== - dependencies: - "@jest/types" "^24.9.0" - execa "^1.0.0" - throat "^4.0.0" - -jest-cli@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.9.0.tgz#ad2de62d07472d419c6abc301fc432b98b10d2af" - integrity sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg== - dependencies: - "@jest/core" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" - exit "^0.1.2" - import-local "^2.0.0" - is-ci "^2.0.0" - jest-config "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" - prompts "^2.0.1" - realpath-native "^1.1.0" - yargs "^13.3.0" - -jest-config@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.9.0.tgz#fb1bbc60c73a46af03590719efa4825e6e4dd1b5" - integrity sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ== - dependencies: - "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^24.9.0" - "@jest/types" "^24.9.0" - babel-jest "^24.9.0" - chalk "^2.0.1" - glob "^7.1.1" - jest-environment-jsdom "^24.9.0" - jest-environment-node "^24.9.0" - jest-get-type "^24.9.0" - jest-jasmine2 "^24.9.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" - micromatch "^3.1.10" - pretty-format "^24.9.0" - realpath-native "^1.1.0" - -jest-diff@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da" - integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ== - dependencies: - chalk "^2.0.1" - diff-sequences "^24.9.0" - jest-get-type "^24.9.0" - pretty-format "^24.9.0" - -jest-diff@^26.0.0: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" - integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== - dependencies: - chalk "^4.0.0" - diff-sequences "^26.6.2" - jest-get-type "^26.3.0" - pretty-format "^26.6.2" - -jest-docblock@^24.3.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.9.0.tgz#7970201802ba560e1c4092cc25cbedf5af5a8ce2" - integrity sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA== - dependencies: - detect-newline "^2.1.0" - -jest-each@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.9.0.tgz#eb2da602e2a610898dbc5f1f6df3ba86b55f8b05" - integrity sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog== - dependencies: - "@jest/types" "^24.9.0" - chalk "^2.0.1" - jest-get-type "^24.9.0" - jest-util "^24.9.0" - pretty-format "^24.9.0" - -jest-environment-jsdom-fourteen@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom-fourteen/-/jest-environment-jsdom-fourteen-1.0.1.tgz#4cd0042f58b4ab666950d96532ecb2fc188f96fb" - integrity sha512-DojMX1sY+at5Ep+O9yME34CdidZnO3/zfPh8UW+918C5fIZET5vCjfkegixmsi7AtdYfkr4bPlIzmWnlvQkP7Q== - dependencies: - "@jest/environment" "^24.3.0" - "@jest/fake-timers" "^24.3.0" - "@jest/types" "^24.3.0" - jest-mock "^24.0.0" - jest-util "^24.0.0" - jsdom "^14.1.0" - -jest-environment-jsdom@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz#4b0806c7fc94f95edb369a69cc2778eec2b7375b" - integrity sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA== - dependencies: - "@jest/environment" "^24.9.0" - "@jest/fake-timers" "^24.9.0" - "@jest/types" "^24.9.0" - jest-mock "^24.9.0" - jest-util "^24.9.0" - jsdom "^11.5.1" - -jest-environment-node@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.9.0.tgz#333d2d2796f9687f2aeebf0742b519f33c1cbfd3" - integrity sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA== - dependencies: - "@jest/environment" "^24.9.0" - "@jest/fake-timers" "^24.9.0" - "@jest/types" "^24.9.0" - jest-mock "^24.9.0" - jest-util "^24.9.0" - -jest-fetch-mock@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/jest-fetch-mock/-/jest-fetch-mock-3.0.3.tgz#31749c456ae27b8919d69824f1c2bd85fe0a1f3b" - integrity sha512-Ux1nWprtLrdrH4XwE7O7InRY6psIi3GOsqNESJgMJ+M5cv4A8Lh7SN9d2V2kKRZ8ebAfcd1LNyZguAOb6JiDqw== - dependencies: - cross-fetch "^3.0.4" - promise-polyfill "^8.1.3" - -jest-get-type@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" - integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== - -jest-get-type@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" - integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== - -jest-haste-map@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" - integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== - dependencies: - "@jest/types" "^24.9.0" - anymatch "^2.0.0" - fb-watchman "^2.0.0" - graceful-fs "^4.1.15" - invariant "^2.2.4" - jest-serializer "^24.9.0" - jest-util "^24.9.0" - jest-worker "^24.9.0" - micromatch "^3.1.10" - sane "^4.0.3" - walker "^1.0.7" - optionalDependencies: - fsevents "^1.2.7" - -jest-jasmine2@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz#1f7b1bd3242c1774e62acabb3646d96afc3be6a0" - integrity sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw== - dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" - co "^4.6.0" - expect "^24.9.0" - is-generator-fn "^2.0.0" - jest-each "^24.9.0" - jest-matcher-utils "^24.9.0" - jest-message-util "^24.9.0" - jest-runtime "^24.9.0" - jest-snapshot "^24.9.0" - jest-util "^24.9.0" - pretty-format "^24.9.0" - throat "^4.0.0" - -jest-leak-detector@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz#b665dea7c77100c5c4f7dfcb153b65cf07dcf96a" - integrity sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA== - dependencies: - jest-get-type "^24.9.0" - pretty-format "^24.9.0" - -jest-matcher-utils@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073" - integrity sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA== - dependencies: - chalk "^2.0.1" - jest-diff "^24.9.0" - jest-get-type "^24.9.0" - pretty-format "^24.9.0" - -jest-message-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" - integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== - dependencies: - "@babel/code-frame" "^7.0.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/stack-utils" "^1.0.1" - chalk "^2.0.1" - micromatch "^3.1.10" - slash "^2.0.0" - stack-utils "^1.0.1" - -jest-mock@^24.0.0, jest-mock@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" - integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== - dependencies: - "@jest/types" "^24.9.0" - -jest-pnp-resolver@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" - integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== - -jest-regex-util@^24.3.0, jest-regex-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" - integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== - -jest-resolve-dependencies@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz#ad055198959c4cfba8a4f066c673a3f0786507ab" - integrity sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g== - dependencies: - "@jest/types" "^24.9.0" - jest-regex-util "^24.3.0" - jest-snapshot "^24.9.0" - -jest-resolve@24.9.0, jest-resolve@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.9.0.tgz#dff04c7687af34c4dd7e524892d9cf77e5d17321" - integrity sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ== - dependencies: - "@jest/types" "^24.9.0" - browser-resolve "^1.11.3" - chalk "^2.0.1" - jest-pnp-resolver "^1.2.1" - realpath-native "^1.1.0" - -jest-runner@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.9.0.tgz#574fafdbd54455c2b34b4bdf4365a23857fcdf42" - integrity sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg== - dependencies: - "@jest/console" "^24.7.1" - "@jest/environment" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.4.2" - exit "^0.1.2" - graceful-fs "^4.1.15" - jest-config "^24.9.0" - jest-docblock "^24.3.0" - jest-haste-map "^24.9.0" - jest-jasmine2 "^24.9.0" - jest-leak-detector "^24.9.0" - jest-message-util "^24.9.0" - jest-resolve "^24.9.0" - jest-runtime "^24.9.0" - jest-util "^24.9.0" - jest-worker "^24.6.0" - source-map-support "^0.5.6" - throat "^4.0.0" - -jest-runtime@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.9.0.tgz#9f14583af6a4f7314a6a9d9f0226e1a781c8e4ac" - integrity sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw== - dependencies: - "@jest/console" "^24.7.1" - "@jest/environment" "^24.9.0" - "@jest/source-map" "^24.3.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/yargs" "^13.0.0" - chalk "^2.0.1" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.1.15" - jest-config "^24.9.0" - jest-haste-map "^24.9.0" - jest-message-util "^24.9.0" - jest-mock "^24.9.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.9.0" - jest-snapshot "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" - realpath-native "^1.1.0" - slash "^2.0.0" - strip-bom "^3.0.0" - yargs "^13.3.0" - -jest-serializer@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" - integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== - -jest-snapshot@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.9.0.tgz#ec8e9ca4f2ec0c5c87ae8f925cf97497b0e951ba" - integrity sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew== - dependencies: - "@babel/types" "^7.0.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" - expect "^24.9.0" - jest-diff "^24.9.0" - jest-get-type "^24.9.0" - jest-matcher-utils "^24.9.0" - jest-message-util "^24.9.0" - jest-resolve "^24.9.0" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - pretty-format "^24.9.0" - semver "^6.2.0" - -jest-util@^24.0.0, jest-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" - integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== - dependencies: - "@jest/console" "^24.9.0" - "@jest/fake-timers" "^24.9.0" - "@jest/source-map" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - callsites "^3.0.0" - chalk "^2.0.1" - graceful-fs "^4.1.15" - is-ci "^2.0.0" - mkdirp "^0.5.1" - slash "^2.0.0" - source-map "^0.6.0" - -jest-validate@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" - integrity sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ== - dependencies: - "@jest/types" "^24.9.0" - camelcase "^5.3.1" - chalk "^2.0.1" - jest-get-type "^24.9.0" - leven "^3.1.0" - pretty-format "^24.9.0" - -jest-watch-typeahead@0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.4.2.tgz#e5be959698a7fa2302229a5082c488c3c8780a4a" - integrity sha512-f7VpLebTdaXs81rg/oj4Vg/ObZy2QtGzAmGLNsqUS5G5KtSN68tFcIsbvNODfNyQxU78g7D8x77o3bgfBTR+2Q== - dependencies: - ansi-escapes "^4.2.1" - chalk "^2.4.1" - jest-regex-util "^24.9.0" - jest-watcher "^24.3.0" - slash "^3.0.0" - string-length "^3.1.0" - strip-ansi "^5.0.0" - -jest-watcher@^24.3.0, jest-watcher@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.9.0.tgz#4b56e5d1ceff005f5b88e528dc9afc8dd4ed2b3b" - integrity sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw== - dependencies: - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/yargs" "^13.0.0" - ansi-escapes "^3.0.0" - chalk "^2.0.1" - jest-util "^24.9.0" - string-length "^2.0.0" - -jest-worker@^24.6.0, jest-worker@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" - integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== - dependencies: - merge-stream "^2.0.0" - supports-color "^6.1.0" - -jest-worker@^25.4.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1" - integrity sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw== - dependencies: - merge-stream "^2.0.0" - supports-color "^7.0.0" - -jest@24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171" - integrity sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw== - dependencies: - import-local "^2.0.0" - jest-cli "^24.9.0" - -jquery.flot.tooltip@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/jquery.flot.tooltip/-/jquery.flot.tooltip-0.9.0.tgz#ae16bf94b26c2ed9ab4db167bba52dfdb615c1df" - integrity sha1-rha/lLJsLtmrTbFnu6Ut/bYVwd8= - -jquery@^3.5.0, jquery@^3.5.1: - version "3.6.0" - resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.0.tgz#c72a09f15c1bdce142f49dbf1170bdf8adac2470" - integrity sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw== - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - -jsdom@^11.5.1: - version "11.12.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" - integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== - dependencies: - abab "^2.0.0" - acorn "^5.5.3" - acorn-globals "^4.1.0" - array-equal "^1.0.0" - cssom ">= 0.3.2 < 0.4.0" - cssstyle "^1.0.0" - data-urls "^1.0.0" - domexception "^1.0.1" - escodegen "^1.9.1" - html-encoding-sniffer "^1.0.2" - left-pad "^1.3.0" - nwsapi "^2.0.7" - parse5 "4.0.0" - pn "^1.1.0" - request "^2.87.0" - request-promise-native "^1.0.5" - sax "^1.2.4" - symbol-tree "^3.2.2" - tough-cookie "^2.3.4" - w3c-hr-time "^1.0.1" - webidl-conversions "^4.0.2" - whatwg-encoding "^1.0.3" - whatwg-mimetype "^2.1.0" - whatwg-url "^6.4.1" - ws "^5.2.0" - xml-name-validator "^3.0.0" - -jsdom@^14.1.0: - version "14.1.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-14.1.0.tgz#916463b6094956b0a6c1782c94e380cd30e1981b" - integrity sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng== - dependencies: - abab "^2.0.0" - acorn "^6.0.4" - acorn-globals "^4.3.0" - array-equal "^1.0.0" - cssom "^0.3.4" - cssstyle "^1.1.1" - data-urls "^1.1.0" - domexception "^1.0.1" - escodegen "^1.11.0" - html-encoding-sniffer "^1.0.2" - nwsapi "^2.1.3" - parse5 "5.1.0" - pn "^1.1.0" - request "^2.88.0" - request-promise-native "^1.0.5" - saxes "^3.1.9" - symbol-tree "^3.2.2" - tough-cookie "^2.5.0" - w3c-hr-time "^1.0.1" - w3c-xmlserializer "^1.1.2" - webidl-conversions "^4.0.2" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^7.0.0" - ws "^6.1.2" - xml-name-validator "^3.0.0" - -jsdom@^16.4.0: - version "16.6.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.6.0.tgz#f79b3786682065492a3da6a60a4695da983805ac" - integrity sha512-Ty1vmF4NHJkolaEmdjtxTfSfkdb8Ywarwf63f+F8/mDD1uLSSWDxDuMiZxiPhwunLrn9LOSVItWj4bLYsLN3Dg== - dependencies: - abab "^2.0.5" - acorn "^8.2.4" - acorn-globals "^6.0.0" - cssom "^0.4.4" - cssstyle "^2.3.0" - data-urls "^2.0.0" - decimal.js "^10.2.1" - domexception "^2.0.1" - escodegen "^2.0.0" - form-data "^3.0.0" - html-encoding-sniffer "^2.0.1" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.0" - parse5 "6.0.1" - saxes "^5.0.1" - symbol-tree "^3.2.4" - tough-cookie "^4.0.0" - w3c-hr-time "^1.0.2" - w3c-xmlserializer "^2.0.0" - webidl-conversions "^6.1.0" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.5.0" - ws "^7.4.5" - xml-name-validator "^3.0.0" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= - -json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= - -json-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= - dependencies: - jsonify "~0.0.0" - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - -json3@^3.3.2: - version "3.3.3" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" - integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - -json5@^2.1.2, json5@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" - integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== - dependencies: - minimist "^1.2.5" - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= - optionalDependencies: - graceful-fs "^4.1.6" - -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - -jsx-ast-utils@^2.2.1, jsx-ast-utils@^2.2.3: - version "2.4.1" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz#1114a4c1209481db06c690c2b4f488cc665f657e" - integrity sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w== - dependencies: - array-includes "^3.1.1" - object.assign "^4.1.0" - -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz#41108d2cec408c3453c1bbe8a4aae9e1e2bd8f82" - integrity sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q== - dependencies: - array-includes "^3.1.2" - object.assign "^4.1.2" - -just-extend@^4.0.2: - version "4.2.1" - resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-4.2.1.tgz#ef5e589afb61e5d66b24eca749409a8939a8c744" - integrity sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg== - -killable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" - integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== - -kind-of@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5" - integrity sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU= - dependencies: - is-buffer "^1.0.2" - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -klona@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0" - integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA== - -language-subtag-registry@~0.3.2: - version "0.3.21" - resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a" - integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg== - -language-tags@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" - integrity sha1-0yHbxNowuovzAk4ED6XBRmH5GTo= - dependencies: - language-subtag-registry "~0.3.2" - -last-call-webpack-plugin@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" - integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== - dependencies: - lodash "^4.17.5" - webpack-sources "^1.1.0" - -lazy-cache@^0.2.3: - version "0.2.7" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65" - integrity sha1-f+3fLctu23fRHvHRF6tf/fCrG2U= - -lazy-cache@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" - integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= - -left-pad@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" - integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levenary@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" - integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== - dependencies: - leven "^3.1.0" - -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -lezer-promql@^0.19.0: - version "0.19.0" - resolved "https://registry.yarnpkg.com/lezer-promql/-/lezer-promql-0.19.0.tgz#0cedaead2d7b3700a25c09e5ae85568979806710" - integrity sha512-divgYjuKw4ESDWVCXg7FipH2dF4vq0aWTb0QCyIGz5NHTLx6H+tVC7IlMkQSqsK8t/6qhgxh6A9s6XrE4ZFFJQ== - -lezer-tree@^0.13.0, lezer-tree@^0.13.2: - version "0.13.2" - resolved "https://registry.yarnpkg.com/lezer-tree/-/lezer-tree-0.13.2.tgz#00f4671309b15c27b131f637e430ce2d4d5f7065" - integrity sha512-15ZxW8TxVNAOkHIo43Iouv4zbSkQQ5chQHBpwXcD2bBFz46RB4jYLEEww5l1V0xyIx9U2clSyyrLes+hAUFrGQ== - -lezer@^0.13.4: - version "0.13.5" - resolved "https://registry.yarnpkg.com/lezer/-/lezer-0.13.5.tgz#6000536bca7e24a5bd62e8cb4feff28b37e7dd8f" - integrity sha512-cAiMQZGUo2BD8mpcz7Nv1TlKzWP7YIdIRrX41CiP5bk5t4GHxskOxWUx2iAOuHlz8dO+ivbuXr0J1bfHsWD+lQ== - dependencies: - lezer-tree "^0.13.2" - -lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= - -load-json-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" - integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - strip-bom "^3.0.0" - -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - -loader-fs-cache@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz#f08657646d607078be2f0a032f8bd69dd6f277d9" - integrity sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA== - dependencies: - find-cache-dir "^0.1.1" - mkdirp "^0.5.1" - -loader-runner@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" - integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== - -loader-utils@1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" - integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== - dependencies: - big.js "^5.2.2" - emojis-list "^2.0.0" - json5 "^1.0.1" - -loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" - -loader-utils@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" - integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -lodash._reinterpolate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= - -lodash.escape@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-4.0.1.tgz#c9044690c21e04294beaa517712fded1fa88de98" - integrity sha1-yQRGkMIeBClL6qUXcS/e0fqI3pg= - -lodash.flattendeep@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" - integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= - -lodash.get@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" - integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= - -lodash.isequal@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" - integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= - -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= - -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= - -lodash.template@^4.4.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" - integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.templatesettings "^4.0.0" - -lodash.templatesettings@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" - integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== - dependencies: - lodash._reinterpolate "^3.0.0" - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= - -"lodash@>=3.5 <5", lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.5, lodash@^4.7.0: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -loglevel@^1.6.8: - version "1.7.1" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197" - integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== - -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -make-dir@^2.0.0, make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -make-dir@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" - integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= - dependencies: - tmpl "1.0.x" - -mamacro@^0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" - integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -mdn-data@2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" - integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== - -mdn-data@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" - integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= - -memory-fs@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -memory-fs@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" - integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -merge-deep@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/merge-deep/-/merge-deep-3.0.3.tgz#1a2b2ae926da8b2ae93a0ac15d90cd1922766003" - integrity sha512-qtmzAS6t6grwEkNrunqTBdn0qKwFgNWvlxUbAV8es9M7Ot1EbyApytCnvE0jALPa46ZpKDUo527kKiaWplmlFA== - dependencies: - arr-union "^3.1.0" - clone-deep "^0.2.4" - kind-of "^3.0.2" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.2.3: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= - -microevent.ts@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" - integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== - -micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.49.0, "mime-db@>= 1.43.0 < 2": - version "1.49.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.49.0.tgz#f3dfde60c99e9cf3bc9701d687778f537001cbed" - integrity sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA== - -mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: - version "2.1.32" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.32.tgz#1d00e89e7de7fe02008db61001d9e02852670fd5" - integrity sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A== - dependencies: - mime-db "1.49.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mime@^2.4.4: - version "2.5.2" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" - integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mini-css-extract-plugin@0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz#47f2cf07aa165ab35733b1fc97d4c46c0564339e" - integrity sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A== - dependencies: - loader-utils "^1.1.0" - normalize-url "1.9.1" - schema-utils "^1.0.0" - webpack-sources "^1.1.0" - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - -minimatch@3.0.4, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -minipass-collect@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" - integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== - dependencies: - minipass "^3.0.0" - -minipass-flush@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" - integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== - dependencies: - minipass "^3.0.0" - -minipass-pipeline@^1.2.2: - version "1.2.4" - resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" - integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== - dependencies: - minipass "^3.0.0" - -minipass@^3.0.0, minipass@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" - integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== - dependencies: - yallist "^4.0.0" - -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mixin-object@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" - integrity sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4= - dependencies: - for-in "^0.1.3" - is-extendable "^0.1.1" - -mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -moment-timezone@*, moment-timezone@^0.5.23, moment-timezone@^0.5.28, moment-timezone@^0.5.31: - version "0.5.33" - resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.33.tgz#b252fd6bb57f341c9b59a5ab61a8e51a73bbd22c" - integrity sha512-PTc2vcT8K9J5/9rDEPe5czSIKgLoGsH8UNpA4qZTVw0Vd/Uz19geE9abbIOQKaAQFcnQ3v5YEXrbSc5BpshH+w== - dependencies: - moment ">= 2.9.0" - -"moment@>= 2.9.0", moment@^2.24.0, moment@^2.29.0: - version "2.29.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" - integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== - -moment@~2.24.0: - version "2.24.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" - integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== - -moo@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/moo/-/moo-0.5.1.tgz#7aae7f384b9b09f620b6abf6f74ebbcd1b65dbc4" - integrity sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w== - -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -multicast-dns-service-types@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" - integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= - -multicast-dns@^6.0.1: - version "6.2.3" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" - integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== - dependencies: - dns-packet "^1.3.1" - thunky "^1.0.2" - -mutationobserver-shim@^0.3.7: - version "0.3.7" - resolved "https://registry.yarnpkg.com/mutationobserver-shim/-/mutationobserver-shim-0.3.7.tgz#8bf633b0c0b0291a1107255ed32c13088a8c5bf3" - integrity sha512-oRIDTyZQU96nAiz2AQyngwx1e89iApl2hN5AOYwyxLUB47UYsU3Wv9lJWqH5y/QdiYkc5HQLi23ZNB3fELdHcQ== - -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - -nan@^2.12.1: - version "2.14.2" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" - integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== - -nanoid@^3.1.23: - version "3.1.23" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81" - integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -nearley@^2.7.10: - version "2.20.1" - resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.20.1.tgz#246cd33eff0d012faf197ff6774d7ac78acdd474" - integrity sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ== - dependencies: - commander "^2.19.0" - moo "^0.5.0" - railroad-diagrams "^1.0.0" - randexp "0.4.6" - -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== - -neo-async@^2.5.0, neo-async@^2.6.1: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -next-tick@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" - integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -nise@^4.0.4: - version "4.1.0" - resolved "https://registry.yarnpkg.com/nise/-/nise-4.1.0.tgz#8fb75a26e90b99202fa1e63f448f58efbcdedaf6" - integrity sha512-eQMEmGN/8arp0xsvGoQ+B1qvSkR73B1nWSCh7nOt5neMCtwcQVYQGdzQMhcNscktTsWB54xnlSQFzOAPJD8nXA== - dependencies: - "@sinonjs/commons" "^1.7.0" - "@sinonjs/fake-timers" "^6.0.0" - "@sinonjs/text-encoding" "^0.7.1" - just-extend "^4.0.2" - path-to-regexp "^1.7.0" - -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - -node-fetch@2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" - integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== - -node-forge@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" - integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= - -node-libs-browser@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" - -node-modules-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" - integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= - -node-notifier@^5.4.2: - version "5.4.5" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.5.tgz#0cbc1a2b0f658493b4025775a13ad938e96091ef" - integrity sha512-tVbHs7DyTLtzOiN78izLA85zRqB9NvEXkAf014Vx3jtSvn/xBl6bR8ZYifj+dFcFrKI21huSQgJZ6ZtL3B4HfQ== - dependencies: - growly "^1.3.0" - is-wsl "^1.1.0" - semver "^5.5.0" - shellwords "^0.1.1" - which "^1.3.0" - -node-releases@^1.1.52, node-releases@^1.1.71: - version "1.1.73" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.73.tgz#dd4e81ddd5277ff846b80b52bb40c49edf7a7b20" - integrity sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg== - -normalize-package-data@^2.3.2: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= - -normalize-url@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" - integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= - dependencies: - object-assign "^4.0.1" - prepend-http "^1.0.0" - query-string "^4.1.0" - sort-keys "^1.0.0" - -normalize-url@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" - integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= - dependencies: - path-key "^2.0.0" - -nth-check@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" - integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== - dependencies: - boolbase "~1.0.0" - -nth-check@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.0.tgz#1bb4f6dac70072fc313e8c9cd1417b5074c0a125" - integrity sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q== - dependencies: - boolbase "^1.0.0" - -num2fraction@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" - integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= - -nwsapi@^2.0.7, nwsapi@^2.1.3, nwsapi@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" - integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-hash@^2.0.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.2.0.tgz#5ad518581eefc443bd763472b8ff2e9c2c0d54a5" - integrity sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw== - -object-inspect@^1.10.3, object-inspect@^1.7.0, object-inspect@^1.9.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" - integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== - -object-is@^1.0.1, object-is@^1.0.2, object-is@^1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" - integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.assign@^4.1.0, object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" - object-keys "^1.1.1" - -object.entries@^1.1.0, object.entries@^1.1.1, object.entries@^1.1.2, object.entries@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.4.tgz#43ccf9a50bc5fd5b649d45ab1a579f24e088cafd" - integrity sha512-h4LWKWE+wKQGhtMjZEBud7uLGhqyLwj8fpHOarZhD2uY3C9cRtk57VQ89ke3moByLXMedqs3XCHzyb4AmA2DjA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.2" - -object.fromentries@^2.0.2, object.fromentries@^2.0.3, object.fromentries@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.4.tgz#26e1ba5c4571c5c6f0890cef4473066456a120b8" - integrity sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - has "^1.0.3" - -object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0, object.getownpropertydescriptors@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz#1bd63aeacf0d5d2d2f31b5e393b03a7c601a23f7" - integrity sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - -object.values@^1.1.0, object.values@^1.1.1, object.values@^1.1.2, object.values@^1.1.3, object.values@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.4.tgz#0d273762833e816b693a637d30073e7051535b30" - integrity sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.2" - -obuf@^1.0.0, obuf@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" - integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -onetime@^5.1.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -open@^7.0.2: - version "7.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" - integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== - dependencies: - is-docker "^2.0.0" - is-wsl "^2.1.1" - -opn@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" - integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== - dependencies: - is-wsl "^1.1.0" - -optimize-css-assets-webpack-plugin@5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz#e2f1d4d94ad8c0af8967ebd7cf138dcb1ef14572" - integrity sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA== - dependencies: - cssnano "^4.1.10" - last-call-webpack-plugin "^3.0.0" - -optionator@^0.8.1, optionator@^0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - 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" - -original@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" - integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== - dependencies: - url-parse "^1.4.3" - -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= - -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -p-each-series@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" - integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E= - dependencies: - p-reduce "^1.0.0" - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - -p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= - dependencies: - p-limit "^1.1.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-map@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== - -p-map@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" - integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== - dependencies: - aggregate-error "^3.0.0" - -p-reduce@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" - integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= - -p-retry@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" - integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== - dependencies: - retry "^0.12.0" - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -pako@~1.0.5: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -parallel-transform@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" - integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== - dependencies: - cyclist "^1.0.1" - inherits "^2.0.3" - readable-stream "^2.1.5" - -param-case@^3.0.3: - version "3.0.4" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" - integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.6" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== - dependencies: - asn1.js "^5.2.0" - browserify-aes "^1.0.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= - dependencies: - error-ex "^1.2.0" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-json@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -parse-srcset@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/parse-srcset/-/parse-srcset-1.0.2.tgz#f2bd221f6cc970a938d88556abc589caaaa2bde1" - integrity sha1-8r0iH2zJcKk42IVWq8WJyqqiveE= - -parse5-htmlparser2-tree-adapter@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" - integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== - dependencies: - parse5 "^6.0.1" - -parse5@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" - integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== - -parse5@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" - integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== - -parse5@6.0.1, parse5@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== - -parseurl@~1.3.2, parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascal-case@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" - integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= - dependencies: - pinkie-promise "^2.0.0" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-is-inside@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= - -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= - -path-to-regexp@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" - integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== - dependencies: - isarray "0.0.1" - -path-type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" - integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= - dependencies: - pify "^2.0.0" - -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pbkdf2@^3.0.3: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - -picomatch@^2.0.4, picomatch@^2.2.1: - version "2.3.0" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" - integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== - -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= - -pirates@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" - integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== - dependencies: - node-modules-regexp "^1.0.0" - -pkg-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" - integrity sha1-ektQio1bstYp1EcFb/TpyTFM89Q= - dependencies: - find-up "^1.0.0" - -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" - integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= - dependencies: - find-up "^2.1.0" - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -pkg-dir@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -pkg-up@3.1.0, pkg-up@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" - integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== - dependencies: - find-up "^3.0.0" - -pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" - integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= - dependencies: - find-up "^2.1.0" - -pn@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" - integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== - -pnp-webpack-plugin@1.6.4: - version "1.6.4" - resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" - integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== - dependencies: - ts-pnp "^1.1.6" - -popper.js@^1.14.3, popper.js@^1.14.4, popper.js@^1.16.1: - version "1.16.1" - resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b" - integrity sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ== - -portfinder@^1.0.26: - version "1.0.28" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" - integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== - dependencies: - async "^2.6.2" - debug "^3.1.1" - mkdirp "^0.5.5" - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -postcss-attribute-case-insensitive@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880" - integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== - dependencies: - postcss "^7.0.2" - postcss-selector-parser "^6.0.2" - -postcss-browser-comments@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz#1248d2d935fb72053c8e1f61a84a57292d9f65e9" - integrity sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig== - dependencies: - postcss "^7" - -postcss-calc@^7.0.1: - version "7.0.5" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.5.tgz#f8a6e99f12e619c2ebc23cf6c486fdc15860933e" - integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg== - dependencies: - postcss "^7.0.27" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.0.2" - -postcss-color-functional-notation@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0" - integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-color-gray@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547" - integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== - dependencies: - "@csstools/convert-colors" "^1.4.0" - postcss "^7.0.5" - postcss-values-parser "^2.0.0" - -postcss-color-hex-alpha@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388" - integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== - dependencies: - postcss "^7.0.14" - postcss-values-parser "^2.0.1" - -postcss-color-mod-function@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d" - integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== - dependencies: - "@csstools/convert-colors" "^1.4.0" - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-color-rebeccapurple@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77" - integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-colormin@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" - integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== - dependencies: - browserslist "^4.0.0" - color "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-convert-values@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" - integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-custom-media@^7.0.8: - version "7.0.8" - resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" - integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== - dependencies: - postcss "^7.0.14" - -postcss-custom-properties@^8.0.11: - version "8.0.11" - resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" - integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== - dependencies: - postcss "^7.0.17" - postcss-values-parser "^2.0.1" - -postcss-custom-selectors@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba" - integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== - dependencies: - postcss "^7.0.2" - postcss-selector-parser "^5.0.0-rc.3" - -postcss-dir-pseudo-class@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2" - integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== - dependencies: - postcss "^7.0.2" - postcss-selector-parser "^5.0.0-rc.3" - -postcss-discard-comments@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" - integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== - dependencies: - postcss "^7.0.0" - -postcss-discard-duplicates@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" - integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== - dependencies: - postcss "^7.0.0" - -postcss-discard-empty@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" - integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== - dependencies: - postcss "^7.0.0" - -postcss-discard-overridden@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" - integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== - dependencies: - postcss "^7.0.0" - -postcss-double-position-gradients@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e" - integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== - dependencies: - postcss "^7.0.5" - postcss-values-parser "^2.0.0" - -postcss-env-function@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7" - integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-flexbugs-fixes@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.1.0.tgz#e094a9df1783e2200b7b19f875dcad3b3aff8b20" - integrity sha512-jr1LHxQvStNNAHlgco6PzY308zvLklh7SJVYuWUwyUQncofaAlD2l+P/gxKHOdqWKe7xJSkVLFF/2Tp+JqMSZA== - dependencies: - postcss "^7.0.0" - -postcss-focus-visible@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e" - integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== - dependencies: - postcss "^7.0.2" - -postcss-focus-within@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680" - integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== - dependencies: - postcss "^7.0.2" - -postcss-font-variant@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz#42d4c0ab30894f60f98b17561eb5c0321f502641" - integrity sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA== - dependencies: - postcss "^7.0.2" - -postcss-gap-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715" - integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== - dependencies: - postcss "^7.0.2" - -postcss-image-set-function@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288" - integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-initial@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.4.tgz#9d32069a10531fe2ecafa0b6ac750ee0bc7efc53" - integrity sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg== - dependencies: - postcss "^7.0.2" - -postcss-lab-function@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e" - integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== - dependencies: - "@csstools/convert-colors" "^1.4.0" - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-load-config@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz#c5ea504f2c4aef33c7359a34de3573772ad7502a" - integrity sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw== - dependencies: - cosmiconfig "^5.0.0" - import-cwd "^2.0.0" - -postcss-loader@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" - integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== - dependencies: - loader-utils "^1.1.0" - postcss "^7.0.0" - postcss-load-config "^2.0.0" - schema-utils "^1.0.0" - -postcss-logical@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" - integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== - dependencies: - postcss "^7.0.2" - -postcss-media-minmax@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" - integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== - dependencies: - postcss "^7.0.2" - -postcss-merge-longhand@^4.0.11: - version "4.0.11" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" - integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== - dependencies: - css-color-names "0.0.4" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - stylehacks "^4.0.0" - -postcss-merge-rules@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" - integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - cssnano-util-same-parent "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - vendors "^1.0.0" - -postcss-minify-font-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" - integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-minify-gradients@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" - integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - is-color-stop "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-minify-params@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" - integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== - dependencies: - alphanum-sort "^1.0.0" - browserslist "^4.0.0" - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - uniqs "^2.0.0" - -postcss-minify-selectors@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" - integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== - dependencies: - alphanum-sort "^1.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - -postcss-modules-extract-imports@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" - integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== - dependencies: - postcss "^7.0.5" - -postcss-modules-local-by-default@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0" - integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw== - dependencies: - icss-utils "^4.1.1" - postcss "^7.0.32" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.1.0" - -postcss-modules-scope@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" - integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== - dependencies: - postcss "^7.0.6" - postcss-selector-parser "^6.0.0" - -postcss-modules-values@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" - integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== - dependencies: - icss-utils "^4.0.0" - postcss "^7.0.6" - -postcss-nesting@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" - integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== - dependencies: - postcss "^7.0.2" - -postcss-normalize-charset@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" - integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== - dependencies: - postcss "^7.0.0" - -postcss-normalize-display-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" - integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-positions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" - integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== - dependencies: - cssnano-util-get-arguments "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-repeat-style@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" - integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-string@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" - integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== - dependencies: - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-timing-functions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" - integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-unicode@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" - integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-url@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" - integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== - dependencies: - is-absolute-url "^2.0.0" - normalize-url "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-whitespace@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" - integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize@8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-8.0.1.tgz#90e80a7763d7fdf2da6f2f0f82be832ce4f66776" - integrity sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ== - dependencies: - "@csstools/normalize.css" "^10.1.0" - browserslist "^4.6.2" - postcss "^7.0.17" - postcss-browser-comments "^3.0.0" - sanitize.css "^10.0.0" - -postcss-ordered-values@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" - integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== - dependencies: - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-overflow-shorthand@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30" - integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== - dependencies: - postcss "^7.0.2" - -postcss-page-break@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf" - integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== - dependencies: - postcss "^7.0.2" - -postcss-place@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62" - integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-preset-env@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5" - integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== - dependencies: - autoprefixer "^9.6.1" - browserslist "^4.6.4" - caniuse-lite "^1.0.30000981" - css-blank-pseudo "^0.1.4" - css-has-pseudo "^0.10.0" - css-prefers-color-scheme "^3.1.1" - cssdb "^4.4.0" - postcss "^7.0.17" - postcss-attribute-case-insensitive "^4.0.1" - postcss-color-functional-notation "^2.0.1" - postcss-color-gray "^5.0.0" - postcss-color-hex-alpha "^5.0.3" - postcss-color-mod-function "^3.0.3" - postcss-color-rebeccapurple "^4.0.1" - postcss-custom-media "^7.0.8" - postcss-custom-properties "^8.0.11" - postcss-custom-selectors "^5.1.2" - postcss-dir-pseudo-class "^5.0.0" - postcss-double-position-gradients "^1.0.0" - postcss-env-function "^2.0.2" - postcss-focus-visible "^4.0.0" - postcss-focus-within "^3.0.0" - postcss-font-variant "^4.0.0" - postcss-gap-properties "^2.0.0" - postcss-image-set-function "^3.0.1" - postcss-initial "^3.0.0" - postcss-lab-function "^2.0.1" - postcss-logical "^3.0.0" - postcss-media-minmax "^4.0.0" - postcss-nesting "^7.0.0" - postcss-overflow-shorthand "^2.0.0" - postcss-page-break "^2.0.0" - postcss-place "^4.0.1" - postcss-pseudo-class-any-link "^6.0.0" - postcss-replace-overflow-wrap "^3.0.0" - postcss-selector-matches "^4.0.0" - postcss-selector-not "^4.0.0" - -postcss-pseudo-class-any-link@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1" - integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== - dependencies: - postcss "^7.0.2" - postcss-selector-parser "^5.0.0-rc.3" - -postcss-reduce-initial@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" - integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - -postcss-reduce-transforms@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" - integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== - dependencies: - cssnano-util-get-match "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-replace-overflow-wrap@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" - integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== - dependencies: - postcss "^7.0.2" - -postcss-safe-parser@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz#8756d9e4c36fdce2c72b091bbc8ca176ab1fcdea" - integrity sha512-xZsFA3uX8MO3yAda03QrG3/Eg1LN3EPfjjf07vke/46HERLZyHrTsQ9E1r1w1W//fWEhtYNndo2hQplN2cVpCQ== - dependencies: - postcss "^7.0.0" - -postcss-selector-matches@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff" - integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== - dependencies: - balanced-match "^1.0.0" - postcss "^7.0.2" - -postcss-selector-not@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz#263016eef1cf219e0ade9a913780fc1f48204cbf" - integrity sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ== - dependencies: - balanced-match "^1.0.0" - postcss "^7.0.2" - -postcss-selector-parser@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" - integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== - dependencies: - dot-prop "^5.2.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" - integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== - dependencies: - cssesc "^2.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: - version "6.0.6" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea" - integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-svgo@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.3.tgz#343a2cdbac9505d416243d496f724f38894c941e" - integrity sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - svgo "^1.0.0" - -postcss-unique-selectors@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" - integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== - dependencies: - alphanum-sort "^1.0.0" - postcss "^7.0.0" - uniqs "^2.0.0" - -postcss-value-parser@^3.0.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" - integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== - -postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" - integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== - -postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" - integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== - dependencies: - flatten "^1.0.2" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss@7.0.21: - version "7.0.21" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.21.tgz#06bb07824c19c2021c5d056d5b10c35b989f7e17" - integrity sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.23, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: - version "7.0.36" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.36.tgz#056f8cffa939662a8f5905950c07d5285644dfcb" - integrity sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -postcss@^8.0.2: - version "8.3.6" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.6.tgz#2730dd76a97969f37f53b9a6096197be311cc4ea" - integrity sha512-wG1cc/JhRgdqB6WHEuyLTedf3KIRuD0hG6ldkFEZNCjRxiC+3i6kkWUUbiJQayP28iwG35cEmAbe98585BYV0A== - dependencies: - colorette "^1.2.2" - nanoid "^3.1.23" - source-map-js "^0.6.2" - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - -prepend-http@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= - -prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" - -prettier@^1.18.2: - version "1.19.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" - integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== - -pretty-bytes@^5.1.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" - integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== - -pretty-error@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6" - integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw== - dependencies: - lodash "^4.17.20" - renderkid "^2.0.4" - -pretty-format@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" - integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== - dependencies: - "@jest/types" "^24.9.0" - ansi-regex "^4.0.0" - ansi-styles "^3.2.0" - react-is "^16.8.4" - -pretty-format@^26.0.0, pretty-format@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" - integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== - dependencies: - "@jest/types" "^26.6.2" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^17.0.1" - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= - -promise-polyfill@^8.1.3: - version "8.2.0" - resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-8.2.0.tgz#367394726da7561457aba2133c9ceefbd6267da0" - integrity sha512-k/TC0mIcPVF6yHhUvwAp7cvL6I2fFV7TzF1DuGPI8mBh4QQazf36xCKEHKTZKRysEoTQoQdKyP25J8MPJp7j5g== - -promise@^8.0.3: - version "8.1.0" - resolved "https://registry.yarnpkg.com/promise/-/promise-8.1.0.tgz#697c25c3dfe7435dd79fcd58c38a135888eaf05e" - integrity sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q== - dependencies: - asap "~2.0.6" - -prompts@^2.0.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.1.tgz#befd3b1195ba052f9fd2fde8a486c4e82ee77f61" - integrity sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - -prop-types-exact@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/prop-types-exact/-/prop-types-exact-1.2.0.tgz#825d6be46094663848237e3925a98c6e944e9869" - integrity sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA== - dependencies: - has "^1.0.3" - object.assign "^4.1.0" - reflect.ownkeys "^0.2.0" - -prop-types@^15.5.8, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: - version "15.7.2" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" - integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.8.1" - -proxy-addr@~2.0.5: - version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" - integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= - -psl@^1.1.28, psl@^1.1.33: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - -punycode@^1.2.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -q@^1.1.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= - -qs@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" - integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== - -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - -query-string@^4.1.0: - version "4.3.4" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" - integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= - dependencies: - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== - -raf-schd@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/raf-schd/-/raf-schd-4.0.3.tgz#5d6c34ef46f8b2a0e880a8fcdb743efc5bfdbc1a" - integrity sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ== - -raf@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" - integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== - dependencies: - performance-now "^2.1.0" - -railroad-diagrams@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz#eb7e6267548ddedfb899c1b90e57374559cddb7e" - integrity sha1-635iZ1SN3t+4mcG5Dlc3RVnN234= - -randexp@0.4.6: - version "0.4.6" - resolved "https://registry.yarnpkg.com/randexp/-/randexp-0.4.6.tgz#e986ad5e5e31dae13ddd6f7b3019aa7c87f60ca3" - integrity sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ== - dependencies: - discontinuous-range "1.0.0" - ret "~0.1.10" - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -range-parser@^1.2.1, range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" - integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== - dependencies: - bytes "3.1.0" - http-errors "1.7.2" - iconv-lite "0.4.24" - unpipe "1.0.0" - -react-app-polyfill@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-1.0.6.tgz#890f8d7f2842ce6073f030b117de9130a5f385f0" - integrity sha512-OfBnObtnGgLGfweORmdZbyEz+3dgVePQBb3zipiaDsMHV1NpWm0rDFYIVXFV/AK+x4VIIfWHhrdMIeoTLyRr2g== - dependencies: - core-js "^3.5.0" - object-assign "^4.1.1" - promise "^8.0.3" - raf "^3.4.1" - regenerator-runtime "^0.13.3" - whatwg-fetch "^3.0.0" - -react-copy-to-clipboard@^5.0.1: - version "5.0.3" - resolved "https://registry.yarnpkg.com/react-copy-to-clipboard/-/react-copy-to-clipboard-5.0.3.tgz#2a0623b1115a1d8c84144e9434d3342b5af41ab4" - integrity sha512-9S3j+m+UxDZOM0Qb8mhnT/rMR0NGSrj9A/073yz2DSxPMYhmYFBMYIdI2X4o8AjOjyFsSNxDRnCX6s/gRxpriw== - dependencies: - copy-to-clipboard "^3" - prop-types "^15.5.8" - -react-dev-utils@^10.2.1: - version "10.2.1" - resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-10.2.1.tgz#f6de325ae25fa4d546d09df4bb1befdc6dd19c19" - integrity sha512-XxTbgJnYZmxuPtY3y/UV0D8/65NKkmaia4rXzViknVnZeVlklSh8u6TnaEYPfAi/Gh1TP4mEOXHI6jQOPbeakQ== - dependencies: - "@babel/code-frame" "7.8.3" - address "1.1.2" - browserslist "4.10.0" - chalk "2.4.2" - cross-spawn "7.0.1" - detect-port-alt "1.1.6" - escape-string-regexp "2.0.0" - filesize "6.0.1" - find-up "4.1.0" - fork-ts-checker-webpack-plugin "3.1.1" - global-modules "2.0.0" - globby "8.0.2" - gzip-size "5.1.1" - immer "1.10.0" - inquirer "7.0.4" - is-root "2.1.0" - loader-utils "1.2.3" - open "^7.0.2" - pkg-up "3.1.0" - react-error-overlay "^6.0.7" - recursive-readdir "2.2.2" - shell-quote "1.7.2" - strip-ansi "6.0.0" - text-table "0.2.0" - -react-dom@^16.7.0: - version "16.14.0" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.14.0.tgz#7ad838ec29a777fb3c75c3a190f661cf92ab8b89" - integrity sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - prop-types "^15.6.2" - scheduler "^0.19.1" - -react-error-overlay@^6.0.7: - version "6.0.9" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a" - integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew== - -react-is@^16.12.0, react-is@^16.13.1, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.8.6, react-is@^16.9.0: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react-is@^17.0.1: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" - integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== - -react-lifecycles-compat@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" - integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== - -react-popper@^1.3.6: - version "1.3.11" - resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-1.3.11.tgz#a2cc3f0a67b75b66cfa62d2c409f9dd1fcc71ffd" - integrity sha512-VSA/bS+pSndSF2fiasHK/PTEEAyOpX60+H5EPAjoArr8JGm+oihu4UbrqcEBpQibJxBVCpYyjAX7abJ+7DoYVg== - dependencies: - "@babel/runtime" "^7.1.2" - "@hypnosphi/create-react-context" "^0.3.1" - deep-equal "^1.1.1" - popper.js "^1.14.4" - prop-types "^15.6.1" - typed-styles "^0.0.7" - warning "^4.0.2" - -react-resize-detector@^5.0.7: - version "5.2.0" - resolved "https://registry.yarnpkg.com/react-resize-detector/-/react-resize-detector-5.2.0.tgz#992083834432308c551a8251a2c52306d9d16718" - integrity sha512-PQAc03J2eyhvaiWgEdQ8+bKbbyGJzLEr70KuivBd1IEmP/iewNakLUMkxm6MWnDqsRPty85pioyg8MvGb0qC8A== - dependencies: - lodash "^4.17.20" - prop-types "^15.7.2" - raf-schd "^4.0.2" - resize-observer-polyfill "^1.5.1" - -react-scripts@3.4.4: - version "3.4.4" - resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-3.4.4.tgz#eef024ed5c566374005e3f509877350ba99d08a7" - integrity sha512-7J7GZyF/QvZkKAZLneiOIhHozvOMHey7hO9cdO9u68jjhGZlI8hDdOm6UyuHofn6Ajc9Uji5I6Psm/nKNuWdyw== - dependencies: - "@babel/core" "7.9.0" - "@svgr/webpack" "4.3.3" - "@typescript-eslint/eslint-plugin" "^2.10.0" - "@typescript-eslint/parser" "^2.10.0" - babel-eslint "10.1.0" - babel-jest "^24.9.0" - babel-loader "8.1.0" - babel-plugin-named-asset-import "^0.3.6" - babel-preset-react-app "^9.1.2" - camelcase "^5.3.1" - case-sensitive-paths-webpack-plugin "2.3.0" - css-loader "3.4.2" - dotenv "8.2.0" - dotenv-expand "5.1.0" - eslint "^6.6.0" - eslint-config-react-app "^5.2.1" - eslint-loader "3.0.3" - eslint-plugin-flowtype "4.6.0" - eslint-plugin-import "2.20.1" - eslint-plugin-jsx-a11y "6.2.3" - eslint-plugin-react "7.19.0" - eslint-plugin-react-hooks "^1.6.1" - file-loader "4.3.0" - fs-extra "^8.1.0" - html-webpack-plugin "4.0.0-beta.11" - identity-obj-proxy "3.0.0" - jest "24.9.0" - jest-environment-jsdom-fourteen "1.0.1" - jest-resolve "24.9.0" - jest-watch-typeahead "0.4.2" - mini-css-extract-plugin "0.9.0" - optimize-css-assets-webpack-plugin "5.0.3" - pnp-webpack-plugin "1.6.4" - postcss-flexbugs-fixes "4.1.0" - postcss-loader "3.0.0" - postcss-normalize "8.0.1" - postcss-preset-env "6.7.0" - postcss-safe-parser "4.0.1" - react-app-polyfill "^1.0.6" - react-dev-utils "^10.2.1" - resolve "1.15.0" - resolve-url-loader "3.1.2" - sass-loader "8.0.2" - semver "6.3.0" - style-loader "0.23.1" - terser-webpack-plugin "2.3.8" - ts-pnp "1.1.6" - url-loader "2.3.0" - webpack "4.42.0" - webpack-dev-server "3.11.0" - webpack-manifest-plugin "2.2.0" - workbox-webpack-plugin "4.3.1" - optionalDependencies: - fsevents "2.1.2" - -react-test-renderer@^16.0.0-0, react-test-renderer@^16.9.0: - version "16.14.0" - resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.14.0.tgz#e98360087348e260c56d4fe2315e970480c228ae" - integrity sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg== - dependencies: - object-assign "^4.1.1" - prop-types "^15.6.2" - react-is "^16.8.6" - scheduler "^0.19.1" - -react-transition-group@^2.3.1: - version "2.9.0" - resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.9.0.tgz#df9cdb025796211151a436c69a8f3b97b5b07c8d" - integrity sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg== - dependencies: - dom-helpers "^3.4.0" - loose-envify "^1.4.0" - prop-types "^15.6.2" - react-lifecycles-compat "^3.0.4" - -react@^16.7.0: - version "16.14.0" - resolved "https://registry.yarnpkg.com/react/-/react-16.14.0.tgz#94d776ddd0aaa37da3eda8fc5b6b18a4c9a3114d" - integrity sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - prop-types "^15.6.2" - -reactstrap@*, reactstrap@^8.9.0: - version "8.9.0" - resolved "https://registry.yarnpkg.com/reactstrap/-/reactstrap-8.9.0.tgz#bca4afa3f5cd18899ef9b33d877a141886d5abae" - integrity sha512-pmf33YjpNZk1IfrjqpWCUMq9hk6GzSnMWBAofTBNIRJQB1zQ0Au2kzv3lPUAFsBYgWEuI9iYa/xKXHaboSiMkQ== - dependencies: - "@babel/runtime" "^7.12.5" - classnames "^2.2.3" - prop-types "^15.5.8" - react-popper "^1.3.6" - react-transition-group "^2.3.1" - -read-pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" - integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= - dependencies: - find-up "^2.0.0" - read-pkg "^2.0.0" - -read-pkg-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" - integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= - dependencies: - find-up "^2.0.0" - read-pkg "^3.0.0" - -read-pkg-up@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" - integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== - dependencies: - find-up "^3.0.0" - read-pkg "^3.0.0" - -read-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" - integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= - dependencies: - load-json-file "^2.0.0" - normalize-package-data "^2.3.2" - path-type "^2.0.0" - -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.0.6, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -realpath-native@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" - integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== - dependencies: - util.promisify "^1.0.0" - -recursive-readdir@2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" - integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== - dependencies: - minimatch "3.0.4" - -reflect.ownkeys@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz#749aceec7f3fdf8b63f927a04809e90c5c0b3460" - integrity sha1-dJrO7H8/34tj+SegSAnpDFwLNGA= - -regenerate-unicode-properties@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" - integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== - dependencies: - regenerate "^1.4.0" - -regenerate@^1.4.0: - version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== - -regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4: - version "0.13.9" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" - integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== - -regenerator-transform@^0.14.2: - version "0.14.5" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" - integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== - dependencies: - "@babel/runtime" "^7.8.4" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regex-parser@^2.2.11: - version "2.2.11" - resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.11.tgz#3b37ec9049e19479806e878cabe7c1ca83ccfe58" - integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== - -regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" - integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -regexpp@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" - integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== - -regexpp@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - -regexpu-core@^4.7.1: - version "4.7.1" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" - integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== - dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^8.2.0" - regjsgen "^0.5.1" - regjsparser "^0.6.4" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.2.0" - -regjsgen@^0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" - integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== - -regjsparser@^0.6.4: - version "0.6.9" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.9.tgz#b489eef7c9a2ce43727627011429cf833a7183e6" - integrity sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ== - dependencies: - jsesc "~0.5.0" - -relateurl@^0.2.7: - version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -renderkid@^2.0.4: - version "2.0.7" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.7.tgz#464f276a6bdcee606f4a15993f9b29fc74ca8609" - integrity sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ== - dependencies: - css-select "^4.1.3" - dom-converter "^0.2.0" - htmlparser2 "^6.1.0" - lodash "^4.17.21" - strip-ansi "^3.0.1" - -repeat-element@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" - integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -request-promise-core@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" - integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== - dependencies: - lodash "^4.17.19" - -request-promise-native@^1.0.5: - version "1.0.9" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" - integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== - dependencies: - request-promise-core "1.1.4" - stealthy-require "^1.1.1" - tough-cookie "^2.3.3" - -request@^2.87.0, request@^2.88.0: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= - -resize-observer-polyfill@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" - integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== - -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= - dependencies: - resolve-from "^3.0.0" - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-url-loader@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.2.tgz#235e2c28e22e3e432ba7a5d4e305c59a58edfc08" - integrity sha512-QEb4A76c8Mi7I3xNKXlRKQSlLBwjUV/ULFMP+G7n3/7tJZ8MG5wsZ3ucxP1Jz8Vevn6fnJsxDx9cIls+utGzPQ== - dependencies: - adjust-sourcemap-loader "3.0.0" - camelcase "5.3.1" - compose-function "3.0.3" - convert-source-map "1.7.0" - es6-iterator "2.0.3" - loader-utils "1.2.3" - postcss "7.0.21" - rework "1.0.1" - rework-visit "1.0.0" - source-map "0.6.1" - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -resolve@1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= - -resolve@1.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.0.tgz#1b7ca96073ebb52e741ffd799f6b39ea462c67f5" - integrity sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw== - dependencies: - path-parse "^1.0.6" - -resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.15.1, resolve@^1.20.0, resolve@^1.3.2, resolve@^1.8.1: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -resolve@^2.0.0-next.3: - version "2.0.0-next.3" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46" - integrity sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -retry@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= - -rework-visit@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a" - integrity sha1-mUWygD8hni96ygCtuLyfZA+ELJo= - -rework@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rework/-/rework-1.0.1.tgz#30806a841342b54510aa4110850cd48534144aa7" - integrity sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc= - dependencies: - convert-source-map "^0.3.3" - css "^2.0.0" - -rgb-regex@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" - integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= - -rgba-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" - integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= - -rimraf@2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - -rimraf@^2.5.4, rimraf@^2.6.3, rimraf@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -rst-selector-parser@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz#81b230ea2fcc6066c89e3472de794285d9b03d91" - integrity sha1-gbIw6i/MYGbInjRy3nlChdmwPZE= - dependencies: - lodash.flattendeep "^4.4.0" - nearley "^2.7.10" - -rsvp@^4.8.4: - version "4.8.5" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" - integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== - -run-async@^2.2.0, run-async@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= - dependencies: - aproba "^1.1.1" - -rxjs@^6.5.3, rxjs@^6.6.0: - version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== - dependencies: - tslib "^1.9.0" - -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sane@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" - integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== - dependencies: - "@cnakazawa/watch" "^1.0.3" - anymatch "^2.0.0" - capture-exit "^2.0.0" - exec-sh "^0.3.2" - execa "^1.0.0" - fb-watchman "^2.0.0" - micromatch "^3.1.4" - minimist "^1.1.1" - walker "~1.0.5" - -sanitize-html@^2.3.3: - version "2.4.0" - resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-2.4.0.tgz#8da7524332eb210d968971621b068b53f17ab5a3" - integrity sha512-Y1OgkUiTPMqwZNRLPERSEi39iOebn2XJLbeiGOBhaJD/yLqtLGu6GE5w7evx177LeGgSE+4p4e107LMiydOf6A== - dependencies: - deepmerge "^4.2.2" - escape-string-regexp "^4.0.0" - htmlparser2 "^6.0.0" - is-plain-object "^5.0.0" - klona "^2.0.3" - parse-srcset "^1.0.2" - postcss "^8.0.2" - -sanitize.css@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-10.0.0.tgz#b5cb2547e96d8629a60947544665243b1dc3657a" - integrity sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg== - -sass-loader@8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-8.0.2.tgz#debecd8c3ce243c76454f2e8290482150380090d" - integrity sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ== - dependencies: - clone-deep "^4.0.1" - loader-utils "^1.2.3" - neo-async "^2.6.1" - schema-utils "^2.6.1" - semver "^6.3.0" - -sass@1.32.10: - version "1.32.10" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.32.10.tgz#d40da4e20031b450359ee1c7e69bc8cc89569241" - integrity sha512-Nx0pcWoonAkn7CRp0aE/hket1UP97GiR1IFw3kcjV3pnenhWgZEWUf0ZcfPOV2fK52fnOcK3JdC/YYZ9E47DTQ== - dependencies: - chokidar ">=3.0.0 <4.0.0" - -sax@^1.2.4, sax@~1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -saxes@^3.1.9: - version "3.1.11" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" - integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g== - dependencies: - xmlchars "^2.1.1" - -saxes@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" - integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== - dependencies: - xmlchars "^2.2.0" - -scheduler@^0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" - integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - -schema-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" - integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== - dependencies: - ajv "^6.1.0" - ajv-errors "^1.0.0" - ajv-keywords "^3.1.0" - -schema-utils@^2.5.0, schema-utils@^2.6.0, schema-utils@^2.6.1, schema-utils@^2.6.5, schema-utils@^2.6.6: - version "2.7.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" - integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== - dependencies: - "@types/json-schema" "^7.0.5" - ajv "^6.12.4" - ajv-keywords "^3.5.2" - -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= - -selfsigned@^1.10.7: - version "1.10.11" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.11.tgz#24929cd906fe0f44b6d01fb23999a739537acbe9" - integrity sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA== - dependencies: - node-forge "^0.10.0" - -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@6.3.0, semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - -semver@^7.3.2: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - -send@0.17.1: - version "0.17.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "~1.7.2" - mime "1.6.0" - ms "2.1.1" - on-finished "~2.3.0" - range-parser "~1.2.1" - statuses "~1.5.0" - -serialize-javascript@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== - dependencies: - randombytes "^2.1.0" - -serve-index@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= - dependencies: - accepts "~1.3.4" - batch "0.6.1" - debug "2.6.9" - escape-html "~1.0.3" - http-errors "~1.6.2" - mime-types "~2.1.17" - parseurl "~1.3.2" - -serve-static@1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" - integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.17.1" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setimmediate@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -shallow-clone@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-0.1.2.tgz#5909e874ba77106d73ac414cfec1ffca87d97060" - integrity sha1-WQnodLp3EG1zrEFM/sH/yofZcGA= - dependencies: - is-extendable "^0.1.1" - kind-of "^2.0.1" - lazy-cache "^0.2.3" - mixin-object "^2.0.1" - -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.0.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shell-quote@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" - integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== - -shellwords@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" - integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== - -simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= - dependencies: - is-arrayish "^0.3.1" - -sinon@^9.0.3: - version "9.2.4" - resolved "https://registry.yarnpkg.com/sinon/-/sinon-9.2.4.tgz#e55af4d3b174a4443a8762fa8421c2976683752b" - integrity sha512-zljcULZQsJxVra28qIAL6ow1Z9tpattkCTEJR4RBP3TGc00FcttsP5pK284Nas5WjMZU5Yzy3kAIp3B3KRf5Yg== - dependencies: - "@sinonjs/commons" "^1.8.1" - "@sinonjs/fake-timers" "^6.0.1" - "@sinonjs/samsam" "^5.3.1" - diff "^4.0.2" - nise "^4.0.4" - supports-color "^7.1.0" - -sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= - -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slice-ansi@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== - dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -sockjs-client@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" - integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== - dependencies: - debug "^3.2.5" - eventsource "^1.0.7" - faye-websocket "~0.11.1" - inherits "^2.0.3" - json3 "^3.3.2" - url-parse "^1.4.3" - -sockjs@0.3.20: - version "0.3.20" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.20.tgz#b26a283ec562ef8b2687b44033a4eeceac75d855" - integrity sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA== - dependencies: - faye-websocket "^0.10.0" - uuid "^3.4.0" - websocket-driver "0.6.5" - -sort-keys@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" - integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= - dependencies: - is-plain-obj "^1.0.0" - -source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - -source-map-js@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" - integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== - -source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@^0.5.6, source-map-support@~0.5.12: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== - -source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.5.0, source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.9" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz#8a595135def9592bda69709474f1cbeea7c2467f" - integrity sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ== - -spdy-transport@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" - integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== - dependencies: - debug "^4.1.0" - detect-node "^2.0.4" - hpack.js "^2.1.6" - obuf "^1.1.2" - readable-stream "^3.0.6" - wbuf "^1.7.3" - -spdy@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" - integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== - dependencies: - debug "^4.1.0" - handle-thing "^2.0.0" - http-deceiver "^1.2.7" - select-hose "^2.0.0" - spdy-transport "^3.0.0" - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -ssri@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" - integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== - dependencies: - figgy-pudding "^3.5.1" - -ssri@^7.0.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-7.1.1.tgz#33e44f896a967158e3c63468e47ec46613b95b5f" - integrity sha512-w+daCzXN89PseTL99MkA+fxJEcU3wfaE/ah0i0lnOlpG1CYLJ2ZjzEry68YBKfLs4JfoTShrTEsJkAZuNZ/stw== - dependencies: - figgy-pudding "^3.5.1" - minipass "^3.1.1" - -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - -stack-utils@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.5.tgz#a19b0b01947e0029c8e451d5d61a498f5bb1471b" - integrity sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ== - dependencies: - escape-string-regexp "^2.0.0" - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - -stealthy-require@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" - integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= - -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= - -string-length@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" - integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0= - dependencies: - astral-regex "^1.0.0" - strip-ansi "^4.0.0" - -string-length@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837" - integrity sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA== - dependencies: - astral-regex "^1.0.0" - strip-ansi "^5.2.0" - -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string-width@^4.1.0: - version "4.2.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" - integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - -string.prototype.matchall@^4.0.2, string.prototype.matchall@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.5.tgz#59370644e1db7e4c0c045277690cf7b01203c4da" - integrity sha512-Z5ZaXO0svs0M2xd/6By3qpeKpLKd9mO4v4q3oMEQrk8Ck4xOD5d5XeBOOjGrmVZZ/AHB1S0CgG4N5r1G9N3E2Q== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.2" - get-intrinsic "^1.1.1" - has-symbols "^1.0.2" - internal-slot "^1.0.3" - regexp.prototype.flags "^1.3.1" - side-channel "^1.0.4" - -string.prototype.trim@^1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz#6014689baf5efaf106ad031a5fa45157666ed1bd" - integrity sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - -string.prototype.trimend@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" - integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string.prototype.trimstart@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" - integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string_decoder@^1.0.0, string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -stringify-object@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" - integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== - dependencies: - get-own-enumerable-property-symbols "^3.0.0" - is-obj "^1.0.1" - is-regexp "^1.0.0" - -strip-ansi@6.0.0, strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= - -strip-comments@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-1.0.2.tgz#82b9c45e7f05873bee53f37168af930aa368679d" - integrity sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw== - dependencies: - babel-extract-comments "^1.0.0" - babel-plugin-transform-object-rest-spread "^6.26.0" - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= - -strip-json-comments@^3.0.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -style-loader@0.23.1: - version "0.23.1" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925" - integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg== - dependencies: - loader-utils "^1.1.0" - schema-utils "^1.0.0" - -style-mod@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/style-mod/-/style-mod-4.0.0.tgz#97e7c2d68b592975f2ca7a63d0dd6fcacfe35a01" - integrity sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw== - -stylehacks@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" - integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.0.0, supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -svg-parser@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" - integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== - -svgo@^1.0.0, svgo@^1.2.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" - integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== - dependencies: - chalk "^2.4.1" - coa "^2.0.2" - css-select "^2.0.0" - css-select-base-adapter "^0.1.1" - css-tree "1.0.0-alpha.37" - csso "^4.0.2" - js-yaml "^3.13.1" - mkdirp "~0.5.1" - object.values "^1.1.0" - sax "~1.2.4" - stable "^0.1.8" - unquote "~1.1.1" - util.promisify "~1.0.0" - -symbol-tree@^3.2.2, symbol-tree@^3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - -table@^5.2.3: - version "5.4.6" - resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" - integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== - dependencies: - ajv "^6.10.2" - lodash "^4.17.14" - slice-ansi "^2.1.0" - string-width "^3.0.0" - -tapable@^1.0.0, tapable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - -tempusdominus-bootstrap-4@^5.1.2: - version "5.39.0" - resolved "https://registry.yarnpkg.com/tempusdominus-bootstrap-4/-/tempusdominus-bootstrap-4-5.39.0.tgz#f13dcfec6c41b37c5fe509f08bd513590c64411f" - integrity sha512-vYnkmQYQq4+A51WyRc/6e03eM0BHDoPaxd556K1pd4Nhr0eGeB3+Mi9b+3CDx4189fg3gQlrsKzgJiHPRwSX3Q== - dependencies: - bootstrap "^4.5.2" - jquery "^3.5.1" - moment "^2.29.0" - moment-timezone "^0.5.31" - popper.js "^1.16.1" - -tempusdominus-core@^5.0.3: - version "5.19.0" - resolved "https://registry.yarnpkg.com/tempusdominus-core/-/tempusdominus-core-5.19.0.tgz#ccbd2c35109b0a4b96c61513e53e0175ec4896bd" - integrity sha512-7a4oBQw4cjz6C87BLRg3KHVvzpnPlnRTkuDZ7SwcJayQQ4QgOryX5u6wj0q07TXhgtMQLCntZO6nVhHIKPaeUw== - dependencies: - jquery "^3.5.0" - moment "~2.24.0" - moment-timezone "^0.5.28" - -terser-webpack-plugin@2.3.8: - version "2.3.8" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz#894764a19b0743f2f704e7c2a848c5283a696724" - integrity sha512-/fKw3R+hWyHfYx7Bv6oPqmk4HGQcrWLtV3X6ggvPuwPNHSnzvVV51z6OaaCOus4YLjutYGOz3pEpbhe6Up2s1w== - dependencies: - cacache "^13.0.1" - find-cache-dir "^3.3.1" - jest-worker "^25.4.0" - p-limit "^2.3.0" - schema-utils "^2.6.6" - serialize-javascript "^4.0.0" - source-map "^0.6.1" - terser "^4.6.12" - webpack-sources "^1.4.3" - -terser-webpack-plugin@^1.4.3: - version "1.4.5" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" - integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== - dependencies: - cacache "^12.0.2" - find-cache-dir "^2.1.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^4.0.0" - source-map "^0.6.1" - terser "^4.1.2" - webpack-sources "^1.4.0" - worker-farm "^1.7.0" - -terser@^4.1.2, terser@^4.6.12, terser@^4.6.3: - version "4.8.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" - integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - -test-exclude@^5.2.3: - version "5.2.3" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" - integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== - dependencies: - glob "^7.1.3" - minimatch "^3.0.4" - read-pkg-up "^4.0.0" - require-main-filename "^2.0.0" - -text-table@0.2.0, text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= - -throat@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" - integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= - -through2@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -through@^2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - -thunky@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" - integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== - -timers-browserify@^2.0.4: - version "2.0.12" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" - integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== - dependencies: - setimmediate "^1.0.4" - -timsort@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" - integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - -tmpl@1.0.x: - version "1.0.4" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" - integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= - -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -toggle-selection@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" - integrity sha1-bkWxJj8gF/oKzH2J14sVuL932jI= - -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== - -tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@^2.5.0, tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tough-cookie@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" - integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.1.2" - -tr46@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= - dependencies: - punycode "^2.1.0" - -tr46@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" - integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== - dependencies: - punycode "^2.1.1" - -ts-pnp@1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.6.tgz#389a24396d425a0d3162e96d2b4638900fdc289a" - integrity sha512-CrG5GqAAzMT7144Cl+UIFP7mz/iIhiy+xQ6GGcnjTezhALT02uPMRw7tgDSESgB5MsfKt55+GPWw4ir1kVtMIQ== - -ts-pnp@^1.1.6: - version "1.2.0" - resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" - integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== - -tsconfig-paths@^3.9.0: - version "3.10.1" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.10.1.tgz#79ae67a68c15289fdf5c51cb74f397522d795ed7" - integrity sha512-rETidPDgCpltxF7MjBZlAFPUHv5aHH2MymyPvh+vEyWAED4Eb/WeMbsnD/JDr4OKPOA1TssDHgIcpTN5Kh0p6Q== - dependencies: - json5 "^2.2.0" - minimist "^1.2.0" - strip-bom "^3.0.0" - -tslib@^1.8.1, tslib@^1.9.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^2.0.3, tslib@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" - integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== - -tsutils@^3.17.1: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - -type-detect@4.0.8, type-detect@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - -type-is@~1.6.17, type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -type@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" - integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== - -type@^2.0.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/type/-/type-2.5.0.tgz#0a2e78c2e77907b252abe5f298c1b01c63f0db3d" - integrity sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw== - -typed-styles@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/typed-styles/-/typed-styles-0.0.7.tgz#93392a008794c4595119ff62dde6809dbc40a3d9" - integrity sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q== - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - -typescript@^3.3.3: - version "3.9.10" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.10.tgz#70f3910ac7a51ed6bef79da7800690b19bf778b8" - integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q== - -unbox-primitive@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" - integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== - dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.1" - has-symbols "^1.0.2" - which-boxed-primitive "^1.0.2" - -unicode-canonical-property-names-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" - integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== - -unicode-match-property-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" - integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== - dependencies: - unicode-canonical-property-names-ecmascript "^1.0.4" - unicode-property-aliases-ecmascript "^1.0.4" - -unicode-match-property-value-ecmascript@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" - integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== - -unicode-property-aliases-ecmascript@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" - integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= - -uniqs@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" - integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= - -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - -universalify@^0.1.0, universalify@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= - -unquote@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" - integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -upath@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -url-loader@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-2.3.0.tgz#e0e2ef658f003efb8ca41b0f3ffbf76bab88658b" - integrity sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog== - dependencies: - loader-utils "^1.2.3" - mime "^2.4.4" - schema-utils "^2.5.0" - -url-parse@^1.4.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.3.tgz#71c1303d38fb6639ade183c2992c8cc0686df862" - integrity sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -use-media@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/use-media/-/use-media-1.4.0.tgz#e777bf1f382a7aacabbd1f9ce3da2b62e58b2a98" - integrity sha512-XsgyUAf3nhzZmEfhc5MqLHwyaPjs78bgytpVJ/xDl0TF4Bptf3vEpBNBBT/EIKOmsOc8UbuECq3mrP3mt1QANA== - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -util.promisify@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" - integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== - dependencies: - define-properties "^1.1.2" - object.getownpropertydescriptors "^2.0.3" - -util.promisify@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.1.1.tgz#77832f57ced2c9478174149cae9b96e9918cd54b" - integrity sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - for-each "^0.3.3" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.1" - -util.promisify@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" - integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.2" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.0" - -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= - dependencies: - inherits "2.0.1" - -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - -utila@~0.4: - version "0.4.0" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" - integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= - -uuid@^3.3.2, uuid@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -v8-compile-cache@^2.0.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= - -vendors@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" - integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -vm-browserify@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - -w3c-hr-time@^1.0.1, w3c-hr-time@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" - integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== - dependencies: - browser-process-hrtime "^1.0.0" - -w3c-keyname@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-2.2.4.tgz#4ade6916f6290224cdbd1db8ac49eab03d0eef6b" - integrity sha512-tOhfEwEzFLJzf6d1ZPkYfGj+FWhIpBux9ppoP3rlclw3Z0BZv3N7b7030Z1kYth+6rDuAsXUFr+d0VE6Ed1ikw== - -w3c-xmlserializer@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" - integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg== - dependencies: - domexception "^1.0.1" - webidl-conversions "^4.0.2" - xml-name-validator "^3.0.0" - -w3c-xmlserializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" - integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== - dependencies: - xml-name-validator "^3.0.0" - -walker@^1.0.7, walker@~1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" - integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= - dependencies: - makeerror "1.0.x" - -warning@^4.0.2, warning@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" - integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== - dependencies: - loose-envify "^1.0.0" - -watchpack-chokidar2@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" - integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== - dependencies: - chokidar "^2.1.8" - -watchpack@^1.6.0: - version "1.7.5" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" - integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== - dependencies: - graceful-fs "^4.1.2" - neo-async "^2.5.0" - optionalDependencies: - chokidar "^3.4.1" - watchpack-chokidar2 "^2.0.1" - -wbuf@^1.1.0, wbuf@^1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" - integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== - dependencies: - minimalistic-assert "^1.0.0" - -webidl-conversions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== - -webidl-conversions@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" - integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== - -webidl-conversions@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" - integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== - -webpack-dev-middleware@^3.7.2: - version "3.7.3" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz#0639372b143262e2b84ab95d3b91a7597061c2c5" - integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ== - dependencies: - memory-fs "^0.4.1" - mime "^2.4.4" - mkdirp "^0.5.1" - range-parser "^1.2.1" - webpack-log "^2.0.0" - -webpack-dev-server@3.11.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz#8f154a3bce1bcfd1cc618ef4e703278855e7ff8c" - integrity sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg== - dependencies: - ansi-html "0.0.7" - bonjour "^3.5.0" - chokidar "^2.1.8" - compression "^1.7.4" - connect-history-api-fallback "^1.6.0" - debug "^4.1.1" - del "^4.1.1" - express "^4.17.1" - html-entities "^1.3.1" - http-proxy-middleware "0.19.1" - import-local "^2.0.0" - internal-ip "^4.3.0" - ip "^1.1.5" - is-absolute-url "^3.0.3" - killable "^1.0.1" - loglevel "^1.6.8" - opn "^5.5.0" - p-retry "^3.0.1" - portfinder "^1.0.26" - schema-utils "^1.0.0" - selfsigned "^1.10.7" - semver "^6.3.0" - serve-index "^1.9.1" - sockjs "0.3.20" - sockjs-client "1.4.0" - spdy "^4.0.2" - strip-ansi "^3.0.1" - supports-color "^6.1.0" - url "^0.11.0" - webpack-dev-middleware "^3.7.2" - webpack-log "^2.0.0" - ws "^6.2.1" - yargs "^13.3.2" - -webpack-log@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" - integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== - dependencies: - ansi-colors "^3.0.0" - uuid "^3.3.2" - -webpack-manifest-plugin@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz#19ca69b435b0baec7e29fbe90fb4015de2de4f16" - integrity sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ== - dependencies: - fs-extra "^7.0.0" - lodash ">=3.5 <5" - object.entries "^1.1.0" - tapable "^1.0.0" - -webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack@4.42.0: - version "4.42.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.42.0.tgz#b901635dd6179391d90740a63c93f76f39883eb8" - integrity sha512-EzJRHvwQyBiYrYqhyjW9AqM90dE4+s1/XtCfn7uWg6cS72zH+2VPFAlsnW0+W0cDi0XRjNKUMoJtpSi50+Ph6w== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-module-context" "1.8.5" - "@webassemblyjs/wasm-edit" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - acorn "^6.2.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" - chrome-trace-event "^1.0.2" - enhanced-resolve "^4.1.0" - eslint-scope "^4.0.3" - json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.1" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" - schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.3" - watchpack "^1.6.0" - webpack-sources "^1.4.1" - -websocket-driver@0.6.5: - version "0.6.5" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36" - integrity sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY= - dependencies: - websocket-extensions ">=0.1.1" - -websocket-driver@>=0.5.1: - version "0.7.4" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" - integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== - dependencies: - http-parser-js ">=0.5.1" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.4" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" - integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== - -whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== - dependencies: - iconv-lite "0.4.24" - -whatwg-fetch@^3.0.0: - version "3.6.2" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" - integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== - -whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== - -whatwg-url@^6.4.1: - version "6.5.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" - integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - -whatwg-url@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" - integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - -whatwg-url@^8.0.0, whatwg-url@^8.5.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" - integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== - dependencies: - lodash "^4.7.0" - tr46 "^2.1.0" - webidl-conversions "^6.1.0" - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - -which@^1.2.9, which@^1.3.0, which@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -workbox-background-sync@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz#26821b9bf16e9e37fd1d640289edddc08afd1950" - integrity sha512-1uFkvU8JXi7L7fCHVBEEnc3asPpiAL33kO495UMcD5+arew9IbKW2rV5lpzhoWcm/qhGB89YfO4PmB/0hQwPRg== - dependencies: - workbox-core "^4.3.1" - -workbox-broadcast-update@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-4.3.1.tgz#e2c0280b149e3a504983b757606ad041f332c35b" - integrity sha512-MTSfgzIljpKLTBPROo4IpKjESD86pPFlZwlvVG32Kb70hW+aob4Jxpblud8EhNb1/L5m43DUM4q7C+W6eQMMbA== - dependencies: - workbox-core "^4.3.1" - -workbox-build@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-4.3.1.tgz#414f70fb4d6de47f6538608b80ec52412d233e64" - integrity sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw== - dependencies: - "@babel/runtime" "^7.3.4" - "@hapi/joi" "^15.0.0" - common-tags "^1.8.0" - fs-extra "^4.0.2" - glob "^7.1.3" - lodash.template "^4.4.0" - pretty-bytes "^5.1.0" - stringify-object "^3.3.0" - strip-comments "^1.0.2" - workbox-background-sync "^4.3.1" - workbox-broadcast-update "^4.3.1" - workbox-cacheable-response "^4.3.1" - workbox-core "^4.3.1" - workbox-expiration "^4.3.1" - workbox-google-analytics "^4.3.1" - workbox-navigation-preload "^4.3.1" - workbox-precaching "^4.3.1" - workbox-range-requests "^4.3.1" - workbox-routing "^4.3.1" - workbox-strategies "^4.3.1" - workbox-streams "^4.3.1" - workbox-sw "^4.3.1" - workbox-window "^4.3.1" - -workbox-cacheable-response@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-4.3.1.tgz#f53e079179c095a3f19e5313b284975c91428c91" - integrity sha512-Rp5qlzm6z8IOvnQNkCdO9qrDgDpoPNguovs0H8C+wswLuPgSzSp9p2afb5maUt9R1uTIwOXrVQMmPfPypv+npw== - dependencies: - workbox-core "^4.3.1" - -workbox-core@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-4.3.1.tgz#005d2c6a06a171437afd6ca2904a5727ecd73be6" - integrity sha512-I3C9jlLmMKPxAC1t0ExCq+QoAMd0vAAHULEgRZ7kieCdUd919n53WC0AfvokHNwqRhGn+tIIj7vcb5duCjs2Kg== - -workbox-expiration@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-4.3.1.tgz#d790433562029e56837f341d7f553c4a78ebe921" - integrity sha512-vsJLhgQsQouv9m0rpbXubT5jw0jMQdjpkum0uT+d9tTwhXcEZks7qLfQ9dGSaufTD2eimxbUOJfWLbNQpIDMPw== - dependencies: - workbox-core "^4.3.1" - -workbox-google-analytics@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-4.3.1.tgz#9eda0183b103890b5c256e6f4ea15a1f1548519a" - integrity sha512-xzCjAoKuOb55CBSwQrbyWBKqp35yg1vw9ohIlU2wTy06ZrYfJ8rKochb1MSGlnoBfXGWss3UPzxR5QL5guIFdg== - dependencies: - workbox-background-sync "^4.3.1" - workbox-core "^4.3.1" - workbox-routing "^4.3.1" - workbox-strategies "^4.3.1" - -workbox-navigation-preload@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-4.3.1.tgz#29c8e4db5843803b34cd96dc155f9ebd9afa453d" - integrity sha512-K076n3oFHYp16/C+F8CwrRqD25GitA6Rkd6+qAmLmMv1QHPI2jfDwYqrytOfKfYq42bYtW8Pr21ejZX7GvALOw== - dependencies: - workbox-core "^4.3.1" - -workbox-precaching@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-4.3.1.tgz#9fc45ed122d94bbe1f0ea9584ff5940960771cba" - integrity sha512-piSg/2csPoIi/vPpp48t1q5JLYjMkmg5gsXBQkh/QYapCdVwwmKlU9mHdmy52KsDGIjVaqEUMFvEzn2LRaigqQ== - dependencies: - workbox-core "^4.3.1" - -workbox-range-requests@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-4.3.1.tgz#f8a470188922145cbf0c09a9a2d5e35645244e74" - integrity sha512-S+HhL9+iTFypJZ/yQSl/x2Bf5pWnbXdd3j57xnb0V60FW1LVn9LRZkPtneODklzYuFZv7qK6riZ5BNyc0R0jZA== - dependencies: - workbox-core "^4.3.1" - -workbox-routing@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-4.3.1.tgz#a675841af623e0bb0c67ce4ed8e724ac0bed0cda" - integrity sha512-FkbtrODA4Imsi0p7TW9u9MXuQ5P4pVs1sWHK4dJMMChVROsbEltuE79fBoIk/BCztvOJ7yUpErMKa4z3uQLX+g== - dependencies: - workbox-core "^4.3.1" - -workbox-strategies@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-4.3.1.tgz#d2be03c4ef214c115e1ab29c9c759c9fe3e9e646" - integrity sha512-F/+E57BmVG8dX6dCCopBlkDvvhg/zj6VDs0PigYwSN23L8hseSRwljrceU2WzTvk/+BSYICsWmRq5qHS2UYzhw== - dependencies: - workbox-core "^4.3.1" - -workbox-streams@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-4.3.1.tgz#0b57da70e982572de09c8742dd0cb40a6b7c2cc3" - integrity sha512-4Kisis1f/y0ihf4l3u/+ndMkJkIT4/6UOacU3A4BwZSAC9pQ9vSvJpIi/WFGQRH/uPXvuVjF5c2RfIPQFSS2uA== - dependencies: - workbox-core "^4.3.1" - -workbox-sw@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-4.3.1.tgz#df69e395c479ef4d14499372bcd84c0f5e246164" - integrity sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w== - -workbox-webpack-plugin@4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-4.3.1.tgz#47ff5ea1cc074b6c40fb5a86108863a24120d4bd" - integrity sha512-gJ9jd8Mb8wHLbRz9ZvGN57IAmknOipD3W4XNE/Lk/4lqs5Htw4WOQgakQy/o/4CoXQlMCYldaqUg+EJ35l9MEQ== - dependencies: - "@babel/runtime" "^7.0.0" - json-stable-stringify "^1.0.1" - workbox-build "^4.3.1" - -workbox-window@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-4.3.1.tgz#ee6051bf10f06afa5483c9b8dfa0531994ede0f3" - integrity sha512-C5gWKh6I58w3GeSc0wp2Ne+rqVw8qwcmZnQGpjiek8A2wpbxSJb1FdCoQVO+jDJs35bFgo/WETgl1fqgsxN0Hg== - dependencies: - workbox-core "^4.3.1" - -worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== - dependencies: - errno "~0.1.7" - -worker-rpc@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5" - integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== - dependencies: - microevent.ts "~0.1.1" - -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -write-file-atomic@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" - integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - -write@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" - integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== - dependencies: - mkdirp "^0.5.1" - -ws@^5.2.0: - version "5.2.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.3.tgz#05541053414921bc29c63bee14b8b0dd50b07b3d" - integrity sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA== - dependencies: - async-limiter "~1.0.0" - -ws@^6.1.2, ws@^6.2.1: - version "6.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e" - integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== - dependencies: - async-limiter "~1.0.0" - -ws@^7.4.5: - version "7.5.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.3.tgz#160835b63c7d97bfab418fc1b8a9fced2ac01a74" - integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg== - -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== - -xmlchars@^2.1.1, xmlchars@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - -xregexp@^4.3.0: - version "4.4.1" - resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.4.1.tgz#c84a88fa79e9ab18ca543959712094492185fe65" - integrity sha512-2u9HwfadaJaY9zHtRRnH6BY6CQVNQKkYm3oLtC9gJXXzfsbACg5X5e4EZZGVAH+YIfa+QA9lsFQTTe3HURF3ag== - dependencies: - "@babel/runtime-corejs3" "^7.12.1" - -xtend@^4.0.0, xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml@^1.7.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - -yargs-parser@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs@^13.3.0, yargs@^13.3.2: - version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" - integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.2" diff --git a/web/ui/static/js/prom_console.js b/web/ui/static/js/prom_console.js index 1df18440f..9234d3c14 100644 --- a/web/ui/static/js/prom_console.js +++ b/web/ui/static/js/prom_console.js @@ -320,6 +320,8 @@ PromConsole.graphDefaults = { yTitle: "", // The title of the y axis. // Number formatter for y axis. yAxisFormatter: PromConsole.NumberFormatter.humanize, + // Number of ticks (horizontal lines) for the y axis + yAxisTicks: null, // Number formatter for y values hover detail. yHoverFormatter: PromConsole.NumberFormatter.humanizeExact, // Color scheme to be used by the plots. Can be either a list of hex color @@ -529,7 +531,8 @@ PromConsole.Graph.prototype._render = function(data) { }); var yAxis = new Rickshaw.Graph.Axis.Y({ graph: graph, - tickFormat: this.params.yAxisFormatter + tickFormat: this.params.yAxisFormatter, + ticks: this.params.yAxisTicks }); var xAxis = new Rickshaw.Graph.Axis.Time({ graph: graph, diff --git a/web/ui/templates/config.html b/web/ui/templates/config.html index 3aa4dd88b..ea8a91dca 100644 --- a/web/ui/templates/config.html +++ b/web/ui/templates/config.html @@ -1,6 +1,6 @@ {{define "head"}} - - + + {{end}} {{define "content"}} diff --git a/web/ui/ui.go b/web/ui/ui.go index 9ee457801..6b569ca32 100644 --- a/web/ui/ui.go +++ b/web/ui/ui.go @@ -11,6 +11,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +//go:build !builtinassets // +build !builtinassets package ui diff --git a/web/web.go b/web/web.go index 26ed3cf18..db0069fb6 100644 --- a/web/web.go +++ b/web/web.go @@ -397,6 +397,7 @@ func New(logger log.Logger, o *Options) *Handler { fmt.Fprintf(w, "Error opening React index.html: %v", err) return } + defer func() { _ = f.Close() }() idx, err := ioutil.ReadAll(f) if err != nil { w.WriteHeader(http.StatusInternalServerError) @@ -709,6 +710,7 @@ func (h *Handler) consoles(w http.ResponseWriter, r *http.Request) { h.now(), template.QueryFunc(rules.EngineQueryFunc(h.queryEngine, h.storage)), h.options.ExternalURL, + nil, ) filenames, err := filepath.Glob(h.options.ConsoleLibrariesPath + "/*.lib") if err != nil { @@ -1113,6 +1115,7 @@ func (h *Handler) executeTemplate(w http.ResponseWriter, name string, data inter h.now(), template.QueryFunc(rules.EngineQueryFunc(h.queryEngine, h.storage)), h.options.ExternalURL, + nil, ) tmpl.Funcs(tmplFuncs(h.consolesPath(), h.options))
    {column}
    {formatRelative(lastScrape, now())}{humanizeDuration(lastScrapeDuration * 1000)} + + {lastError ? {lastError} : null}