diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 347580607..c1e22e7f0 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -1,447 +1,223 @@ name: CI + on: - pull_request: push: branches: - main - develop - - rc/next + paths-ignore: + - '**/CHANGELOG.md' + pull_request: workflow_dispatch: +concurrency: + group: ${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }} + cancel-in-progress: true + jobs: - pre_run: - name: Cancel previous runs + test: runs-on: ubuntu-latest steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@ad6cb1b847ffb509a69b745b6ee2f1d14dfe14b8 + - uses: actions/checkout@v4 with: - access_token: ${{ github.token }} persist-credentials: false - get_release_info: - name: Get Release Info - runs-on: ubuntu-latest - needs: pre_run - outputs: - tag: ${{ steps.new_release_tag.outputs.TAG }} - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - submodules: recursive - - - name: Get latest release - if: startsWith(github.ref, 'refs/heads/main') - id: release - uses: pozetroninc/github-action-get-latest-release@master - with: - repository: ${{ github.repository }} - excludes: prerelease, draft - - - name: Determine if release build - if: startsWith(github.ref, 'refs/heads/main') - id: new_release_tag - env: - LATEST_RELEASE: ${{ steps.release.outputs.release }} - run: | - CARGO_VERSION=v$(grep "version" components/chainhook-cli/Cargo.toml | head -n 1 | cut -d\" -f2) - if [[ "${CARGO_VERSION}" != "${LATEST_RELEASE}" ]]; then - echo "::set-output name=TAG::${CARGO_VERSION}" - echo "::warning::Will create release for version: ${CARGO_VERSION}" - else - echo "::warning::Will not create a release" - fi - - audit: - name: Audit and format - runs-on: ubuntu-latest - needs: pre_run - steps: - - name: Checkout repository - uses: actions/checkout@v3 - with: - submodules: recursive - - - name: Install Rust toolchain - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - profile: minimal - components: rustfmt - override: true - - - name: Set Cargo file permissions - run: sudo chown -R $(whoami):$(id -ng) ~/.cargo/ + - name: Install redis + run: sudo apt-get install -y redis-server - name: Cache cargo - uses: actions/cache@v2 - with: - path: ~/.cargo/ - key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - - - name: Install dependencies - run: cargo install cargo-audit - - - name: Run audit - run: cargo audit --ignore RUSTSEC-2021-0076 --ignore RUSTSEC-2021-0119 --ignore RUSTSEC-2022-0028 --ignore RUSTSEC-2020-0071 --ignore RUSTSEC-2021-0124 --ignore RUSTSEC-2022-0040 --ignore RUSTSEC-2023-0018 - - - name: Run rustfmt - run: cargo fmt --all -- --check - - # test_coverage_cargo: - # name: Generate test coverage - # runs-on: ubuntu-latest - # needs: pre_run - # strategy: - # fail-fast: false - # matrix: - # include: - # - name: clarinet - # working-directory: components/clarinet-cli - # - name: clarity-repl - # working-directory: components/clarity-repl - # - name: chainhook-cli - # working-directory: components/chainhook-event-observer - # steps: - # - name: Checkout repository - # uses: actions/checkout@v3 - # with: - # submodules: recursive - - # - name: Install Rust toolchain stable - # uses: actions-rs/toolchain@v1 - # with: - # toolchain: stable - # profile: minimal - # override: true - - # - name: Cache cargo - # uses: actions/cache@v2 - # id: cache-cargo - # with: - # path: | - # ~/.cargo/bin/ - # ~/.cargo/registry/index/ - # ~/.cargo/registry/cache/ - # ~/.cargo/git/db/ - # target/ - # key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - - # - name: Install dependencies - # if: steps.cache-cargo.outputs.cache-hit != 'true' - # run: RUSTC_BOOTSTRAP=1 cargo install grcov - - # - name: Install Rust toolchain - # uses: actions-rs/toolchain@v1 - # with: - # toolchain: stable - # profile: minimal - # components: llvm-tools-preview - # override: true - - # - name: Unit Tests - # env: - # RUSTFLAGS: "-C instrument-coverage" - # LLVM_PROFILE_FILE: "${{ matrix.name }}-%p-%m.profraw" - # run: cargo build --package=clarinet-cli --locked && cargo test --package=clarinet-cli - - # - name: Generate coverage - # run: grcov . --binary-path ./target/debug/ -s . -t lcov --branch --ignore-not-existing --ignore "/*" -o lcov.info - - # # Run functional tests here in addition to the other jobs so we can fail fast - # # Since these tests are reached much earlier in the pipeline - # - name: Functional Tests - # if: matrix.name == 'clarinet' - # run: | - # for testdir in $(ls components/clarinet-cli/examples); do - # ./target/debug/clarinet test --manifest-path components/clarinet-cli/examples/${testdir}/Clarinet.toml - # done - - # - name: Upload coverage report - # uses: codecov/codecov-action@v1 - # with: - # flags: unittests - # name: ${{ matrix.name }} - # verbose: true - - dist_chainhook: - name: Build Chainhook Distributions - runs-on: ${{ matrix.os }} - needs: pre_run - # Related upstream issue: - # https://github.com/nagisa/rust_libloading/issues/61#issuecomment-607941377 - # - # env: - # CC: deny_c - - strategy: - fail-fast: false - matrix: - include: - - os: ubuntu-latest - platform: linux - target: x86_64-unknown-linux-gnu - architecture: x64 - libc: glibc - - os: windows-latest - platform: windows - target: x86_64-pc-windows-msvc - architecture: x64 - - os: macos-latest - platform: darwin - target: x86_64-apple-darwin - architecture: x64 - - os: macos-latest - platform: darwin - target: aarch64-apple-darwin - architecture: arm64 - - steps: - - name: Configure git to use LF (Windows) - if: matrix.os == 'windows-latest' - run: | - git config --global core.autocrlf false - git config --global core.eol lf - - - name: Checkout repository - uses: actions/checkout@v3 - with: - submodules: recursive - - - name: Install Rust toolchain - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - target: ${{ matrix.target }} - profile: minimal - components: llvm-tools-preview - override: true - - - name: Install wix (Windows) - if: matrix.os == 'windows-latest' - run: cargo install cargo-wix - - - if: matrix.os != 'windows-latest' - run: sudo chown -R $(whoami):$(id -ng) ~/.cargo/ - - - name: Cache cargo - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: | ~/.cargo/bin/ ~/.cargo/registry/index/ ~/.cargo/registry/cache/ ~/.cargo/git/db/ - target/${{ matrix.target }}/release/ + target/ key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - # Set environment variables required from cross compiling from macos-x86_64 to macos-arm64 - - name: Configure macos-arm64 cross compile config - if: matrix.target == 'aarch64-apple-darwin' - run: | - echo "SDKROOT=$(xcrun -sdk macosx --show-sdk-path)" >> $GITHUB_ENV - echo "MACOSX_DEPLOYMENT_TARGET=$(xcrun -sdk macosx --show-sdk-platform-version)" >> $GITHUB_ENV - - - name: Configure artifact names (libc) - if: ${{ matrix.libc }} - shell: bash + - name: Cargo test run: | - echo "SHORT_TARGET_NAME=${{ matrix.platform }}-${{ matrix.architecture }}-${{ matrix.libc }}" >> $GITHUB_ENV - echo "PRE_GYP_TARGET_NAME=${{ matrix.platform }}-${{ matrix.architecture }}-${{ matrix.libc }}" >> $GITHUB_ENV - - - name: Configure artifact names (not libc) - if: ${{ ! matrix.libc }} - shell: bash - run: | - echo "SHORT_TARGET_NAME=${{ matrix.platform }}-${{ matrix.architecture }}" >> $GITHUB_ENV - echo "PRE_GYP_TARGET_NAME=${{ matrix.platform }}-${{ matrix.architecture }}-unknown" >> $GITHUB_ENV - - - name: Build - Cargo - if: matrix.target != 'x86_64-unknown-linux-musl' - run: cargo build --release --features=telemetry --locked --target ${{ matrix.target }} + rustup update + RUST_BACKTRACE=1 cargo test --all --features redis_tests -- --test-threads=1 - - name: Code sign bin (Windows) - if: startsWith(github.ref, 'refs/heads/main') && matrix.os == 'windows-latest' - run: | - $certificate_file_name = "${env:TEMP}\certificate.pfx" - - $bytes_cert = [Convert]::FromBase64String('${{ secrets.WINDOWS_CODE_SIGNING_CERTIFICATE }}') - [IO.File]::WriteAllBytes(${certificate_file_name}, ${bytes_cert}) - - $signtool_path = ((Resolve-Path -Path "${env:ProgramFiles(x86)}/Windows Kits/10/bin/10*/x86").Path[-1]) + "/signtool.exe" - $bin_path = (Resolve-Path -Path "target/${{ matrix.target }}/release/chainhook.exe").Path - & ${signtool_path} sign ` - /d "Clarinet is a clarity runtime packaged as a command line tool, designed to facilitate smart contract understanding, development, testing and deployment." ` - /du "https://github.com/hirosystems/chainhook" ` - /tr http://timestamp.digicert.com ` - /td sha256 ` - /fd sha256 ` - -f "${certificate_file_name}" ` - -p "${{ secrets.WINDOWS_CODE_SIGNING_PASSWORD }}" ` - "${bin_path}" - - - name: Build Installer (Windows) - if: matrix.os == 'windows-latest' - run: cargo wix -v --no-build --nocapture -p chainhook-cli - - - name: Code sign installer (Windows) - if: startsWith(github.ref, 'refs/heads/main') && matrix.os == 'windows-latest' - run: | - $certificate_file_name = "${env:TEMP}\certificate.pfx" - - $bytes_cert = [Convert]::FromBase64String('${{ secrets.WINDOWS_CODE_SIGNING_CERTIFICATE }}') - [IO.File]::WriteAllBytes(${certificate_file_name}, ${bytes_cert}) - - $signtool_path = ((Resolve-Path -Path "${env:ProgramFiles(x86)}/Windows Kits/10/bin/10*/x86").Path[-1]) + "/signtool.exe" - $msi_path = (Resolve-Path -Path "target/wix/*.msi").Path - & ${signtool_path} sign ` - /d "Clarinet is a clarity runtime packaged as a command line tool, designed to facilitate smart contract understanding, development, testing and deployment." ` - /du "https://github.com/hirosystems/chainhook" ` - /tr http://timestamp.digicert.com ` - /td sha256 ` - /fd sha256 ` - -f "${certificate_file_name}" ` - -p "${{ secrets.WINDOWS_CODE_SIGNING_PASSWORD }}" ` - "${msi_path}" - - # Don't compress for Windows because winget can't yet unzip files - - name: Compress cargo artifact (Linux) - if: matrix.os != 'windows-latest' - run: tar -C target/${{ matrix.target }}/release -zcvf chainhook-${{ env.SHORT_TARGET_NAME }}.tar.gz chainhook - - - name: Rename cargo artifact (Windows) - if: matrix.os == 'windows-latest' - shell: bash - run: mv target/wix/*.msi chainhook-${{ env.SHORT_TARGET_NAME }}.msi - - # Separate uploads to prevent paths from being preserved - - name: Upload cargo artifacts (Linux) - if: matrix.os != 'windows-latest' - uses: actions/upload-artifact@v2 + build-publish: + runs-on: ubuntu-latest + needs: test + outputs: + docker_image_digest: ${{ steps.docker_push.outputs.digest }} + new_release_published: ${{ steps.semantic.outputs.new_release_published }} + steps: + - uses: actions/checkout@v4 with: - name: chainhook-${{ env.SHORT_TARGET_NAME }} - path: chainhook-${{ env.SHORT_TARGET_NAME }}.tar.gz + persist-credentials: false - - name: Upload cargo artifact (Windows) - if: matrix.os == 'windows-latest' - uses: actions/upload-artifact@v2 + - name: Semantic Release + uses: cycjimmy/semantic-release-action@v4 + id: semantic + # Only run on non-PR events or only PRs that aren't from forks + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SEMANTIC_RELEASE_PACKAGE: ${{ github.event.repository.name }} with: - name: chainhook-${{ env.SHORT_TARGET_NAME }} - path: chainhook-${{ env.SHORT_TARGET_NAME }}.msi - - - name: Unit Tests - Cargo - # can't easily run mac-arm64 tests in GH without native runners for that arch - if: matrix.target != 'aarch64-apple-darwin' - run: cargo test --release --locked --target ${{ matrix.target }} - - # - name: Functional Tests (Linux) - # # can't easily run mac-arm64 tests in GH without native runners for that arch - # if: matrix.os != 'windows-latest' && matrix.target != 'aarch64-apple-darwin' - # run: | - # for testdir in $(ls components/chainhook-cli/examples); do - # ./target/${{ matrix.target }}/release/clarinet test --manifest-path components/clarinet-cli/examples/${testdir}/Clarinet.toml - # done + semantic_version: 19 + extra_plugins: | + @semantic-release/changelog@6.0.3 + @semantic-release/git@10.0.1 + conventional-changelog-conventionalcommits@6.1.0 - # - name: Functional Tests (Windows) - # if: matrix.os == 'windows-latest' - # run: | - # foreach($testdir in Get-ChildItem components/clarinet-cli/examples) { - # ./target/${{ matrix.target }}/release/clarinet test --manifest-path ${testdir}/Clarinet.toml - # } - - docker_images: - name: Create ${{ matrix.name }} Docker Image - runs-on: ubuntu-latest - needs: - - get_release_info - - dist_chainhook_node - outputs: - version: ${{ steps.docker_meta.outputs.version }} - strategy: - fail-fast: false - matrix: - include: - - name: Chainhook Node - description: A Stacks event observer. - image: ${{ github.repository_owner }}/chainhook-cli - artifact: chainhook-cli-linux-x64-glibc - dockerfile: dockerfiles/components/chainhook-cli.dockerfile - steps: - - name: Checkout - uses: actions/checkout@v3 + - name: Checkout tag + if: steps.semantic.outputs.new_release_version != '' + uses: actions/checkout@v4 with: - submodules: recursive + persist-credentials: false + ref: v${{ steps.semantic.outputs.new_release_version }} + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 - - name: Generate Docker tags/labels - id: docker_meta - uses: docker/metadata-action@v4 + - name: Docker Meta + id: meta + uses: docker/metadata-action@v5 with: - images: ${{ matrix.image }} + images: | + hirosystems/${{ github.event.repository.name }} tags: | type=ref,event=branch type=ref,event=pr - type=semver,pattern={{version}},value=${{ needs.get_release_info.outputs.tag }},enable=${{ needs.get_release_info.outputs.tag != '' }} - type=semver,pattern={{major}}.{{minor}},value=${{ needs.get_release_info.outputs.tag }},enable=${{ needs.get_release_info.outputs.tag != '' }} - labels: | - org.opencontainers.image.title=${{ matrix.name }} - org.opencontainers.image.description=${{ matrix.description }} + type=semver,pattern={{version}},value=${{ steps.semantic.outputs.new_release_version }},enable=${{ steps.semantic.outputs.new_release_version != '' }} + type=semver,pattern={{major}}.{{minor}},value=${{ steps.semantic.outputs.new_release_version }},enable=${{ steps.semantic.outputs.new_release_version != '' }} + type=raw,value=latest,enable={{is_default_branch}} - - name: Login to Dockerhub - uses: docker/login-action@v2 - if: github.event_name != 'pull_request' + - name: Log in to DockerHub + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} - - name: Download pre-built dist - uses: actions/download-artifact@v3 + - name: Build/Push Image + uses: docker/build-push-action@v5 + id: docker_push with: - name: ${{ matrix.artifact }} - - - name: Untar pre-built dist - run: tar zxvf *.tar.gz + context: . + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + file: ./dockerfiles/components/chainhook-node.dockerfile + cache-from: type=gha + cache-to: type=gha,mode=max + # Only push if (there's a new release on main branch, or if building a non-main branch) and (Only run on non-PR events or only PRs that aren't from forks) + push: ${{ (github.ref != 'refs/heads/main' || steps.semantic.outputs.new_release_version != '') && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }} + + deploy-dev: + runs-on: ubuntu-latest + strategy: + matrix: + k8s-env: [mainnet,testnet] + needs: build-publish + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository + env: + DEPLOY_ENV: dev + environment: + name: Development-${{ matrix.k8s-env }} + url: https://platform.dev.hiro.so/ + steps: + - name: Checkout actions repo + uses: actions/checkout@v4 + with: + ref: main + token: ${{ secrets.GH_TOKEN }} + repository: ${{ secrets.DEVOPS_ACTIONS_REPO }} - - name: Create Image - uses: docker/build-push-action@v3 + - name: Deploy Chainhook build to Dev ${{ matrix.k8s-env }} + uses: ./actions/deploy with: - context: . - file: ${{ matrix.dockerfile }} - push: ${{ github.event_name != 'pull_request' }} - tags: ${{ steps.docker_meta.outputs.tags }} - labels: ${{ steps.docker_meta.outputs.labels }} + docker_tag: ${{ needs.build-publish.outputs.docker_image_digest }} + file_pattern: manifests/chainhooks/${{ matrix.k8s-env }}/chainhook-node/${{ env.DEPLOY_ENV }}/base/kustomization.yaml + gh_token: ${{ secrets.GH_TOKEN }} - release: - name: Release + auto-approve-dev: runs-on: ubuntu-latest - if: startsWith(github.ref, 'refs/heads/main') && needs.get_release_info.outputs.tag != '' + if: needs.build-publish.outputs.new_release_published == 'true' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) + needs: build-publish + steps: + - name: Approve pending deployments + run: | + sleep 5 + ENV_IDS=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/hirosystems/chainhook/actions/runs/${{ github.run_id }}/pending_deployments" | jq -r '[.[].environment.id // empty]') + if [[ "${ENV_IDS}" != "[]" ]]; then + curl -s -X POST -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/hirosystems/chainhook/actions/runs/${{ github.run_id }}/pending_deployments" -d "{\"environment_ids\":${ENV_IDS},\"state\":\"approved\",\"comment\":\"auto approve\"}" + fi + + deploy-staging: + runs-on: ubuntu-latest + strategy: + matrix: + k8s-env: [mainnet,testnet] needs: - - get_release_info - - audit - # - test_coverage_cargo - - docker_images - permissions: - actions: write - contents: write + - build-publish + - deploy-dev + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository + env: + DEPLOY_ENV: stg + environment: + name: Staging-${{ matrix.k8s-env }} + url: https://platform.stg.hiro.so/ steps: - - name: Checkout - uses: actions/checkout@v3 + - name: Checkout actions repo + uses: actions/checkout@v4 with: - submodules: recursive + ref: main + token: ${{ secrets.GH_TOKEN }} + repository: ${{ secrets.DEVOPS_ACTIONS_REPO }} - - name: Download pre-built dists - uses: actions/download-artifact@v3 + - name: Deploy Chainhook build to Stg ${{ matrix.k8s-env }} + uses: ./actions/deploy + with: + docker_tag: ${{ needs.build-publish.outputs.docker_image_digest }} + file_pattern: manifests/chainhooks/${{ matrix.k8s-env }}/chainhook-node/${{ env.DEPLOY_ENV }}/base/kustomization.yaml + gh_token: ${{ secrets.GH_TOKEN }} - - name: Tag and Release - uses: ncipollo/release-action@v1 + auto-approve-stg: + runs-on: ubuntu-latest + if: needs.build-publish.outputs.new_release_published == 'true' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) + needs: + - build-publish + - deploy-dev + steps: + - name: Approve pending deployments + run: | + sleep 5 + ENV_IDS=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/hirosystems/chainhook/actions/runs/${{ github.run_id }}/pending_deployments" | jq -r '[.[].environment.id // empty]') + if [[ "${ENV_IDS}" != "[]" ]]; then + curl -s -X POST -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/hirosystems/chainhook/actions/runs/${{ github.run_id }}/pending_deployments" -d "{\"environment_ids\":${ENV_IDS},\"state\":\"approved\",\"comment\":\"auto approve\"}" + fi + + deploy-prod: + runs-on: ubuntu-latest + strategy: + matrix: + k8s-env: [mainnet,testnet] + needs: + - build-publish + - deploy-staging + if: needs.build-publish.outputs.new_release_published == 'true' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) + env: + DEPLOY_ENV: prd + environment: + name: Production-${{ matrix.k8s-env }} + url: https://platform.hiro.so/ + steps: + - name: Checkout actions repo + uses: actions/checkout@v4 with: - artifacts: "**/*.tar.gz,**/*.msi" - tag: ${{ needs.get_release_info.outputs.tag }} - commit: ${{ env.GITHUB_SHA }} + ref: main + token: ${{ secrets.GH_TOKEN }} + repository: ${{ secrets.DEVOPS_ACTIONS_REPO }} - - name: Trigger pkg-version-bump workflow - uses: peter-evans/repository-dispatch@v1 + - name: Deploy Chainhook build to Prd ${{ matrix.k8s-env }} + uses: ./actions/deploy with: - token: ${{ secrets.GITHUB_TOKEN }} - event-type: released - client-payload: '{"tag": "${{ needs.get_release_info.outputs.tag }}"}' + docker_tag: ${{ needs.build-publish.outputs.docker_image_digest }} + file_pattern: manifests/chainhooks/${{ matrix.k8s-env }}/chainhook-node/${{ env.DEPLOY_ENV }}/base/kustomization.yaml + gh_token: ${{ secrets.GH_TOKEN }} diff --git a/.gitignore b/.gitignore index 837e005db..d63cbe1d0 100644 --- a/.gitignore +++ b/.gitignore @@ -12,16 +12,12 @@ npm-debug.log* **/.requirements **/.cache **/.build -components/stacks-devnet-js/dist -components/stacks-devnet-js/build components/chainhook-types-js/dist *.tar.gz *.zip *.rdb - -components/chainhook-db/examples/arkadiko-data-indexing/vault-monitor/bin -components/chainhook-db/examples/arkadiko-data-indexing/vault-monitor/tmp -components/chainhook-db/examples/arkadiko-data-indexing/vault-monitor/vendor -components/chainhook-cli/cache -components/chainhook-cli/index.redb +*.redb cache/ + +components/chainhook-cli/src/service/tests/fixtures/tmp +components/chainhook-cli/src/archive/tests/fixtures/tmp \ No newline at end of file diff --git a/.releaserc b/.releaserc new file mode 100644 index 000000000..7a1113cf0 --- /dev/null +++ b/.releaserc @@ -0,0 +1,22 @@ +{ + "branches": [ + "main" + ], + "plugins": [ + [ + "@semantic-release/commit-analyzer", + { + "preset": "conventionalcommits" + } + ], + [ + "@semantic-release/release-notes-generator", + { + "preset": "conventionalcommits" + } + ], + "@semantic-release/github", + "@semantic-release/changelog", + "@semantic-release/git" + ] +} diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b3fd86ad..6c1849615 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,38 @@ +## [1.1.1](https://github.com/hirosystems/chainhook/compare/v1.1.0...v1.1.1) (2023-10-11) + + +### Bug Fixes + +* add auth header for stacks hook ([#444](https://github.com/hirosystems/chainhook/issues/444)) ([8c4e5ea](https://github.com/hirosystems/chainhook/commit/8c4e5ea8b54b6b20d3b19796c9d0b57f3d38a3a2)), closes [#438](https://github.com/hirosystems/chainhook/issues/438) +* don't evaluate transactions for block predicates ([#445](https://github.com/hirosystems/chainhook/issues/445)) ([0e84fe7](https://github.com/hirosystems/chainhook/commit/0e84fe7e2b6098345eee4b997138e6910a849996)) +* redis conn ([#442](https://github.com/hirosystems/chainhook/issues/442)) ([80737ad](https://github.com/hirosystems/chainhook/commit/80737addce9d6df7035b5586da11f33640ee72d2)) + +## [1.1.0](https://github.com/hirosystems/chainhook/compare/v1.0.0...v1.1.0) (2023-10-10) + + +### Features + +* allow matching with regex for stacks print_event ([#380](https://github.com/hirosystems/chainhook/issues/380)) ([131809e](https://github.com/hirosystems/chainhook/commit/131809e7d2b8e4b48b83114440a4876ec9aee9ee)), closes [#348](https://github.com/hirosystems/chainhook/issues/348) +* augment predicate status returned by GET/LIST endpoints ([#397](https://github.com/hirosystems/chainhook/issues/397)) ([a100263](https://github.com/hirosystems/chainhook/commit/a100263a0bcab3a43c9bbce49ddead754d2d621c)), closes [#396](https://github.com/hirosystems/chainhook/issues/396) [#324](https://github.com/hirosystems/chainhook/issues/324) [#390](https://github.com/hirosystems/chainhook/issues/390) [#402](https://github.com/hirosystems/chainhook/issues/402) [#403](https://github.com/hirosystems/chainhook/issues/403) +* introduce "data_handler_tx" ([ee486f3](https://github.com/hirosystems/chainhook/commit/ee486f3571f97728d5305bdb72a303134fca1bf5)) + + +### Bug Fixes + +* build error ([85d4d91](https://github.com/hirosystems/chainhook/commit/85d4d91ca6276a25d0bc95e256da356758155466)) +* build errors ([b9ff1aa](https://github.com/hirosystems/chainhook/commit/b9ff1aab26a26b9ada1e19d12a891fa2e8ad72fd)) +* build errro ([be0c229](https://github.com/hirosystems/chainhook/commit/be0c22957b7345721e33d38e3bfa98794155e7a7)) +* bump retries and delays ([aff3690](https://github.com/hirosystems/chainhook/commit/aff36904e557026ab91a039e40959957b5bbc309)) +* chainhook not being registered ([5a809c6](https://github.com/hirosystems/chainhook/commit/5a809c63bec1c949314ecbd44ef1348286968dec)) +* ensure that the parent block was previously received. else, fetch it ([2755266](https://github.com/hirosystems/chainhook/commit/275526620209e8b7137722f9c081aa7b9dca31e5)) +* migrate to finer zmq lib ([4eb5a07](https://github.com/hirosystems/chainhook/commit/4eb5a07ad350360f159b5443d0b2d665c20892bf)) +* prevent panic when scanning from genesis block ([#408](https://github.com/hirosystems/chainhook/issues/408)) ([1868a06](https://github.com/hirosystems/chainhook/commit/1868a06aba6de61bfb516b0f88b3e900a5d99a64)) +* remove event_handlers ([6fecfd2](https://github.com/hirosystems/chainhook/commit/6fecfd2f41fe5bc8c672a51bcf3050c634927b84)) +* retrieve blocks until tip ([5213f5f](https://github.com/hirosystems/chainhook/commit/5213f5f67a8adfddc72de7c707eb9d0de46150a2)) +* revisit approach ([67a34dc](https://github.com/hirosystems/chainhook/commit/67a34dcb2f7dab546bb88bd1a6ed098109953531)) +* use crossbeam channels ([ea33553](https://github.com/hirosystems/chainhook/commit/ea335530c174b8893013e6be7e0258285c4a9667)) +* workflow ([d434c93](https://github.com/hirosystems/chainhook/commit/d434c9362ec46b13f1a98d51f62d1c1938f70319)) + #### 1.4.0 (2023-01-23) ##### New Features diff --git a/Cargo.lock b/Cargo.lock index 9338a064d..3340d1bbd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8,15 +8,6 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" -[[package]] -name = "ahash" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8fd72866655d1904d6b0997d0b07ba561047d070fbe29de039031c641b61217" -dependencies = [ - "const-random", -] - [[package]] name = "ahash" version = "0.7.6" @@ -30,9 +21,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "0.7.20" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" +checksum = "86b8f9420f797f2d9e935edf629310eb938a0d839f984e25327f3c7eed22300c" dependencies = [ "memchr", ] @@ -114,19 +105,6 @@ dependencies = [ "syn 1.0.105", ] -[[package]] -name = "asynchronous-codec" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06a0daa378f5fd10634e44b0a29b2a87b890657658e072a30d6f26e57ddee182" -dependencies = [ - "bytes", - "futures-sink", - "futures-util", - "memchr", - "pin-project-lite", -] - [[package]] name = "atomic" version = "0.5.1" @@ -242,10 +220,29 @@ checksum = "0694ea59225b0c5f3cb405ff3f670e4828358ed26aec49dc352f730f0cb1a8a3" dependencies = [ "bech32", "bitcoin_hashes 0.11.0", - "secp256k1", + "secp256k1 0.24.3", "serde", ] +[[package]] +name = "bitcoin" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e99ff7289b20a7385f66a0feda78af2fc119d28fb56aea8886a9cd0a4abdd75" +dependencies = [ + "bech32", + "bitcoin-private", + "bitcoin_hashes 0.12.0", + "hex_lit", + "secp256k1 0.27.0", +] + +[[package]] +name = "bitcoin-private" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73290177011694f38ec25e165d0387ab7ea749a4b81cd4c80dae5988229f7a57" + [[package]] name = "bitcoin_hashes" version = "0.9.7" @@ -261,6 +258,15 @@ dependencies = [ "serde", ] +[[package]] +name = "bitcoin_hashes" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d7066118b13d4b20b23645932dfb3a81ce7e29f95726c2036fa33cd7b092501" +dependencies = [ + "bitcoin-private", +] + [[package]] name = "bitcoincore-rpc" version = "0.16.0" @@ -280,7 +286,7 @@ version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c231bea28e314879c5aef240f6052e8a72a369e3c9f9b20d9bfbb33ad18029b2" dependencies = [ - "bitcoin", + "bitcoin 0.29.2", "serde", "serde_json", ] @@ -403,10 +409,14 @@ dependencies = [ ] [[package]] -name = "cfg-if" -version = "0.1.10" +name = "cfg-expr" +version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" +checksum = "b40ccee03b5175c18cde8f37e7d2a33bcef6f8ec8f7cc0d81090d1bb380949c9" +dependencies = [ + "smallvec 1.10.0", + "target-lexicon", +] [[package]] name = "cfg-if" @@ -416,7 +426,7 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chainhook" -version = "0.20.0" +version = "1.1.1" dependencies = [ "ansi_term", "atty", @@ -427,14 +437,14 @@ dependencies = [ "clarity-repl", "clarity-vm", "criterion", - "crossbeam-channel 0.5.8", + "crossbeam-channel", "csv", "ctrlc", "flate2", "flume", "futures-util", "hex", - "hiro-system-kit", + "hiro-system-kit 0.3.1", "num_cpus", "rand 0.8.5", "redis", @@ -451,29 +461,31 @@ dependencies = [ "test-case", "threadpool", "tokio", - "toml", - "uuid 1.3.0", + "toml 0.5.9", + "uuid", ] [[package]] name = "chainhook-sdk" -version = "0.8.0" +version = "0.10.2" dependencies = [ "base58 0.2.0", "base64", "bitcoincore-rpc", "bitcoincore-rpc-json", - "chainhook-types 1.0.9", + "chainhook-types 1.1.0", "clarinet-utils", - "crossbeam-channel 0.5.8", - "dashmap 5.4.0", + "crossbeam-channel", + "dashmap", "futures", "fxhash", "hex", - "hiro-system-kit", + "hiro-system-kit 0.3.1", "hyper", "lazy_static", + "miniscript", "rand 0.8.5", + "regex", "reqwest", "rocket", "schemars 0.8.12", @@ -485,7 +497,7 @@ dependencies = [ "test-case", "threadpool", "tokio", - "zeromq", + "zmq", ] [[package]] @@ -504,7 +516,7 @@ dependencies = [ [[package]] name = "chainhook-types" -version = "1.0.9" +version = "1.1.0" dependencies = [ "hex", "schemars 0.8.12", @@ -561,7 +573,7 @@ dependencies = [ "bitflags 1.3.2", "clap_derive", "clap_lex", - "indexmap", + "indexmap 1.9.2", "once_cell", "strsim", "termcolor", @@ -616,7 +628,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1464355d97840afd89fcc04c4361a4d06200de1ddf4a311b649744c7e67d0155" dependencies = [ "bip39", - "bitcoin", + "bitcoin 0.29.2", "chainhook-types 1.0.6", "clarinet-utils", "clarity-repl", @@ -624,7 +636,7 @@ dependencies = [ "serde", "serde_derive", "tiny-hderive", - "toml", + "toml 0.5.9", "url", ] @@ -654,7 +666,7 @@ dependencies = [ "debug_types", "futures", "getrandom 0.2.8", - "hiro-system-kit", + "hiro-system-kit 0.1.0", "httparse", "integer-sqrt", "lazy_static", @@ -672,7 +684,7 @@ dependencies = [ "sha2 0.10.6", "sha3 0.9.1", "tokio", - "tokio-util 0.7.2", + "tokio-util", ] [[package]] @@ -739,28 +751,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "const-random" -version = "0.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368a7a772ead6ce7e1de82bfb04c485f3db8ec744f72925af5735e29a22cc18e" -dependencies = [ - "const-random-macro", - "proc-macro-hack", -] - -[[package]] -name = "const-random-macro" -version = "0.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d7d6ab3c3a2282db210df5f02c4dab6e0a7057af0fb7ebd4070f30fe05c0ddb" -dependencies = [ - "getrandom 0.2.8", - "once_cell", - "proc-macro-hack", - "tiny-keccak", -] - [[package]] name = "const_fn" version = "0.4.9" @@ -778,16 +768,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "core-foundation" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" -dependencies = [ - "core-foundation-sys", - "libc", -] - [[package]] name = "core-foundation-sys" version = "0.8.3" @@ -809,7 +789,7 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] @@ -850,26 +830,16 @@ dependencies = [ [[package]] name = "crossbeam" -version = "0.7.3" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69323bff1fb41c635347b8ead484a5ca6c3f11914d784170b158d8449ab07f8e" +checksum = "2801af0d36612ae591caa9568261fddce32ce6e08a7275ea334a06a4ad021a2c" dependencies = [ - "cfg-if 0.1.10", - "crossbeam-channel 0.4.4", - "crossbeam-deque 0.7.4", - "crossbeam-epoch 0.8.2", + "cfg-if", + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-epoch", "crossbeam-queue", - "crossbeam-utils 0.7.2", -] - -[[package]] -name = "crossbeam-channel" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b153fe7cbef478c567df0f972e02e6d736db11affe43dfc9c56a9374d1adfb87" -dependencies = [ - "crossbeam-utils 0.7.2", - "maybe-uninit", + "crossbeam-utils", ] [[package]] @@ -878,19 +848,8 @@ version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" dependencies = [ - "cfg-if 1.0.0", - "crossbeam-utils 0.8.14", -] - -[[package]] -name = "crossbeam-deque" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20ff29ded3204c5106278a81a38f4b482636ed4fa1e6cfbeef193291beb29ed" -dependencies = [ - "crossbeam-epoch 0.8.2", - "crossbeam-utils 0.7.2", - "maybe-uninit", + "cfg-if", + "crossbeam-utils", ] [[package]] @@ -899,24 +858,9 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc" dependencies = [ - "cfg-if 1.0.0", - "crossbeam-epoch 0.9.13", - "crossbeam-utils 0.8.14", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace" -dependencies = [ - "autocfg", - "cfg-if 0.1.10", - "crossbeam-utils 0.7.2", - "lazy_static", - "maybe-uninit", - "memoffset 0.5.6", - "scopeguard", + "cfg-if", + "crossbeam-epoch", + "crossbeam-utils", ] [[package]] @@ -926,32 +870,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "01a9af1f4c2ef74bb8aa1f7e19706bc72d03598c8a570bb5de72243c7a9d9d5a" dependencies = [ "autocfg", - "cfg-if 1.0.0", - "crossbeam-utils 0.8.14", + "cfg-if", + "crossbeam-utils", "memoffset 0.7.1", "scopeguard", ] [[package]] name = "crossbeam-queue" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570" -dependencies = [ - "cfg-if 0.1.10", - "crossbeam-utils 0.7.2", - "maybe-uninit", -] - -[[package]] -name = "crossbeam-utils" -version = "0.7.2" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" +checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add" dependencies = [ - "autocfg", - "cfg-if 0.1.10", - "lazy_static", + "cfg-if", + "crossbeam-utils", ] [[package]] @@ -960,7 +892,7 @@ version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] @@ -1123,28 +1055,17 @@ dependencies = [ "syn 1.0.105", ] -[[package]] -name = "dashmap" -version = "3.11.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f260e2fc850179ef410018660006951c1b55b79e8087e87111a2c388994b9b5" -dependencies = [ - "ahash 0.3.8", - "cfg-if 0.1.10", - "num_cpus", -] - [[package]] name = "dashmap" version = "5.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "907076dfda823b0b36d2a1bb5f90c96660a5bbcd7729e10727f07858f22c4edc" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "hashbrown 0.12.3", "lock_api", "once_cell", - "parking_lot_core 0.9.5", + "parking_lot_core", ] [[package]] @@ -1220,13 +1141,24 @@ dependencies = [ "subtle 2.4.1", ] +[[package]] +name = "dircpy" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8466f8d28ca6da4c9dfbbef6ad4bff6f2fdd5e412d821025b0d3f0a9d74a8c1e" +dependencies = [ + "jwalk", + "log", + "walkdir", +] + [[package]] name = "dirs-next" version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "dirs-sys-next", ] @@ -1284,7 +1216,7 @@ version = "0.8.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] @@ -1294,15 +1226,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" [[package]] -name = "enum-primitive-derive" -version = "0.2.2" +name = "equivalent" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c375b9c5eadb68d0a6efee2999fef292f45854c3444c86f09d8ab086ba942b0e" -dependencies = [ - "num-traits", - "quote", - "syn 1.0.105", -] +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" @@ -1379,7 +1306,7 @@ version = "3.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb21c69b9fea5e15dbc1049e4b77145dd0ba1c84019c488102de0dc4ea4b0a27" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "rustix 0.36.5", "windows-sys 0.42.0", ] @@ -1393,7 +1320,7 @@ dependencies = [ "atomic", "pear", "serde", - "toml", + "toml 0.5.9", "uncased", "version_check", ] @@ -1404,7 +1331,7 @@ version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4e884668cd0c7480504233e951174ddc3b382f7c2666e3b7310b5c4e7b0c37f9" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "libc", "redox_syscall", "windows-sys 0.42.0", @@ -1439,21 +1366,6 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - [[package]] name = "form_urlencoded" version = "1.1.0" @@ -1599,7 +1511,7 @@ version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "libc", "wasi 0.9.0+wasi-snapshot-preview1", ] @@ -1610,7 +1522,7 @@ version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "js-sys", "libc", "wasi 0.11.0+wasi-snapshot-preview1", @@ -1635,10 +1547,10 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap", + "indexmap 1.9.2", "slab", "tokio", - "tokio-util 0.7.2", + "tokio-util", "tracing", ] @@ -1654,7 +1566,7 @@ version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" dependencies = [ - "ahash 0.7.6", + "ahash", ] [[package]] @@ -1663,6 +1575,12 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +[[package]] +name = "hashbrown" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" + [[package]] name = "hashlink" version = "0.7.0" @@ -1708,6 +1626,12 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +[[package]] +name = "hex_lit" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3011d1213f159867b13cfd6ac92d2cd5f1345762c63be3554e84092d85a50bbd" + [[package]] name = "hiro-system-kit" version = "0.1.0" @@ -1718,6 +1642,18 @@ dependencies = [ "atty", "futures", "lazy_static", + "tokio", +] + +[[package]] +name = "hiro-system-kit" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94a96596d2b33489f33f79b2df6f340dbbd2baba05a251715bb84661d33bf1c9" +dependencies = [ + "ansi_term", + "atty", + "lazy_static", "slog", "slog-async", "slog-atomic", @@ -1849,19 +1785,6 @@ dependencies = [ "tokio-rustls", ] -[[package]] -name = "hyper-tls" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" -dependencies = [ - "bytes", - "hyper", - "native-tls", - "tokio", - "tokio-native-tls", -] - [[package]] name = "iana-time-zone" version = "0.1.53" @@ -1913,6 +1836,16 @@ dependencies = [ "serde", ] +[[package]] +name = "indexmap" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +dependencies = [ + "equivalent", + "hashbrown 0.14.0", +] + [[package]] name = "inlinable_string" version = "0.1.15" @@ -1925,7 +1858,7 @@ version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] @@ -2011,6 +1944,16 @@ dependencies = [ "serde_json", ] +[[package]] +name = "jwalk" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2735847566356cd2179a2a38264839308f7079fa96e6bd5a42d740460e003c56" +dependencies = [ + "crossbeam", + "rayon", +] + [[package]] name = "keccak" version = "0.1.3" @@ -2044,7 +1987,7 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "winapi", ] @@ -2186,7 +2129,7 @@ version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] @@ -2195,7 +2138,7 @@ version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff50ecb28bb86013e935fb6683ab1f6d3a20016f123c76fd4c27470076ac30f5" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "generator", "scoped-tls", "serde", @@ -2220,7 +2163,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" dependencies = [ - "regex-automata", + "regex-automata 0.1.10", ] [[package]] @@ -2235,15 +2178,6 @@ version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" -[[package]] -name = "memoffset" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa" -dependencies = [ - "autocfg", -] - [[package]] name = "memoffset" version = "0.6.5" @@ -2280,6 +2214,16 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" +[[package]] +name = "miniscript" +version = "10.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1eb102b66b2127a872dbcc73095b7b47aeb9d92f7b03c2b2298253ffc82c7594" +dependencies = [ + "bitcoin 0.30.1", + "bitcoin-private", +] + [[package]] name = "miniz_oxide" version = "0.6.2" @@ -2317,7 +2261,7 @@ dependencies = [ "mime", "spin 0.9.4", "tokio", - "tokio-util 0.7.2", + "tokio-util", "version_check", ] @@ -2330,24 +2274,6 @@ dependencies = [ "getrandom 0.2.8", ] -[[package]] -name = "native-tls" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" -dependencies = [ - "lazy_static", - "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework", - "security-framework-sys", - "tempfile", -] - [[package]] name = "nibble_vec" version = "0.1.0" @@ -2365,7 +2291,7 @@ checksum = "8f3790c00a0150112de0f4cd161e3d7fc4b2d8a5542ffc35f099a2562aecb35c" dependencies = [ "bitflags 1.3.2", "cc", - "cfg-if 1.0.0", + "cfg-if", "libc", "memoffset 0.6.5", ] @@ -2378,7 +2304,7 @@ checksum = "f346ff70e7dbfd675fe90590b92d59ef2de15a8779ae305ebcbfd3f0caf59be4" dependencies = [ "autocfg", "bitflags 1.3.2", - "cfg-if 1.0.0", + "cfg-if", "libc", ] @@ -2471,51 +2397,6 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" -[[package]] -name = "openssl" -version = "0.10.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b102428fd03bc5edf97f62620f7298614c45cedf287c271e7ed450bbaf83f2e1" -dependencies = [ - "bitflags 1.3.2", - "cfg-if 1.0.0", - "foreign-types", - "libc", - "once_cell", - "openssl-macros", - "openssl-sys", -] - -[[package]] -name = "openssl-macros" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.105", -] - -[[package]] -name = "openssl-probe" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" - -[[package]] -name = "openssl-sys" -version = "0.9.80" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23bbbf7854cd45b83958ebe919f0e8e516793727652e27fda10a8384cfc790b7" -dependencies = [ - "autocfg", - "cc", - "libc", - "pkg-config", - "vcpkg", -] - [[package]] name = "os_str_bytes" version = "6.4.1" @@ -2528,17 +2409,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" -[[package]] -name = "parking_lot" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" -dependencies = [ - "instant", - "lock_api", - "parking_lot_core 0.8.6", -] - [[package]] name = "parking_lot" version = "0.12.1" @@ -2546,21 +2416,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", - "parking_lot_core 0.9.5", -] - -[[package]] -name = "parking_lot_core" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" -dependencies = [ - "cfg-if 1.0.0", - "instant", - "libc", - "redox_syscall", - "smallvec 1.10.0", - "winapi", + "parking_lot_core", ] [[package]] @@ -2569,7 +2425,7 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ff9f3fef3968a3ec5945535ed654cb38ff72d7495a25619e2247fb15a2ed9ba" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "libc", "redox_syscall", "smallvec 1.10.0", @@ -2922,9 +2778,9 @@ version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" dependencies = [ - "crossbeam-channel 0.5.8", - "crossbeam-deque 0.8.2", - "crossbeam-utils 0.8.14", + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-utils", "num_cpus", ] @@ -2985,13 +2841,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.7.1" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733" +checksum = "81bc1d4caf89fac26a70747fe603c130093b53c773888797a6329091246d651a" dependencies = [ "aho-corasick", "memchr", - "regex-syntax", + "regex-automata 0.3.6", + "regex-syntax 0.7.4", ] [[package]] @@ -3000,7 +2857,18 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" dependencies = [ - "regex-syntax", + "regex-syntax 0.6.28", +] + +[[package]] +name = "regex-automata" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fed1ceff11a1dddaee50c9dc8e4938bd106e9d89ae372f192311e7da498e3b69" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.7.4", ] [[package]] @@ -3009,6 +2877,12 @@ version = "0.6.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" +[[package]] +name = "regex-syntax" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" + [[package]] name = "remove_dir_all" version = "0.5.3" @@ -3034,12 +2908,10 @@ dependencies = [ "http-body", "hyper", "hyper-rustls", - "hyper-tls", "ipnet", "js-sys", "log", "mime", - "native-tls", "once_cell", "percent-encoding", "pin-project-lite", @@ -3049,9 +2921,8 @@ dependencies = [ "serde_json", "serde_urlencoded", "tokio", - "tokio-native-tls", "tokio-rustls", - "tokio-util 0.7.2", + "tokio-util", "tower-service", "url", "wasm-bindgen", @@ -3099,13 +2970,13 @@ dependencies = [ "either", "figment", "futures", - "indexmap", + "indexmap 1.9.2", "is-terminal", "log", "memchr", "multer", "num_cpus", - "parking_lot 0.12.1", + "parking_lot", "pin-project-lite", "rand 0.8.5", "ref-cast", @@ -3118,7 +2989,7 @@ dependencies = [ "time 0.3.17", "tokio", "tokio-stream", - "tokio-util 0.7.2", + "tokio-util", "ubyte", "version_check", "yansi", @@ -3132,7 +3003,7 @@ checksum = "7093353f14228c744982e409259fb54878ba9563d08214f2d880d59ff2fc508b" dependencies = [ "devise", "glob", - "indexmap", + "indexmap 1.9.2", "proc-macro2", "quote", "rocket_http", @@ -3151,7 +3022,7 @@ dependencies = [ "futures", "http", "hyper", - "indexmap", + "indexmap 1.9.2", "log", "memchr", "pear", @@ -3210,7 +3081,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2288c66aeafe3b2ed227c981f364f9968fa952ef0b30e84ada4486e7ee24d00a" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "proc-macro2", "quote", "rustc_version 0.4.0", @@ -3339,7 +3210,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db7826789c0e25614b03e5a54a0717a86f9ff6e6e5247f92b369472869320039" dependencies = [ "bitflags 1.3.2", - "cfg-if 1.0.0", + "cfg-if", "clipboard-win", "dirs-next", "fd-lock", @@ -3371,16 +3242,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "schannel" -version = "0.1.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2" -dependencies = [ - "lazy_static", - "windows-sys 0.36.1", -] - [[package]] name = "schemars" version = "0.8.11" @@ -3399,11 +3260,11 @@ version = "0.8.12" source = "git+https://github.com/hirosystems/schemars.git?branch=feat-chainhook-fixes#15fdd4711700114d57c090aad62516593bd4ca6d" dependencies = [ "dyn-clone", - "indexmap", + "indexmap 1.9.2", "schemars_derive 0.8.12", "serde", "serde_json", - "uuid 1.3.0", + "uuid", ] [[package]] @@ -3464,40 +3325,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b1629c9c557ef9b293568b338dddfc8208c98a18c59d722a9d53f859d9c9b62" dependencies = [ "bitcoin_hashes 0.11.0", - "secp256k1-sys", + "secp256k1-sys 0.6.1", "serde", ] [[package]] -name = "secp256k1-sys" -version = "0.6.1" +name = "secp256k1" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83080e2c2fc1006e625be82e5d1eb6a43b7fd9578b617fcc55814daf286bba4b" +checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f" dependencies = [ - "cc", + "bitcoin_hashes 0.12.0", + "secp256k1-sys 0.8.1", ] [[package]] -name = "security-framework" -version = "2.7.0" +name = "secp256k1-sys" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bc1bb97804af6631813c55739f771071e0f2ed33ee20b68c86ec505d906356c" +checksum = "83080e2c2fc1006e625be82e5d1eb6a43b7fd9578b617fcc55814daf286bba4b" dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", + "cc", ] [[package]] -name = "security-framework-sys" -version = "2.6.1" +name = "secp256k1-sys" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" +checksum = "70a129b9e9efbfb223753b9163c4ab3b13cff7fd9c7f010fbac25ab4099fa07e" dependencies = [ - "core-foundation-sys", - "libc", + "cc", ] [[package]] @@ -3612,6 +3469,15 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_spanned" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186" +dependencies = [ + "serde", +] + [[package]] name = "serde_stacker" version = "0.1.6" @@ -3640,11 +3506,11 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e56dd856803e253c8f298af3f4d7eb0ae5e23a737252cd90bb4f3b435033b2d" dependencies = [ - "dashmap 5.4.0", + "dashmap", "futures", "lazy_static", "log", - "parking_lot 0.12.1", + "parking_lot", "serial_test_derive", ] @@ -3693,7 +3559,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" dependencies = [ "block-buffer 0.9.0", - "cfg-if 1.0.0", + "cfg-if", "cpufeatures", "digest 0.9.0", "opaque-debug 0.3.0", @@ -3705,7 +3571,7 @@ version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "cpufeatures", "digest 0.10.6", ] @@ -3786,7 +3652,7 @@ version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "766c59b252e62a34651412870ff55d8c4e6d04df19b43eecb2703e417b097ffe" dependencies = [ - "crossbeam-channel 0.5.8", + "crossbeam-channel", "slog", "take_mut", "thread_local", @@ -3894,7 +3760,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c886bd4480155fd3ef527d45e9ac8dd7118a898a46530b7b94c3e21866259fce" dependencies = [ "cc", - "cfg-if 1.0.0", + "cfg-if", "libc", "psm", "winapi", @@ -3915,7 +3781,7 @@ dependencies = [ "rand 0.7.3", "ripemd", "rusqlite", - "secp256k1", + "secp256k1 0.24.3", "serde", "serde_derive", "serde_json", @@ -3929,9 +3795,9 @@ dependencies = [ [[package]] name = "stacks-rpc-client" -version = "1.0.8" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4903f6164688594cb80856abc27d7a76fa7b6ac84c6fc70a45e414d097c191ab" +checksum = "12eef9ff174e8345b414abbfa5ed7e271e772d1e6b2c3eaa9f7f02209c87f48e" dependencies = [ "clarity-repl", "hmac 0.12.1", @@ -4080,6 +3946,19 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "system-deps" +version = "6.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30c2de8a4d8f4b823d634affc9cd2a74ec98c53a756f317e529a48046cbf71f3" +dependencies = [ + "cfg-expr", + "heck 0.4.0", + "pkg-config", + "toml 0.7.6", + "version-compare", +] + [[package]] name = "take_mut" version = "0.2.2" @@ -4097,13 +3976,19 @@ dependencies = [ "xattr", ] +[[package]] +name = "target-lexicon" +version = "0.12.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d0e916b1148c8e263850e1ebcbd046f333e0683c724876bb0da63ea4373dc8a" + [[package]] name = "tempfile" version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "fastrand", "libc", "redox_syscall", @@ -4146,7 +4031,7 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d10394d5d1e27794f772b6fc854c7e91a2dc26e2cbf807ad523370c2a59c0cee" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "proc-macro-error", "proc-macro2", "quote", @@ -4310,15 +4195,6 @@ dependencies = [ "sha2 0.8.2", ] -[[package]] -name = "tiny-keccak" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" -dependencies = [ - "crunchy", -] - [[package]] name = "tinytemplate" version = "1.2.1" @@ -4356,7 +4232,7 @@ dependencies = [ "memchr", "mio", "num_cpus", - "parking_lot 0.12.1", + "parking_lot", "pin-project-lite", "signal-hook-registry", "socket2", @@ -4375,16 +4251,6 @@ dependencies = [ "syn 1.0.105", ] -[[package]] -name = "tokio-native-tls" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b" -dependencies = [ - "native-tls", - "tokio", -] - [[package]] name = "tokio-rustls" version = "0.23.4" @@ -4407,21 +4273,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "tokio-util" -version = "0.6.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" -dependencies = [ - "bytes", - "futures-core", - "futures-io", - "futures-sink", - "log", - "pin-project-lite", - "tokio", -] - [[package]] name = "tokio-util" version = "0.7.2" @@ -4442,8 +4293,42 @@ version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" dependencies = [ - "indexmap", + "indexmap 1.9.2", + "serde", +] + +[[package]] +name = "toml" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17e963a819c331dcacd7ab957d80bc2b9a9c1e71c804826d2f283dd65306542" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a" +dependencies = [ + "indexmap 2.0.0", "serde", + "serde_spanned", + "toml_datetime", + "winnow", ] [[package]] @@ -4458,7 +4343,7 @@ version = "0.1.37" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -4614,15 +4499,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "936e4b492acfd135421d8dca4b1aa80a7bfc26e702ef3af710e0752684df5372" -[[package]] -name = "uuid" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" -dependencies = [ - "getrandom 0.2.8", -] - [[package]] name = "uuid" version = "1.3.0" @@ -4645,6 +4521,12 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" +[[package]] +name = "version-compare" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29" + [[package]] name = "version_check" version = "0.9.4" @@ -4696,7 +4578,7 @@ version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "wasm-bindgen-macro", ] @@ -4721,7 +4603,7 @@ version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "js-sys", "wasm-bindgen", "web-sys", @@ -4829,19 +4711,6 @@ dependencies = [ "windows_x86_64_msvc 0.39.0", ] -[[package]] -name = "windows-sys" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" -dependencies = [ - "windows_aarch64_msvc 0.36.1", - "windows_i686_gnu 0.36.1", - "windows_i686_msvc 0.36.1", - "windows_x86_64_gnu 0.36.1", - "windows_x86_64_msvc 0.36.1", -] - [[package]] name = "windows-sys" version = "0.42.0" @@ -4893,12 +4762,6 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" -[[package]] -name = "windows_aarch64_msvc" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" - [[package]] name = "windows_aarch64_msvc" version = "0.39.0" @@ -4917,12 +4780,6 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" -[[package]] -name = "windows_i686_gnu" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" - [[package]] name = "windows_i686_gnu" version = "0.39.0" @@ -4941,12 +4798,6 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" -[[package]] -name = "windows_i686_msvc" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" - [[package]] name = "windows_i686_msvc" version = "0.39.0" @@ -4965,12 +4816,6 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" -[[package]] -name = "windows_x86_64_gnu" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" - [[package]] name = "windows_x86_64_gnu" version = "0.39.0" @@ -5001,12 +4846,6 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" -[[package]] -name = "windows_x86_64_msvc" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" - [[package]] name = "windows_x86_64_msvc" version = "0.39.0" @@ -5025,6 +4864,15 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +[[package]] +name = "winnow" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c2e3184b9c4e92ad5167ca73039d0c42476302ab603e2fec4487511f38ccefc" +dependencies = [ + "memchr", +] + [[package]] name = "winreg" version = "0.10.1" @@ -5056,27 +4904,33 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c394b5bd0c6f669e7275d9c20aa90ae064cb22e75a1cad54e1b34088034b149f" [[package]] -name = "zeromq" -version = "0.3.3" +name = "zeromq-src" +version = "0.2.6+4.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "667ece59294ccaf617fcf2e5decc9114a06427c1f68990028b9f12d322686bdc" +checksum = "fc120b771270365d5ed0dfb4baf1005f2243ae1ae83703265cb3504070f4160b" dependencies = [ - "async-trait", - "asynchronous-codec", - "bytes", - "crossbeam", - "dashmap 3.11.10", - "enum-primitive-derive", - "futures", - "futures-util", - "lazy_static", - "log", - "num-traits", - "parking_lot 0.11.2", - "rand 0.7.3", - "regex", - "thiserror", - "tokio", - "tokio-util 0.6.10", - "uuid 0.8.2", + "cc", + "dircpy", +] + +[[package]] +name = "zmq" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd3091dd571fb84a9b3e5e5c6a807d186c411c812c8618786c3c30e5349234e7" +dependencies = [ + "bitflags 1.3.2", + "libc", + "zmq-sys", +] + +[[package]] +name = "zmq-sys" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e8351dc72494b4d7f5652a681c33634063bbad58046c1689e75270908fdc864" +dependencies = [ + "libc", + "system-deps", + "zeromq-src", ] diff --git a/README.md b/README.md index bd0da3cb7..d6c7169b5 100644 --- a/README.md +++ b/README.md @@ -536,6 +536,9 @@ Additional configuration knobs available: // Include decoded clarity values in payload "decode_clarity_values": true + +// Include the contract ABI for transactions that deploy contracts: +"include_contract_abi": true ``` Putting all the pieces together: diff --git a/components/chainhook-cli/Cargo.toml b/components/chainhook-cli/Cargo.toml index 3c1081835..0fa103018 100644 --- a/components/chainhook-cli/Cargo.toml +++ b/components/chainhook-cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "chainhook" -version = "1.0.0" +version = "1.1.1" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -15,18 +15,21 @@ redis = "0.21.5" serde-redis = "0.12.0" hex = "0.4.3" rand = "0.8.5" -# tikv-client = { git = "https://github.com/tikv/client-rust.git", rev = "8f54e6114227718e256027df2577bbacdf425f86" } -# raft-proto = { git = "https://github.com/tikv/raft-rs", rev="f73766712a538c2f6eb135b455297ad6c03fc58d", version = "0.7.0"} -chainhook-sdk = { version = "0.8.0", default-features = false, features = ["zeromq"], path = "../chainhook-sdk" } +chainhook-sdk = { version = "0.10.0", default-features = false, features = ["zeromq"], path = "../chainhook-sdk" } clarinet-files = "1.0.1" -hiro-system-kit = "0.1.0" +hiro-system-kit = "0.3.1" # clarinet-files = { path = "../../../clarinet/components/clarinet-files" } # hiro-system-kit = { path = "../../../clarinet/components/hiro-system-kit" } clap = { version = "3.2.23", features = ["derive"], optional = true } clap_generate = { version = "3.0.3", optional = true } toml = { version = "0.5.6", features = ["preserve_order"], optional = true } ctrlc = { version = "3.2.2", optional = true } -reqwest = { version = "0.11", features = ["stream", "json"] } +reqwest = { version = "0.11", default-features = false, features = [ + "blocking", + "stream", + "json", + "rustls-tls", +] } tokio = { version = "=1.24", features = ["full"] } futures-util = "0.3.24" flate2 = "1.0.24" @@ -57,9 +60,10 @@ serial_test = "2.0.0" [features] default = ["cli"] -cli = ["clap", "clap_generate", "toml", "ctrlc", "hiro-system-kit/log"] -debug = ["hiro-system-kit/debug"] -release = ["hiro-system-kit/release"] +cli = ["clap", "clap_generate", "toml", "ctrlc", "release"] +debug = ["chainhook-sdk/debug"] +release = ["chainhook-sdk/release"] +redis_tests = [] # [patch.crates-io] # raft-proto = { git = "https://github.com/tikv/raft-rs", rev="95c532612ee6a83591fce9a8b51d6afe87b58835"} diff --git a/components/chainhook-cli/benches/codec/clarity.rs b/components/chainhook-cli/benches/codec/clarity.rs deleted file mode 100644 index 8f2397379..000000000 --- a/components/chainhook-cli/benches/codec/clarity.rs +++ /dev/null @@ -1,27 +0,0 @@ -use clarity_repl::clarity::codec::StacksString; -use clarity_repl::clarity::ClarityName; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; -use hex::{decode, encode}; - -#[inline] -fn canonical_is_clarity_variable() { - let function_name = ClarityName::try_from("my-method-name").unwrap(); - StacksString::from(function_name.clone()).is_clarity_variable(); -} - -#[inline] -fn proposed_is_clarity_variable() { - let function_name = ClarityName::try_from("my-method-name").unwrap(); -} - -pub fn criterion_benchmark(c: &mut Criterion) { - c.bench_function("canonical_is_clarity_variable ", |b| { - b.iter(|| canonical_is_clarity_variable()) - }); - c.bench_function("proposed_is_clarity_variable ", |b| { - b.iter(|| proposed_is_clarity_variable()) - }); -} - -criterion_group!(benches, criterion_benchmark); -criterion_main!(benches); diff --git a/components/chainhook-cli/benches/codec/hex.rs b/components/chainhook-cli/benches/codec/hex.rs deleted file mode 100644 index 8b5fb30c3..000000000 --- a/components/chainhook-cli/benches/codec/hex.rs +++ /dev/null @@ -1,397 +0,0 @@ -use criterion::{black_box, criterion_group, criterion_main, Criterion}; -use hex::{decode, encode}; - -#[inline] -fn decode_hex_str_stacks(input: &str) -> Vec { - hex_bytes(input).unwrap() -} - -#[inline] -fn encode_hex_str_stacks() -> String { - hex::encode(&[ - 0x00, - 0x00, - 0x00, - 0x00, - 0x01, - 0x04, - 0x00, - 0xa4, - 0x68, - 0xe7, - 0x2d, - 0xf6, - 0x75, - 0x43, - 0x87, - 0x20, - 0x98, - 0x27, - 0x32, - 0x7b, - 0x98, - 0x9f, - 0x4a, - 0x99, - 0x54, - 0x2a, - 0x69, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x77, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xb4, - 0x00, - 0x01, - 0x23, - 0x1c, - 0x21, - 0x39, - 0x49, - 0x45, - 0x53, - 0x17, - 0xd1, - 0x5f, - 0xf2, - 0x5d, - 0xfd, - 0x7a, - 0xd9, - 0xbc, - 0x04, - 0x26, - 0xcf, - 0xfa, - 0x5c, - 0x6f, - 0x5b, - 0xe4, - 0x6e, - 0x79, - 0xfa, - 0x1e, - 0x18, - 0x2b, - 0x61, - 0x45, - 0x18, - 0x0c, - 0x1c, - 0x13, - 0x5d, - 0x6c, - 0xcc, - 0xfc, - 0xc4, - 0x9e, - 0x85, - 0xcb, - 0x82, - 0x5e, - 0x61, - 0x52, - 0x28, - 0xda, - 0xf2, - 0xd1, - 0x66, - 0x3e, - 0x49, - 0xd7, - 0x0c, - 0xd5, - 0xd0, - 0xe1, - 0x96, - 0xd1, - 0x26, - 0xc0, - 0x03, - 0x02, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x05, - 0x16, - 0x7b, - 0x2d, - 0xd1, - 0xf0, - 0xd4, - 0x7f, - 0x59, - 0x67, - 0x21, - 0xc2, - 0x33, - 0xfd, - 0x9b, - 0x2e, - 0x99, - 0x19, - 0xac, - 0x91, - 0x28, - 0x8a, - 0x00, - 0x00, - 0x00, - 0x00, - 0x0c, - 0x1b, - 0x5e, - 0x48, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00 - ]) -} - - -#[inline] -fn decode_hex_str_crate(input: &str) -> Vec { - decode(input).unwrap() -} - -#[inline] -fn encode_hex_str_crate() -> String { - encode(&[ - 0x00, - 0x00, - 0x00, - 0x00, - 0x01, - 0x04, - 0x00, - 0xa4, - 0x68, - 0xe7, - 0x2d, - 0xf6, - 0x75, - 0x43, - 0x87, - 0x20, - 0x98, - 0x27, - 0x32, - 0x7b, - 0x98, - 0x9f, - 0x4a, - 0x99, - 0x54, - 0x2a, - 0x69, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x77, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xb4, - 0x00, - 0x01, - 0x23, - 0x1c, - 0x21, - 0x39, - 0x49, - 0x45, - 0x53, - 0x17, - 0xd1, - 0x5f, - 0xf2, - 0x5d, - 0xfd, - 0x7a, - 0xd9, - 0xbc, - 0x04, - 0x26, - 0xcf, - 0xfa, - 0x5c, - 0x6f, - 0x5b, - 0xe4, - 0x6e, - 0x79, - 0xfa, - 0x1e, - 0x18, - 0x2b, - 0x61, - 0x45, - 0x18, - 0x0c, - 0x1c, - 0x13, - 0x5d, - 0x6c, - 0xcc, - 0xfc, - 0xc4, - 0x9e, - 0x85, - 0xcb, - 0x82, - 0x5e, - 0x61, - 0x52, - 0x28, - 0xda, - 0xf2, - 0xd1, - 0x66, - 0x3e, - 0x49, - 0xd7, - 0x0c, - 0xd5, - 0xd0, - 0xe1, - 0x96, - 0xd1, - 0x26, - 0xc0, - 0x03, - 0x02, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x05, - 0x16, - 0x7b, - 0x2d, - 0xd1, - 0xf0, - 0xd4, - 0x7f, - 0x59, - 0x67, - 0x21, - 0xc2, - 0x33, - 0xfd, - 0x9b, - 0x2e, - 0x99, - 0x19, - 0xac, - 0x91, - 0x28, - 0x8a, - 0x00, - 0x00, - 0x00, - 0x00, - 0x0c, - 0x1b, - 0x5e, - 0x48, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00 - ]) -} - - -pub fn criterion_benchmark(c: &mut Criterion) { - c.bench_function("decode_hex_str ('hex_bytes' from stacks) <360>", |b| b.iter(|| decode_hex_str_stacks(black_box("00000000010400a468e72df6754387209827327b989f4a99542a69000000000000007700000000000000b40001231c213949455317d15ff25dfd7ad9bc0426cffa5c6f5be46e79fa1e182b6145180c1c135d6cccfcc49e85cb825e615228daf2d1663e49d70cd5d0e196d126c00302000000000005167b2dd1f0d47f596721c233fd9b2e9919ac91288a000000000c1b5e4800000000000000000000000000000000000000000000000000000000000000000000")))); - c.bench_function("decode_hex_str (function from crate 'hex') <360>", |b| b.iter(|| decode_hex_str_crate(black_box("00000000010400a468e72df6754387209827327b989f4a99542a69000000000000007700000000000000b40001231c213949455317d15ff25dfd7ad9bc0426cffa5c6f5be46e79fa1e182b6145180c1c135d6cccfcc49e85cb825e615228daf2d1663e49d70cd5d0e196d126c00302000000000005167b2dd1f0d47f596721c233fd9b2e9919ac91288a000000000c1b5e4800000000000000000000000000000000000000000000000000000000000000000000")))); - - c.bench_function("encode_to_hex_str ('to_hex' from stacks) <360>", |b| b.iter(|| encode_hex_str_stacks())); - c.bench_function("encode_to_hex_str (function from crate 'hex') <360>", |b| b.iter(|| encode_hex_str_crate())); -} - -criterion_group!(benches, criterion_benchmark); -criterion_main!(benches); diff --git a/components/chainhook-cli/benches/storage/redis.rs b/components/chainhook-cli/benches/storage/redis.rs deleted file mode 100644 index fc6d6c8fa..000000000 --- a/components/chainhook-cli/benches/storage/redis.rs +++ /dev/null @@ -1,17 +0,0 @@ -use criterion::{black_box, criterion_group, criterion_main, Criterion}; -use chainhook_event_indexer::ingestion::start_ingesting; -use chainhook_sdk::indexer::IndexerConfig; - - -fn criterion_benchmark(c: &mut Criterion) { - let config = IndexerConfig { - stacks_node_rpc_url: "http://0.0.0.0:20443".into(), - bitcoind_rpc_url: "http://0.0.0.0:18443".into(), - bitcoind_rpc_username: "devnet".into(), - bitcoind_rpc_password: "devnet".into(), - }; - c.bench_function("redis", |b| b.iter(|| start_ingesting("/Users/ludovic/Downloads/stacks-blockchain-api.tsv".into(), config.clone()).unwrap())); -} - -criterion_group!(benches, criterion_benchmark); -criterion_main!(benches); diff --git a/components/chainhook-cli/benches/storage/rocksdb.rs b/components/chainhook-cli/benches/storage/rocksdb.rs deleted file mode 100644 index 4bec91251..000000000 --- a/components/chainhook-cli/benches/storage/rocksdb.rs +++ /dev/null @@ -1,16 +0,0 @@ -use criterion::{black_box, criterion_group, criterion_main, Criterion}; - -fn ingest_tsv(n: u64) -> u64 { - match n { - 0 => 1, - 1 => 1, - n => fibonacci(n-1) + fibonacci(n-2), - } -} - -fn criterion_benchmark(c: &mut Criterion) { - c.bench_function("fib 20", |b| b.iter(|| fibonacci(black_box(20)))); -} - -criterion_group!(benches, criterion_benchmark); -criterion_main!(benches); diff --git a/components/chainhook-cli/benches/storage/sqlite.rs b/components/chainhook-cli/benches/storage/sqlite.rs deleted file mode 100644 index 4bec91251..000000000 --- a/components/chainhook-cli/benches/storage/sqlite.rs +++ /dev/null @@ -1,16 +0,0 @@ -use criterion::{black_box, criterion_group, criterion_main, Criterion}; - -fn ingest_tsv(n: u64) -> u64 { - match n { - 0 => 1, - 1 => 1, - n => fibonacci(n-1) + fibonacci(n-2), - } -} - -fn criterion_benchmark(c: &mut Criterion) { - c.bench_function("fib 20", |b| b.iter(|| fibonacci(black_box(20)))); -} - -criterion_group!(benches, criterion_benchmark); -criterion_main!(benches); diff --git a/components/chainhook-cli/src/archive/mod.rs b/components/chainhook-cli/src/archive/mod.rs index 1b87002eb..5a2429556 100644 --- a/components/chainhook-cli/src/archive/mod.rs +++ b/components/chainhook-cli/src/archive/mod.rs @@ -41,35 +41,55 @@ pub async fn download_tsv_file(config: &Config) -> Result<(), String> { // Download chunks let (tx, rx) = flume::bounded(0); - destination_path.push(default_tsv_file_path(&config.network.stacks_network)); - - let decoder_thread = std::thread::spawn(move || { - let input = ChannelRead::new(rx); - let mut decoder = GzDecoder::new(input); - let mut content = Vec::new(); - let _ = decoder.read_to_end(&mut content); - let mut file = fs::File::create(&destination_path).unwrap(); - if let Err(e) = file.write_all(&content[..]) { - println!("unable to write file: {}", e.to_string()); - std::process::exit(1); - } - }); if res.status() == reqwest::StatusCode::OK { + destination_path.push(default_tsv_file_path(&config.network.stacks_network)); + + let decoder_thread = std::thread::spawn(move || { + let mut file = fs::File::create(&destination_path).unwrap(); + let input = ChannelRead::new(rx); + let mut decoder = GzDecoder::new(input); + let mut buffer = [0; 512_000]; + loop { + match decoder.read(&mut buffer) { + Ok(0) => break, + Ok(n) => { + if let Err(e) = file.write_all(&buffer[..n]) { + let err = + format!("unable to update compressed archive: {}", e.to_string()); + return Err(err); + } + } + Err(e) => { + let err = format!("unable to write compressed archive: {}", e.to_string()); + return Err(err); + } + } + } + let _ = file.flush(); + Ok(()) + }); let mut stream = res.bytes_stream(); while let Some(item) = stream.next().await { - let chunk = item.or(Err(format!("Error while downloading file")))?; + let chunk = match item { + Ok(i) => Ok(i), + Err(e) => Err(format!("Error while downloading file {}", e.to_string())), + }?; + if chunk.is_empty() { + continue; + } tx.send_async(chunk.to_vec()) .await - .map_err(|e| format!("unable to download stacks event: {}", e.to_string()))?; + .map_err(|e| format!("unable to download stacks archive: {}", e.to_string()))?; } drop(tx); - } - tokio::task::spawn_blocking(|| decoder_thread.join()) - .await - .unwrap() - .unwrap(); + tokio::task::spawn_blocking(|| decoder_thread.join()) + .await + .unwrap() + .unwrap() + .unwrap(); + } Ok(()) } @@ -167,3 +187,6 @@ pub async fn download_stacks_dataset_if_required(config: &mut Config, ctx: &Cont false } } + +#[cfg(test)] +pub mod tests; diff --git a/components/chainhook-cli/src/archive/tests/fixtures/stacks_blocks.tsv.gz b/components/chainhook-cli/src/archive/tests/fixtures/stacks_blocks.tsv.gz new file mode 100644 index 000000000..91813fb7c Binary files /dev/null and b/components/chainhook-cli/src/archive/tests/fixtures/stacks_blocks.tsv.gz differ diff --git a/components/chainhook-cli/src/archive/tests/mod.rs b/components/chainhook-cli/src/archive/tests/mod.rs new file mode 100644 index 000000000..eb97bfff9 --- /dev/null +++ b/components/chainhook-cli/src/archive/tests/mod.rs @@ -0,0 +1,84 @@ +use std::{ + fs::{self, File}, + io::Read, + net::{IpAddr, Ipv4Addr}, + thread::sleep, + time::Duration, +}; + +use chainhook_sdk::utils::Context; + +use crate::{ + archive::{ + default_tsv_file_path, default_tsv_sha_file_path, download_stacks_dataset_if_required, + }, + config::{Config, EventSourceConfig, UrlConfig}, + service::tests::helpers::get_free_port, +}; +use rocket::Config as RocketConfig; + +const GZ_DIR: &str = "src/archive/tests/fixtures/stacks_blocks.tsv.gz"; +const TMP_DIR: &str = "src/archive/tests/fixtures/tmp"; +const SHA256_HASH: &str = "49ca5f80b2a1303e7f7e98a4f9d39efeb35fd9f3696c4cd9615e0b5cd1f3dcfb"; + +#[get("/stacks_blocks.tsv.sha256")] +fn get_sha256() -> String { + format!("{SHA256_HASH}") +} + +#[get("/stacks_blocks.tsv.gz")] +fn get_gz() -> Vec { + let dir = format!("{}/{GZ_DIR}", env!("CARGO_MANIFEST_DIR")); + let mut f = File::open(dir).unwrap(); + let mut buffer: Vec = Vec::new(); + f.read_to_end(&mut buffer).unwrap(); + buffer +} + +async fn start_service(port: u16) { + let config = RocketConfig::figment() + .merge(("port", port)) + .merge(("address", IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0)))) + .merge(("log_level", "off")); + let _rocket = rocket::build() + .configure(config) + .mount("/", routes![get_sha256, get_gz]) + .launch() + .await + .unwrap(); +} + +#[tokio::test] +async fn it_downloads_stacks_dataset_if_required() { + let port = get_free_port().unwrap(); + let mut config = Config::default(false, true, false, &None).unwrap(); + + config.storage.working_dir = format!("{}/{}", env!("CARGO_MANIFEST_DIR"), TMP_DIR); + config.event_sources = vec![EventSourceConfig::StacksTsvUrl(UrlConfig { + file_url: format!("http://0.0.0.0:{port}/stacks_blocks.tsv"), + })]; + let _ = hiro_system_kit::thread_named("Start tsv service") + .spawn(move || { + let future = start_service(port); + let _ = hiro_system_kit::nestable_block_on(future); + }) + .expect("unable to spawn thread"); + + sleep(Duration::new(1, 0)); + let logger = hiro_system_kit::log::setup_logger(); + let _guard = hiro_system_kit::log::setup_global_logger(logger.clone()); + let ctx = Context { + logger: Some(logger), + tracer: false, + }; + let mut config_clone = config.clone(); + assert!(download_stacks_dataset_if_required(&mut config, &ctx).await); + assert!(!download_stacks_dataset_if_required(&mut config_clone, &ctx).await); + + let mut tsv_file_path = config.expected_cache_path(); + tsv_file_path.push(default_tsv_file_path(&config.network.stacks_network)); + fs::remove_file(tsv_file_path).unwrap(); + let mut tsv_sha_file_path = config.expected_cache_path(); + tsv_sha_file_path.push(default_tsv_sha_file_path(&config.network.stacks_network)); + fs::remove_file(tsv_sha_file_path).unwrap(); +} diff --git a/components/chainhook-cli/src/cli/mod.rs b/components/chainhook-cli/src/cli/mod.rs index c03199fcf..8ee706a45 100644 --- a/components/chainhook-cli/src/cli/mod.rs +++ b/components/chainhook-cli/src/cli/mod.rs @@ -1,5 +1,5 @@ use crate::config::generator::generate_config; -use crate::config::{Config, PredicatesApi}; +use crate::config::Config; use crate::scan::bitcoin::scan_bitcoin_chainstate_via_rpc_using_predicate; use crate::scan::stacks::{ consolidate_local_stacks_chainstate_using_csv, scan_stacks_chainstate_via_csv_using_predicate, @@ -273,14 +273,14 @@ pub fn main() { let opts: Opts = match Opts::try_parse() { Ok(opts) => opts, Err(e) => { - println!("{}", e); + error!(ctx.expect_logger(), "{e}"); process::exit(1); } }; - match hiro_system_kit::nestable_block_on(handle_command(opts, ctx)) { + match hiro_system_kit::nestable_block_on(handle_command(opts, ctx.clone())) { Err(e) => { - println!("{e}"); + error!(ctx.expect_logger(), "{e}"); process::exit(1); } Ok(_) => {} @@ -291,12 +291,8 @@ async fn handle_command(opts: Opts, ctx: Context) -> Result<(), String> { match opts.command { Command::Service(subcmd) => match subcmd { ServiceCommand::Start(cmd) => { - let mut config = + let config = Config::default(cmd.devnet, cmd.testnet, cmd.mainnet, &cmd.config_path)?; - // We disable the API if a predicate was passed, and the --enable- - if cmd.predicates_paths.len() > 0 && !cmd.start_http_api { - config.http_api = PredicatesApi::Off; - } let predicates = cmd .predicates_paths @@ -339,13 +335,14 @@ async fn handle_command(opts: Opts, ctx: Context) -> Result<(), String> { start_block: Some(34239), end_block: Some(50000), blocks: None, - predicate: StacksPredicate::PrintEvent(StacksPrintEventBasedPredicate { + predicate: StacksPredicate::PrintEvent(StacksPrintEventBasedPredicate::Contains { contract_identifier: "ST1SVA0SST0EDT4MFYGWGP6GNSXMMQJDVP1G8QTTC.arkadiko-freddie-v1-1".into(), contains: "vault".into(), }), expire_after_occurrence: None, capture_all_events: None, decode_clarity_values: None, + include_contract_abi: None, action: HookAction::FileAppend(FileHook { path: "arkadiko.txt".into() }) @@ -355,13 +352,14 @@ async fn handle_command(opts: Opts, ctx: Context) -> Result<(), String> { start_block: Some(34239), end_block: Some(50000), blocks: None, - predicate: StacksPredicate::PrintEvent(StacksPrintEventBasedPredicate { + predicate: StacksPredicate::PrintEvent(StacksPrintEventBasedPredicate::Contains { contract_identifier: "SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-freddie-v1-1".into(), contains: "vault".into(), }), expire_after_occurrence: None, capture_all_events: None, decode_clarity_values: None, + include_contract_abi: None, action: HookAction::FileAppend(FileHook { path: "arkadiko.txt".into() }) @@ -462,6 +460,7 @@ async fn handle_command(opts: Opts, ctx: Context) -> Result<(), String> { scan_bitcoin_chainstate_via_rpc_using_predicate( &predicate_spec, + None, &config, &ctx, ) diff --git a/components/chainhook-cli/src/config/file.rs b/components/chainhook-cli/src/config/file.rs index b735baadb..ad76a7a91 100644 --- a/components/chainhook-cli/src/config/file.rs +++ b/components/chainhook-cli/src/config/file.rs @@ -1,3 +1,5 @@ +use chainhook_sdk::types::BitcoinNetwork; + #[derive(Deserialize, Debug, Clone)] pub struct ConfigFile { pub storage: StorageConfigFile, @@ -43,7 +45,7 @@ pub struct LimitsConfigFile { #[derive(Deserialize, Debug, Clone)] pub struct NetworkConfigFile { - pub mode: String, + pub mode: NetworkConfigMode, pub bitcoind_rpc_url: String, pub bitcoind_rpc_username: String, pub bitcoind_rpc_password: String, @@ -51,3 +53,28 @@ pub struct NetworkConfigFile { pub stacks_node_rpc_url: Option, pub stacks_events_ingestion_port: Option, } + +#[derive(Deserialize, Debug, Clone)] +#[serde(rename_all = "snake_case")] +pub enum NetworkConfigMode { + Devnet, + Testnet, + Mainnet, +} + +impl NetworkConfigMode { + pub fn from_bitcoin_network(network: &BitcoinNetwork) -> Self { + match network { + BitcoinNetwork::Regtest => NetworkConfigMode::Devnet, + BitcoinNetwork::Testnet => NetworkConfigMode::Testnet, + BitcoinNetwork::Mainnet => NetworkConfigMode::Mainnet, + } + } + pub fn as_str(&self) -> &str { + match self { + NetworkConfigMode::Devnet => "devnet", + NetworkConfigMode::Testnet => "testnet", + NetworkConfigMode::Mainnet => "mainnet", + } + } +} diff --git a/components/chainhook-cli/src/config/generator.rs b/components/chainhook-cli/src/config/generator.rs index 074bc328f..68b308be4 100644 --- a/components/chainhook-cli/src/config/generator.rs +++ b/components/chainhook-cli/src/config/generator.rs @@ -1,30 +1,35 @@ +use super::file::NetworkConfigMode; use chainhook_sdk::types::BitcoinNetwork; pub fn generate_config(network: &BitcoinNetwork) -> String { + let mode = NetworkConfigMode::from_bitcoin_network(network); let network = format!("{:?}", network); let conf = format!( r#"[storage] working_dir = "cache" -# The Http Api allows you to register / deregister -# dynamically predicates. -# Disable by default. +# The HTTP API allows you to register / deregister +# predicates dynamically. +# This is disabled by default. # # [http_api] # http_port = 20456 # database_uri = "redis://localhost:6379/" [network] -mode = "{network}" +mode = "{mode}" bitcoind_rpc_url = "http://localhost:8332" bitcoind_rpc_username = "devnet" bitcoind_rpc_password = "devnet" -# Bitcoin block events can be received by Chainhook -# either through a Bitcoin node's ZeroMQ interface, -# or through the Stacks node. The Stacks node is -# used by default: + +# Chainhook must be able to receive Bitcoin block events. +# These events can originate from either a Stacks node or a Bitcoin node's ZeroMQ interface. + +# By default, the service is set to receive Bitcoin block events from the Stacks node: stacks_node_rpc_url = "http://localhost:20443" -# but zmq can be used instead: + +# However, events can also be received directly from a Bitcoin node. +# To achieve this, comment out the `stacks_node_rpc_url` line and uncomment the following line: # bitcoind_zmq_url = "tcp://0.0.0.0:18543" [limits] @@ -36,9 +41,12 @@ max_number_of_processing_threads = 16 max_number_of_networking_threads = 16 max_caching_memory_size_mb = 32000 +# The TSV file is required for downloading historical data for your predicates. +# If this is not a requirement, you can comment out the `tsv_file_url` line. [[event_source]] tsv_file_url = "https://archive.hiro.so/{network}/stacks-blockchain-api/{network}-stacks-blockchain-api-latest" "#, + mode = mode.as_str(), network = network.to_lowercase(), ); return conf; diff --git a/components/chainhook-cli/src/config/mod.rs b/components/chainhook-cli/src/config/mod.rs index 039ff97fb..b690e623f 100644 --- a/components/chainhook-cli/src/config/mod.rs +++ b/components/chainhook-cli/src/config/mod.rs @@ -24,7 +24,7 @@ pub const BITCOIN_SCAN_THREAD_POOL_SIZE: usize = 10; pub const STACKS_MAX_PREDICATE_REGISTRATION: usize = 50; pub const BITCOIN_MAX_PREDICATE_REGISTRATION: usize = 50; -#[derive(Clone, Debug)] +#[derive(Clone, Debug, PartialEq)] pub struct Config { pub storage: StorageConfig, pub http_api: PredicatesApi, @@ -33,25 +33,25 @@ pub struct Config { pub network: IndexerConfig, } -#[derive(Clone, Debug)] +#[derive(Clone, Debug, PartialEq)] pub struct StorageConfig { pub working_dir: String, } -#[derive(Clone, Debug)] +#[derive(Clone, Debug, PartialEq)] pub enum PredicatesApi { Off, On(PredicatesApiConfig), } -#[derive(Clone, Debug)] +#[derive(Clone, Debug, PartialEq)] pub struct PredicatesApiConfig { pub http_port: u16, pub database_uri: String, pub display_logs: bool, } -#[derive(Clone, Debug)] +#[derive(Clone, Debug, PartialEq)] pub enum EventSourceConfig { StacksTsvPath(PathConfig), StacksTsvUrl(UrlConfig), @@ -59,17 +59,17 @@ pub enum EventSourceConfig { OrdinalsSqliteUrl(UrlConfig), } -#[derive(Clone, Debug)] +#[derive(Clone, Debug, PartialEq)] pub struct PathConfig { pub file_path: PathBuf, } -#[derive(Clone, Debug)] +#[derive(Clone, Debug, PartialEq)] pub struct UrlConfig { pub file_url: String, } -#[derive(Clone, Debug)] +#[derive(Clone, Debug, PartialEq)] pub struct LimitsConfig { pub max_number_of_bitcoin_predicates: usize, pub max_number_of_concurrent_bitcoin_scans: usize, @@ -109,7 +109,6 @@ impl Config { pub fn get_event_observer_config(&self) -> EventObserverConfig { EventObserverConfig { bitcoin_rpc_proxy_enabled: true, - event_handlers: vec![], chainhook_config: None, ingestion_port: DEFAULT_INGESTION_PORT, bitcoind_rpc_username: self.network.bitcoind_rpc_username.clone(), @@ -120,6 +119,7 @@ impl Config { cache_path: self.storage.working_dir.clone(), bitcoin_network: self.network.bitcoin_network.clone(), stacks_network: self.network.stacks_network.clone(), + data_handler_tx: None, } } @@ -232,20 +232,6 @@ impl Config { })); } - pub fn add_ordinals_sqlite_remote_source_url(&mut self, file_url: &str) { - self.event_sources - .push(EventSourceConfig::OrdinalsSqliteUrl(UrlConfig { - file_url: file_url.to_string(), - })); - } - - pub fn add_local_ordinals_sqlite_source(&mut self, file_path: &PathBuf) { - self.event_sources - .push(EventSourceConfig::OrdinalsSqlitePath(PathConfig { - file_path: file_path.clone(), - })); - } - pub fn expected_api_database_uri(&self) -> &str { &self.expected_api_config().database_uri } @@ -272,15 +258,6 @@ impl Config { destination_path } - fn expected_remote_ordinals_sqlite_base_url(&self) -> &String { - for source in self.event_sources.iter() { - if let EventSourceConfig::OrdinalsSqliteUrl(config) = source { - return &config.file_url; - } - } - panic!("expected remote-tsv source") - } - fn expected_remote_stacks_tsv_base_url(&self) -> &String { for source in self.event_sources.iter() { if let EventSourceConfig::StacksTsvUrl(config) = source { @@ -298,14 +275,6 @@ impl Config { format!("{}.gz", self.expected_remote_stacks_tsv_base_url()) } - pub fn expected_remote_ordinals_sqlite_sha256(&self) -> String { - format!("{}.sha256", self.expected_remote_ordinals_sqlite_base_url()) - } - - pub fn expected_remote_ordinals_sqlite_url(&self) -> String { - format!("{}.gz", self.expected_remote_ordinals_sqlite_base_url()) - } - pub fn rely_on_remote_stacks_tsv(&self) -> bool { for source in self.event_sources.iter() { if let EventSourceConfig::StacksTsvUrl(_config) = source { @@ -315,15 +284,6 @@ impl Config { false } - pub fn rely_on_remote_ordinals_sqlite(&self) -> bool { - for source in self.event_sources.iter() { - if let EventSourceConfig::OrdinalsSqliteUrl(_config) = source { - return true; - } - } - false - } - pub fn should_download_remote_stacks_tsv(&self) -> bool { let mut rely_on_remote_tsv = false; let mut remote_tsv_present_locally = false; @@ -338,20 +298,6 @@ impl Config { rely_on_remote_tsv == true && remote_tsv_present_locally == false } - pub fn should_download_remote_ordinals_sqlite(&self) -> bool { - let mut rely_on_remote_tsv = false; - let mut remote_tsv_present_locally = false; - for source in self.event_sources.iter() { - if let EventSourceConfig::OrdinalsSqliteUrl(_config) = source { - rely_on_remote_tsv = true; - } - if let EventSourceConfig::OrdinalsSqlitePath(_config) = source { - remote_tsv_present_locally = true; - } - } - rely_on_remote_tsv == true && remote_tsv_present_locally == false - } - pub fn default( devnet: bool, testnet: bool, @@ -465,3 +411,6 @@ pub fn default_cache_path() -> String { cache_path.push("cache"); format!("{}", cache_path.display()) } + +#[cfg(test)] +pub mod tests; diff --git a/components/chainhook-cli/src/config/tests/fixtures/devnet_chainhook.toml b/components/chainhook-cli/src/config/tests/fixtures/devnet_chainhook.toml new file mode 100644 index 000000000..dbdb4a589 --- /dev/null +++ b/components/chainhook-cli/src/config/tests/fixtures/devnet_chainhook.toml @@ -0,0 +1,35 @@ +[storage] +working_dir = "cache" + +# The Http Api allows you to register / deregister +# dynamically predicates. +# Disable by default. +# +# [http_api] +# http_port = 20456 +# database_uri = "redis://localhost:6379/" + +[network] +mode = "devnet" +bitcoind_rpc_url = "http://localhost:8332" +bitcoind_rpc_username = "devnet" +bitcoind_rpc_password = "devnet" +# Bitcoin block events can be received by Chainhook +# either through a Bitcoin node's ZeroMQ interface, +# or through the Stacks node. The Stacks node is +# used by default: +stacks_node_rpc_url = "http://localhost:20443" +# but zmq can be used instead: +# bitcoind_zmq_url = "tcp://0.0.0.0:18543" + +[limits] +max_number_of_bitcoin_predicates = 100 +max_number_of_concurrent_bitcoin_scans = 100 +max_number_of_stacks_predicates = 10 +max_number_of_concurrent_stacks_scans = 10 +max_number_of_processing_threads = 16 +max_number_of_networking_threads = 16 +max_caching_memory_size_mb = 32000 + +[[event_source]] +tsv_file_url = "https://archive.hiro.so/regtest/stacks-blockchain-api/regtest-stacks-blockchain-api-latest" diff --git a/components/chainhook-cli/src/config/tests/fixtures/local_tsv_chainhook.toml b/components/chainhook-cli/src/config/tests/fixtures/local_tsv_chainhook.toml new file mode 100644 index 000000000..e70a9ad34 --- /dev/null +++ b/components/chainhook-cli/src/config/tests/fixtures/local_tsv_chainhook.toml @@ -0,0 +1,35 @@ +[storage] +working_dir = "cache" + +# The Http Api allows you to register / deregister +# dynamically predicates. +# Disable by default. +# +# [http_api] +# http_port = 20456 +# database_uri = "redis://localhost:6379/" + +[network] +mode = "devnet" +bitcoind_rpc_url = "http://localhost:8332" +bitcoind_rpc_username = "devnet" +bitcoind_rpc_password = "devnet" +# Bitcoin block events can be received by Chainhook +# either through a Bitcoin node's ZeroMQ interface, +# or through the Stacks node. The Stacks node is +# used by default: +stacks_node_rpc_url = "http://localhost:20443" +# but zmq can be used instead: +# bitcoind_zmq_url = "tcp://0.0.0.0:18543" + +[limits] +max_number_of_bitcoin_predicates = 100 +max_number_of_concurrent_bitcoin_scans = 100 +max_number_of_stacks_predicates = 10 +max_number_of_concurrent_stacks_scans = 10 +max_number_of_processing_threads = 16 +max_number_of_networking_threads = 16 +max_caching_memory_size_mb = 32000 + +[[event_source]] +tsv_file_path = "./file.tsv" diff --git a/components/chainhook-cli/src/config/tests/fixtures/mainnet_chainhook.toml b/components/chainhook-cli/src/config/tests/fixtures/mainnet_chainhook.toml new file mode 100644 index 000000000..d403113ca --- /dev/null +++ b/components/chainhook-cli/src/config/tests/fixtures/mainnet_chainhook.toml @@ -0,0 +1,35 @@ +[storage] +working_dir = "cache" + +# The Http Api allows you to register / deregister +# dynamically predicates. +# Disable by default. +# +# [http_api] +# http_port = 20456 +# database_uri = "redis://localhost:6379/" + +[network] +mode = "mainnet" +bitcoind_rpc_url = "http://localhost:8332" +bitcoind_rpc_username = "devnet" +bitcoind_rpc_password = "devnet" +# Bitcoin block events can be received by Chainhook +# either through a Bitcoin node's ZeroMQ interface, +# or through the Stacks node. The Stacks node is +# used by default: +stacks_node_rpc_url = "http://localhost:20443" +# but zmq can be used instead: +# bitcoind_zmq_url = "tcp://0.0.0.0:18543" + +[limits] +max_number_of_bitcoin_predicates = 100 +max_number_of_concurrent_bitcoin_scans = 100 +max_number_of_stacks_predicates = 10 +max_number_of_concurrent_stacks_scans = 10 +max_number_of_processing_threads = 16 +max_number_of_networking_threads = 16 +max_caching_memory_size_mb = 32000 + +[[event_source]] +tsv_file_url = "https://archive.hiro.so/mainnet/stacks-blockchain-api/mainnet-stacks-blockchain-api-latest" diff --git a/components/chainhook-cli/src/config/tests/fixtures/testnet_chainhook.toml b/components/chainhook-cli/src/config/tests/fixtures/testnet_chainhook.toml new file mode 100644 index 000000000..dc5c4b0ef --- /dev/null +++ b/components/chainhook-cli/src/config/tests/fixtures/testnet_chainhook.toml @@ -0,0 +1,35 @@ +[storage] +working_dir = "cache" + +# The Http Api allows you to register / deregister +# dynamically predicates. +# Disable by default. +# +# [http_api] +# http_port = 20456 +# database_uri = "redis://localhost:6379/" + +[network] +mode = "testnet" +bitcoind_rpc_url = "http://localhost:8332" +bitcoind_rpc_username = "devnet" +bitcoind_rpc_password = "devnet" +# Bitcoin block events can be received by Chainhook +# either through a Bitcoin node's ZeroMQ interface, +# or through the Stacks node. The Stacks node is +# used by default: +stacks_node_rpc_url = "http://localhost:20443" +# but zmq can be used instead: +# bitcoind_zmq_url = "tcp://0.0.0.0:18543" + +[limits] +max_number_of_bitcoin_predicates = 100 +max_number_of_concurrent_bitcoin_scans = 100 +max_number_of_stacks_predicates = 10 +max_number_of_concurrent_stacks_scans = 10 +max_number_of_processing_threads = 16 +max_number_of_networking_threads = 16 +max_caching_memory_size_mb = 32000 + +[[event_source]] +tsv_file_url = "https://archive.hiro.so/testnet/stacks-blockchain-api/testnet-stacks-blockchain-api-latest" diff --git a/components/chainhook-cli/src/config/tests/fixtures/unsupported_chainhook.toml b/components/chainhook-cli/src/config/tests/fixtures/unsupported_chainhook.toml new file mode 100644 index 000000000..835cac1e4 --- /dev/null +++ b/components/chainhook-cli/src/config/tests/fixtures/unsupported_chainhook.toml @@ -0,0 +1,35 @@ +[storage] +working_dir = "cache" + +# The Http Api allows you to register / deregister +# dynamically predicates. +# Disable by default. +# +# [http_api] +# http_port = 20456 +# database_uri = "redis://localhost:6379/" + +[network] +mode = "unsupported" +bitcoind_rpc_url = "http://localhost:8332" +bitcoind_rpc_username = "devnet" +bitcoind_rpc_password = "devnet" +# Bitcoin block events can be received by Chainhook +# either through a Bitcoin node's ZeroMQ interface, +# or through the Stacks node. The Stacks node is +# used by default: +stacks_node_rpc_url = "http://localhost:20443" +# but zmq can be used instead: +# bitcoind_zmq_url = "tcp://0.0.0.0:18543" + +[limits] +max_number_of_bitcoin_predicates = 100 +max_number_of_concurrent_bitcoin_scans = 100 +max_number_of_stacks_predicates = 10 +max_number_of_concurrent_stacks_scans = 10 +max_number_of_processing_threads = 16 +max_number_of_networking_threads = 16 +max_caching_memory_size_mb = 32000 + +[[event_source]] +tsv_file_url = "https://archive.hiro.so/regtest/stacks-blockchain-api/regtest-stacks-blockchain-api-latest" diff --git a/components/chainhook-cli/src/config/tests/mod.rs b/components/chainhook-cli/src/config/tests/mod.rs new file mode 100644 index 000000000..ec0701e4b --- /dev/null +++ b/components/chainhook-cli/src/config/tests/mod.rs @@ -0,0 +1,140 @@ +use std::path::PathBuf; + +use crate::config::{file::NetworkConfigMode, PredicatesApi, PredicatesApiConfig}; + +use super::{generator::generate_config, Config, ConfigFile, EventSourceConfig, PathConfig}; +use chainhook_sdk::types::{BitcoinNetwork, StacksNetwork}; +use test_case::test_case; + +const LOCAL_DIR: &str = env!("CARGO_MANIFEST_DIR"); +#[test_case(BitcoinNetwork::Regtest)] +#[test_case(BitcoinNetwork::Testnet)] +#[test_case(BitcoinNetwork::Mainnet)] +fn config_from_file_matches_generator_for_all_networks(network: BitcoinNetwork) { + let mode = NetworkConfigMode::from_bitcoin_network(&network); + let path = format!( + "{}/src/config/tests/fixtures/{}_chainhook.toml", + LOCAL_DIR, + mode.as_str() + ); + let from_path_config = Config::from_file_path(&path).unwrap(); + let generated_config_str = generate_config(&network); + let generated_config_file: ConfigFile = toml::from_str(&generated_config_str).unwrap(); + let generated_config = Config::from_config_file(generated_config_file).unwrap(); + assert_eq!(generated_config, from_path_config); +} + +#[test] +fn config_from_file_allows_local_tsv_file() { + let path = format!( + "{}/src/config/tests/fixtures/local_tsv_chainhook.toml", + LOCAL_DIR, + ); + + Config::from_file_path(&path).expect("failed to generate config with local tsv path"); +} + +#[test] +fn parse_config_from_file_rejects_config_with_unsupported_mode() { + let path = format!( + "{}/src/config/tests/fixtures/unsupported_chainhook.toml", + LOCAL_DIR + ); + Config::from_file_path(&path) + .expect_err("Did not reject unsupported network mode as expected."); +} + +#[test] +fn is_http_api_enabled_handles_both_modes() { + let mut config = Config::default(true, false, false, &None).unwrap(); + assert!(!config.is_http_api_enabled()); + config.http_api = PredicatesApi::On(PredicatesApiConfig { + http_port: 0, + database_uri: format!(""), + display_logs: false, + }); + assert!(config.is_http_api_enabled()); +} + +#[test] +fn should_download_remote_stacks_tsv_handles_both_modes() { + let url_src = EventSourceConfig::StacksTsvUrl(super::UrlConfig { + file_url: String::new(), + }); + let path_src = EventSourceConfig::StacksTsvPath(PathConfig { + file_path: PathBuf::new(), + }); + let mut config = Config::default(true, false, false, &None).unwrap(); + + config.event_sources = vec![url_src.clone(), path_src.clone()]; + assert_eq!(config.should_download_remote_stacks_tsv(), false); + + config.event_sources = vec![path_src.clone()]; + assert_eq!(config.should_download_remote_stacks_tsv(), false); + + config.event_sources = vec![]; + assert_eq!(config.should_download_remote_stacks_tsv(), false); + + config.event_sources = vec![url_src.clone()]; + assert_eq!(config.should_download_remote_stacks_tsv(), true); +} + +#[test] +#[should_panic(expected = "expected remote-tsv source")] +fn expected_remote_stacks_tsv_base_url_panics_if_missing() { + let url_src = EventSourceConfig::StacksTsvUrl(super::UrlConfig { + file_url: format!("test"), + }); + let mut config = Config::default(true, false, false, &None).unwrap(); + + config.event_sources = vec![url_src.clone()]; + assert_eq!(config.expected_remote_stacks_tsv_base_url(), "test"); + + config.event_sources = vec![]; + config.expected_remote_stacks_tsv_base_url(); +} + +#[test] +#[should_panic(expected = "expected local-tsv source")] +fn expected_local_stacks_tsv_base_url_panics_if_missing() { + let path = PathBuf::from("test"); + let path_src = EventSourceConfig::StacksTsvPath(PathConfig { + file_path: path.clone(), + }); + let mut config = Config::default(true, false, false, &None).unwrap(); + + config.event_sources = vec![path_src.clone()]; + assert_eq!(config.expected_local_stacks_tsv_file(), &path); + + config.event_sources = vec![]; + config.expected_local_stacks_tsv_file(); +} + +#[test] +fn add_local_stacks_tsv_source_allows_adding_src() { + let mut config = Config::default(true, false, false, &None).unwrap(); + assert_eq!(config.event_sources.len(), 0); + let path = PathBuf::from("test"); + config.add_local_stacks_tsv_source(&path); + assert_eq!(config.event_sources.len(), 1); +} +#[test] +fn it_has_default_config_for_each_network() { + let config = Config::default(true, false, false, &None).unwrap(); + assert_eq!(config.network.bitcoin_network, BitcoinNetwork::Regtest); + assert_eq!(config.network.stacks_network, StacksNetwork::Devnet); + let config = Config::default(false, true, false, &None).unwrap(); + assert_eq!(config.network.bitcoin_network, BitcoinNetwork::Testnet); + assert_eq!(config.network.stacks_network, StacksNetwork::Testnet); + let config = Config::default(false, false, true, &None).unwrap(); + assert_eq!(config.network.bitcoin_network, BitcoinNetwork::Mainnet); + assert_eq!(config.network.stacks_network, StacksNetwork::Mainnet); + let path = format!( + "{}/src/config/tests/fixtures/devnet_chainhook.toml", + LOCAL_DIR + ); + let config = Config::default(false, false, false, &Some(path)).unwrap(); + assert_eq!(config.network.bitcoin_network, BitcoinNetwork::Regtest); + assert_eq!(config.network.stacks_network, StacksNetwork::Devnet); + Config::default(true, true, false, &None).expect_err("expected invalid combination error"); +} diff --git a/components/chainhook-cli/src/scan/bitcoin.rs b/components/chainhook-cli/src/scan/bitcoin.rs index efde5522b..3ca2f4201 100644 --- a/components/chainhook-cli/src/scan/bitcoin.rs +++ b/components/chainhook-cli/src/scan/bitcoin.rs @@ -1,7 +1,7 @@ use crate::config::{Config, PredicatesApi}; use crate::service::{ - open_readwrite_predicates_db_conn_or_panic, update_predicate_status, PredicateStatus, - ScanningData, + open_readwrite_predicates_db_conn_or_panic, set_confirmed_expiration_status, + set_predicate_scanning_status, set_unconfirmed_expiration_status, ScanningData, }; use chainhook_sdk::bitcoincore_rpc::RpcApi; use chainhook_sdk::bitcoincore_rpc::{Auth, Client}; @@ -14,18 +14,20 @@ use chainhook_sdk::indexer; use chainhook_sdk::indexer::bitcoin::{ build_http_client, download_and_parse_block_with_retry, retrieve_block_hash_with_retry, }; +use chainhook_sdk::indexer::fork_scratch_pad::CONFIRMED_SEGMENT_MINIMUM_LENGTH; use chainhook_sdk::observer::{gather_proofs, EventObserverConfig}; use chainhook_sdk::types::{ - BitcoinBlockData, BitcoinChainEvent, BitcoinChainUpdatedWithBlocksData, + BitcoinBlockData, BitcoinChainEvent, BitcoinChainUpdatedWithBlocksData, BlockIdentifier, Chain, }; use chainhook_sdk::utils::{file_append, send_request, BlockHeights, Context}; use std::collections::HashMap; pub async fn scan_bitcoin_chainstate_via_rpc_using_predicate( predicate_spec: &BitcoinChainhookSpecification, + unfinished_scan_data: Option, config: &Config, ctx: &Context, -) -> Result<(), String> { +) -> Result { let auth = Auth::UserPass( config.network.bitcoind_rpc_username.clone(), config.network.bitcoind_rpc_password.clone(), @@ -40,10 +42,16 @@ pub async fn scan_bitcoin_chainstate_via_rpc_using_predicate( let mut floating_end_block = false; let mut block_heights_to_scan = if let Some(ref blocks) = predicate_spec.blocks { + // todo: if a user provides a number of blocks where start_block + blocks > chain tip, + // the predicate will fail to scan all blocks. we should calculate a valid end_block and + // switch to streaming mode at some point BlockHeights::Blocks(blocks.clone()).get_sorted_entries() } else { let start_block = match predicate_spec.start_block { - Some(start_block) => start_block, + Some(start_block) => match &unfinished_scan_data { + Some(scan_data) => scan_data.last_evaluated_block_height, + None => start_block, + }, None => { return Err( "Bitcoin chainhook specification must include a field start_block in replay mode" @@ -51,35 +59,59 @@ pub async fn scan_bitcoin_chainstate_via_rpc_using_predicate( ); } }; - let (end_block, update_end_block) = match predicate_spec.end_block { - Some(end_block) => (end_block, false), - None => match bitcoin_rpc.get_blockchain_info() { - Ok(result) => (result.blocks - 1, true), - Err(e) => { - return Err(format!( - "unable to retrieve Bitcoin chain tip ({})", - e.to_string() - )); + let (end_block, update_end_block) = match bitcoin_rpc.get_blockchain_info() { + Ok(result) => match predicate_spec.end_block { + Some(end_block) => { + if end_block > result.blocks { + (result.blocks, true) + } else { + (end_block, false) + } } + None => (result.blocks, true), }, + Err(e) => { + return Err(format!( + "unable to retrieve Bitcoin chain tip ({})", + e.to_string() + )); + } }; floating_end_block = update_end_block; BlockHeights::BlockRange(start_block, end_block).get_sorted_entries() }; + let mut predicates_db_conn = match config.http_api { + PredicatesApi::On(ref api_config) => { + Some(open_readwrite_predicates_db_conn_or_panic(api_config, ctx)) + } + PredicatesApi::Off => None, + }; + info!( ctx.expect_logger(), "Starting predicate evaluation on Bitcoin blocks", ); + let mut last_block_scanned = BlockIdentifier::default(); let mut actions_triggered = 0; let mut err_count = 0; let event_observer_config = config.get_event_observer_config(); let bitcoin_config = event_observer_config.get_bitcoin_config(); - let number_of_blocks_to_scan = block_heights_to_scan.len() as u64; - let mut number_of_blocks_scanned = 0; - let mut number_of_blocks_sent = 0u64; + + let (mut number_of_blocks_to_scan, mut number_of_blocks_scanned, mut number_of_times_triggered) = { + let number_of_blocks_to_scan = block_heights_to_scan.len() as u64; + match &unfinished_scan_data { + Some(scan_data) => ( + scan_data.number_of_blocks_to_scan, + scan_data.number_of_blocks_evaluated, + scan_data.number_of_times_triggered, + ), + None => (number_of_blocks_to_scan, 0, 0u64), + } + }; + let mut last_scanned_block_confirmations = 0; let http_client = build_http_client(); while let Some(current_block_height) = block_heights_to_scan.pop_front() { @@ -95,6 +127,7 @@ pub async fn scan_bitcoin_chainstate_via_rpc_using_predicate( let block_breakdown = download_and_parse_block_with_retry(&http_client, &block_hash, &bitcoin_config, ctx) .await?; + last_scanned_block_confirmations = block_breakdown.confirmations; let block = match indexer::bitcoin::standardize_bitcoin_block( block_breakdown, &event_observer_config.bitcoin_network, @@ -104,13 +137,14 @@ pub async fn scan_bitcoin_chainstate_via_rpc_using_predicate( Err((e, _)) => { warn!( ctx.expect_logger(), - "Unable to standardize block#{} {}: {}", current_block_height, block_hash, e + "Unable to standardize block #{} {}: {}", current_block_height, block_hash, e ); continue; } }; + last_block_scanned = block.block_identifier.clone(); - match process_block_with_predicates( + let res = match process_block_with_predicates( block, &vec![&predicate_spec], &event_observer_config, @@ -120,47 +154,63 @@ pub async fn scan_bitcoin_chainstate_via_rpc_using_predicate( { Ok(actions) => { if actions > 0 { - number_of_blocks_sent += 1; + number_of_times_triggered += 1; } - actions_triggered += actions + actions_triggered += actions; + Ok(()) } - Err(_) => err_count += 1, - } + Err(e) => { + err_count += 1; + Err(e) + } + }; if err_count >= 3 { - return Err(format!("Scan aborted (consecutive action errors >= 3)")); + if res.is_err() { + return Err(format!( + "Scan aborted (consecutive action errors >= 3): {}", + res.unwrap_err() + )); + } else { + return Err(format!("Scan aborted (consecutive action errors >= 3)")); + } } - if let PredicatesApi::On(ref api_config) = config.http_api { - if number_of_blocks_scanned % 50 == 0 { - let status = PredicateStatus::Scanning(ScanningData { + if let Some(ref mut predicates_db_conn) = predicates_db_conn { + if number_of_blocks_scanned % 10 == 0 || number_of_blocks_scanned == 1 { + set_predicate_scanning_status( + &predicate_spec.key(), number_of_blocks_to_scan, number_of_blocks_scanned, - number_of_blocks_sent, + number_of_times_triggered, current_block_height, - }); - let mut predicates_db_conn = - open_readwrite_predicates_db_conn_or_panic(api_config, &ctx); - update_predicate_status( - &predicate_spec.key(), - status, - &mut predicates_db_conn, - &ctx, - ) + predicates_db_conn, + ctx, + ); } } if block_heights_to_scan.is_empty() && floating_end_block { - match bitcoin_rpc.get_blockchain_info() { - Ok(result) => { - for entry in (current_block_height + 1)..result.blocks { - block_heights_to_scan.push_back(entry); + let new_tip = match bitcoin_rpc.get_blockchain_info() { + Ok(result) => match predicate_spec.end_block { + Some(end_block) => { + if end_block > result.blocks { + result.blocks + } else { + end_block + } } - } + None => result.blocks, + }, Err(_e) => { continue; } }; + + for entry in (current_block_height + 1)..new_tip { + block_heights_to_scan.push_back(entry); + } + number_of_blocks_to_scan += block_heights_to_scan.len() as u64; } } info!( @@ -168,18 +218,37 @@ pub async fn scan_bitcoin_chainstate_via_rpc_using_predicate( "{number_of_blocks_scanned} blocks scanned, {actions_triggered} actions triggered" ); - if let PredicatesApi::On(ref api_config) = config.http_api { - let status = PredicateStatus::Scanning(ScanningData { + if let Some(ref mut predicates_db_conn) = predicates_db_conn { + set_predicate_scanning_status( + &predicate_spec.key(), number_of_blocks_to_scan, number_of_blocks_scanned, - number_of_blocks_sent, - current_block_height: 0, - }); - let mut predicates_db_conn = open_readwrite_predicates_db_conn_or_panic(api_config, &ctx); - update_predicate_status(&predicate_spec.key(), status, &mut predicates_db_conn, &ctx) + number_of_times_triggered, + last_block_scanned.index, + predicates_db_conn, + ctx, + ); + if let Some(predicate_end_block) = predicate_spec.end_block { + if predicate_end_block == last_block_scanned.index { + // todo: we need to find a way to check if this block is confirmed + // and if so, set the status to confirmed expiration + set_unconfirmed_expiration_status( + &Chain::Bitcoin, + number_of_blocks_scanned, + predicate_end_block, + &predicate_spec.key(), + predicates_db_conn, + ctx, + ); + if last_scanned_block_confirmations >= CONFIRMED_SEGMENT_MINIMUM_LENGTH { + set_confirmed_expiration_status(&predicate_spec.key(), predicates_db_conn, ctx); + } + return Ok(true); + } + } } - Ok(()) + return Ok(false); } pub async fn process_block_with_predicates( @@ -187,14 +256,14 @@ pub async fn process_block_with_predicates( predicates: &Vec<&BitcoinChainhookSpecification>, event_observer_config: &EventObserverConfig, ctx: &Context, -) -> Result { +) -> Result { let chain_event = BitcoinChainEvent::ChainUpdatedWithBlocks(BitcoinChainUpdatedWithBlocksData { new_blocks: vec![block], confirmed_blocks: vec![], }); - let (predicates_triggered, _predicates_evaluated) = + let (predicates_triggered, _predicates_evaluated, _predicates_expired) = evaluate_bitcoin_chainhooks_on_chain_event(&chain_event, predicates, ctx); execute_predicates_action(predicates_triggered, &event_observer_config, &ctx).await @@ -204,7 +273,7 @@ pub async fn execute_predicates_action<'a>( hits: Vec>, config: &EventObserverConfig, ctx: &Context, -) -> Result { +) -> Result { let mut actions_triggered = 0; let mut proofs = HashMap::new(); for trigger in hits.into_iter() { @@ -219,12 +288,12 @@ pub async fn execute_predicates_action<'a>( actions_triggered += 1; match action { BitcoinChainhookOccurrence::Http(request) => { - send_request(request, 3, 1, &ctx).await? + send_request(request, 10, 3, &ctx).await? } BitcoinChainhookOccurrence::File(path, bytes) => { file_append(path, bytes, &ctx)? } - BitcoinChainhookOccurrence::Data(_payload) => unreachable!(), + BitcoinChainhookOccurrence::Data(_payload) => {} }; } } diff --git a/components/chainhook-cli/src/scan/stacks.rs b/components/chainhook-cli/src/scan/stacks.rs index e8db01c85..1341f73c4 100644 --- a/components/chainhook-cli/src/scan/stacks.rs +++ b/components/chainhook-cli/src/scan/stacks.rs @@ -4,8 +4,8 @@ use crate::{ archive::download_stacks_dataset_if_required, config::{Config, PredicatesApi}, service::{ - open_readwrite_predicates_db_conn_or_panic, update_predicate_status, PredicateStatus, - ScanningData, + open_readwrite_predicates_db_conn_or_panic, set_confirmed_expiration_status, + set_predicate_scanning_status, set_unconfirmed_expiration_status, ScanningData, }, storage::{ get_last_block_height_inserted, get_last_unconfirmed_block_height_inserted, @@ -13,7 +13,7 @@ use crate::{ open_readwrite_stacks_db_conn, }, }; -use chainhook_sdk::types::BlockIdentifier; +use chainhook_sdk::types::{BlockIdentifier, Chain}; use chainhook_sdk::{ chainhooks::stacks::evaluate_stacks_chainhook_on_blocks, indexer::{self, stacks::standardize_stacks_serialized_block_header, Indexer}, @@ -36,7 +36,7 @@ pub enum DigestingCommand { Terminate, } -#[derive(Debug, Deserialize)] +#[derive(Debug, Deserialize, Serialize)] pub struct Record { pub id: u64, pub created_at: String, @@ -44,7 +44,7 @@ pub struct Record { pub blob: Option, } -#[derive(Debug, Deserialize)] +#[derive(Debug, Deserialize, Serialize)] pub enum RecordKind { #[serde(rename = "/new_block")] StacksBlockReceived, @@ -145,17 +145,21 @@ pub async fn get_canonical_fork_from_tsv( pub async fn scan_stacks_chainstate_via_rocksdb_using_predicate( predicate_spec: &StacksChainhookSpecification, + unfinished_scan_data: Option, stacks_db_conn: &DB, config: &Config, ctx: &Context, -) -> Result { +) -> Result<(BlockIdentifier, bool), String> { let mut floating_end_block = false; let mut block_heights_to_scan = if let Some(ref blocks) = predicate_spec.blocks { BlockHeights::Blocks(blocks.clone()).get_sorted_entries() } else { let start_block = match predicate_spec.start_block { - Some(start_block) => start_block, + Some(start_block) => match &unfinished_scan_data { + Some(scan_data) => scan_data.last_evaluated_block_height, + None => start_block, + }, None => { return Err( "Chainhook specification must include fields 'start_block' when using the scan command" @@ -165,7 +169,31 @@ pub async fn scan_stacks_chainstate_via_rocksdb_using_predicate( }; let (end_block, update_end_block) = match predicate_spec.end_block { - Some(end_block) => (end_block, false), + Some(end_block) => { + // if the user provided an end block that is above the chain tip, we'll + // only scan up to the chain tip, then go to streaming mode + match get_last_unconfirmed_block_height_inserted(stacks_db_conn, ctx) { + Some(chain_tip) => { + if end_block > chain_tip { + (chain_tip, true) + } else { + (end_block, false) + } + } + None => match get_last_block_height_inserted(stacks_db_conn, ctx) { + Some(chain_tip) => { + if end_block > chain_tip { + (chain_tip, true) + } else { + (end_block, false) + } + } + None => { + return Err("Chainhook specification must include fields 'end_block' when using the scan command".into()); + } + }, + } + } None => match get_last_unconfirmed_block_height_inserted(stacks_db_conn, ctx) { Some(end_block) => (end_block, true), None => match get_last_block_height_inserted(stacks_db_conn, ctx) { @@ -192,16 +220,24 @@ pub async fn scan_stacks_chainstate_via_rocksdb_using_predicate( }; let proofs = HashMap::new(); - let mut blocks_scanned = 0; info!( ctx.expect_logger(), "Starting predicate evaluation on Stacks blocks" ); let mut last_block_scanned = BlockIdentifier::default(); let mut err_count = 0; - let number_of_blocks_to_scan = block_heights_to_scan.len() as u64; - let mut number_of_blocks_scanned = 0; - let mut number_of_blocks_sent = 0u64; + + let (mut number_of_blocks_to_scan, mut number_of_blocks_scanned, mut number_of_times_triggered) = { + let number_of_blocks_to_scan = block_heights_to_scan.len() as u64; + match &unfinished_scan_data { + Some(scan_data) => ( + scan_data.number_of_blocks_to_scan, + scan_data.number_of_blocks_evaluated, + scan_data.number_of_times_triggered, + ), + None => (number_of_blocks_to_scan, 0, 0u64), + } + }; while let Some(current_block_height) = block_heights_to_scan.pop_front() { number_of_blocks_scanned += 1; @@ -231,11 +267,11 @@ pub async fn scan_stacks_chainstate_via_rocksdb_using_predicate( } }; last_block_scanned = block_data.block_identifier.clone(); - blocks_scanned += 1; let blocks: Vec<&dyn AbstractStacksBlock> = vec![&block_data]; - let hits_per_blocks = evaluate_stacks_chainhook_on_blocks(blocks, &predicate_spec, ctx); + let (hits_per_blocks, _predicates_expired) = + evaluate_stacks_chainhook_on_blocks(blocks, &predicate_spec, ctx); if hits_per_blocks.is_empty() { continue; } @@ -245,47 +281,82 @@ pub async fn scan_stacks_chainstate_via_rocksdb_using_predicate( apply: hits_per_blocks, rollback: vec![], }; - match handle_stacks_hook_action(trigger, &proofs, &ctx) { + let res = match handle_stacks_hook_action(trigger, &proofs, &ctx) { Err(e) => { error!(ctx.expect_logger(), "unable to handle action {}", e); + Ok(()) // todo: should this error increment our err_count? } Ok(action) => { - number_of_blocks_sent += 1; + number_of_times_triggered += 1; let res = match action { StacksChainhookOccurrence::Http(request) => { send_request(request, 3, 1, &ctx).await } StacksChainhookOccurrence::File(path, bytes) => file_append(path, bytes, &ctx), - StacksChainhookOccurrence::Data(_payload) => unreachable!(), + StacksChainhookOccurrence::Data(_payload) => Ok(()), }; - if res.is_err() { - err_count += 1; - } else { - err_count = 0; + match res { + Err(e) => { + err_count += 1; + Err(e) + } + Ok(_) => { + err_count = 0; + Ok(()) + } } } - } + }; // We abort after 3 consecutive errors if err_count >= 3 { - return Err(format!("Scan aborted (consecutive action errors >= 3)")); + if res.is_err() { + return Err(format!( + "Scan aborted (consecutive action errors >= 3): {}", + res.unwrap_err() + )); + } else { + return Err(format!("Scan aborted (consecutive action errors >= 3)")); + } } if let Some(ref mut predicates_db_conn) = predicates_db_conn { - if blocks_scanned % 5000 == 0 { - let status = PredicateStatus::Scanning(ScanningData { + if number_of_blocks_scanned % 10 == 0 || number_of_blocks_scanned == 1 { + set_predicate_scanning_status( + &predicate_spec.key(), number_of_blocks_to_scan, number_of_blocks_scanned, - number_of_blocks_sent, + number_of_times_triggered, current_block_height, - }); - update_predicate_status(&predicate_spec.key(), status, predicates_db_conn, &ctx) + predicates_db_conn, + ctx, + ); } } // Update end_block, in case a new block was discovered during the scan if block_heights_to_scan.is_empty() && floating_end_block { let new_tip = match predicate_spec.end_block { - Some(end_block) => end_block, + Some(end_block) => { + match get_last_unconfirmed_block_height_inserted(stacks_db_conn, ctx) { + Some(chain_tip) => { + if end_block > chain_tip { + chain_tip + } else { + end_block + } + } + None => match get_last_block_height_inserted(stacks_db_conn, ctx) { + Some(chain_tip) => { + if end_block > chain_tip { + chain_tip + } else { + end_block + } + } + None => current_block_height, + }, + } + } None => match get_last_unconfirmed_block_height_inserted(stacks_db_conn, ctx) { Some(end_block) => end_block, None => match get_last_block_height_inserted(stacks_db_conn, ctx) { @@ -297,23 +368,61 @@ pub async fn scan_stacks_chainstate_via_rocksdb_using_predicate( for entry in (current_block_height + 1)..=new_tip { block_heights_to_scan.push_back(entry); } + number_of_blocks_to_scan += block_heights_to_scan.len() as u64; } } info!( ctx.expect_logger(), - "{blocks_scanned} blocks scanned, {number_of_blocks_sent} blocks triggering predicate" + "{number_of_blocks_scanned} blocks scanned, {number_of_times_triggered} blocks triggering predicate" ); if let Some(ref mut predicates_db_conn) = predicates_db_conn { - let status = PredicateStatus::Scanning(ScanningData { + set_predicate_scanning_status( + &predicate_spec.key(), number_of_blocks_to_scan, number_of_blocks_scanned, - number_of_blocks_sent, - current_block_height: 0, - }); - update_predicate_status(&predicate_spec.key(), status, predicates_db_conn, &ctx) + number_of_times_triggered, + last_block_scanned.index, + predicates_db_conn, + ctx, + ); + if let Some(predicate_end_block) = predicate_spec.end_block { + if predicate_end_block == last_block_scanned.index { + let is_confirmed = match get_stacks_block_at_block_height( + predicate_end_block, + true, + 3, + stacks_db_conn, + ) { + Ok(block) => match block { + Some(_) => true, + None => false, + }, + Err(e) => { + warn!( + ctx.expect_logger(), + "Failed to get stacks block for status update: {}", + e.to_string() + ); + false + } + }; + set_unconfirmed_expiration_status( + &Chain::Stacks, + number_of_blocks_scanned, + predicate_end_block, + &predicate_spec.key(), + predicates_db_conn, + ctx, + ); + if is_confirmed { + set_confirmed_expiration_status(&predicate_spec.key(), predicates_db_conn, ctx); + } + return Ok((last_block_scanned, true)); + } + } } - Ok(last_block_scanned) + Ok((last_block_scanned, false)) } pub async fn scan_stacks_chainstate_via_csv_using_predicate( @@ -374,7 +483,8 @@ pub async fn scan_stacks_chainstate_via_csv_using_predicate( let blocks: Vec<&dyn AbstractStacksBlock> = vec![&block_data]; - let hits_per_blocks = evaluate_stacks_chainhook_on_blocks(blocks, &predicate_spec, ctx); + let (hits_per_blocks, _predicates_expired) = + evaluate_stacks_chainhook_on_blocks(blocks, &predicate_spec, ctx); if hits_per_blocks.is_empty() { continue; } @@ -392,7 +502,7 @@ pub async fn scan_stacks_chainstate_via_csv_using_predicate( occurrences_found += 1; let res = match action { StacksChainhookOccurrence::Http(request) => { - send_request(request, 3, 1, &ctx).await + send_request(request, 10, 3, &ctx).await } StacksChainhookOccurrence::File(path, bytes) => file_append(path, bytes, &ctx), StacksChainhookOccurrence::Data(_payload) => unreachable!(), diff --git a/components/chainhook-cli/src/service/http_api.rs b/components/chainhook-cli/src/service/http_api.rs index 2951be54d..191a33a7c 100644 --- a/components/chainhook-cli/src/service/http_api.rs +++ b/components/chainhook-cli/src/service/http_api.rs @@ -102,7 +102,7 @@ fn handle_get_predicates( let serialized_predicates = predicates .iter() - .map(|(p, _)| p.into_serialized_json()) + .map(|(p, s)| serialized_predicate_with_status(p, s)) .collect::>(); Json(json!({ @@ -194,36 +194,22 @@ fn handle_get_predicate( match open_readwrite_predicates_db_conn(api_config) { Ok(mut predicates_db_conn) => { - let entry = match get_entry_from_predicates_db( + let (predicate, status) = match get_entry_from_predicates_db( &ChainhookSpecification::either_stx_or_btc_key(&predicate_uuid), &mut predicates_db_conn, &ctx, ) { - Ok(Some((ChainhookSpecification::Stacks(spec), status))) => json!({ - "chain": "stacks", - "uuid": spec.uuid, - "network": spec.network, - "predicate": spec.predicate, - "status": status, - "enabled": spec.enabled, - }), - Ok(Some((ChainhookSpecification::Bitcoin(spec), status))) => json!({ - "chain": "bitcoin", - "uuid": spec.uuid, - "network": spec.network, - "predicate": spec.predicate, - "status": status, - "enabled": spec.enabled, - }), + Ok(Some(predicate_with_status)) => predicate_with_status, _ => { return Json(json!({ "status": 404, })) } }; + let result = serialized_predicate_with_status(&predicate, &status); Json(json!({ "status": 200, - "result": entry + "result": result })) } Err(e) => Json(json!({ @@ -362,7 +348,7 @@ pub fn load_predicates_from_redis( ctx: &Context, ) -> Result, String> { let redis_uri: &str = config.expected_api_database_uri(); - let client = redis::Client::open(redis_uri.clone()) + let client = redis::Client::open(redis_uri) .map_err(|e| format!("unable to connect to redis: {}", e.to_string()))?; let mut predicate_db_conn = client .get_connection() @@ -387,3 +373,27 @@ pub fn get_routes_spec() -> (Vec, OpenApi) { handle_delete_stacks_predicate ] } + +fn serialized_predicate_with_status( + predicate: &ChainhookSpecification, + status: &PredicateStatus, +) -> JsonValue { + match (predicate, status) { + (ChainhookSpecification::Stacks(spec), status) => json!({ + "chain": "stacks", + "uuid": spec.uuid, + "network": spec.network, + "predicate": spec.predicate, + "status": status, + "enabled": spec.enabled, + }), + (ChainhookSpecification::Bitcoin(spec), status) => json!({ + "chain": "bitcoin", + "uuid": spec.uuid, + "network": spec.network, + "predicate": spec.predicate, + "status": status, + "enabled": spec.enabled, + }), + } +} diff --git a/components/chainhook-cli/src/service/mod.rs b/components/chainhook-cli/src/service/mod.rs index 2016c5179..8e387d02e 100644 --- a/components/chainhook-cli/src/service/mod.rs +++ b/components/chainhook-cli/src/service/mod.rs @@ -12,12 +12,18 @@ use crate::storage::{ use chainhook_sdk::chainhooks::types::{ChainhookConfig, ChainhookFullSpecification}; use chainhook_sdk::chainhooks::types::ChainhookSpecification; -use chainhook_sdk::observer::{start_event_observer, ObserverEvent}; -use chainhook_sdk::types::StacksChainEvent; +use chainhook_sdk::observer::{ + start_event_observer, HookExpirationData, ObserverCommand, ObserverEvent, + PredicateEvaluationReport, +}; +use chainhook_sdk::types::{Chain, StacksChainEvent}; use chainhook_sdk::utils::Context; use redis::{Commands, Connection}; use std::sync::mpsc::channel; +use std::time::{SystemTime, UNIX_EPOCH}; + +use self::http_api::get_entry_from_predicates_db; pub struct Service { config: Config, @@ -29,11 +35,17 @@ impl Service { Self { config, ctx } } - pub async fn run(&mut self, predicates: Vec) -> Result<(), String> { + pub async fn run( + &mut self, + predicates_from_startup: Vec, + ) -> Result<(), String> { let mut chainhook_config = ChainhookConfig::new(); - // If no predicates passed at launch, retrieve predicates from Redis - if predicates.is_empty() && self.config.is_http_api_enabled() { + // store all predicates from Redis that were in the process of scanning when + // chainhook was shutdown - we need to resume where we left off + let mut leftover_scans = vec![]; + // retrieve predicates from Redis, and register each in memory + if self.config.is_http_api_enabled() { let registered_predicates = match load_predicates_from_redis(&self.config, &self.ctx) { Ok(predicates) => predicates, Err(e) => { @@ -45,8 +57,33 @@ impl Service { vec![] } }; - for (predicate, _status) in registered_predicates.into_iter() { + for (predicate, status) in registered_predicates.into_iter() { let predicate_uuid = predicate.uuid().to_string(); + match status { + PredicateStatus::Scanning(scanning_data) => { + leftover_scans.push((predicate.clone(), Some(scanning_data))); + } + PredicateStatus::New => { + leftover_scans.push((predicate.clone(), None)); + } + // predicates that were previously in a streaming state probably + // need to catch up on blocks + PredicateStatus::Streaming(streaming_data) => { + let scanning_data = ScanningData { + number_of_blocks_to_scan: 0, // this is the only data we don't know when converting from streaming => scanning + number_of_blocks_evaluated: streaming_data.number_of_blocks_evaluated, + number_of_times_triggered: streaming_data.number_of_times_triggered, + last_occurrence: streaming_data.last_occurrence, + last_evaluated_block_height: streaming_data.last_evaluated_block_height, + }; + leftover_scans.push((predicate.clone(), Some(scanning_data))); + } + PredicateStatus::UnconfirmedExpiration(_) => {} + PredicateStatus::ConfirmedExpiration(_) | PredicateStatus::Interrupted(_) => { + // Confirmed and Interrupted predicates don't need to be reregistered. + continue; + } + } match chainhook_config.register_specification(predicate) { Ok(_) => { info!( @@ -65,8 +102,28 @@ impl Service { } } + let mut newly_registered_predicates = vec![]; // For each predicate found, register in memory. - for predicate in predicates.into_iter() { + for predicate in predicates_from_startup.into_iter() { + if let PredicatesApi::On(api_config) = &self.config.http_api { + if let Ok(mut predicates_db_conn) = open_readwrite_predicates_db_conn(api_config) { + let uuid = predicate.get_uuid(); + match get_entry_from_predicates_db( + &ChainhookSpecification::either_stx_or_btc_key(&uuid), + &mut predicates_db_conn, + &self.ctx, + ) { + Ok(Some(_)) => { + error!( + self.ctx.expect_logger(), + "Predicate uuid already in use: {uuid}", + ); + continue; + } + _ => {} + } + }; + } match chainhook_config.register_full_specification( ( &self.config.network.bitcoin_network, @@ -75,6 +132,7 @@ impl Service { predicate, ) { Ok(spec) => { + newly_registered_predicates.push(spec.clone()); info!( self.ctx.expect_logger(), "Predicate {} retrieved from config and loaded", @@ -137,7 +195,8 @@ impl Service { .expect("unable to spawn thread"); // Enable HTTP Predicates API, if required - if let PredicatesApi::On(ref api_config) = self.config.http_api { + let config = self.config.clone(); + if let PredicatesApi::On(ref api_config) = config.http_api { info!( self.ctx.expect_logger(), "Listening on port {} for chainhook predicate registrations", api_config.http_port @@ -152,16 +211,43 @@ impl Service { }); } + let observer_event_tx_moved = observer_event_tx.clone(); + let moved_observer_command_tx = observer_command_tx.clone(); let _ = start_event_observer( event_observer_config.clone(), - observer_command_tx, + moved_observer_command_tx, observer_command_rx, - Some(observer_event_tx), + Some(observer_event_tx_moved), None, self.ctx.clone(), ); let mut stacks_event = 0; + + let ctx = self.ctx.clone(); + match self.config.http_api { + PredicatesApi::On(ref api_config) => { + // Test redis connection + open_readwrite_predicates_db_conn(api_config)?; + } + PredicatesApi::Off => {} + }; + + for predicate_with_last_scanned_block in leftover_scans { + match predicate_with_last_scanned_block { + (ChainhookSpecification::Stacks(spec), last_scanned_block) => { + let _ = stacks_scan_op_tx.send((spec, last_scanned_block)); + } + (ChainhookSpecification::Bitcoin(spec), last_scanned_block) => { + let _ = bitcoin_scan_op_tx.send((spec, last_scanned_block)); + } + } + } + + for new_predicate in newly_registered_predicates { + let _ = observer_event_tx.send(ObserverEvent::PredicateRegistered(new_predicate)); + } + loop { let event = match observer_event_rx.recv() { Ok(cmd) => cmd, @@ -180,17 +266,10 @@ impl Service { // If no start block specified, depending on the nature the hook, we'd like to retrieve: // - contract-id if let PredicatesApi::On(ref config) = self.config.http_api { - let mut predicates_db_conn = match open_readwrite_predicates_db_conn(config) - { - Ok(con) => con, - Err(e) => { - error!( - self.ctx.expect_logger(), - "unable to register predicate: {}", - e.to_string() - ); - continue; - } + let Ok(mut predicates_db_conn) = + open_readwrite_predicates_db_conn_verbose(&config, &ctx) + else { + continue; }; update_predicate_spec( &spec.key(), @@ -200,33 +279,26 @@ impl Service { ); update_predicate_status( &spec.key(), - PredicateStatus::Disabled, + PredicateStatus::New, &mut predicates_db_conn, &self.ctx, ); } match spec { ChainhookSpecification::Stacks(predicate_spec) => { - let _ = stacks_scan_op_tx.send(predicate_spec); + let _ = stacks_scan_op_tx.send((predicate_spec, None)); } ChainhookSpecification::Bitcoin(predicate_spec) => { - let _ = bitcoin_scan_op_tx.send(predicate_spec); + let _ = bitcoin_scan_op_tx.send((predicate_spec, None)); } } } ObserverEvent::PredicateEnabled(spec) => { if let PredicatesApi::On(ref config) = self.config.http_api { - let mut predicates_db_conn = match open_readwrite_predicates_db_conn(config) - { - Ok(con) => con, - Err(e) => { - error!( - self.ctx.expect_logger(), - "unable to enable predicate: {}", - e.to_string() - ); - continue; - } + let Ok(mut predicates_db_conn) = + open_readwrite_predicates_db_conn_verbose(&config, &ctx) + else { + continue; }; update_predicate_spec( &spec.key(), @@ -234,27 +306,20 @@ impl Service { &mut predicates_db_conn, &self.ctx, ); - update_predicate_status( + set_predicate_streaming_status( + StreamingDataType::FinishedScanning, &spec.key(), - PredicateStatus::InitialScanCompleted, &mut predicates_db_conn, - &self.ctx, + &ctx, ); } } ObserverEvent::PredicateDeregistered(spec) => { if let PredicatesApi::On(ref config) = self.config.http_api { - let mut predicates_db_conn = match open_readwrite_predicates_db_conn(config) - { - Ok(con) => con, - Err(e) => { - error!( - self.ctx.expect_logger(), - "unable to deregister predicate: {}", - e.to_string() - ); - continue; - } + let Ok(mut predicates_db_conn) = + open_readwrite_predicates_db_conn_verbose(&config, &ctx) + else { + continue; }; let predicate_key = spec.key(); let res: Result<(), redis::RedisError> = @@ -268,8 +333,80 @@ impl Service { } } } - ObserverEvent::BitcoinChainEvent((_chain_update, _report)) => { + ObserverEvent::BitcoinChainEvent((chain_update, report)) => { debug!(self.ctx.expect_logger(), "Bitcoin update not stored"); + if let PredicatesApi::On(ref config) = self.config.http_api { + let Ok(mut predicates_db_conn) = + open_readwrite_predicates_db_conn_verbose(&config, &ctx) + else { + continue; + }; + + match chain_update { + chainhook_sdk::types::BitcoinChainEvent::ChainUpdatedWithBlocks( + data, + ) => { + for confirmed_block in &data.confirmed_blocks { + match expire_predicates_for_block( + &Chain::Bitcoin, + confirmed_block.block_identifier.index, + &mut predicates_db_conn, + &ctx, + ) { + Some(expired_predicate_uuids) => { + for uuid in expired_predicate_uuids.into_iter() { + let _ = observer_command_tx.send( + ObserverCommand::ExpireBitcoinPredicate( + HookExpirationData { + hook_uuid: uuid, + block_height: confirmed_block + .block_identifier + .index, + }, + ), + ); + } + } + None => {} + } + } + } + chainhook_sdk::types::BitcoinChainEvent::ChainUpdatedWithReorg( + data, + ) => { + for confirmed_block in &data.confirmed_blocks { + match expire_predicates_for_block( + &Chain::Bitcoin, + confirmed_block.block_identifier.index, + &mut predicates_db_conn, + &ctx, + ) { + Some(expired_predicate_uuids) => { + for uuid in expired_predicate_uuids.into_iter() { + let _ = observer_command_tx.send( + ObserverCommand::ExpireBitcoinPredicate( + HookExpirationData { + hook_uuid: uuid, + block_height: confirmed_block + .block_identifier + .index, + }, + ), + ); + } + } + None => {} + } + } + } + } + update_stats_from_report( + Chain::Bitcoin, + report, + &mut predicates_db_conn, + &ctx, + ); + } } ObserverEvent::StacksChainEvent((chain_event, report)) => { let stacks_db_conn_rw = match open_readwrite_stacks_db_conn( @@ -286,9 +423,9 @@ impl Service { continue; } }; + match &chain_event { StacksChainEvent::ChainUpdatedWithBlocks(data) => { - stacks_event += 1; confirm_entries_in_stacks_blocks( &data.confirmed_blocks, &stacks_db_conn_rw, @@ -316,9 +453,78 @@ impl Service { | StacksChainEvent::ChainUpdatedWithMicroblocksReorg(_) => {} }; - for (_predicate_uuid, _blocks_ids) in report.predicates_evaluated.iter() {} + if let PredicatesApi::On(ref config) = self.config.http_api { + let Ok(mut predicates_db_conn) = + open_readwrite_predicates_db_conn_verbose(&config, &ctx) + else { + continue; + }; + + match &chain_event { + StacksChainEvent::ChainUpdatedWithBlocks(data) => { + stacks_event += 1; + for confirmed_block in &data.confirmed_blocks { + match expire_predicates_for_block( + &Chain::Stacks, + confirmed_block.block_identifier.index, + &mut predicates_db_conn, + &ctx, + ) { + Some(expired_predicate_uuids) => { + for uuid in expired_predicate_uuids.into_iter() { + let _ = observer_command_tx.send( + ObserverCommand::ExpireStacksPredicate( + HookExpirationData { + hook_uuid: uuid, + block_height: confirmed_block + .block_identifier + .index, + }, + ), + ); + } + } + None => {} + } + } + } + StacksChainEvent::ChainUpdatedWithReorg(data) => { + for confirmed_block in &data.confirmed_blocks { + match expire_predicates_for_block( + &Chain::Stacks, + confirmed_block.block_identifier.index, + &mut predicates_db_conn, + &ctx, + ) { + Some(expired_predicate_uuids) => { + for uuid in expired_predicate_uuids.into_iter() { + let _ = observer_command_tx.send( + ObserverCommand::ExpireStacksPredicate( + HookExpirationData { + hook_uuid: uuid, + block_height: confirmed_block + .block_identifier + .index, + }, + ), + ); + } + } + None => {} + } + } + } + StacksChainEvent::ChainUpdatedWithMicroblocks(_) + | StacksChainEvent::ChainUpdatedWithMicroblocksReorg(_) => {} + }; + update_stats_from_report( + Chain::Stacks, + report, + &mut predicates_db_conn, + &ctx, + ); + }; - for (_predicate_uuid, _blocks_ids) in report.predicates_triggered.iter() {} // Every 32 blocks, we will check if there's a new Stacks file archive to ingest if stacks_event > 32 { stacks_event = 0; @@ -340,28 +546,501 @@ impl Service { } } -#[derive(Debug, Clone, Serialize, Deserialize)] +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] #[serde(rename_all = "snake_case")] +#[serde(tag = "type", content = "info")] +/// A high-level view of how `PredicateStatus` is used/updated can be seen here: docs/images/predicate-status-flowchart/PredicateStatusFlowchart.png. pub enum PredicateStatus { Scanning(ScanningData), Streaming(StreamingData), - InitialScanCompleted, + UnconfirmedExpiration(ExpiredData), + ConfirmedExpiration(ExpiredData), Interrupted(String), - Disabled, + New, } -#[derive(Debug, Clone, Serialize, Deserialize)] +#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)] pub struct ScanningData { pub number_of_blocks_to_scan: u64, - pub number_of_blocks_scanned: u64, - pub number_of_blocks_sent: u64, - pub current_block_height: u64, + pub number_of_blocks_evaluated: u64, + pub number_of_times_triggered: u64, + pub last_occurrence: Option, + pub last_evaluated_block_height: u64, } -#[derive(Debug, Clone, Serialize, Deserialize)] +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] pub struct StreamingData { - pub last_occurence: u64, + pub last_occurrence: Option, pub last_evaluation: u64, + pub number_of_times_triggered: u64, + pub number_of_blocks_evaluated: u64, + pub last_evaluated_block_height: u64, +} + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] +pub struct ExpiredData { + pub number_of_blocks_evaluated: u64, + pub number_of_times_triggered: u64, + pub last_occurrence: Option, + pub last_evaluated_block_height: u64, + pub expired_at_block_height: u64, +} + +fn update_stats_from_report( + chain: Chain, + report: PredicateEvaluationReport, + predicates_db_conn: &mut Connection, + ctx: &Context, +) { + for (predicate_uuid, blocks_ids) in report.predicates_triggered.iter() { + if let Some(last_triggered_height) = blocks_ids.last().and_then(|b| Some(b.index)) { + let triggered_count = blocks_ids.len().try_into().unwrap(); + set_predicate_streaming_status( + StreamingDataType::Occurrence { + last_triggered_height, + triggered_count, + }, + &(ChainhookSpecification::either_stx_or_btc_key(predicate_uuid)), + predicates_db_conn, + &ctx, + ); + } + } + + for (predicate_uuid, blocks_ids) in report.predicates_evaluated.iter() { + // clone so we don't actually update the report + let mut blocks_ids = blocks_ids.clone(); + // any triggered or expired predicate was also evaluated. But we already updated the status for that block, + // so remove those matching blocks from the list of evaluated predicates + if let Some(triggered_block_ids) = report.predicates_triggered.get(predicate_uuid) { + for triggered_id in triggered_block_ids { + blocks_ids.remove(triggered_id); + } + } + if let Some(expired_block_ids) = report.predicates_expired.get(predicate_uuid) { + for expired_id in expired_block_ids { + blocks_ids.remove(expired_id); + } + } + if let Some(last_evaluated_height) = blocks_ids.last().and_then(|b| Some(b.index)) { + let evaluated_count = blocks_ids.len().try_into().unwrap(); + set_predicate_streaming_status( + StreamingDataType::Evaluation { + last_evaluated_height, + evaluated_count, + }, + &(ChainhookSpecification::either_stx_or_btc_key(predicate_uuid)), + predicates_db_conn, + &ctx, + ); + } + } + for (predicate_uuid, blocks_ids) in report.predicates_expired.iter() { + if let Some(last_evaluated_height) = blocks_ids.last().and_then(|b| Some(b.index)) { + let evaluated_count = blocks_ids.len().try_into().unwrap(); + set_unconfirmed_expiration_status( + &chain, + evaluated_count, + last_evaluated_height, + &(ChainhookSpecification::either_stx_or_btc_key(predicate_uuid)), + predicates_db_conn, + &ctx, + ); + } + } +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub enum StreamingDataType { + Occurrence { + last_triggered_height: u64, + triggered_count: u64, + }, + Evaluation { + last_evaluated_height: u64, + evaluated_count: u64, + }, + FinishedScanning, +} + +/// Updates a predicate's status to `Streaming` if `Scanning` is complete. +/// +/// If `StreamingStatusType` is `Occurrence`, sets the `last_occurrence` & `last_evaluation` fields to the current time. +/// +/// If `StreamingStatusType` is `Evaluation`, sets the `last_evaluation` field to the current time while leaving the `last_occurrence` field as it was. +fn set_predicate_streaming_status( + streaming_data_type: StreamingDataType, + predicate_key: &str, + predicates_db_conn: &mut Connection, + ctx: &Context, +) { + let now_secs = SystemTime::now() + .duration_since(UNIX_EPOCH) + .expect("Could not get current time in ms") + .as_secs(); + let ( + last_occurrence, + number_of_blocks_evaluated, + number_of_times_triggered, + last_evaluated_block_height, + ) = { + let current_status = retrieve_predicate_status(&predicate_key, predicates_db_conn); + match current_status { + Some(status) => match status { + PredicateStatus::Streaming(StreamingData { + last_occurrence, + number_of_blocks_evaluated, + number_of_times_triggered, + last_evaluated_block_height, + last_evaluation: _, + }) => ( + last_occurrence, + number_of_blocks_evaluated, + number_of_times_triggered, + last_evaluated_block_height, + ), + PredicateStatus::Scanning(ScanningData { + number_of_blocks_to_scan: _, + number_of_blocks_evaluated, + number_of_times_triggered, + last_evaluated_block_height, + last_occurrence, + }) => ( + last_occurrence, + number_of_blocks_evaluated, + number_of_times_triggered, + last_evaluated_block_height, + ), + PredicateStatus::UnconfirmedExpiration(ExpiredData { + number_of_blocks_evaluated, + number_of_times_triggered, + last_occurrence, + last_evaluated_block_height, + expired_at_block_height: _, + }) => ( + last_occurrence, + number_of_blocks_evaluated, + number_of_times_triggered, + last_evaluated_block_height, + ), + PredicateStatus::New + | PredicateStatus::Interrupted(_) + | PredicateStatus::ConfirmedExpiration(_) => { + warn!(ctx.expect_logger(), "Attempting to set Streaming status when previous status was {:?} for predicate {}", status, predicate_key); + return; + } + }, + None => (None, 0, 0, 0), + } + }; + let ( + last_occurrence, + number_of_times_triggered, + number_of_blocks_evaluated, + last_evaluated_block_height, + ) = match streaming_data_type { + StreamingDataType::Occurrence { + last_triggered_height, + triggered_count, + } => ( + Some(now_secs.clone()), + number_of_times_triggered + triggered_count, + number_of_blocks_evaluated + triggered_count, + last_triggered_height, + ), + StreamingDataType::Evaluation { + last_evaluated_height, + evaluated_count, + } => ( + last_occurrence, + number_of_times_triggered, + number_of_blocks_evaluated + evaluated_count, + last_evaluated_height, + ), + StreamingDataType::FinishedScanning => ( + last_occurrence, + number_of_times_triggered, + number_of_blocks_evaluated, + last_evaluated_block_height, + ), + }; + + update_predicate_status( + predicate_key, + PredicateStatus::Streaming(StreamingData { + last_occurrence, + last_evaluation: now_secs, + number_of_times_triggered, + last_evaluated_block_height, + number_of_blocks_evaluated, + }), + predicates_db_conn, + &ctx, + ); +} + +/// Updates a predicate's status to `Scanning`. +/// +/// Sets the `last_occurrence` time to the current time if a new trigger has occurred since the last status update. +pub fn set_predicate_scanning_status( + predicate_key: &str, + number_of_blocks_to_scan: u64, + number_of_blocks_evaluated: u64, + number_of_times_triggered: u64, + current_block_height: u64, + predicates_db_conn: &mut Connection, + ctx: &Context, +) { + let now_secs = SystemTime::now() + .duration_since(UNIX_EPOCH) + .expect("Could not get current time in ms") + .as_secs(); + let current_status = retrieve_predicate_status(&predicate_key, predicates_db_conn); + let last_occurrence = match current_status { + Some(status) => match status { + PredicateStatus::Scanning(scanning_data) => { + if number_of_times_triggered > scanning_data.number_of_times_triggered { + Some(now_secs) + } else { + scanning_data.last_occurrence + } + } + PredicateStatus::Streaming(streaming_data) => { + if number_of_times_triggered > streaming_data.number_of_times_triggered { + Some(now_secs) + } else { + streaming_data.last_occurrence + } + } + PredicateStatus::UnconfirmedExpiration(expired_data) => { + if number_of_times_triggered > expired_data.number_of_times_triggered { + Some(now_secs) + } else { + expired_data.last_occurrence + } + } + PredicateStatus::New => { + if number_of_times_triggered > 0 { + Some(now_secs) + } else { + None + } + } + PredicateStatus::ConfirmedExpiration(_) | PredicateStatus::Interrupted(_) => { + warn!(ctx.expect_logger(), "Attempting to set Scanning status when previous status was {:?} for predicate {}", status, predicate_key); + return; + } + }, + None => None, + }; + + update_predicate_status( + predicate_key, + PredicateStatus::Scanning(ScanningData { + number_of_blocks_to_scan, + number_of_blocks_evaluated, + number_of_times_triggered, + last_occurrence, + last_evaluated_block_height: current_block_height, + }), + predicates_db_conn, + &ctx, + ); +} + +/// Updates a predicate's status to `UnconfirmedExpiration`. +pub fn set_unconfirmed_expiration_status( + chain: &Chain, + number_of_new_blocks_evaluated: u64, + last_evaluated_block_height: u64, + predicate_key: &str, + predicates_db_conn: &mut Connection, + ctx: &Context, +) { + let current_status = retrieve_predicate_status(&predicate_key, predicates_db_conn); + let mut previously_was_unconfirmed = false; + let ( + number_of_blocks_evaluated, + number_of_times_triggered, + last_occurrence, + expired_at_block_height, + ) = match current_status { + Some(status) => match status { + PredicateStatus::Scanning(ScanningData { + number_of_blocks_to_scan: _, + number_of_blocks_evaluated: _, + number_of_times_triggered, + last_occurrence, + last_evaluated_block_height, + }) => ( + number_of_new_blocks_evaluated, + number_of_times_triggered, + last_occurrence, + last_evaluated_block_height, + ), + PredicateStatus::New => (0, 0, None, 0), + PredicateStatus::Streaming(StreamingData { + last_occurrence, + last_evaluation: _, + number_of_times_triggered, + number_of_blocks_evaluated, + last_evaluated_block_height, + }) => ( + number_of_blocks_evaluated + number_of_new_blocks_evaluated, + number_of_times_triggered, + last_occurrence, + last_evaluated_block_height, + ), + PredicateStatus::UnconfirmedExpiration(ExpiredData { + number_of_blocks_evaluated, + number_of_times_triggered, + last_occurrence, + last_evaluated_block_height: _, + expired_at_block_height, + }) => { + previously_was_unconfirmed = true; + ( + number_of_blocks_evaluated + number_of_new_blocks_evaluated, + number_of_times_triggered, + last_occurrence, + expired_at_block_height, + ) + } + PredicateStatus::ConfirmedExpiration(_) | PredicateStatus::Interrupted(_) => { + warn!(ctx.expect_logger(), "Attempting to set UnconfirmedExpiration status when previous status was {:?} for predicate {}", status, predicate_key); + return; + } + }, + None => (0, 0, None, 0), + }; + update_predicate_status( + predicate_key, + PredicateStatus::UnconfirmedExpiration(ExpiredData { + number_of_blocks_evaluated, + number_of_times_triggered, + last_occurrence, + last_evaluated_block_height, + expired_at_block_height, + }), + predicates_db_conn, + &ctx, + ); + // don't insert this entry more than once + if !previously_was_unconfirmed { + insert_predicate_expiration( + chain, + expired_at_block_height, + predicate_key, + predicates_db_conn, + &ctx, + ); + } +} + +pub fn set_confirmed_expiration_status( + predicate_key: &str, + predicates_db_conn: &mut Connection, + ctx: &Context, +) { + let current_status = retrieve_predicate_status(&predicate_key, predicates_db_conn); + let expired_data = match current_status { + Some(status) => match status { + PredicateStatus::UnconfirmedExpiration(expired_data) => expired_data, + PredicateStatus::ConfirmedExpiration(_) + | PredicateStatus::Interrupted(_) + | PredicateStatus::New + | PredicateStatus::Scanning(_) + | PredicateStatus::Streaming(_) => { + warn!(ctx.expect_logger(), "Attempting to set ConfirmedExpiration status when previous status was {:?} for predicate {}", status, predicate_key); + return; + } + }, + None => unreachable!("found no status for predicate: {}", predicate_key), + }; + update_predicate_status( + predicate_key, + PredicateStatus::ConfirmedExpiration(expired_data), + predicates_db_conn, + &ctx, + ); +} + +fn get_predicate_expiration_key(chain: &Chain, block_height: u64) -> String { + match chain { + Chain::Bitcoin => format!("expires_at:bitcoin_block:{}", block_height), + Chain::Stacks => format!("expires_at:stacks_block:{}", block_height), + } +} +fn expire_predicates_for_block( + chain: &Chain, + confirmed_block_index: u64, + predicates_db_conn: &mut Connection, + ctx: &Context, +) -> Option> { + match get_predicates_expiring_at_block(chain, confirmed_block_index, predicates_db_conn, ctx) { + Some(predicates_to_expire) => { + for predicate_key in predicates_to_expire.iter() { + set_confirmed_expiration_status(predicate_key, predicates_db_conn, ctx); + } + Some(predicates_to_expire) + } + None => None, + } +} + +fn insert_predicate_expiration( + chain: &Chain, + expired_at_block_height: u64, + predicate_key: &str, + predicates_db_conn: &mut Connection, + ctx: &Context, +) { + let key = get_predicate_expiration_key(chain, expired_at_block_height); + let mut predicates_expiring_at_block = + get_predicates_expiring_at_block(chain, expired_at_block_height, predicates_db_conn, &ctx) + .unwrap_or(vec![]); + predicates_expiring_at_block.push(predicate_key.to_owned()); + let serialized_expiring_predicates = json!(predicates_expiring_at_block).to_string(); + if let Err(e) = + predicates_db_conn.hset::<_, _, _, ()>(&key, "predicates", &serialized_expiring_predicates) + { + error!( + ctx.expect_logger(), + "Error updating expired predicates index: {}", + e.to_string() + ); + } else { + info!( + ctx.expect_logger(), + "Updating expired predicates at block height {expired_at_block_height} with predicate: {predicate_key}" + ); + } +} + +fn get_predicates_expiring_at_block( + chain: &Chain, + block_index: u64, + predicates_db_conn: &mut Connection, + ctx: &Context, +) -> Option> { + let key = get_predicate_expiration_key(chain, block_index); + match predicates_db_conn.hget::<_, _, String>(key.to_string(), "predicates") { + Ok(ref payload) => match serde_json::from_str(payload) { + Ok(data) => { + if let Err(e) = predicates_db_conn.hdel::<_, _, u64>(key.to_string(), "predicates") + { + error!( + ctx.expect_logger(), + "Error removing expired predicates index: {}", + e.to_string() + ); + } + Some(data) + } + Err(_) => None, + }, + Err(_) => None, + } } pub fn update_predicate_status( @@ -387,7 +1066,7 @@ pub fn update_predicate_status( } } -pub fn update_predicate_spec( +fn update_predicate_spec( predicate_key: &str, spec: &ChainhookSpecification, predicates_db_conn: &mut Connection, @@ -410,7 +1089,7 @@ pub fn update_predicate_spec( } } -pub fn retrieve_predicate_status( +fn retrieve_predicate_status( predicate_key: &str, predicates_db_conn: &mut Connection, ) -> Option { @@ -433,18 +1112,22 @@ pub fn open_readwrite_predicates_db_conn( .map_err(|e| format!("unable to connect to db: {}", e.to_string())) } +pub fn open_readwrite_predicates_db_conn_verbose( + config: &PredicatesApiConfig, + ctx: &Context, +) -> Result { + let res = open_readwrite_predicates_db_conn(config); + if let Err(ref e) = res { + error!(ctx.expect_logger(), "{}", e.to_string()); + } + res +} + pub fn open_readwrite_predicates_db_conn_or_panic( config: &PredicatesApiConfig, ctx: &Context, ) -> Connection { - let redis_con = match open_readwrite_predicates_db_conn(config) { - Ok(con) => con, - Err(message) => { - error!(ctx.expect_logger(), "Redis: {}", message.to_string()); - panic!(); - } - }; - redis_con + open_readwrite_predicates_db_conn_verbose(config, ctx).expect("unable to open redis conn") } #[cfg(test)] diff --git a/components/chainhook-cli/src/service/runloops.rs b/components/chainhook-cli/src/service/runloops.rs index ad67d0c45..caa6c6f1b 100644 --- a/components/chainhook-cli/src/service/runloops.rs +++ b/components/chainhook-cli/src/service/runloops.rs @@ -21,14 +21,19 @@ use crate::{ storage::open_readonly_stacks_db_conn, }; +use super::ScanningData; + pub fn start_stacks_scan_runloop( config: &Config, - stacks_scan_op_rx: crossbeam_channel::Receiver, + stacks_scan_op_rx: crossbeam_channel::Receiver<( + StacksChainhookSpecification, + Option, + )>, observer_command_tx: Sender, ctx: &Context, ) { let stacks_scan_pool = ThreadPool::new(config.limits.max_number_of_concurrent_stacks_scans); - while let Ok(predicate_spec) = stacks_scan_op_rx.recv() { + while let Ok((predicate_spec, unfinished_scan_data)) = stacks_scan_op_rx.recv() { let moved_ctx = ctx.clone(); let moved_config = config.clone(); let observer_command_tx = observer_command_tx.clone(); @@ -49,15 +54,16 @@ pub fn start_stacks_scan_runloop( let op = scan_stacks_chainstate_via_rocksdb_using_predicate( &predicate_spec, + unfinished_scan_data, &stacks_db_conn, &moved_config, &moved_ctx, ); let res = hiro_system_kit::nestable_block_on(op); - let last_block_scanned = match res { + let (last_block_scanned, predicate_is_expired) = match res { Ok(last_block_scanned) => last_block_scanned, Err(e) => { - error!( + warn!( moved_ctx.expect_logger(), "Unable to evaluate predicate on Stacks chainstate: {e}", ); @@ -84,9 +90,11 @@ pub fn start_stacks_scan_runloop( moved_ctx.expect_logger(), "Stacks chainstate scan completed up to block: {}", last_block_scanned.index ); - let _ = observer_command_tx.send(ObserverCommand::EnablePredicate( - ChainhookSpecification::Stacks(predicate_spec), - )); + if !predicate_is_expired { + let _ = observer_command_tx.send(ObserverCommand::EnablePredicate( + ChainhookSpecification::Stacks(predicate_spec), + )); + } }); } let res = stacks_scan_pool.join(); @@ -95,25 +103,29 @@ pub fn start_stacks_scan_runloop( pub fn start_bitcoin_scan_runloop( config: &Config, - bitcoin_scan_op_rx: crossbeam_channel::Receiver, + bitcoin_scan_op_rx: crossbeam_channel::Receiver<( + BitcoinChainhookSpecification, + Option, + )>, observer_command_tx: Sender, ctx: &Context, ) { let bitcoin_scan_pool = ThreadPool::new(config.limits.max_number_of_concurrent_bitcoin_scans); - while let Ok(predicate_spec) = bitcoin_scan_op_rx.recv() { + while let Ok((predicate_spec, unfinished_scan_data)) = bitcoin_scan_op_rx.recv() { let moved_ctx = ctx.clone(); let moved_config = config.clone(); let observer_command_tx = observer_command_tx.clone(); bitcoin_scan_pool.execute(move || { let op = scan_bitcoin_chainstate_via_rpc_using_predicate( &predicate_spec, + unfinished_scan_data, &moved_config, &moved_ctx, ); - match hiro_system_kit::nestable_block_on(op) { - Ok(_) => {} + let predicate_is_expired = match hiro_system_kit::nestable_block_on(op) { + Ok(predicate_is_expired) => predicate_is_expired, Err(e) => { error!( moved_ctx.expect_logger(), @@ -137,9 +149,11 @@ pub fn start_bitcoin_scan_runloop( return; } }; - let _ = observer_command_tx.send(ObserverCommand::EnablePredicate( - ChainhookSpecification::Bitcoin(predicate_spec), - )); + if !predicate_is_expired { + let _ = observer_command_tx.send(ObserverCommand::EnablePredicate( + ChainhookSpecification::Bitcoin(predicate_spec), + )); + } }); } let _ = bitcoin_scan_pool.join(); diff --git a/components/chainhook-cli/src/service/tests/helpers/build_predicates.rs b/components/chainhook-cli/src/service/tests/helpers/build_predicates.rs new file mode 100644 index 000000000..110194867 --- /dev/null +++ b/components/chainhook-cli/src/service/tests/helpers/build_predicates.rs @@ -0,0 +1,71 @@ +use rocket::serde::json::Value as JsonValue; + +pub const DEFAULT_UUID: &str = "4ecc-4ecc-435b-9948-d5eeca1c3ce6"; + +pub fn get_random_uuid() -> String { + let mut rng = rand::thread_rng(); + let random_digit: u64 = rand::Rng::gen(&mut rng); + format!("test-uuid-{random_digit}") +} + +pub fn build_bitcoin_payload( + network: Option<&str>, + if_this: Option, + then_that: Option, + filter: Option, + uuid: Option<&str>, +) -> JsonValue { + let network = network.unwrap_or("mainnet"); + let if_this = if_this.unwrap_or(json!({"scope":"block"})); + let then_that = then_that.unwrap_or(json!("noop")); + let filter = filter.unwrap_or(json!({})); + + let filter = filter.as_object().unwrap(); + let mut network_val = json!({ + "if_this": if_this, + "then_that": then_that + }); + for (k, v) in filter.iter() { + network_val[k] = v.to_owned(); + } + json!({ + "chain": "bitcoin", + "uuid": uuid.unwrap_or(DEFAULT_UUID), + "name": "test", + "version": 1, + "networks": { + network: network_val + } + }) +} + +pub fn build_stacks_payload( + network: Option<&str>, + if_this: Option, + then_that: Option, + filter: Option, + uuid: Option<&str>, +) -> JsonValue { + let network = network.unwrap_or("mainnet"); + let if_this = if_this.unwrap_or(json!({"scope":"txid", "equals": "0xfaaac1833dc4883e7ec28f61e35b41f896c395f8d288b1a177155de2abd6052f"})); + let then_that = then_that.unwrap_or(json!("noop")); + let filter = filter.unwrap_or(json!({})); + + let filter = filter.as_object().unwrap(); + let mut network_val = json!({ + "if_this": if_this, + "then_that": then_that + }); + for (k, v) in filter.iter() { + network_val[k] = v.to_owned(); + } + json!({ + "chain": "stacks", + "uuid": uuid.unwrap_or(DEFAULT_UUID), + "name": "test", + "version": 1, + "networks": { + network: network_val + } + }) +} diff --git a/components/chainhook-cli/src/service/tests/helpers/mock_bitcoin_rpc.rs b/components/chainhook-cli/src/service/tests/helpers/mock_bitcoin_rpc.rs new file mode 100644 index 000000000..75675070a --- /dev/null +++ b/components/chainhook-cli/src/service/tests/helpers/mock_bitcoin_rpc.rs @@ -0,0 +1,304 @@ +use chainhook_sdk::bitcoincore_rpc_json::GetRawTransactionResultVoutScriptPubKey; +use chainhook_sdk::indexer::bitcoin::BitcoinBlockFullBreakdown; +use chainhook_sdk::indexer::bitcoin::BitcoinTransactionFullBreakdown; +use chainhook_sdk::indexer::bitcoin::BitcoinTransactionInputFullBreakdown; +use chainhook_sdk::indexer::bitcoin::BitcoinTransactionInputPrevoutFullBreakdown; +use chainhook_sdk::indexer::bitcoin::BitcoinTransactionOutputFullBreakdown; +use chainhook_sdk::indexer::bitcoin::GetRawTransactionResultVinScriptSig; +use rocket::serde::json::Value; +use std::cmp::max; +use std::collections::HashMap; +use std::net::IpAddr; +use std::net::Ipv4Addr; +use std::str::FromStr; +use std::sync::Arc; +use std::sync::RwLock; + +use chainhook_sdk::bitcoincore_rpc_json::bitcoin::hashes::sha256d::Hash; +use chainhook_sdk::bitcoincore_rpc_json::bitcoin::Amount; +use chainhook_sdk::bitcoincore_rpc_json::bitcoin::BlockHash; +use chainhook_sdk::bitcoincore_rpc_json::GetBlockchainInfoResult; +use chainhook_sdk::bitcoincore_rpc_json::GetNetworkInfoResult; +use rocket::serde::json::Json; +use rocket::Config; +use rocket::State; + +use super::branch_and_height_to_hash_str; + +#[derive(Clone, Serialize, Deserialize, Debug)] +#[serde(crate = "rocket::serde")] +struct Rpc { + jsonrpc: String, + id: Value, + method: String, + params: Vec, +} + +fn branch_and_height_to_hash(branch: Option, height: u64) -> BlockHash { + let hash = Hash::from_str(&branch_and_height_to_hash_str(branch, height)).unwrap(); + BlockHash::from_hash(hash) +} + +#[derive(Clone, Serialize, Deserialize, Debug)] +#[serde(crate = "rocket::serde")] +pub struct TipData { + pub branch: BranchKey, + pub parent_branch_key: Option, + pub parent_height_at_fork: Option, +} + +#[post( + "/increment-chain-tip", + format = "application/json", + data = "" +)] +fn handle_increment_chain_tip( + tip_data: Json, + fork_tracker_rw_lock: &State>>>, +) -> Value { + let tip_data = tip_data.into_inner(); + let branch = tip_data.branch; + let mut fork_tracker = fork_tracker_rw_lock.inner().write().unwrap(); + let (chain_tip, _parent_info) = match fork_tracker.get_mut(&branch) { + None => { + let parent_branch = tip_data.parent_branch_key.unwrap(); + let parent_height_at_fork = tip_data.parent_height_at_fork.unwrap(); + let branch_chain_tip = parent_height_at_fork + 1; + fork_tracker.insert( + branch, + ( + branch_chain_tip, + Some((parent_branch, parent_height_at_fork)), + ), + ); + return json!(branch_chain_tip); + } + Some(tip) => tip, + }; + *chain_tip += 1; + json!(chain_tip.to_owned()) +} + +#[post("/", format = "application/json", data = "")] +fn handle_rpc( + rpc: Json, + fork_tracker_rw_lock: &State>>>, +) -> Value { + let rpc = rpc.into_inner(); + let fork_tracker = fork_tracker_rw_lock.inner().read().unwrap(); + match rpc.method.as_str() { + "getblock" => { + let hash = rpc.params[0].as_str().unwrap(); + let mut chars = hash.chars(); + let branch = chars.next().unwrap(); + let prefix = chars.take_while(|&ch| ch == '0').collect::(); + let height = hash.split(&prefix).collect::>()[1]; + let height = height.parse::().unwrap_or(0); + let (chain_tip, parent_data) = fork_tracker.get(&branch).unwrap_or(&(0, None)); + if &height > chain_tip { + return json!({ + "id": rpc.id, + "jsonrpc": rpc.jsonrpc, + "error": format!("invalid request: requested block is above chain tip: height {}, chain tip: {}", height, chain_tip) + }); + } + + let confirmations = max(0, chain_tip - height) as i32; + + let previousblockhash = if height == 0 { + None + } else { + let parent_height = height - 1; + let mut parent_branch = branch; + if let Some((parent_branch_key, parent_height_at_fork)) = parent_data { + if &parent_height == parent_height_at_fork { + parent_branch = *parent_branch_key; + } + } + Some(branch_and_height_to_hash_str( + Some(parent_branch), + parent_height, + )) + }; + + let coinbase = BitcoinTransactionFullBreakdown { + txid: branch_and_height_to_hash_str(Some(branch), height), + vin: vec![BitcoinTransactionInputFullBreakdown { + sequence: 0, + txid: None, + vout: None, + script_sig: None, + txinwitness: None, + prevout: None, + }], + vout: vec![BitcoinTransactionOutputFullBreakdown { + value: Amount::ZERO, + n: 0, + script_pub_key: GetRawTransactionResultVoutScriptPubKey { + asm: format!(""), + hex: vec![], + req_sigs: None, + type_: None, + addresses: None, + }, + }], + }; + let tx = BitcoinTransactionFullBreakdown { + txid: branch_and_height_to_hash_str(Some(branch), height + 1), + vin: vec![BitcoinTransactionInputFullBreakdown { + sequence: 0, + txid: Some(branch_and_height_to_hash_str(Some(branch), height + 1)), + vout: Some(1), + script_sig: Some(GetRawTransactionResultVinScriptSig { hex: format!("") }), + txinwitness: Some(vec![format!("")]), + prevout: Some(BitcoinTransactionInputPrevoutFullBreakdown { + height: height, + value: Amount::ZERO, + }), + }], + vout: vec![BitcoinTransactionOutputFullBreakdown { + value: Amount::ZERO, + n: 0, + script_pub_key: GetRawTransactionResultVoutScriptPubKey { + asm: format!(""), + hex: vec![], + req_sigs: None, + type_: None, + addresses: None, + }, + }], + }; + let block = BitcoinBlockFullBreakdown { + hash: hash.into(), + confirmations, + height: height as usize, + tx: vec![coinbase, tx], + time: 0, + nonce: 0, + previousblockhash, + }; + json!({ + "id": rpc.id, + "jsonrpc": rpc.jsonrpc, + "result": serde_json::to_value(&block).unwrap() + }) + } + "getblockchaininfo" => { + let (branch, (chain_tip, _)) = fork_tracker + .iter() + .max_by(|a, b| a.1.cmp(&b.1)) + .map(|kv| kv) + .unwrap(); + + let hash = branch_and_height_to_hash(Some(*branch), *chain_tip); + let blockchain_info = GetBlockchainInfoResult { + chain: "regtest".into(), + blocks: chain_tip.to_owned(), + headers: 0, + best_block_hash: hash, + difficulty: 0.0, + median_time: 0, + verification_progress: 0.0, + initial_block_download: false, + chain_work: vec![], + size_on_disk: 0, + pruned: false, + prune_height: None, + automatic_pruning: None, + prune_target_size: None, + softforks: HashMap::new(), + warnings: "".into(), + }; + json!({ + "id": rpc.id, + "jsonrpc": rpc.jsonrpc, + "result": serde_json::to_value(&blockchain_info).unwrap() + }) + } + "getnetworkinfo" => { + let network_info = GetNetworkInfoResult { + version: 190000, + subversion: "".into(), + protocol_version: 0, + local_services: "".into(), + local_relay: false, + time_offset: 0, + connections: 0, + connections_in: None, + connections_out: None, + network_active: true, + networks: vec![], + relay_fee: Amount::ZERO, + incremental_fee: Amount::ZERO, + local_addresses: vec![], + warnings: "".into(), + }; + let value = serde_json::to_value(network_info).unwrap(); + json!({ + "id": rpc.id, + "jsonrpc": rpc.jsonrpc, + "result": value + }) + } + "getblockhash" => { + let (branch, _) = fork_tracker + .iter() + .max_by(|a, b| a.1.cmp(&b.1)) + .map(|kv| kv) + .unwrap(); + + let height = rpc.params[0].as_u64().unwrap(); + let hash = branch_and_height_to_hash(Some(*branch), height); + json!({ + "id": serde_json::to_value(rpc.id).unwrap(), + "jsonrpc": rpc.jsonrpc, + "result": serde_json::to_value(hash).unwrap(), + }) + } + "gettxoutproof" => { + json!({ + "id": serde_json::to_value(rpc.id).unwrap(), + "jsonrpc": rpc.jsonrpc, + "result": "00", + }) + } + "getaddressinfo" => { + json!({ + "id": serde_json::to_value(rpc.id).unwrap(), + "jsonrpc": rpc.jsonrpc, + "result": { + "address": rpc.params[0] + }, + }) + } + "sendrawtransaction" => { + json!({ + "id": serde_json::to_value(rpc.id).unwrap(), + "jsonrpc": rpc.jsonrpc, + "result": "success", + }) + } + _ => unimplemented!("unsupported rpc endpoint: {}", rpc.method.as_str()), + } +} + +type BranchKey = char; +type Height = u64; +type ForkPoint = (BranchKey, Height); +type ForkData = (Height, Option); +pub async fn mock_bitcoin_rpc(port: u16, starting_chain_tip: u64) { + let config = Config::figment() + .merge(("port", port)) + .merge(("address", IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0)))) + .merge(("log_level", "off")); + let fork_tracker: HashMap = + HashMap::from([('0', (starting_chain_tip, None))]); + let fork_tracker_rw_lock = Arc::new(RwLock::new(fork_tracker)); + let _rocket = rocket::build() + .configure(config) + .manage(fork_tracker_rw_lock) + .mount("/", routes![handle_rpc, handle_increment_chain_tip]) + .launch() + .await + .unwrap(); +} diff --git a/components/chainhook-cli/src/service/tests/helpers/mock_service.rs b/components/chainhook-cli/src/service/tests/helpers/mock_service.rs new file mode 100644 index 000000000..20518105a --- /dev/null +++ b/components/chainhook-cli/src/service/tests/helpers/mock_service.rs @@ -0,0 +1,350 @@ +use crate::config::Config; +use crate::config::EventSourceConfig; +use crate::config::LimitsConfig; +use crate::config::PathConfig; +use crate::config::PredicatesApi; +use crate::config::PredicatesApiConfig; +use crate::config::StorageConfig; +use crate::config::DEFAULT_REDIS_URI; +use crate::service::http_api::start_predicate_api_server; +use crate::service::PredicateStatus; +use crate::service::Service; +use chainhook_sdk::chainhooks::types::ChainhookFullSpecification; +use chainhook_sdk::indexer::IndexerConfig; +use chainhook_sdk::observer::ObserverCommand; +use chainhook_sdk::observer::ObserverMetrics; +use chainhook_sdk::types::BitcoinBlockSignaling; +use chainhook_sdk::types::BitcoinNetwork; +use chainhook_sdk::types::Chain; +use chainhook_sdk::types::StacksNetwork; +use chainhook_sdk::types::StacksNodeConfig; +use chainhook_sdk::utils::Context; +use redis::Commands; +use reqwest::Method; +use rocket::serde::json::Value as JsonValue; +use rocket::Shutdown; +use std::path::PathBuf; +use std::process::Stdio; +use std::process::{Child, Command}; +use std::sync::mpsc::channel; +use std::sync::mpsc::Receiver; + +pub async fn get_predicate_status(uuid: &str, port: u16) -> Result { + let mut attempts = 0; + loop { + let res = call_get_predicate(uuid, port).await?; + match res.as_object() { + Some(res_obj) => match res_obj.get("result") { + Some(result) => match result.get("status") { + Some(status) => { + return serde_json::from_value(status.clone()) + .map_err(|e| format!("failed to parse status {}", e.to_string())); + } + None => return Err(format!("no status field on get predicate result")), + }, + None => { + attempts += 1; + if attempts == 10 { + return Err(format!("no result field on get predicate response")); + } else { + tokio::time::sleep(std::time::Duration::from_secs(1)).await; + } + } + }, + None => return Err(format!("failed to parse get predicate response")), + } + } +} + +pub async fn filter_predicate_status_from_all_predicates( + uuid: &str, + port: u16, +) -> Result { + let mut attempts = 0; + loop { + let res = call_get_predicates(port).await?; + match res.as_object() { + Some(res_obj) => match res_obj.get("result") { + Some(result) => match result.as_array() { + Some(predicate_array) => { + let matching_predicate = + predicate_array.iter().find(|p| match p.as_object() { + Some(p) => match p.get("uuid") { + Some(predicate_uuid) => predicate_uuid == uuid, + None => false, + }, + None => false, + }); + match matching_predicate { + Some(predicate) => match predicate.get("status") { + Some(status) => { + return serde_json::from_value(status.clone()).map_err(|e| { + format!("failed to parse status {}", e.to_string()) + }); + } + None => { + return Err(format!( + "no status field on matching get predicates result" + )) + } + }, + None => { + return Err(format!( + "could not find predicate result with uuid matching {uuid}" + )); + } + } + } + None => { + return Err(format!( + "failed to parse get predicate response's result field" + )) + } + }, + None => { + attempts += 1; + if attempts == 10 { + return Err(format!("no result field on get predicates response")); + } else { + tokio::time::sleep(std::time::Duration::from_secs(1)).await; + } + } + }, + None => return Err(format!("failed to parse get predicate response")), + } + } +} + +pub async fn call_register_predicate( + predicate: &JsonValue, + port: u16, +) -> Result { + let url = format!("http://localhost:{port}/v1/chainhooks"); + call_observer_svc(&url, Method::POST, Some(predicate)).await +} + +pub async fn call_deregister_predicate( + chain: &Chain, + predicate_uuid: &str, + port: u16, +) -> Result { + let chain = match chain { + Chain::Bitcoin => "bitcoin", + Chain::Stacks => "stacks", + }; + let url = format!("http://localhost:{port}/v1/chainhooks/{chain}/{predicate_uuid}"); + call_observer_svc(&url, Method::DELETE, None).await +} + +pub async fn call_get_predicate(predicate_uuid: &str, port: u16) -> Result { + let url = format!("http://localhost:{port}/v1/chainhooks/{predicate_uuid}"); + call_observer_svc(&url, Method::GET, None).await +} + +pub async fn call_get_predicates(port: u16) -> Result { + let url = format!("http://localhost:{port}/v1/chainhooks"); + call_observer_svc(&url, Method::GET, None).await +} + +pub async fn call_observer_svc( + url: &str, + method: Method, + json: Option<&JsonValue>, +) -> Result { + let client = reqwest::Client::new(); + let req = match (&method, json) { + (&Method::GET, None) => client.get(url), + (&Method::POST, None) => client.post(url).header("Content-Type", "application/json"), + (&Method::POST, Some(json)) => client + .post(url) + .header("Content-Type", "application/json") + .json(json), + (&Method::DELETE, None) => client + .delete(url) + .header("Content-Type", "application/json"), + _ => unimplemented!(), + }; + req.send() + .await + .map_err(|e| format!("Failed to make {method} request to {url}: {e}",))? + .json::() + .await + .map_err(|e| format!("Failed to deserialize response of {method} request to {url}: {e}",)) +} + +pub async fn call_ping(port: u16) -> Result { + let url = format!("http://localhost:{port}/ping"); + let res = call_observer_svc(&url, Method::GET, None).await?; + match res.get("result") { + Some(result) => serde_json::from_value(result.clone()) + .map_err(|e| format!("failed to parse observer metrics {}", e.to_string())), + None => Err(format!("Failed parse result of observer ping")), + } +} + +pub async fn build_predicate_api_server(port: u16) -> (Receiver, Shutdown) { + let ctx = Context { + logger: None, + tracer: false, + }; + let api_config = PredicatesApiConfig { + http_port: port, + display_logs: true, + database_uri: DEFAULT_REDIS_URI.to_string(), + }; + + let (tx, rx) = channel(); + let shutdown = start_predicate_api_server(api_config, tx, ctx) + .await + .unwrap(); + + // Loop to check if the server is ready + let mut attempts = 0; + const MAX_ATTEMPTS: u32 = 10; + loop { + if attempts >= MAX_ATTEMPTS { + panic!("failed to start server"); + } + + if let Ok(_client) = reqwest::Client::new() + .get(format!("http://localhost:{}/ping", port)) + .send() + .await + { + break; // Server is ready + } + + tokio::time::sleep(std::time::Duration::from_secs(1)).await; + attempts += 1; + } + (rx, shutdown) +} + +pub async fn start_redis(port: u16) -> Result { + let handle = Command::new("redis-server") + .arg(format!("--port {port}")) + .stdout(Stdio::null()) + .spawn() + .map_err(|e| format!("failed to create start-redis command: {}", e.to_string()))?; + let mut attempts = 0; + loop { + match redis::Client::open(format!("redis://localhost:{port}/")) { + Ok(client) => match client.get_connection() { + Ok(_) => return Ok(handle), + Err(e) => { + attempts += 1; + if attempts == 10 { + return Err(format!("failed to start redis service: {}", e.to_string())); + } + tokio::time::sleep(std::time::Duration::from_secs(1)).await + } + }, + Err(e) => { + attempts += 1; + if attempts == 10 { + return Err(format!("failed to start redis service: {}", e.to_string())); + } + tokio::time::sleep(std::time::Duration::from_secs(1)).await + } + } + } +} + +pub fn flush_redis(port: u16) { + let client = redis::Client::open(format!("redis://localhost:{port}/")) + .expect("unable to connect to redis"); + let mut predicate_db_conn = client.get_connection().expect("unable to connect to redis"); + let db_keys: Vec = predicate_db_conn + .scan_match("*") + .unwrap() + .into_iter() + .collect(); + for k in db_keys { + predicate_db_conn.del::<_, ()>(&k).unwrap(); + } +} + +pub fn get_chainhook_config( + redis_port: u16, + chainhook_port: u16, + stacks_rpc_port: u16, + stacks_ingestion_port: u16, + bitcoin_rpc_port: u16, + working_dir: &str, + tsv_dir: &str, +) -> Config { + let api_config = PredicatesApiConfig { + http_port: chainhook_port, + display_logs: true, + database_uri: format!("redis://localhost:{redis_port}/"), + }; + Config { + http_api: PredicatesApi::On(api_config), + storage: StorageConfig { + working_dir: working_dir.into(), + }, + event_sources: vec![EventSourceConfig::StacksTsvPath(PathConfig { + file_path: PathBuf::from(tsv_dir), + })], + limits: LimitsConfig { + max_number_of_bitcoin_predicates: 100, + max_number_of_concurrent_bitcoin_scans: 100, + max_number_of_stacks_predicates: 10, + max_number_of_concurrent_stacks_scans: 10, + max_number_of_processing_threads: 16, + max_number_of_networking_threads: 16, + max_caching_memory_size_mb: 32000, + }, + network: IndexerConfig { + bitcoin_network: BitcoinNetwork::Regtest, + stacks_network: StacksNetwork::Devnet, + bitcoind_rpc_username: "".into(), + bitcoind_rpc_password: "".into(), + bitcoind_rpc_url: format!("http://0.0.0.0:{bitcoin_rpc_port}"), + bitcoin_block_signaling: BitcoinBlockSignaling::Stacks(StacksNodeConfig { + rpc_url: format!("http://localhost:{stacks_rpc_port}"), + ingestion_port: stacks_ingestion_port, + }), + }, + } +} + +pub async fn start_chainhook_service( + config: Config, + chainhook_port: u16, + startup_predicates: Option>, + ctx: &Context, +) -> Result<(), String> { + let mut service = Service::new(config, ctx.clone()); + let _ = hiro_system_kit::thread_named("Chainhook service") + .spawn(move || { + let future = service.run(startup_predicates.unwrap_or(vec![])); + let _ = hiro_system_kit::nestable_block_on(future); + }) + .map_err(|e| { + format!( + "failed to start chainhook service thread, {}", + e.to_string() + ) + })?; + + // Loop to check if the server is ready + let mut attempts = 0; + const MAX_ATTEMPTS: u32 = 10; + loop { + if attempts >= MAX_ATTEMPTS { + return Err(format!("failed to ping chainhook service")); + } + + if let Ok(_client) = reqwest::Client::new() + .get(format!("http://localhost:{}/ping", chainhook_port)) + .send() + .await + { + break Ok(()); // Server is ready + } + + tokio::time::sleep(std::time::Duration::from_secs(1)).await; + attempts += 1; + } +} diff --git a/components/chainhook-cli/src/service/tests/helpers/mock_stacks_node.rs b/components/chainhook-cli/src/service/tests/helpers/mock_stacks_node.rs new file mode 100644 index 000000000..e3f46b3d7 --- /dev/null +++ b/components/chainhook-cli/src/service/tests/helpers/mock_stacks_node.rs @@ -0,0 +1,421 @@ +use crate::scan::stacks::{Record, RecordKind}; +use crate::service::tests::helpers::mock_bitcoin_rpc::TipData; +use chainhook_sdk::indexer::bitcoin::NewBitcoinBlock; +use chainhook_sdk::indexer::stacks::{NewBlock, NewEvent, NewTransaction}; +use chainhook_sdk::types::{ + FTBurnEventData, FTMintEventData, FTTransferEventData, NFTBurnEventData, NFTMintEventData, + NFTTransferEventData, STXBurnEventData, STXLockEventData, STXMintEventData, + STXTransferEventData, SmartContractEventData, StacksTransactionEvent, +}; + +use super::{branch_and_height_to_prefixed_hash, height_to_prefixed_hash}; + +pub const TEST_WORKING_DIR: &str = "src/service/tests/fixtures/tmp"; + +pub fn create_tmp_working_dir() -> Result<(String, String), String> { + let mut rng = rand::thread_rng(); + let random_digit: u64 = rand::Rng::gen(&mut rng); + let working_dir = format!("{TEST_WORKING_DIR}/{random_digit}"); + let tsv_dir = format!("./{working_dir}/stacks_blocks.tsv"); + std::fs::create_dir_all(&working_dir) + .map_err(|e| format!("failed to create temp working dir: {}", e.to_string()))?; + Ok((working_dir, tsv_dir)) +} +fn create_stacks_new_event(tx_index: u64, index: u32, event: StacksTransactionEvent) -> NewEvent { + let mut event_type = String::new(); + let stx_transfer_event = if let StacksTransactionEvent::STXTransferEvent(data) = &event { + event_type = format!("stx_transfer"); + Some(serde_json::to_value(data).unwrap()) + } else { + None + }; + let stx_mint_event = if let StacksTransactionEvent::STXMintEvent(data) = &event { + event_type = format!("stx_mint"); + Some(serde_json::to_value(data).unwrap()) + } else { + None + }; + let stx_burn_event = if let StacksTransactionEvent::STXBurnEvent(data) = &event { + event_type = format!("stx_burn"); + Some(serde_json::to_value(data).unwrap()) + } else { + None + }; + let stx_lock_event = if let StacksTransactionEvent::STXLockEvent(data) = &event { + event_type = format!("stx_lock"); + Some(serde_json::to_value(data).unwrap()) + } else { + None + }; + let nft_transfer_event = if let StacksTransactionEvent::NFTTransferEvent(data) = &event { + event_type = format!("nft_transfer"); + Some(serde_json::to_value(data).unwrap()) + } else { + None + }; + let nft_mint_event = if let StacksTransactionEvent::NFTMintEvent(data) = &event { + event_type = format!("nft_mint"); + Some(serde_json::to_value(data).unwrap()) + } else { + None + }; + let nft_burn_event = if let StacksTransactionEvent::NFTBurnEvent(data) = &event { + event_type = format!("nft_burn"); + Some(serde_json::to_value(data).unwrap()) + } else { + None + }; + let ft_transfer_event = if let StacksTransactionEvent::FTTransferEvent(data) = &event { + event_type = format!("ft_transfer"); + Some(serde_json::to_value(data).unwrap()) + } else { + None + }; + let ft_mint_event = if let StacksTransactionEvent::FTMintEvent(data) = &event { + event_type = format!("ft_mint"); + Some(serde_json::to_value(data).unwrap()) + } else { + None + }; + let ft_burn_event = if let StacksTransactionEvent::FTBurnEvent(data) = &event { + event_type = format!("ft_burn"); + Some(serde_json::to_value(data).unwrap()) + } else { + None + }; + let contract_event = if let StacksTransactionEvent::SmartContractEvent(data) = &event { + event_type = format!("smart_contract_print_event"); + Some(serde_json::to_value(data).unwrap()) + } else { + None + }; + NewEvent { + txid: format!("transaction_id_{tx_index}"), + committed: false, + event_index: index, + event_type, + stx_transfer_event, + stx_mint_event, + stx_burn_event, + stx_lock_event, + nft_transfer_event, + nft_mint_event, + nft_burn_event, + ft_transfer_event, + ft_mint_event, + ft_burn_event, + data_var_set_event: None, + data_map_insert_event: None, + data_map_update_event: None, + data_map_delete_event: None, + contract_event, + } +} + +fn create_stacks_new_transaction(index: u64) -> NewTransaction { + NewTransaction { + txid: format!("transaction_id_{index}"), + tx_index: index as usize, + status: format!("success"), + raw_result: format!("0x0703"), + raw_tx: format!("0x00000000010400e2cd0871da5bdd38c4d5569493dc3b14aac4e0a10000000000000019000000000000000000008373b16e4a6f9d87864c314dd77bbd8b27a2b1805e96ec5a6509e7e4f833cd6a7bdb2462c95f6968a867ab6b0e8f0a6498e600dbc46cfe9f84c79709da7b9637010200000000040000000000000000000000000000000000000000000000000000000000000000"), + execution_cost: None, + contract_abi: None + } +} + +pub fn create_stacks_new_block(height: u64, burn_block_height: u64) -> NewBlock { + let parent_height = if height == 0 { 0 } else { height - 1 }; + let parent_burn_block_height = if burn_block_height == 0 { + 0 + } else { + burn_block_height - 1 + }; + + let mut events = vec![]; + events.push(create_stacks_new_event( + 0, + events.len() as u32, + StacksTransactionEvent::STXTransferEvent(STXTransferEventData { + sender: format!(""), + recipient: format!(""), + amount: format!("1"), + }), + )); + events.push(create_stacks_new_event( + 0, + events.len() as u32, + StacksTransactionEvent::STXMintEvent(STXMintEventData { + recipient: format!(""), + amount: format!("1"), + }), + )); + events.push(create_stacks_new_event( + 0, + events.len() as u32, + StacksTransactionEvent::STXBurnEvent(STXBurnEventData { + sender: format!(""), + amount: format!("1"), + }), + )); + events.push(create_stacks_new_event( + 0, + events.len() as u32, + StacksTransactionEvent::STXLockEvent(STXLockEventData { + locked_amount: format!("1"), + unlock_height: format!(""), + locked_address: format!(""), + }), + )); + events.push(create_stacks_new_event( + 0, + events.len() as u32, + StacksTransactionEvent::NFTTransferEvent(NFTTransferEventData { + asset_class_identifier: format!(""), + hex_asset_identifier: format!(""), + sender: format!(""), + recipient: format!(""), + }), + )); + events.push(create_stacks_new_event( + 0, + events.len() as u32, + StacksTransactionEvent::NFTMintEvent(NFTMintEventData { + asset_class_identifier: format!(""), + hex_asset_identifier: format!(""), + recipient: format!(""), + }), + )); + events.push(create_stacks_new_event( + 0, + events.len() as u32, + StacksTransactionEvent::NFTBurnEvent(NFTBurnEventData { + asset_class_identifier: format!(""), + hex_asset_identifier: format!(""), + sender: format!(""), + }), + )); + events.push(create_stacks_new_event( + 0, + events.len() as u32, + StacksTransactionEvent::FTTransferEvent(FTTransferEventData { + asset_class_identifier: format!(""), + sender: format!(""), + recipient: format!(""), + amount: format!("1"), + }), + )); + events.push(create_stacks_new_event( + 0, + events.len() as u32, + StacksTransactionEvent::FTMintEvent(FTMintEventData { + asset_class_identifier: format!(""), + recipient: format!(""), + amount: format!("1"), + }), + )); + events.push(create_stacks_new_event( + 0, + events.len() as u32, + StacksTransactionEvent::FTBurnEvent(FTBurnEventData { + asset_class_identifier: format!(""), + sender: format!(""), + amount: format!("1"), + }), + )); + events.push(create_stacks_new_event( + 0, + events.len() as u32, + StacksTransactionEvent::SmartContractEvent(SmartContractEventData { + contract_identifier: format!(""), + topic: format!("print"), + hex_value: format!(""), + }), + )); + NewBlock { + block_height: height, + block_hash: height_to_prefixed_hash(height), + index_block_hash: height_to_prefixed_hash(height), + burn_block_height: burn_block_height, + burn_block_hash: height_to_prefixed_hash(burn_block_height), + parent_block_hash: height_to_prefixed_hash(parent_height), + parent_index_block_hash: height_to_prefixed_hash(parent_height), + parent_microblock: "0x0000000000000000000000000000000000000000000000000000000000000000" + .into(), + parent_microblock_sequence: 0, + parent_burn_block_hash: height_to_prefixed_hash(parent_burn_block_height), + parent_burn_block_height: burn_block_height, + parent_burn_block_timestamp: 0, + transactions: (0..4).map(|i| create_stacks_new_transaction(i)).collect(), + events, + matured_miner_rewards: vec![], + } +} + +fn create_stacks_block_received_record( + height: u64, + burn_block_height: u64, +) -> Result { + let block = create_stacks_new_block(height, burn_block_height); + let serialized_block = serde_json::to_string(&block) + .map_err(|e| format!("failed to serialize stacks block: {}", e.to_string()))?; + Ok(Record { + id: height, + created_at: height.to_string(), + kind: RecordKind::StacksBlockReceived, + blob: Some(serialized_block), + }) +} +pub fn write_stacks_blocks_to_tsv(block_count: u64, dir: &str) -> Result<(), String> { + let mut writer = csv::WriterBuilder::default() + .has_headers(false) + .delimiter(b'\t') + .double_quote(false) + .quote(b'\'') + .buffer_capacity(8 * (1 << 10)) + .from_path(dir) + .expect("unable to create csv writer"); + for i in 1..block_count + 1 { + writer + .serialize(create_stacks_block_received_record(i, i + 100)?) + .map_err(|e| format!("failed to write tsv file: {}", e.to_string()))?; + } + Ok(()) +} + +pub async fn mine_stacks_block( + port: u16, + height: u64, + burn_block_height: u64, +) -> Result<(), String> { + let block = create_stacks_new_block(height, burn_block_height); + let serialized_block = serde_json::to_string(&block).unwrap(); + let client = reqwest::Client::new(); + let _res = client + .post(format!("http://localhost:{port}/new_block")) + .header("content-type", "application/json") + .body(serialized_block) + .send() + .await + .map_err(|e| format!("failed to send new_block request: {}", e.to_string()))? + .text() + .await + .map_err(|e| { + format!( + "failed to parse response for new_block request: {}", + e.to_string() + ) + })?; + Ok(()) +} + +fn create_new_burn_block(branch: Option, burn_block_height: u64) -> NewBitcoinBlock { + NewBitcoinBlock { + burn_block_hash: branch_and_height_to_prefixed_hash(branch, burn_block_height), + burn_block_height, + reward_recipients: vec![], + reward_slot_holders: vec![], + burn_amount: 0, + } +} + +async fn call_increment_chain_tip( + bitcoin_rpc_port: u16, + branch: Option, + burn_block_height: u64, + parent_branch_key: Option, + parent_height_at_fork: Option, +) -> Result<(), String> { + let client = reqwest::Client::new(); + let tip_data = TipData { + branch: branch.unwrap_or('0'), + parent_branch_key, + parent_height_at_fork, + }; + let res = client + .post(format!( + "http://localhost:{bitcoin_rpc_port}/increment-chain-tip" + )) + .header("Content-Type", "application/json") + .json(&serde_json::to_value(tip_data).unwrap()) + .send() + .await + .map_err(|e| { + format!( + "mock bitcoin rpc endpoint increment-chain-tip failed: {}", + e.to_string() + ) + })? + .text() + .await + .map_err(|e| { + format!( + "failed to parse response for mock bitcoin rpc increment-chain-tip endpoint: {}", + e.to_string() + ) + })?; + assert_eq!(burn_block_height.to_string(), res); + Ok(()) +} + +async fn call_new_burn_block( + stacks_ingestion_port: u16, + branch: Option, + burn_block_height: u64, +) -> Result<(), String> { + let block = create_new_burn_block(branch, burn_block_height); + let serialized_block = serde_json::to_string(&block) + .map_err(|e| format!("failed to serialize burn block: {}", e.to_string()))?; + let client = reqwest::Client::new(); + let _res = client + .post(format!( + "http://localhost:{stacks_ingestion_port}/new_burn_block" + )) + .header("content-type", "application/json") + .body(serialized_block) + .send() + .await + .map_err(|e| format!("failed to send new_burn_block request: {}", e.to_string()))? + .text() + .await + .map_err(|e| { + format!( + "failed to parse response for new_burn_block request: {}", + e.to_string() + ) + })?; + Ok(()) +} + +pub async fn mine_burn_block( + stacks_ingestion_port: u16, + bitcoin_rpc_port: u16, + branch: Option, + burn_block_height: u64, +) -> Result<(), String> { + call_increment_chain_tip(bitcoin_rpc_port, branch, burn_block_height, None, None).await?; + + call_new_burn_block(stacks_ingestion_port, branch, burn_block_height).await?; + Ok(()) +} + +pub async fn create_burn_fork_at( + stacks_ingestion_port: u16, + bitcoin_rpc_port: u16, + branch: Option, + burn_block_height: u64, + fork_branch: char, + fork_at_height: u64, +) -> Result<(), String> { + call_increment_chain_tip( + bitcoin_rpc_port, + branch, + burn_block_height, + Some(fork_branch), + Some(fork_at_height), + ) + .await?; + + call_new_burn_block(stacks_ingestion_port, branch, burn_block_height).await?; + Ok(()) +} diff --git a/components/chainhook-cli/src/service/tests/helpers/mod.rs b/components/chainhook-cli/src/service/tests/helpers/mod.rs new file mode 100644 index 000000000..76e186edc --- /dev/null +++ b/components/chainhook-cli/src/service/tests/helpers/mod.rs @@ -0,0 +1,32 @@ +use std::net::TcpListener; + +pub mod build_predicates; +pub mod mock_bitcoin_rpc; +pub mod mock_service; +pub mod mock_stacks_node; + +pub fn height_to_prefixed_hash(height: u64) -> String { + format!("0x{}", height_to_hash_str(height)) +} +fn height_to_hash_str(height: u64) -> String { + format!("{:0>64}", height.to_string()) +} + +pub fn branch_and_height_to_prefixed_hash(branch: Option, height: u64) -> String { + format!("0x{}", branch_and_height_to_hash_str(branch, height)) +} +fn branch_and_height_to_hash_str(branch: Option, height: u64) -> String { + let branch = branch.unwrap_or('0'); + format!("{branch}{:0>63}", height.to_string()) +} + +pub fn get_free_port() -> Result { + let listener = TcpListener::bind("127.0.0.1:0") + .map_err(|e| format!("Failed to bind to port 0: {}", e.to_string()))?; + let port = listener + .local_addr() + .map_err(|e| format!("failed to parse address: {}", e.to_string()))? + .port(); + drop(listener); + Ok(port) +} diff --git a/components/chainhook-cli/src/service/tests/mod.rs b/components/chainhook-cli/src/service/tests/mod.rs index 8fbe52f46..fa423ab32 100644 --- a/components/chainhook-cli/src/service/tests/mod.rs +++ b/components/chainhook-cli/src/service/tests/mod.rs @@ -1,142 +1,44 @@ +use chainhook_sdk::chainhooks::types::{ + ChainhookFullSpecification, ChainhookSpecification, StacksChainhookFullSpecification, +}; +use chainhook_sdk::types::{Chain, StacksNetwork}; +use chainhook_sdk::utils::Context; use rocket::serde::json::Value as JsonValue; use rocket::Shutdown; +use std::fs::{self}; use std::net::TcpListener; -use std::sync::mpsc::Receiver; +use std::path::PathBuf; +use std::process::Child; +use std::thread::sleep; +use std::time::Duration; use test_case::test_case; use chainhook_sdk::observer::ObserverCommand; -use crate::config::PredicatesApiConfig; -use crate::config::DEFAULT_REDIS_URI; - -use super::channel; -use super::http_api::start_predicate_api_server; -use super::Context; - -const UUID: &str = "4ecc-4ecc-435b-9948-d5eeca1c3ce6"; - -fn build_bitcoin_payload( - network: Option<&str>, - if_this: Option, - then_that: Option, - filter: Option, -) -> JsonValue { - let network = network.unwrap_or("mainnet"); - let if_this = if_this.unwrap_or(json!({"scope":"block"})); - let then_that = then_that.unwrap_or(json!("noop")); - let filter = filter.unwrap_or(json!({})); - - let filter = filter.as_object().unwrap(); - let mut network_val = json!({ - "if_this": if_this, - "then_that": then_that - }); - for (k, v) in filter.iter() { - network_val[k] = v.to_owned(); - } - json!({ - "chain": "bitcoin", - "uuid": UUID, - "name": "test", - "version": 1, - "networks": { - network: network_val - } - }) -} +use self::helpers::build_predicates::{build_bitcoin_payload, build_stacks_payload, DEFAULT_UUID}; +use self::helpers::mock_bitcoin_rpc::mock_bitcoin_rpc; +use self::helpers::mock_service::{ + call_deregister_predicate, filter_predicate_status_from_all_predicates, flush_redis, + start_chainhook_service, start_redis, +}; +use self::helpers::mock_stacks_node::{ + create_tmp_working_dir, mine_burn_block, mine_stacks_block, write_stacks_blocks_to_tsv, +}; +use crate::scan::stacks::consolidate_local_stacks_chainstate_using_csv; +use crate::service::tests::helpers::build_predicates::get_random_uuid; +use crate::service::tests::helpers::get_free_port; +use crate::service::tests::helpers::mock_service::{ + build_predicate_api_server, call_get_predicate, call_register_predicate, get_chainhook_config, + get_predicate_status, +}; +use crate::service::tests::helpers::mock_stacks_node::create_burn_fork_at; +use crate::service::{PredicateStatus, PredicateStatus::*, ScanningData, StreamingData}; -fn build_stacks_payload( - network: Option<&str>, - if_this: Option, - then_that: Option, - filter: Option, -) -> JsonValue { - let network = network.unwrap_or("mainnet"); - let if_this = if_this.unwrap_or(json!({"scope":"txid", "equals": "0xfaaac1833dc4883e7ec28f61e35b41f896c395f8d288b1a177155de2abd6052f"})); - let then_that = then_that.unwrap_or(json!("noop")); - let filter = filter.unwrap_or(json!({})); - - let filter = filter.as_object().unwrap(); - let mut network_val = json!({ - "if_this": if_this, - "then_that": then_that - }); - for (k, v) in filter.iter() { - network_val[k] = v.to_owned(); - } - json!({ - "chain": "stacks", - "uuid": UUID, - "name": "test", - "version": 1, - "networks": { - network: network_val - } - }) -} +use super::http_api::document_predicate_api_server; +use super::{update_predicate_spec, update_predicate_status}; -async fn build_service(port: u16) -> (Receiver, Shutdown) { - let ctx = Context { - logger: None, - tracer: false, - }; - let api_config = PredicatesApiConfig { - http_port: port, - display_logs: true, - database_uri: DEFAULT_REDIS_URI.to_string(), - }; - - let (tx, rx) = channel(); - let shutdown = start_predicate_api_server(api_config, tx, ctx) - .await - .unwrap(); - - // Loop to check if the server is ready - let mut attempts = 0; - const MAX_ATTEMPTS: u32 = 10; - loop { - if attempts >= MAX_ATTEMPTS { - panic!("failed to start server"); - } - - if let Ok(_client) = reqwest::Client::new() - .get(format!("http://localhost:{}/ping", port)) - .send() - .await - { - break; // Server is ready - } - - tokio::time::sleep(std::time::Duration::from_secs(1)).await; - attempts += 1; - } - (rx, shutdown) -} - -async fn call_register_predicate(predicate: &JsonValue, port: u16) -> Result { - let client = reqwest::Client::new(); - let res =client - .post(format!("http://localhost:{port}/v1/chainhooks")) - .header("Content-Type", "application/json") - .json(predicate) - .send() - .await - .map_err(|e| { - format!( - "Failed to make POST request to localhost:8765/v1/chainhooks: {}", - e - ) - })? - .json::() - .await - .map_err(|e| { - format!( - "Failed to deserialize response of POST request to localhost:8765/v1/chainhooks: {}", - e - ) - })?; - Ok(res) -} +pub mod helpers; +mod observer_tests; async fn test_register_predicate(predicate: JsonValue) -> Result<(), (String, Shutdown)> { // perhaps a little janky, we bind to the port 0 to find an open one, then @@ -145,7 +47,7 @@ async fn test_register_predicate(predicate: JsonValue) -> Result<(), (String, Sh let port = listener.local_addr().unwrap().port(); drop(listener); - let (rx, shutdown) = build_service(port).await; + let (rx, shutdown) = build_predicate_api_server(port).await; let moved_shutdown = shutdown.clone(); let res = call_register_predicate(&predicate, port) @@ -192,7 +94,7 @@ async fn test_register_predicate(predicate: JsonValue) -> Result<(), (String, Sh shutdown.notify(); assert_eq!(registered_predicate, predicate); assert_eq!(status, String::from("200")); - assert_eq!(result, format!("\"{UUID}\"")); + assert_eq!(result, format!("\"{DEFAULT_UUID}\"")); Ok(()) } @@ -201,7 +103,7 @@ async fn test_register_predicate(predicate: JsonValue) -> Result<(), (String, Sh #[test_case("regtest" ; "regtest")] #[tokio::test] async fn it_handles_bitcoin_predicates_with_network(network: &str) { - let predicate = build_bitcoin_payload(Some(network), None, None, None); + let predicate = build_bitcoin_payload(Some(network), None, None, None, None); match test_register_predicate(predicate).await { Ok(_) => {} Err((e, shutdown)) => { @@ -224,6 +126,7 @@ async fn it_handles_bitcoin_predicates_with_network(network: &str) { #[test_case(json!({ "scope": "outputs","p2sh": {"equals": "2MxDJ723HBJtEMa2a9vcsns4qztxBuC8Zb2"}}) ; "with scope outputs type p2sh")] #[test_case(json!({"scope": "outputs","p2wpkh": {"equals": "bcrt1qnxknq3wqtphv7sfwy07m7e4sr6ut9yt6ed99jg"}}) ; "with scope outputs type p2wpkh")] #[test_case(json!({"scope": "outputs","p2wsh": {"equals": "bc1qklpmx03a8qkv263gy8te36w0z9yafxplc5kwzc"}}) ; "with scope outputs type p2wsh")] +#[test_case(json!({"scope": "outputs","descriptor": {"expression": "a descriptor", "range": [0,3]}}) ; "with scope outputs type descriptor")] #[test_case(json!({"scope": "stacks_protocol","operation": "stacker_rewarded"}) ; "with scope stacks_protocol operation stacker_rewarded")] #[test_case(json!({"scope": "stacks_protocol","operation": "block_committed"}) ; "with scope stacks_protocol operation block_committed")] #[test_case(json!({"scope": "stacks_protocol","operation": "leader_registered"}) ; "with scope stacks_protocol operation leader_registered")] @@ -232,7 +135,7 @@ async fn it_handles_bitcoin_predicates_with_network(network: &str) { #[test_case(json!({"scope": "ordinals_protocol","operation": "inscription_feed"}) ; "with scope ordinals_protocol operation inscription_feed")] #[tokio::test] async fn it_handles_bitcoin_if_this_predicates(if_this: JsonValue) { - let predicate = build_bitcoin_payload(None, Some(if_this), None, None); + let predicate = build_bitcoin_payload(None, Some(if_this), None, None, None); match test_register_predicate(predicate).await { Ok(_) => {} Err((e, shutdown)) => { @@ -247,7 +150,7 @@ async fn it_handles_bitcoin_if_this_predicates(if_this: JsonValue) { #[test_case(json!({"file_append": {"path": "./path"}}) ; "with file_append action")] #[tokio::test] async fn it_handles_bitcoin_then_that_predicates(then_that: JsonValue) { - let predicate = build_bitcoin_payload(None, None, Some(then_that), None); + let predicate = build_bitcoin_payload(None, None, Some(then_that), None, None); match test_register_predicate(predicate).await { Ok(_) => {} Err((e, shutdown)) => { @@ -268,7 +171,7 @@ async fn it_handles_bitcoin_then_that_predicates(then_that: JsonValue) { #[test_case(json!({"include_witness": true}) ; "include_witness filter")] #[tokio::test] async fn it_handles_bitcoin_predicates_with_filters(filters: JsonValue) { - let predicate = build_bitcoin_payload(None, None, None, Some(filters)); + let predicate = build_bitcoin_payload(None, None, None, Some(filters), None); match test_register_predicate(predicate).await { Ok(_) => {} Err((e, shutdown)) => { @@ -284,7 +187,7 @@ async fn it_handles_bitcoin_predicates_with_filters(filters: JsonValue) { #[test_case("simnet" ; "simnet")] #[tokio::test] async fn it_handles_stacks_predicates_with_network(network: &str) { - let predicate = build_stacks_payload(Some(network), None, None, None); + let predicate = build_stacks_payload(Some(network), None, None, None, None); match test_register_predicate(predicate).await { Ok(_) => {} Err((e, shutdown)) => { @@ -308,13 +211,14 @@ async fn it_handles_stacks_predicates_with_network(network: &str) { #[test_case(json!({"scope":"print_event","contract_identifier": "ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM.monkey-sip09", "contains": "*"}); "with scope print_event wildcard conatins")] #[test_case(json!({"scope":"print_event","contract_identifier": "*", "contains": "vault"}); "with scope print_event wildcard contract_identifier")] #[test_case(json!({"scope":"print_event", "contract_identifier": "*", "contains": "*"}); "with scope print_event wildcard both fields")] +#[test_case(json!({"scope":"print_event", "contract_identifier": "*", "matches_regex": "(some)|(value)"}); "with scope print_event and matching_rule regex")] #[test_case(json!({"scope":"ft_event","asset_identifier": "ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM.cbtc-token::cbtc","actions": ["burn"]}); "with scope ft_event")] #[test_case(json!({"scope":"nft_event","asset_identifier": "ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM.monkey-sip09::monkeys","actions": ["mint", "transfer", "burn"]}); "with scope nft_event")] #[test_case(json!({"scope":"stx_event","actions": ["transfer", "lock"]}); "with scope stx_event")] #[test_case(json!({"scope":"txid","equals": "0xfaaac1833dc4883e7ec28f61e35b41f896c395f8d288b1a177155de2abd6052f"}); "with scope txid")] #[tokio::test] async fn it_handles_stacks_if_this_predicates(if_this: JsonValue) { - let predicate = build_stacks_payload(None, Some(if_this), None, None); + let predicate = build_stacks_payload(None, Some(if_this), None, None, None); match test_register_predicate(predicate).await { Ok(_) => {} Err((e, shutdown)) => { @@ -329,7 +233,7 @@ async fn it_handles_stacks_if_this_predicates(if_this: JsonValue) { #[test_case(json!({"file_append": {"path": "./path"}}) ; "with file_append action")] #[tokio::test] async fn it_handles_stacks_then_that_predicates(then_that: JsonValue) { - let predicate = build_stacks_payload(None, None, Some(then_that), None); + let predicate = build_stacks_payload(None, None, Some(then_that), None, None); match test_register_predicate(predicate).await { Ok(_) => {} Err((e, shutdown)) => { @@ -348,7 +252,7 @@ async fn it_handles_stacks_then_that_predicates(then_that: JsonValue) { #[test_case(json!({"decode_clarity_values": true}) ; "decode_clarity_values filter")] #[tokio::test] async fn it_handles_stacks_predicates_with_filters(filters: JsonValue) { - let predicate = build_stacks_payload(None, None, None, Some(filters)); + let predicate = build_stacks_payload(None, None, None, Some(filters), None); match test_register_predicate(predicate).await { Ok(_) => {} Err((e, shutdown)) => { @@ -357,3 +261,860 @@ async fn it_handles_stacks_predicates_with_filters(filters: JsonValue) { } } } + +fn assert_confirmed_expiration_status( + (status, expected_evaluations, expected_occurrences): ( + PredicateStatus, + Option, + Option, + ), +) { + match status { + PredicateStatus::ConfirmedExpiration(data) => { + if let Some(expected) = expected_evaluations { + assert_eq!( + data.number_of_blocks_evaluated, expected, + "incorrect number of blocks evaluated" + ); + } + if let Some(expected) = expected_occurrences { + assert_eq!( + data.number_of_times_triggered, expected, + "incorrect number of predicates triggered" + ); + } + } + _ => panic!("expected ConfirmedExpiration status, found {:?}", status), + } +} +fn assert_unconfirmed_expiration_status( + (status, expected_evaluations, expected_occurrences): ( + PredicateStatus, + Option, + Option, + ), +) { + match status { + PredicateStatus::UnconfirmedExpiration(data) => { + if let Some(expected) = expected_evaluations { + assert_eq!( + data.number_of_blocks_evaluated, expected, + "incorrect number of blocks evaluated" + ); + } + if let Some(expected) = expected_occurrences { + assert_eq!( + data.number_of_times_triggered, expected, + "incorrect number of predicates triggered" + ); + } + } + _ => panic!("expected UnconfirmedExpiration status, found {:?}", status), + } +} + +fn assert_streaming_status( + (status, expected_evaluations, expected_occurrences): ( + PredicateStatus, + Option, + Option, + ), +) { + match status { + PredicateStatus::Streaming(data) => { + if let Some(expected) = expected_evaluations { + assert_eq!( + data.number_of_blocks_evaluated, expected, + "incorrect number of blocks evaluated" + ); + } + if let Some(expected) = expected_occurrences { + assert_eq!( + data.number_of_times_triggered, expected, + "incorrect number of predicates triggered" + ); + } + } + _ => panic!("expected Streaming status, found {:?}", status), + } +} + +fn assert_interrupted_status((status, _, _): (PredicateStatus, Option, Option)) { + match status { + PredicateStatus::Interrupted(_) => {} + _ => panic!("expected Interrupted status, found {:?}", status), + } +} + +fn setup_chainhook_service_ports() -> Result<(u16, u16, u16, u16, u16), String> { + let redis_port = get_free_port()?; + let chainhook_service_port = get_free_port()?; + let stacks_rpc_port = get_free_port()?; + let stacks_ingestion_port = get_free_port()?; + let bitcoin_rpc_port = get_free_port()?; + Ok(( + redis_port, + chainhook_service_port, + stacks_rpc_port, + stacks_ingestion_port, + bitcoin_rpc_port, + )) +} + +async fn await_new_scanning_status_complete( + uuid: &str, + chainhook_service_port: u16, +) -> Result<(), String> { + let mut attempts = 0; + loop { + match get_predicate_status(uuid, chainhook_service_port).await? { + PredicateStatus::New | PredicateStatus::Scanning(_) => { + attempts += 1; + if attempts == 10 { + return Err(format!("predicate stuck in new/scanning status")); + } + sleep(Duration::new(1, 0)); + } + _ => break Ok(()), + } + } +} + +async fn setup_stacks_chainhook_test( + starting_chain_tip: u64, + redis_seed: Option<(StacksChainhookFullSpecification, PredicateStatus)>, + startup_predicates: Option>, +) -> (Child, String, u16, u16, u16, u16) { + let ( + redis_port, + chainhook_service_port, + stacks_rpc_port, + stacks_ingestion_port, + bitcoin_rpc_port, + ) = setup_chainhook_service_ports().unwrap_or_else(|e| panic!("test failed with error: {e}")); + + let mut redis_process = start_redis(redis_port) + .await + .unwrap_or_else(|e| panic!("test failed with error: {e}")); + flush_redis(redis_port); + + let logger = hiro_system_kit::log::setup_logger(); + let _guard = hiro_system_kit::log::setup_global_logger(logger.clone()); + let ctx = Context { + logger: Some(logger), + tracer: false, + }; + + if let Some((predicate, status)) = redis_seed { + let client = redis::Client::open(format!("redis://localhost:{redis_port}/")) + .unwrap_or_else(|e| { + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("test failed with error: {e}"); + }); + let mut connection = client.get_connection().unwrap_or_else(|e| { + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("test failed with error: {e}"); + }); + let stacks_spec = predicate + .into_selected_network_specification(&StacksNetwork::Devnet) + .unwrap_or_else(|e| { + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("test failed with error: {e}"); + }); + + let spec = ChainhookSpecification::Stacks(stacks_spec); + update_predicate_spec(&spec.key(), &spec, &mut connection, &ctx); + update_predicate_status(&spec.key(), status, &mut connection, &ctx); + } + + let (working_dir, tsv_dir) = create_tmp_working_dir().unwrap_or_else(|e| { + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("test failed with error: {e}"); + }); + + write_stacks_blocks_to_tsv(starting_chain_tip, &tsv_dir).unwrap_or_else(|e| { + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("test failed with error: {e}"); + }); + + let mut config = get_chainhook_config( + redis_port, + chainhook_service_port, + stacks_rpc_port, + stacks_ingestion_port, + bitcoin_rpc_port, + &working_dir, + &tsv_dir, + ); + + consolidate_local_stacks_chainstate_using_csv(&mut config, &ctx) + .await + .unwrap_or_else(|e| { + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("test failed with error: {e}"); + }); + + start_chainhook_service(config, chainhook_service_port, startup_predicates, &ctx) + .await + .unwrap_or_else(|e| { + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("test failed with error: {e}"); + }); + ( + redis_process, + working_dir, + chainhook_service_port, + redis_port, + stacks_ingestion_port, + bitcoin_rpc_port, + ) +} + +#[test_case(5, 0, Some(1), Some(3), Some(3), Some(3) => using assert_confirmed_expiration_status; "predicate_end_block lower than starting_chain_tip ends with ConfirmedExpiration status")] +#[test_case(5, 0, Some(1), None, Some(5), Some(5) => using assert_streaming_status; "no predicate_end_block ends with Streaming status")] +#[test_case(3, 0, Some(1), Some(5), Some(3), Some(3) => using assert_streaming_status; "predicate_end_block greater than chain_tip ends with Streaming status")] +#[test_case(5, 4, Some(1), Some(7), Some(9), Some(7) => using assert_unconfirmed_expiration_status; "predicate_end_block greater than starting_chain_tip and mining until end_block ends with UnconfirmedExpiration status")] +#[test_case(1, 3, Some(1), Some(3), Some(4), Some(3) => using assert_unconfirmed_expiration_status; "predicate_end_block greater than starting_chain_tip and mining blocks so that predicate_end_block confirmations < CONFIRMED_SEGMENT_MINIMUM_LENGTH ends with UnconfirmedExpiration status")] +#[test_case(3, 7, Some(1), Some(4), Some(9), Some(4) => using assert_confirmed_expiration_status; "predicate_end_block greater than starting_chain_tip and mining blocks so that predicate_end_block confirmations >= CONFIRMED_SEGMENT_MINIMUM_LENGTH ends with ConfirmedExpiration status")] +#[test_case(0, 0, None, None, None, None => using assert_interrupted_status; "ommitting start_block ends with Interrupted status")] +#[tokio::test] +#[cfg_attr(not(feature = "redis_tests"), ignore)] +async fn test_stacks_predicate_status_is_updated( + starting_chain_tip: u64, + blocks_to_mine: u64, + predicate_start_block: Option, + predicate_end_block: Option, + expected_evaluations: Option, + expected_occurrences: Option, +) -> (PredicateStatus, Option, Option) { + let ( + mut redis_process, + working_dir, + chainhook_service_port, + redis_port, + stacks_ingestion_port, + _, + ) = setup_stacks_chainhook_test(starting_chain_tip, None, None).await; + + let uuid = &get_random_uuid(); + let predicate = build_stacks_payload( + Some("devnet"), + Some(json!({"scope":"block_height", "lower_than": 600})), + None, + Some(json!({"start_block": predicate_start_block, "end_block": predicate_end_block})), + Some(uuid), + ); + let _ = call_register_predicate(&predicate, chainhook_service_port) + .await + .unwrap_or_else(|e| { + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("test failed with error: {e}"); + }); + + await_new_scanning_status_complete(uuid, chainhook_service_port) + .await + .unwrap_or_else(|e| { + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("test failed with error: {e}"); + }); + + for i in 1..blocks_to_mine + 1 { + mine_stacks_block( + stacks_ingestion_port, + i + starting_chain_tip, + i + starting_chain_tip + 100, + ) + .await + .unwrap_or_else(|e| { + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("test failed with error: {e}"); + }); + } + sleep(Duration::new(2, 0)); + let result = get_predicate_status(uuid, chainhook_service_port) + .await + .unwrap_or_else(|e| { + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("test failed with error: {e}"); + }); + + let found_predicate_status = + filter_predicate_status_from_all_predicates(uuid, chainhook_service_port) + .await + .unwrap_or_else(|e| { + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("test failed with error: {e}"); + }); + assert_eq!(found_predicate_status, result); + + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); + (result, expected_evaluations, expected_occurrences) +} + +async fn setup_bitcoin_chainhook_test( + starting_chain_tip: u64, +) -> (Child, String, u16, u16, u16, u16) { + let ( + redis_port, + chainhook_service_port, + stacks_rpc_port, + stacks_ingestion_port, + bitcoin_rpc_port, + ) = setup_chainhook_service_ports().unwrap_or_else(|e| panic!("test failed with error: {e}")); + + let mut redis_process = start_redis(redis_port) + .await + .unwrap_or_else(|e| panic!("test failed with error: {e}")); + + flush_redis(redis_port); + let (working_dir, tsv_dir) = create_tmp_working_dir().unwrap_or_else(|e| { + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("test failed with error: {e}"); + }); + + let logger = hiro_system_kit::log::setup_logger(); + let _guard = hiro_system_kit::log::setup_global_logger(logger.clone()); + let ctx = Context { + logger: Some(logger), + tracer: false, + }; + + let _ = hiro_system_kit::thread_named("Bitcoin rpc service") + .spawn(move || { + let future = mock_bitcoin_rpc(bitcoin_rpc_port, starting_chain_tip); + let _ = hiro_system_kit::nestable_block_on(future); + }) + .expect("unable to spawn thread"); + + let config = get_chainhook_config( + redis_port, + chainhook_service_port, + stacks_rpc_port, + stacks_ingestion_port, + bitcoin_rpc_port, + &working_dir, + &tsv_dir, + ); + + start_chainhook_service(config, chainhook_service_port, None, &ctx) + .await + .unwrap_or_else(|e| { + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("test failed with error: {e}"); + }); + ( + redis_process, + working_dir, + chainhook_service_port, + redis_port, + stacks_ingestion_port, + bitcoin_rpc_port, + ) +} + +#[test_case(5, 1, Some(1), Some(3), Some(3), Some(3) => using assert_unconfirmed_expiration_status; "predicate_end_block lower than starting_chain_tip with predicate_end_block confirmations < CONFIRMED_SEGMENT_MINIMUM_LENGTH ends with UnconfirmedExpiration status")] +#[test_case(10, 1, Some(1), Some(3), Some(3), Some(3) => using assert_confirmed_expiration_status; "predicate_end_block lower than starting_chain_tip with predicate_end_block confirmations >= CONFIRMED_SEGMENT_MINIMUM_LENGTH ends with ConfirmedExpiration status")] +#[test_case(1, 3, Some(1), Some(3), Some(4), Some(3) => using assert_unconfirmed_expiration_status; "predicate_end_block greater than starting_chain_tip and mining blocks so that predicate_end_block confirmations < CONFIRMED_SEGMENT_MINIMUM_LENGTH ends with UnconfirmedExpiration status")] +#[test_case(3, 7, Some(1), Some(4), Some(9), Some(4) => using assert_confirmed_expiration_status; "predicate_end_block greater than starting_chain_tip and mining blocks so that predicate_end_block confirmations >= CONFIRMED_SEGMENT_MINIMUM_LENGTH ends with ConfirmedExpiration status")] +#[test_case(0, 0, None, None, None, None => using assert_interrupted_status; "ommitting start_block ends with Interrupted status")] +#[tokio::test] +#[cfg_attr(not(feature = "redis_tests"), ignore)] +async fn test_bitcoin_predicate_status_is_updated( + starting_chain_tip: u64, + blocks_to_mine: u64, + predicate_start_block: Option, + predicate_end_block: Option, + expected_evaluations: Option, + expected_occurrences: Option, +) -> (PredicateStatus, Option, Option) { + let ( + mut redis_process, + working_dir, + chainhook_service_port, + redis_port, + stacks_ingestion_port, + bitcoin_rpc_port, + ) = setup_bitcoin_chainhook_test(starting_chain_tip).await; + + let uuid = &get_random_uuid(); + let predicate = build_bitcoin_payload( + Some("regtest"), + Some(json!({"scope":"block"})), + None, + Some( + json!({"start_block": predicate_start_block, "end_block": predicate_end_block, "include_proof": true}), + ), + Some(uuid), + ); + + let _ = call_register_predicate(&predicate, chainhook_service_port) + .await + .unwrap_or_else(|e| { + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("test failed with error: {e}"); + }); + + await_new_scanning_status_complete(uuid, chainhook_service_port) + .await + .unwrap_or_else(|e| { + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("test failed with error: {e}"); + }); + + for i in 1..blocks_to_mine + 1 { + mine_burn_block( + stacks_ingestion_port, + bitcoin_rpc_port, + None, + i + starting_chain_tip, + ) + .await + .unwrap_or_else(|e| { + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("test failed with error: {e}"); + }); + } + sleep(Duration::new(2, 0)); + let result = get_predicate_status(uuid, chainhook_service_port) + .await + .unwrap_or_else(|e| { + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("test failed with error: {e}"); + }); + let found_predicate_status = + filter_predicate_status_from_all_predicates(uuid, chainhook_service_port) + .await + .unwrap_or_else(|e| { + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("test failed with error: {e}"); + }); + assert_eq!(found_predicate_status, result); + + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); + (result, expected_evaluations, expected_occurrences) +} + +/// +/// ┌─> predicate start block +/// │ ┌─> reorg, predicate scans from A(3) to B(6) +/// │ │ ┌─> predicate end block (unconfirmed set) +/// A(1) -> A(2) -> A(3) -> A(4) -> A(5) │ │ ┌─> predicate status confirmed +/// \ -> B(4) -> B(5) -> B(6) -> B(7) -> B(8) -> B(9) -> B(10) -> B(11) -> B(12) +/// +/// +#[test_case(5, 3, 9, Some(2), Some(7); "ommitting start_block ends with Interrupted status")] +#[tokio::test] +#[cfg_attr(not(feature = "redis_tests"), ignore)] +async fn test_bitcoin_predicate_status_is_updated_with_reorg( + genesis_chain_blocks_to_mine: u64, + fork_point: u64, + fork_blocks_to_mine: u64, + predicate_start_block: Option, + predicate_end_block: Option, +) { + let starting_chain_tip = 0; + let ( + mut redis_process, + working_dir, + chainhook_service_port, + redis_port, + stacks_ingestion_port, + bitcoin_rpc_port, + ) = setup_bitcoin_chainhook_test(starting_chain_tip).await; + + let uuid = &get_random_uuid(); + let predicate = build_bitcoin_payload( + Some("regtest"), + Some(json!({"scope":"block"})), + None, + Some( + json!({"start_block": predicate_start_block, "end_block": predicate_end_block, "include_proof": true}), + ), + Some(uuid), + ); + + let _ = call_register_predicate(&predicate, chainhook_service_port) + .await + .unwrap_or_else(|e| { + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("test failed with error: {e}"); + }); + + let genesis_branch_key = '0'; + let first_block_mined_height = starting_chain_tip + 1; + let last_block_mined_height = genesis_chain_blocks_to_mine + first_block_mined_height; + for block_height in first_block_mined_height..last_block_mined_height { + mine_burn_block( + stacks_ingestion_port, + bitcoin_rpc_port, + Some(genesis_branch_key), + block_height, + ) + .await + .unwrap_or_else(|e| { + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("test failed with error: {e}"); + }); + } + + sleep(Duration::new(2, 0)); + let status = get_predicate_status(uuid, chainhook_service_port) + .await + .unwrap_or_else(|e| { + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("test failed with error: {e}"); + }); + assert_streaming_status((status, None, None)); + + let branch_key = '1'; + let first_fork_block_mined_height = fork_point + 1; + create_burn_fork_at( + stacks_ingestion_port, + bitcoin_rpc_port, + Some(branch_key), + first_fork_block_mined_height, + genesis_branch_key, + fork_point, + ) + .await + .unwrap_or_else(|e| { + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("test failed with error: {e}"); + }); + + let reorg_point = last_block_mined_height + 1; + let first_fork_block_mined_height = first_fork_block_mined_height + 1; + let last_fork_block_mined_height = first_fork_block_mined_height + fork_blocks_to_mine; + + for block_height in first_fork_block_mined_height..last_fork_block_mined_height { + mine_burn_block( + stacks_ingestion_port, + bitcoin_rpc_port, + Some(branch_key), + block_height, + ) + .await + .unwrap_or_else(|e| { + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("test failed with error: {e}"); + }); + if block_height == reorg_point { + sleep(Duration::new(2, 0)); + let status = get_predicate_status(uuid, chainhook_service_port) + .await + .unwrap_or_else(|e| { + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("test failed with error: {e}"); + }); + assert_streaming_status((status, None, None)); + } + } + + sleep(Duration::new(2, 0)); + let status = get_predicate_status(uuid, chainhook_service_port) + .await + .unwrap_or_else(|e| { + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("test failed with error: {e}"); + }); + + assert_confirmed_expiration_status((status, None, None)); + + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); +} + +#[test_case(Chain::Stacks; "for stacks chain")] +#[test_case(Chain::Bitcoin; "for bitcoin chain")] +#[tokio::test] +#[cfg_attr(not(feature = "redis_tests"), ignore)] +async fn test_deregister_predicate(chain: Chain) { + let (mut redis_process, working_dir, chainhook_service_port, redis_port, _, _) = match &chain { + Chain::Stacks => setup_stacks_chainhook_test(0, None, None).await, + Chain::Bitcoin => setup_bitcoin_chainhook_test(0).await, + }; + + let uuid = &get_random_uuid(); + + let predicate = match &chain { + Chain::Stacks => build_stacks_payload( + Some("devnet"), + Some(json!({"scope":"block_height", "lower_than": 100})), + None, + Some(json!({"start_block": 1, "end_block": 2})), + Some(uuid), + ), + Chain::Bitcoin => build_bitcoin_payload( + Some("regtest"), + Some(json!({"scope":"block"})), + None, + Some(json!({"start_block": 1, "end_block": 2, "include_proof": true})), + Some(uuid), + ), + }; + + let _ = call_register_predicate(&predicate, chainhook_service_port) + .await + .unwrap_or_else(|e| { + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("test failed with error: {e}"); + }); + + let result = call_get_predicate(uuid, chainhook_service_port) + .await + .unwrap_or_else(|e| { + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("test failed with error: {e}"); + }); + assert_eq!(result.get("status"), Some(&json!(200))); + + let result = call_deregister_predicate(&chain, uuid, chainhook_service_port) + .await + .unwrap_or_else(|e| { + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("test failed with error: {e}"); + }); + assert_eq!(result.get("status"), Some(&json!(200))); + + let mut attempts = 0; + loop { + let result = call_get_predicate(uuid, chainhook_service_port) + .await + .unwrap_or_else(|e| { + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("test failed with error: {e}"); + }); + if result.get("status") == Some(&json!(404)) { + break; + } else if attempts == 3 { + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("predicate was not successfully derigistered"); + } else { + attempts += 1; + sleep(Duration::new(1, 0)); + } + } + + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); +} + +#[test_case(New, 6 => using assert_confirmed_expiration_status; "preloaded predicate with new status should get scanned until completion")] +#[test_case(Scanning(ScanningData { + number_of_blocks_evaluated: 4, + number_of_blocks_to_scan: 1, + number_of_times_triggered: 0, + last_occurrence: None, + last_evaluated_block_height: 4 +}), 6 => using assert_confirmed_expiration_status; "preloaded predicate with scanning status should get scanned until completion")] +#[test_case(Streaming(StreamingData { + number_of_blocks_evaluated: 4, + number_of_times_triggered: 0, + last_occurrence: None, + last_evaluation: 0, + last_evaluated_block_height: 4 +}), 6 => using assert_confirmed_expiration_status; "preloaded predicate with streaming status and last evaluated height below tip should get scanned until completion")] +#[test_case(Streaming(StreamingData { + number_of_blocks_evaluated: 5, + number_of_times_triggered: 0, + last_occurrence: None, + last_evaluation: 0, + last_evaluated_block_height: 5 +}), 5 => using assert_streaming_status; "preloaded predicate with streaming status and last evaluated height at tip should be streamed")] +#[tokio::test] +#[cfg_attr(not(feature = "redis_tests"), ignore)] +async fn test_restarting_with_saved_predicates( + starting_status: PredicateStatus, + starting_chain_tip: u64, +) -> (PredicateStatus, Option, Option) { + let uuid = &get_random_uuid(); + let predicate = build_stacks_payload( + Some("devnet"), + Some(json!({"scope":"block_height", "lower_than": 100})), + None, + Some(json!({"start_block": 1, "end_block": 6})), + Some(uuid), + ); + let predicate = + serde_json::from_value(predicate).expect("failed to set up stacks chanhook spec for test"); + + let (mut redis_process, working_dir, chainhook_service_port, redis_port, _, _) = + setup_stacks_chainhook_test(starting_chain_tip, Some((predicate, starting_status)), None) + .await; + + await_new_scanning_status_complete(uuid, chainhook_service_port) + .await + .unwrap_or_else(|e| { + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("test failed with error: {e}"); + }); + + sleep(Duration::new(2, 0)); + let result = get_predicate_status(uuid, chainhook_service_port) + .await + .unwrap_or_else(|e| { + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("test failed with error: {e}"); + }); + + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); + (result, None, None) +} + +#[tokio::test] +#[cfg_attr(not(feature = "redis_tests"), ignore)] +async fn it_allows_specifying_startup_predicate() { + let uuid = &get_random_uuid(); + let predicate = build_stacks_payload( + Some("devnet"), + Some(json!({"scope":"block_height", "lower_than": 100})), + None, + Some(json!({"start_block": 1, "end_block": 2})), + Some(uuid), + ); + let predicate = + serde_json::from_value(predicate).expect("failed to set up stacks chanhook spec for test"); + let startup_predicate = ChainhookFullSpecification::Stacks(predicate); + let (mut redis_process, working_dir, chainhook_service_port, redis_port, _, _) = + setup_stacks_chainhook_test(3, None, Some(vec![startup_predicate])).await; + + await_new_scanning_status_complete(uuid, chainhook_service_port) + .await + .unwrap_or_else(|e| { + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("test failed with error: {e}"); + }); + + sleep(Duration::new(2, 0)); + let result = get_predicate_status(uuid, chainhook_service_port) + .await + .unwrap_or_else(|e| { + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("test failed with error: {e}"); + }); + + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); + assert_confirmed_expiration_status((result, None, None)); +} + +#[tokio::test] +#[cfg_attr(not(feature = "redis_tests"), ignore)] +async fn register_predicate_responds_409_if_uuid_in_use() { + let uuid = &get_random_uuid(); + let predicate = build_stacks_payload( + Some("devnet"), + Some(json!({"scope":"block_height", "lower_than": 100})), + None, + Some(json!({"start_block": 1, "end_block": 2})), + Some(uuid), + ); + let stacks_spec = serde_json::from_value(predicate.clone()) + .expect("failed to set up stacks chanhook spec for test"); + let startup_predicate = ChainhookFullSpecification::Stacks(stacks_spec); + + let (mut redis_process, working_dir, chainhook_service_port, redis_port, _, _) = + setup_stacks_chainhook_test(3, None, Some(vec![startup_predicate])).await; + + let result = call_register_predicate(&predicate, chainhook_service_port) + .await + .unwrap_or_else(|e| { + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("test failed with error: {e}"); + }); + assert_eq!(result.get("status"), Some(&json!(409))); + + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); +} + +#[test] +fn it_generates_open_api_spec() { + let new_spec = document_predicate_api_server().unwrap(); + + let mut path = PathBuf::from(env!("CARGO_MANIFEST_DIR")); + path.push("../../docs/chainhook-openapi.json"); + let current_spec = fs::read_to_string(path).unwrap(); + + assert_eq!( + current_spec, new_spec, + "breaking change detected: open api spec has been updated" + ) +} diff --git a/components/chainhook-cli/src/service/tests/observer_tests.rs b/components/chainhook-cli/src/service/tests/observer_tests.rs new file mode 100644 index 000000000..40df05173 --- /dev/null +++ b/components/chainhook-cli/src/service/tests/observer_tests.rs @@ -0,0 +1,164 @@ +use std::{sync::mpsc::channel, thread::sleep, time::Duration}; + +use chainhook_sdk::{ + observer::{start_event_observer, EventObserverConfig}, + types::{BitcoinNetwork, StacksNodeConfig}, + utils::Context, +}; +use reqwest::Method; +use serde_json::Value; +use test_case::test_case; + +use crate::service::tests::{ + helpers::{ + build_predicates::build_stacks_payload, + mock_service::{call_observer_svc, call_ping, call_register_predicate, flush_redis}, + }, + setup_bitcoin_chainhook_test, setup_stacks_chainhook_test, +}; + +use super::helpers::{ + build_predicates::get_random_uuid, get_free_port, mock_stacks_node::create_tmp_working_dir, +}; + +#[tokio::test] +#[cfg_attr(not(feature = "redis_tests"), ignore)] +async fn ping_endpoint_returns_metrics() { + let ( + mut redis_process, + working_dir, + chainhook_service_port, + redis_port, + stacks_ingestion_port, + _, + ) = setup_stacks_chainhook_test(1, None, None).await; + + let uuid = &get_random_uuid(); + let predicate = build_stacks_payload(Some("devnet"), None, None, None, Some(uuid)); + let _ = call_register_predicate(&predicate, chainhook_service_port) + .await + .unwrap_or_else(|e| { + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("test failed with error: {e}"); + }); + + let metrics = call_ping(stacks_ingestion_port).await.unwrap_or_else(|e| { + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); + panic!("test failed with error: {e}"); + }); + + assert_eq!(metrics.stacks.registered_predicates, 1); + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); +} + +async fn await_observer_started(port: u16) { + let mut attempts = 0; + loop { + let url = format!("http://localhost:{port}/ping"); + match call_observer_svc(&url, Method::GET, None).await { + Ok(_) => break, + Err(e) => { + if attempts > 3 { + panic!("failed to start event observer, {}", e); + } else { + attempts += 1; + sleep(Duration::new(0, 500_000_000)); + } + } + } + } +} +#[test_case("/wallet", json!({ + "method": "getaddressinfo", + "params": vec!["bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh"], + "id": "my-id", + "jsonrpc": "2.0" +}))] +#[test_case("/", json!({ + "method": "sendrawtransaction", + "params": vec!["0x0000"], + "id": "my-id", + "jsonrpc": "2.0" +}))] +#[tokio::test] +#[cfg_attr(not(feature = "redis_tests"), ignore)] +async fn bitcoin_rpc_requests_are_forwarded(endpoint: &str, body: Value) { + let (mut redis_process, working_dir, _, redis_port, stacks_ingestion_port, _) = + setup_bitcoin_chainhook_test(1).await; + + await_observer_started(stacks_ingestion_port).await; + + let url = format!("http://localhost:{stacks_ingestion_port}{endpoint}"); + let response = call_observer_svc(&url, Method::POST, Some(&body)) + .await + .unwrap(); + assert!(response.get("result").is_some()); + assert!(response.get("error").is_none()); + std::fs::remove_dir_all(&working_dir).unwrap(); + flush_redis(redis_port); + redis_process.kill().unwrap(); +} + +async fn start_and_ping_event_observer(config: EventObserverConfig, ingestion_port: u16) { + let (observer_commands_tx, observer_commands_rx) = channel(); + let logger = hiro_system_kit::log::setup_logger(); + let _guard = hiro_system_kit::log::setup_global_logger(logger.clone()); + let ctx = Context { + logger: Some(logger), + tracer: false, + }; + start_event_observer( + config, + observer_commands_tx, + observer_commands_rx, + None, + None, + ctx, + ) + .unwrap(); + await_observer_started(ingestion_port).await; +} +#[test_case("/drop_mempool_tx", Method::POST, None)] +#[test_case("/attachments/new", Method::POST, None)] +#[test_case("/mined_block", Method::POST, Some(&json!({})))] +#[test_case("/mined_microblock", Method::POST, Some(&json!({})))] +#[tokio::test] +async fn it_responds_200_for_unimplemented_endpoints( + endpoint: &str, + method: Method, + body: Option<&Value>, +) { + let ingestion_port = get_free_port().unwrap(); + let (working_dir, _tsv_dir) = create_tmp_working_dir().unwrap_or_else(|e| { + panic!("test failed with error: {e}"); + }); + let config = EventObserverConfig { + chainhook_config: None, + bitcoin_rpc_proxy_enabled: false, + ingestion_port: ingestion_port, + bitcoind_rpc_username: format!(""), + bitcoind_rpc_password: format!(""), + bitcoind_rpc_url: format!(""), + bitcoin_block_signaling: chainhook_sdk::types::BitcoinBlockSignaling::Stacks( + StacksNodeConfig { + rpc_url: format!(""), + ingestion_port: ingestion_port, + }, + ), + display_logs: false, + cache_path: working_dir, + bitcoin_network: BitcoinNetwork::Regtest, + stacks_network: chainhook_sdk::types::StacksNetwork::Devnet, + data_handler_tx: None, + }; + start_and_ping_event_observer(config, ingestion_port).await; + let url = format!("http://localhost:{ingestion_port}{endpoint}"); + let response = call_observer_svc(&url, method, body).await.unwrap(); + assert_eq!(response.get("status").unwrap(), &json!(200)); +} diff --git a/components/chainhook-cli/src/storage/mod.rs b/components/chainhook-cli/src/storage/mod.rs index 496d701c2..3c72fdb3f 100644 --- a/components/chainhook-cli/src/storage/mod.rs +++ b/components/chainhook-cli/src/storage/mod.rs @@ -28,12 +28,29 @@ fn get_default_stacks_db_file_path(base_dir: &PathBuf) -> PathBuf { destination_path } -pub fn open_readonly_stacks_db_conn(base_dir: &PathBuf, _ctx: &Context) -> Result { +pub fn open_readonly_stacks_db_conn(base_dir: &PathBuf, ctx: &Context) -> Result { let path = get_default_stacks_db_file_path(&base_dir); let opts = get_db_default_options(); - let db = DB::open_for_read_only(&opts, path, false) - .map_err(|e| format!("unable to open stacks.rocksdb: {}", e.to_string()))?; - Ok(db) + match DB::open_for_read_only(&opts, path.clone(), false) { + Ok(db) => Ok(db), + Err(e) => { + if e.to_string() + .contains("IO error: No such file or directory") + { + return match open_readwrite_stacks_db_conn(base_dir, ctx) { + Ok(_) => { + let db = DB::open_for_read_only(&opts, path, false).map_err(|e| { + format!("unable to open stacks.rocksdb: {}", e.to_string()) + })?; + Ok(db) + } + Err(e) => Err(e), + }; + } else { + return Err(format!("unable to open stacks.rocksdb: {}", e.to_string())); + } + } + } } pub fn open_readwrite_stacks_db_conn(base_dir: &PathBuf, _ctx: &Context) -> Result { @@ -44,28 +61,6 @@ pub fn open_readwrite_stacks_db_conn(base_dir: &PathBuf, _ctx: &Context) -> Resu Ok(db) } -fn get_default_bitcoin_db_file_path(base_dir: &PathBuf) -> PathBuf { - let mut destination_path = base_dir.clone(); - destination_path.push("bitcoin.rocksdb"); - destination_path -} - -pub fn open_readonly_bitcoin_db_conn(base_dir: &PathBuf, _ctx: &Context) -> Result { - let path = get_default_bitcoin_db_file_path(&base_dir); - let opts = get_db_default_options(); - let db = DB::open_for_read_only(&opts, path, false) - .map_err(|e| format!("unable to open bitcoin.rocksdb: {}", e.to_string()))?; - Ok(db) -} - -pub fn open_readwrite_bitcoin_db_conn(base_dir: &PathBuf, _ctx: &Context) -> Result { - let path = get_default_bitcoin_db_file_path(&base_dir); - let opts = get_db_default_options(); - let db = DB::open(&opts, path) - .map_err(|e| format!("unable to open bitcoin.rocksdb: {}", e.to_string()))?; - Ok(db) -} - fn get_block_key(block_identifier: &BlockIdentifier) -> [u8; 12] { let mut key = [0u8; 12]; key[..2].copy_from_slice(b"b:"); diff --git a/components/chainhook-sdk/Cargo.toml b/components/chainhook-sdk/Cargo.toml index 954c2e80a..8ec09e82a 100644 --- a/components/chainhook-sdk/Cargo.toml +++ b/components/chainhook-sdk/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "chainhook-sdk" -version = "0.8.0" +version = "0.10.2" description = "Stateless Transaction Indexing Engine for Stacks and Bitcoin" license = "GPL-3.0" edition = "2021" @@ -12,13 +12,13 @@ serde = {version = "1", features = ["rc"]} serde_json = { version = "1", features = ["arbitrary_precision"] } serde-hex = "0.1.0" serde_derive = "1" -stacks-rpc-client = "=1.0.8" +stacks-rpc-client = "1.0.10" clarinet-utils = "1.0.0" -hiro-system-kit = "0.1.0" +hiro-system-kit = { version = "0.3.1", optional = true } # stacks-rpc-client = { version = "1", path = "../../../clarinet/components/stacks-rpc-client" } # clarinet-utils = { version = "1", path = "../../../clarinet/components/clarinet-utils" } # hiro-system-kit = { version = "0.1.0", path = "../../../clarinet/components/hiro-system-kit" } -chainhook-types = { version = "1.0.9", path = "../chainhook-types-rs" } +chainhook-types = { version = "1.1.0", path = "../chainhook-types-rs" } rocket = { version = "=0.5.0-rc.3", features = ["json"] } bitcoincore-rpc = "0.16.0" bitcoincore-rpc-json = "0.16.0" @@ -37,10 +37,12 @@ hyper = { version = "0.14.24", features = ["http1", "client"] } hex = "0.4.3" threadpool = "1.8.1" rand = "0.8.5" -zeromq = { version = "0.3.3", default-features = false, features = ["tokio-runtime", "tcp-transport"], optional = true } +zmq = { version = "0.10.0", optional = true } dashmap = "5.4.0" fxhash = "0.2.1" lazy_static = "1.4.0" +regex = "1.9.3" +miniscript = "10.0.0" [dev-dependencies] test-case = "3.1.0" @@ -49,6 +51,8 @@ test-case = "3.1.0" "jsonrpc:0.13.0" = { git = 'https://github.com/apoelstra/rust-jsonrpc', rev = "1063671f122a8985c1b7c29030071253da515839" } [features] -default = ["log"] -zeromq = ["dep:zeromq"] -log = ["hiro-system-kit/log"] +default = ["hiro-system-kit/log"] +zeromq = ["zmq"] +debug = ["hiro-system-kit/debug"] +release = ["hiro-system-kit/release"] + diff --git a/components/chainhook-sdk/src/chainhooks/bitcoin/mod.rs b/components/chainhook-sdk/src/chainhooks/bitcoin/mod.rs index 137d55aee..2684096d2 100644 --- a/components/chainhook-sdk/src/chainhooks/bitcoin/mod.rs +++ b/components/chainhook-sdk/src/chainhooks/bitcoin/mod.rs @@ -1,6 +1,6 @@ use super::types::{ - BitcoinChainhookSpecification, BitcoinPredicateType, ExactMatchingRule, HookAction, - InputPredicate, MatchingRule, OrdinalOperations, OutputPredicate, StacksOperations, + BitcoinChainhookSpecification, BitcoinPredicateType, DescriptorMatchingRule, ExactMatchingRule, + HookAction, InputPredicate, MatchingRule, OrdinalOperations, OutputPredicate, StacksOperations, }; use crate::utils::Context; @@ -11,6 +11,11 @@ use chainhook_types::{ StacksBaseChainOperation, TransactionIdentifier, }; +use hiro_system_kit::slog; + +use miniscript::bitcoin::secp256k1::Secp256k1; +use miniscript::Descriptor; + use reqwest::{Client, Method}; use serde_json::Value as JsonValue; use std::collections::{BTreeMap, HashMap}; @@ -18,31 +23,28 @@ use std::str::FromStr; use reqwest::RequestBuilder; +use hex::FromHex; + pub struct BitcoinTriggerChainhook<'a> { pub chainhook: &'a BitcoinChainhookSpecification, pub apply: Vec<(Vec<&'a BitcoinTransactionData>, &'a BitcoinBlockData)>, pub rollback: Vec<(Vec<&'a BitcoinTransactionData>, &'a BitcoinBlockData)>, } -#[derive(Clone, Debug)] -pub struct BitcoinApplyTransactionPayload { +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct BitcoinTransactionPayload { pub block: BitcoinBlockData, } -#[derive(Clone, Debug)] -pub struct BitcoinRollbackTransactionPayload { - pub block: BitcoinBlockData, -} - -#[derive(Clone, Debug)] +#[derive(Clone, Debug, Serialize, Deserialize)] pub struct BitcoinChainhookPayload { pub uuid: String, } -#[derive(Clone, Debug)] +#[derive(Clone, Debug, Serialize, Deserialize)] pub struct BitcoinChainhookOccurrencePayload { - pub apply: Vec, - pub rollback: Vec, + pub apply: Vec, + pub rollback: Vec, pub chainhook: BitcoinChainhookPayload, } @@ -59,25 +61,33 @@ pub fn evaluate_bitcoin_chainhooks_on_chain_event<'a>( ) -> ( Vec>, BTreeMap<&'a str, &'a BlockIdentifier>, + BTreeMap<&'a str, &'a BlockIdentifier>, ) { let mut evaluated_predicates = BTreeMap::new(); let mut triggered_predicates = vec![]; + let mut expired_predicates = BTreeMap::new(); + match chain_event { BitcoinChainEvent::ChainUpdatedWithBlocks(event) => { for chainhook in active_chainhooks.iter() { let mut apply = vec![]; let rollback = vec![]; + let end_block = chainhook.end_block.unwrap_or(u64::MAX); for block in event.new_blocks.iter() { evaluated_predicates.insert(chainhook.uuid.as_str(), &block.block_identifier); - let mut hits = vec![]; - for tx in block.transactions.iter() { - if chainhook.predicate.evaluate_transaction_predicate(&tx, ctx) { - hits.push(tx); + if end_block >= block.block_identifier.index { + let mut hits = vec![]; + for tx in block.transactions.iter() { + if chainhook.predicate.evaluate_transaction_predicate(&tx, ctx) { + hits.push(tx); + } } - } - if hits.len() > 0 { - apply.push((hits, block)); + if hits.len() > 0 { + apply.push((hits, block)); + } + } else { + expired_predicates.insert(chainhook.uuid.as_str(), &block.block_identifier); } } @@ -94,28 +104,37 @@ pub fn evaluate_bitcoin_chainhooks_on_chain_event<'a>( for chainhook in active_chainhooks.iter() { let mut apply = vec![]; let mut rollback = vec![]; + let end_block = chainhook.end_block.unwrap_or(u64::MAX); for block in event.blocks_to_rollback.iter() { - let mut hits = vec![]; - for tx in block.transactions.iter() { - if chainhook.predicate.evaluate_transaction_predicate(&tx, ctx) { - hits.push(tx); + if end_block >= block.block_identifier.index { + let mut hits = vec![]; + for tx in block.transactions.iter() { + if chainhook.predicate.evaluate_transaction_predicate(&tx, ctx) { + hits.push(tx); + } } - } - if hits.len() > 0 { - rollback.push((hits, block)); + if hits.len() > 0 { + rollback.push((hits, block)); + } + } else { + expired_predicates.insert(chainhook.uuid.as_str(), &block.block_identifier); } } for block in event.blocks_to_apply.iter() { evaluated_predicates.insert(chainhook.uuid.as_str(), &block.block_identifier); - let mut hits = vec![]; - for tx in block.transactions.iter() { - if chainhook.predicate.evaluate_transaction_predicate(&tx, ctx) { - hits.push(tx); + if end_block >= block.block_identifier.index { + let mut hits = vec![]; + for tx in block.transactions.iter() { + if chainhook.predicate.evaluate_transaction_predicate(&tx, ctx) { + hits.push(tx); + } } - } - if hits.len() > 0 { - apply.push((hits, block)); + if hits.len() > 0 { + apply.push((hits, block)); + } + } else { + expired_predicates.insert(chainhook.uuid.as_str(), &block.block_identifier); } } if !apply.is_empty() || !rollback.is_empty() { @@ -128,7 +147,11 @@ pub fn evaluate_bitcoin_chainhooks_on_chain_event<'a>( } } } - (triggered_predicates, evaluated_predicates) + ( + triggered_predicates, + evaluated_predicates, + expired_predicates, + ) } pub fn serialize_bitcoin_payload_to_json<'a>( @@ -257,7 +280,7 @@ pub fn handle_bitcoin_hook_action<'a>( .into_iter() .map(|t| t.clone()) .collect::>(); - BitcoinApplyTransactionPayload { block } + BitcoinTransactionPayload { block } }) .collect::>(), rollback: trigger @@ -269,7 +292,7 @@ pub fn handle_bitcoin_hook_action<'a>( .into_iter() .map(|t| t.clone()) .collect::>(); - BitcoinRollbackTransactionPayload { block } + BitcoinTransactionPayload { block } }) .collect::>(), chainhook: BitcoinChainhookPayload { @@ -280,11 +303,30 @@ pub fn handle_bitcoin_hook_action<'a>( } } +struct OpReturn(String); +impl OpReturn { + fn from_string(hex: &String) -> Result { + // Remove the `0x` prefix if present so that we can call from_hex without errors. + let hex = hex.strip_prefix("0x").unwrap_or(hex); + + // Parse the hex bytes. + let bytes = Vec::::from_hex(hex).unwrap(); + match bytes.as_slice() { + // An OpReturn is composed by: + // - OP_RETURN 0x6a + // - Data length (ignored) + // - The data + [0x6a, _, rest @ ..] => Ok(hex::encode(rest)), + _ => Err(String::from("not an OP_RETURN")), + } + } +} + impl BitcoinPredicateType { pub fn evaluate_transaction_predicate( &self, tx: &BitcoinTransactionData, - _ctx: &Context, + ctx: &Context, ) -> bool { // TODO(lgalabru): follow-up on this implementation match &self { @@ -292,32 +334,48 @@ impl BitcoinPredicateType { BitcoinPredicateType::Txid(ExactMatchingRule::Equals(txid)) => { tx.transaction_identifier.hash.eq(txid) } - BitcoinPredicateType::Outputs(OutputPredicate::OpReturn(MatchingRule::Equals( - hex_bytes, - ))) => { - for output in tx.metadata.outputs.iter() { - if output.script_pubkey.eq(hex_bytes) { - return true; - } - } - false - } - BitcoinPredicateType::Outputs(OutputPredicate::OpReturn(MatchingRule::StartsWith( - hex_bytes, - ))) => { + BitcoinPredicateType::Outputs(OutputPredicate::OpReturn(rule)) => { for output in tx.metadata.outputs.iter() { - if output.script_pubkey.starts_with(hex_bytes) { - return true; + // opret contains the op_return data section prefixed with `0x`. + let opret = match OpReturn::from_string(&output.script_pubkey) { + Ok(op) => op, + Err(_) => continue, + }; + + // encoded_pattern takes a predicate pattern and return its lowercase hex + // representation. + fn encoded_pattern(pattern: &str) -> String { + // If the pattern starts with 0x, return it in lowercase and without the 0x + // prefix. + if pattern.starts_with("0x") { + return pattern + .strip_prefix("0x") + .unwrap() + .to_lowercase() + .to_string(); + } + + // In this case it should be trated as ASCII so let's return its hex + // representation. + hex::encode(pattern) } - } - false - } - BitcoinPredicateType::Outputs(OutputPredicate::OpReturn(MatchingRule::EndsWith( - hex_bytes, - ))) => { - for output in tx.metadata.outputs.iter() { - if output.script_pubkey.ends_with(hex_bytes) { - return true; + + match rule { + MatchingRule::StartsWith(pattern) => { + if opret.starts_with(&encoded_pattern(pattern)) { + return true; + } + } + MatchingRule::EndsWith(pattern) => { + if opret.ends_with(&encoded_pattern(pattern)) { + return true; + } + } + MatchingRule::Equals(pattern) => { + if opret.eq(&encoded_pattern(pattern)) { + return true; + } + } } } false @@ -364,6 +422,50 @@ impl BitcoinPredicateType { } false } + BitcoinPredicateType::Outputs(OutputPredicate::Descriptor( + DescriptorMatchingRule { expression, range }, + )) => { + // To derive from descriptors, we need to provide a secp context. + let (sig, ver) = (&Secp256k1::signing_only(), &Secp256k1::verification_only()); + let (desc, _) = Descriptor::parse_descriptor(&sig, expression).unwrap(); + + // If the descriptor is derivable (`has_wildcard()`), we rely on the `range` field + // defined by the predicate OR fallback to a default range of [0,5] when not set. + // When the descriptor is not derivable we force to create a unique iteration by + // ranging over [0,1]. + let range = if desc.has_wildcard() { + range.unwrap_or([0, 5]) + } else { + [0, 1] + }; + + // Derive the addresses and try to match them against the outputs. + for i in range[0]..range[1] { + let derived = desc.derived_descriptor(&ver, i).unwrap(); + + // Extract and encode the derived pubkey. + let script_pubkey = hex::encode(derived.script_pubkey().as_bytes()); + + // Match that script against the tx outputs. + for (index, output) in tx.metadata.outputs.iter().enumerate() { + if output.script_pubkey[2..] == script_pubkey { + ctx.try_log(|logger| { + slog::debug!( + logger, + "Descriptor: Matched pubkey {:?} on tx {:?} output {}", + script_pubkey, + tx.transaction_identifier.get_hash_bytes_str(), + index, + ) + }); + + return true; + } + } + } + + false + } BitcoinPredicateType::Inputs(InputPredicate::Txid(predicate)) => { // TODO(lgalabru): add support for transaction chainhing, if enabled for input in tx.metadata.inputs.iter() { @@ -423,7 +525,6 @@ impl BitcoinPredicateType { for op in tx.metadata.ordinal_operations.iter() { match op { OrdinalOperation::InscriptionRevealed(_) - | OrdinalOperation::CursedInscriptionRevealed(_) | OrdinalOperation::InscriptionTransferred(_) => return true, } } @@ -432,3 +533,6 @@ impl BitcoinPredicateType { } } } + +#[cfg(test)] +pub mod tests; diff --git a/components/chainhook-sdk/src/chainhooks/bitcoin/tests.rs b/components/chainhook-sdk/src/chainhooks/bitcoin/tests.rs new file mode 100644 index 000000000..fe9b2d12d --- /dev/null +++ b/components/chainhook-sdk/src/chainhooks/bitcoin/tests.rs @@ -0,0 +1,132 @@ +use super::super::types::MatchingRule; +use super::*; +use crate::types::BitcoinTransactionMetadata; +use chainhook_types::bitcoin::TxOut; + +use test_case::test_case; + +#[test_case( + "0x6affAAAA", + MatchingRule::Equals(String::from("0xAAAA")), + true; + "OpReturn: Equals matches Hex value" +)] +#[test_case( + "0x60ff0000", + MatchingRule::Equals(String::from("0x0000")), + false; + "OpReturn: Invalid OP_RETURN opcode" +)] +#[test_case( + "0x6aff012345", + MatchingRule::Equals(String::from("0x0000")), + false; + "OpReturn: Equals does not match Hex value" +)] +#[test_case( + "0x6aff68656C6C6F", + MatchingRule::Equals(String::from("hello")), + true; + "OpReturn: Equals matches ASCII value" +)] +#[test_case( + "0x6affAA0000", + MatchingRule::StartsWith(String::from("0xAA")), + true; + "OpReturn: StartsWith matches Hex value" +)] +#[test_case( + "0x6aff585858", // 0x585858 => XXX + MatchingRule::StartsWith(String::from("X")), + true; + "OpReturn: StartsWith matches ASCII value" +)] +#[test_case( + "0x6aff0000AA", + MatchingRule::EndsWith(String::from("0xAA")), + true; + "OpReturn: EndsWith matches Hex value" +)] +#[test_case( + "0x6aff000058", + MatchingRule::EndsWith(String::from("X")), + true; + "OpReturn: EndsWith matches ASCII value" +)] +fn test_opreturn_evaluation(script_pubkey: &str, rule: MatchingRule, matches: bool) { + script_pubkey_evaluation(OutputPredicate::OpReturn(rule), script_pubkey, matches) +} + +// Descriptor test cases have been taken from +// https://github.com/bitcoin/bitcoin/blob/master/doc/descriptors.md#examples +// To generate the address run: +// `bdk-cli -n testnet wallet --descriptor get_new_address` +#[test_case( + "tb1q0ht9tyks4vh7p5p904t340cr9nvahy7um9zdem", + "wpkh(02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9)"; + "Descriptor: P2WPKH" +)] +#[test_case( + "2NBtBzAJ84E3sTy1KooEHYVwmMhUVdJAyEa", + "sh(wpkh(03fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556))"; + "Descriptor: P2SH-P2WPKH" +)] +#[test_case( + "tb1qwu7hp9vckakyuw6htsy244qxtztrlyez4l7qlrpg68v6drgvj39qya5jch", + "wsh(multi(2,03a0434d9e47f3c86235477c7b1ae6ae5d3442d49b1943c2b752a68e2a47e247c7,03774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb,03d01115d548e7561b15c38f004d734633687cf4419620095bc5b0f47070afe85a))"; + "Descriptor: P2WSH 2-of-3 multisig output" +)] +fn test_descriptor_evaluation(addr: &str, expr: &str) { + // turn the address into a script_pubkey with a 0x prefix, as expected by the evaluator. + let script_pubkey = Address::from_str(addr).unwrap().script_pubkey(); + let matching_script_pubkey = format!("0x{}", hex::encode(script_pubkey)); + + let rule = DescriptorMatchingRule { + expression: expr.to_string(), + // TODO: test ranges + range: None, + }; + + // matching against the script_pubkey generated from the address should match. + script_pubkey_evaluation( + OutputPredicate::Descriptor(rule.clone()), + &matching_script_pubkey, + true, + ); + + // matching against a fake script_pubkey should not match. + script_pubkey_evaluation(OutputPredicate::Descriptor(rule.clone()), "0xffff", false); +} + +// script_pubkey_evaluation is a helper that evaluates a a script_pubkey against a transaction predicate. +fn script_pubkey_evaluation(output: OutputPredicate, script_pubkey: &str, matches: bool) { + let predicate = BitcoinPredicateType::Outputs(output); + + let outputs = vec![TxOut { + value: 0, + script_pubkey: String::from(script_pubkey), + }]; + + let tx = BitcoinTransactionData { + transaction_identifier: TransactionIdentifier { + hash: String::from(""), + }, + operations: vec![], + metadata: BitcoinTransactionMetadata { + fee: 0, + proof: None, + inputs: vec![], + stacks_operations: vec![], + ordinal_operations: vec![], + + outputs, + }, + }; + + let ctx = Context { + logger: None, + tracer: false, + }; + + assert_eq!(matches, predicate.evaluate_transaction_predicate(&tx, &ctx)); +} diff --git a/components/chainhook-sdk/src/chainhooks/stacks/mod.rs b/components/chainhook-sdk/src/chainhooks/stacks/mod.rs index 680be7e34..5e5afb300 100644 --- a/components/chainhook-sdk/src/chainhooks/stacks/mod.rs +++ b/components/chainhook-sdk/src/chainhooks/stacks/mod.rs @@ -2,13 +2,14 @@ use crate::utils::{AbstractStacksBlock, Context}; use super::types::{ BlockIdentifierIndexRule, ExactMatchingRule, HookAction, StacksChainhookSpecification, - StacksContractDeploymentPredicate, StacksPredicate, + StacksContractDeploymentPredicate, StacksPredicate, StacksPrintEventBasedPredicate, }; use chainhook_types::{ BlockIdentifier, StacksChainEvent, StacksTransactionData, StacksTransactionEvent, StacksTransactionKind, TransactionIdentifier, }; use hiro_system_kit::slog; +use regex::Regex; use reqwest::{Client, Method}; use serde_json::Value as JsonValue; use stacks_rpc_client::clarity::stacks_common::codec::StacksMessageCodec; @@ -66,9 +67,11 @@ pub fn evaluate_stacks_chainhooks_on_chain_event<'a>( ) -> ( Vec>, BTreeMap<&'a str, &'a BlockIdentifier>, + BTreeMap<&'a str, &'a BlockIdentifier>, ) { let mut triggered_predicates = vec![]; let mut evaluated_predicates = BTreeMap::new(); + let mut expired_predicates = BTreeMap::new(); match chain_event { StacksChainEvent::ChainUpdatedWithBlocks(update) => { for chainhook in active_chainhooks.iter() { @@ -83,26 +86,35 @@ pub fn evaluate_stacks_chainhooks_on_chain_event<'a>( for parents_microblock_to_apply in block_update.parent_microblocks_to_apply.iter() { - apply.append(&mut evaluate_stacks_chainhook_on_blocks( - vec![parents_microblock_to_apply], - chainhook, - ctx, - )); + let (mut occurrences, mut expirations) = + evaluate_stacks_chainhook_on_blocks( + vec![parents_microblock_to_apply], + chainhook, + ctx, + ); + apply.append(&mut occurrences); + expired_predicates.append(&mut expirations); } for parents_microblock_to_rolllback in block_update.parent_microblocks_to_rollback.iter() { - rollback.append(&mut evaluate_stacks_chainhook_on_blocks( - vec![parents_microblock_to_rolllback], - chainhook, - ctx, - )); + let (mut occurrences, mut expirations) = + evaluate_stacks_chainhook_on_blocks( + vec![parents_microblock_to_rolllback], + chainhook, + ctx, + ); + rollback.append(&mut occurrences); + expired_predicates.append(&mut expirations); } - apply.append(&mut evaluate_stacks_chainhook_on_blocks( + + let (mut occurrences, mut expirations) = evaluate_stacks_chainhook_on_blocks( vec![&block_update.block], chainhook, ctx, - )); + ); + apply.append(&mut occurrences); + expired_predicates.append(&mut expirations); } if !apply.is_empty() || !rollback.is_empty() { triggered_predicates.push(StacksTriggerChainhook { @@ -123,11 +135,14 @@ pub fn evaluate_stacks_chainhooks_on_chain_event<'a>( chainhook.uuid.as_str(), µblock_to_apply.metadata.anchor_block_identifier, ); - apply.append(&mut evaluate_stacks_chainhook_on_blocks( + + let (mut occurrences, mut expirations) = evaluate_stacks_chainhook_on_blocks( vec![microblock_to_apply], chainhook, ctx, - )); + ); + apply.append(&mut occurrences); + expired_predicates.append(&mut expirations); } if !apply.is_empty() || !rollback.is_empty() { triggered_predicates.push(StacksTriggerChainhook { @@ -148,18 +163,22 @@ pub fn evaluate_stacks_chainhooks_on_chain_event<'a>( chainhook.uuid.as_str(), µblock_to_apply.metadata.anchor_block_identifier, ); - apply.append(&mut evaluate_stacks_chainhook_on_blocks( + let (mut occurrences, mut expirations) = evaluate_stacks_chainhook_on_blocks( vec![microblock_to_apply], chainhook, ctx, - )); + ); + apply.append(&mut occurrences); + expired_predicates.append(&mut expirations); } for microblock_to_rollback in update.microblocks_to_rollback.iter() { - rollback.append(&mut evaluate_stacks_chainhook_on_blocks( + let (mut occurrences, mut expirations) = evaluate_stacks_chainhook_on_blocks( vec![microblock_to_rollback], chainhook, ctx, - )); + ); + rollback.append(&mut occurrences); + expired_predicates.append(&mut expirations); } if !apply.is_empty() || !rollback.is_empty() { triggered_predicates.push(StacksTriggerChainhook { @@ -183,33 +202,44 @@ pub fn evaluate_stacks_chainhooks_on_chain_event<'a>( for parents_microblock_to_apply in block_update.parent_microblocks_to_apply.iter() { - apply.append(&mut evaluate_stacks_chainhook_on_blocks( - vec![parents_microblock_to_apply], - chainhook, - ctx, - )); + let (mut occurrences, mut expirations) = + evaluate_stacks_chainhook_on_blocks( + vec![parents_microblock_to_apply], + chainhook, + ctx, + ); + apply.append(&mut occurrences); + expired_predicates.append(&mut expirations); } - apply.append(&mut evaluate_stacks_chainhook_on_blocks( + + let (mut occurrences, mut expirations) = evaluate_stacks_chainhook_on_blocks( vec![&block_update.block], chainhook, ctx, - )); + ); + apply.append(&mut occurrences); + expired_predicates.append(&mut expirations); } for block_update in update.blocks_to_rollback.iter() { for parents_microblock_to_rollback in block_update.parent_microblocks_to_rollback.iter() { - rollback.append(&mut evaluate_stacks_chainhook_on_blocks( - vec![parents_microblock_to_rollback], - chainhook, - ctx, - )); + let (mut occurrences, mut expirations) = + evaluate_stacks_chainhook_on_blocks( + vec![parents_microblock_to_rollback], + chainhook, + ctx, + ); + rollback.append(&mut occurrences); + expired_predicates.append(&mut expirations); } - rollback.append(&mut evaluate_stacks_chainhook_on_blocks( + let (mut occurrences, mut expirations) = evaluate_stacks_chainhook_on_blocks( vec![&block_update.block], chainhook, ctx, - )); + ); + rollback.append(&mut occurrences); + expired_predicates.append(&mut expirations); } if !apply.is_empty() || !rollback.is_empty() { triggered_predicates.push(StacksTriggerChainhook { @@ -221,33 +251,48 @@ pub fn evaluate_stacks_chainhooks_on_chain_event<'a>( } } } - (triggered_predicates, evaluated_predicates) + ( + triggered_predicates, + evaluated_predicates, + expired_predicates, + ) } pub fn evaluate_stacks_chainhook_on_blocks<'a>( blocks: Vec<&'a dyn AbstractStacksBlock>, chainhook: &'a StacksChainhookSpecification, ctx: &Context, -) -> Vec<(Vec<&'a StacksTransactionData>, &'a dyn AbstractStacksBlock)> { +) -> ( + Vec<(Vec<&'a StacksTransactionData>, &'a dyn AbstractStacksBlock)>, + BTreeMap<&'a str, &'a BlockIdentifier>, +) { let mut occurrences = vec![]; + let mut expired_predicates = BTreeMap::new(); + let end_block = chainhook.end_block.unwrap_or(u64::MAX); for block in blocks { - let mut hits = vec![]; - if chainhook.is_predicate_targeting_block_header() { - for tx in block.get_transactions().iter() { - hits.push(tx); - } - } else { - for tx in block.get_transactions().iter() { - if evaluate_stacks_predicate_on_transaction(tx, chainhook, ctx) { - hits.push(tx); + if end_block >= block.get_identifier().index { + let mut hits = vec![]; + if chainhook.is_predicate_targeting_block_header() { + if evaluate_stacks_predicate_on_block(block, chainhook, ctx) { + for tx in block.get_transactions().iter() { + hits.push(tx); + } + } + } else { + for tx in block.get_transactions().iter() { + if evaluate_stacks_predicate_on_transaction(tx, chainhook, ctx) { + hits.push(tx); + } } } - } - if hits.len() > 0 { - occurrences.push((hits, block)); + if hits.len() > 0 { + occurrences.push((hits, block)); + } + } else { + expired_predicates.insert(chainhook.uuid.as_str(), block.get_identifier()); } } - occurrences + (occurrences, expired_predicates) } pub fn evaluate_stacks_predicate_on_block<'a>( @@ -406,16 +451,47 @@ pub fn evaluate_stacks_predicate_on_transaction<'a>( match event { StacksTransactionEvent::SmartContractEvent(actual) => { if actual.topic == "print" { - if expected_event.contract_identifier == actual.contract_identifier - || expected_event.contract_identifier == "*" - { - if expected_event.contains == "*" { - return true; + match expected_event { + StacksPrintEventBasedPredicate::Contains { + contract_identifier, + contains, + } => { + if contract_identifier == &actual.contract_identifier + || contract_identifier == "*" + { + if contains == "*" { + return true; + } + let value = format!( + "{}", + expect_decoded_clarity_value(&actual.hex_value) + ); + if value.contains(contains) { + return true; + } + } } - let value = - format!("{}", expect_decoded_clarity_value(&actual.hex_value)); - if value.contains(&expected_event.contains) { - return true; + StacksPrintEventBasedPredicate::MatchesRegex { + contract_identifier, + regex, + } => { + if contract_identifier == &actual.contract_identifier + || contract_identifier == "*" + { + if let Ok(regex) = Regex::new(regex) { + let value = format!( + "{}", + expect_decoded_clarity_value(&actual.hex_value) + ); + if regex.is_match(&value) { + return true; + } + } else { + ctx.try_log(|logger| { + slog::error!(logger, "unable to parse print_event matching rule as regex") + }); + } + } } } } @@ -432,18 +508,43 @@ pub fn evaluate_stacks_predicate_on_transaction<'a>( } } -fn encode_transaction_including_with_clarity_decoding( - transaction: &StacksTransactionData, +fn serialize_stacks_block( + block: &dyn AbstractStacksBlock, + transactions: Vec<&StacksTransactionData>, + decode_clarity_values: bool, + include_contract_abi: bool, ctx: &Context, ) -> serde_json::Value { json!({ + "block_identifier": block.get_identifier(), + "parent_block_identifier": block.get_parent_identifier(), + "timestamp": block.get_timestamp(), + "transactions": transactions.into_iter().map(|transaction| { + serialize_stacks_transaction(&transaction, decode_clarity_values, include_contract_abi, ctx) + }).collect::>(), + "metadata": block.get_serialized_metadata(), + }) +} + +fn serialize_stacks_transaction( + transaction: &StacksTransactionData, + decode_clarity_values: bool, + include_contract_abi: bool, + ctx: &Context, +) -> serde_json::Value { + let mut json = json!({ "transaction_identifier": transaction.transaction_identifier, "operations": transaction.operations, "metadata": { "success": transaction.metadata.success, "raw_tx": transaction.metadata.raw_tx, - "result": serialized_decoded_clarity_value(&transaction.metadata.result, ctx), + "result": if decode_clarity_values { + serialized_decoded_clarity_value(&transaction.metadata.result, ctx) + } else { + json!(transaction.metadata.result) + }, "sender": transaction.metadata.sender, + "nonce": transaction.metadata.nonce, "fee": transaction.metadata.fee, "kind": transaction.metadata.kind, "receipt": { @@ -451,15 +552,21 @@ fn encode_transaction_including_with_clarity_decoding( "mutated_assets_radius": transaction.metadata.receipt.mutated_assets_radius, "contract_calls_stack": transaction.metadata.receipt.contract_calls_stack, "events": transaction.metadata.receipt.events.iter().map(|event| { - serialized_event_with_decoded_clarity_value(event, ctx) + if decode_clarity_values { serialized_event_with_decoded_clarity_value(event, ctx) } else { json!(event) } }).collect::>(), }, "description": transaction.metadata.description, "sponsor": transaction.metadata.sponsor, "execution_cost": transaction.metadata.execution_cost, - "position": transaction.metadata.position, + "position": transaction.metadata.position }, - }) + }); + if include_contract_abi { + if let Some(abi) = &transaction.metadata.contract_abi { + json["metadata"]["contract_abi"] = json!(abi); + } + } + json } pub fn serialized_event_with_decoded_clarity_value( @@ -688,37 +795,13 @@ pub fn serialize_stacks_payload_to_json<'a>( ctx: &Context, ) -> JsonValue { let decode_clarity_values = trigger.should_decode_clarity_value(); + let include_contract_abi = trigger.chainhook.include_contract_abi.unwrap_or(false); json!({ "apply": trigger.apply.into_iter().map(|(transactions, block)| { - json!({ - "block_identifier": block.get_identifier(), - "parent_block_identifier": block.get_parent_identifier(), - "timestamp": block.get_timestamp(), - "transactions": transactions.iter().map(|transaction| { - if decode_clarity_values { - encode_transaction_including_with_clarity_decoding(transaction, ctx) - } else { - json!(transaction) - } - }).collect::>(), - "metadata": block.get_serialized_metadata(), - }) + serialize_stacks_block(block, transactions, decode_clarity_values, include_contract_abi, ctx) }).collect::>(), "rollback": trigger.rollback.into_iter().map(|(transactions, block)| { - json!({ - "block_identifier": block.get_identifier(), - "parent_block_identifier": block.get_parent_identifier(), - "timestamp": block.get_timestamp(), - "transactions": transactions.iter().map(|transaction| { - if decode_clarity_values { - encode_transaction_including_with_clarity_decoding(transaction, ctx) - } else { - json!(transaction) - } - }).collect::>(), - "metadata": block.get_serialized_metadata(), - // "proof": proofs.get(&transaction.transaction_identifier), - }) + serialize_stacks_block(block, transactions, decode_clarity_values, include_contract_abi, ctx) }).collect::>(), "chainhook": { "uuid": trigger.chainhook.uuid, @@ -746,6 +829,7 @@ pub fn handle_stacks_hook_action<'a>( client .request(method, &host) .header("Content-Type", "application/json") + .header("Authorization", http.authorization_header.clone()) .body(body), )) } diff --git a/components/chainhook-sdk/src/chainhooks/tests/fixtures/stacks/testnet/base/transaction_contract_deploy.json b/components/chainhook-sdk/src/chainhooks/tests/fixtures/stacks/testnet/base/transaction_contract_deploy.json index 12d266544..6502f6428 100644 --- a/components/chainhook-sdk/src/chainhooks/tests/fixtures/stacks/testnet/base/transaction_contract_deploy.json +++ b/components/chainhook-sdk/src/chainhooks/tests/fixtures/stacks/testnet/base/transaction_contract_deploy.json @@ -1,41 +1,80 @@ { - "metadata": { - "description": "", - "execution_cost": { - "read_count": 8, - "read_length": 6, - "runtime": 84581, - "write_count": 13, - "write_length": 1612 - }, - "fee": 750000, - "kind": { - "data": { - "code": ";; The .subnet contract\n\n(define-constant CONTRACT_ADDRESS (as-contract tx-sender))\n\n;; Error codes\n(define-constant ERR_BLOCK_ALREADY_COMMITTED 1)\n(define-constant ERR_INVALID_MINER 2)\n(define-constant ERR_CONTRACT_CALL_FAILED 3)\n(define-constant ERR_TRANSFER_FAILED 4)\n(define-constant ERR_DISALLOWED_ASSET 5)\n(define-constant ERR_ASSET_ALREADY_ALLOWED 6)\n(define-constant ERR_MERKLE_ROOT_DOES_NOT_MATCH 7)\n(define-constant ERR_INVALID_MERKLE_ROOT 8)\n(define-constant ERR_WITHDRAWAL_ALREADY_PROCESSED 9)\n(define-constant ERR_VALIDATION_FAILED 10)\n;;; The value supplied for `target-chain-tip` does not match the current chain tip.\n(define-constant ERR_INVALID_CHAIN_TIP 11)\n;;; The contract was called before reaching this-chain height reaches 1.\n(define-constant ERR_CALLED_TOO_EARLY 12)\n(define-constant ERR_MINT_FAILED 13)\n(define-constant ERR_ATTEMPT_TO_TRANSFER_ZERO_AMOUNT 14)\n(define-constant ERR_IN_COMPUTATION 15)\n;; The contract does not own this NFT to withdraw it.\n(define-constant ERR_NFT_NOT_OWNED_BY_CONTRACT 16)\n(define-constant ERR_VALIDATION_LEAF_FAILED 30)\n\n;; Map from Stacks block height to block commit\n(define-map block-commits uint (buff 32))\n;; Map recording withdrawal roots\n(define-map withdrawal-roots-map (buff 32) bool)\n;; Map recording processed withdrawal leaves\n(define-map processed-withdrawal-leaves-map { withdrawal-leaf-hash: (buff 32), withdrawal-root-hash: (buff 32) } bool)\n\n;; principal that can commit blocks\n(define-data-var miner principal tx-sender)\n;; principal that can register contracts\n(define-data-var admin principal 'ST167FDXCJGS54J1T0J42VTX46G0QQQFRJGBK28RN)\n\n;; Map of allowed contracts for asset transfers - maps L1 contract principal to L2 contract principal\n(define-map allowed-contracts principal principal)\n\n;; Use trait declarations\n(use-trait nft-trait 'ST1NXBK3K5YYMD6FD41MVNP3JS1GABZ8TRVX023PT.nft-trait.nft-trait)\n(use-trait ft-trait 'ST1NXBK3K5YYMD6FD41MVNP3JS1GABZ8TRVX023PT.sip-010-trait-ft-standard.sip-010-trait)\n(use-trait mint-from-subnet-trait .subnet-traits-v1.mint-from-subnet-trait)\n\n;; Update the miner for this contract.\n(define-public (update-miner (new-miner principal))\n (begin\n (asserts! (is-eq tx-sender (var-get miner)) (err ERR_INVALID_MINER))\n (ok (var-set miner new-miner))\n )\n)\n\n;; Register a new FT contract to be supported by this subnet.\n(define-public (register-new-ft-contract (ft-contract ) (l2-contract principal))\n (begin\n ;; Verify that tx-sender is an authorized admin\n (asserts! (is-admin tx-sender) (err ERR_INVALID_MINER))\n\n ;; Set up the assets that the contract is allowed to transfer\n (asserts! (map-insert allowed-contracts (contract-of ft-contract) l2-contract)\n (err ERR_ASSET_ALREADY_ALLOWED))\n\n (print {\n event: \"register-contract\",\n asset-type: \"ft\",\n l1-contract: (contract-of ft-contract),\n l2-contract: l2-contract\n })\n\n (ok true)\n )\n)\n\n;; Register a new NFT contract to be supported by this subnet.\n(define-public (register-new-nft-contract (nft-contract ) (l2-contract principal))\n (begin\n ;; Verify that tx-sender is an authorized admin\n (asserts! (is-admin tx-sender) (err ERR_INVALID_MINER))\n\n ;; Set up the assets that the contract is allowed to transfer\n (asserts! (map-insert allowed-contracts (contract-of nft-contract) l2-contract)\n (err ERR_ASSET_ALREADY_ALLOWED))\n\n (print {\n event: \"register-contract\",\n asset-type: \"nft\",\n l1-contract: (contract-of nft-contract),\n l2-contract: l2-contract\n })\n\n (ok true)\n )\n)\n\n;; Helper function: returns a boolean indicating whether the given principal is a miner\n;; Returns bool\n(define-private (is-miner (miner-to-check principal))\n (is-eq miner-to-check (var-get miner))\n)\n\n;; Helper function: returns a boolean indicating whether the given principal is an admin\n;; Returns bool\n(define-private (is-admin (addr-to-check principal))\n (is-eq addr-to-check (var-get admin))\n)\n\n;; Helper function: determines whether the commit-block operation satisfies pre-conditions\n;; listed in `commit-block`.\n;; Returns response\n(define-private (can-commit-block? (commit-block-height uint) (target-chain-tip (buff 32)))\n (begin\n ;; check no block has been committed at this height\n (asserts! (is-none (map-get? block-commits commit-block-height)) (err ERR_BLOCK_ALREADY_COMMITTED))\n\n ;; check that `target-chain-tip` matches the burn chain tip\n (asserts! (is-eq\n target-chain-tip\n (unwrap! (get-block-info? id-header-hash (- block-height u1)) (err ERR_CALLED_TOO_EARLY)) )\n (err ERR_INVALID_CHAIN_TIP))\n\n ;; check that the tx sender is one of the miners\n (asserts! (is-miner tx-sender) (err ERR_INVALID_MINER))\n\n ;; check that the miner called this contract directly\n (asserts! (is-miner contract-caller) (err ERR_INVALID_MINER))\n\n (ok true)\n )\n)\n\n;; Helper function: modifies the block-commits map with a new commit and prints related info\n;; Returns response<(buff 32), ?>\n(define-private (inner-commit-block (block (buff 32)) (commit-block-height uint) (withdrawal-root (buff 32)))\n (begin\n (map-set block-commits commit-block-height block)\n (map-set withdrawal-roots-map withdrawal-root true)\n (print {\n event: \"block-commit\",\n block-commit: block,\n withdrawal-root: withdrawal-root,\n block-height: commit-block-height\n })\n (ok block)\n )\n)\n\n;; The subnet miner calls this function to commit a block at a particular height.\n;; `block` is the hash of the block being submitted.\n;; `target-chain-tip` is the `id-header-hash` of the burn block (i.e., block on\n;; this chain) that the miner intends to build off.\n;;\n;; Fails if:\n;; 1) we have already committed at this block height\n;; 2) `target-chain-tip` is not the burn chain tip (i.e., on this chain)\n;; 3) the sender is not a miner\n(define-public (commit-block (block (buff 32)) (target-chain-tip (buff 32)) (withdrawal-root (buff 32)))\n (let ((commit-block-height block-height))\n (try! (can-commit-block? commit-block-height target-chain-tip))\n (inner-commit-block block commit-block-height withdrawal-root)\n )\n)\n\n;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n;; FOR NFT ASSET TRANSFERS\n\n;; Helper function that transfers the specified NFT from the given sender to the given recipient.\n;; Returns response\n(define-private (inner-transfer-nft-asset\n (nft-contract )\n (id uint)\n (sender principal)\n (recipient principal)\n )\n (let (\n (call-result (contract-call? nft-contract transfer id sender recipient))\n (transfer-result (unwrap! call-result (err ERR_CONTRACT_CALL_FAILED)))\n )\n ;; Check that the transfer succeeded\n (asserts! transfer-result (err ERR_TRANSFER_FAILED))\n\n (ok true)\n )\n)\n\n(define-private (inner-mint-nft-asset\n (nft-mint-contract )\n (id uint)\n (sender principal)\n (recipient principal)\n )\n (let (\n (call-result (as-contract (contract-call? nft-mint-contract mint-from-subnet id sender recipient)))\n (mint-result (unwrap! call-result (err ERR_CONTRACT_CALL_FAILED)))\n )\n ;; Check that the transfer succeeded\n (asserts! mint-result (err ERR_MINT_FAILED))\n\n (ok true)\n )\n)\n\n(define-private (inner-transfer-or-mint-nft-asset\n (nft-contract )\n (nft-mint-contract )\n (id uint)\n (recipient principal)\n )\n (let (\n (call-result (contract-call? nft-contract get-owner id))\n (nft-owner (unwrap! call-result (err ERR_CONTRACT_CALL_FAILED)))\n (contract-owns-nft (is-eq nft-owner (some CONTRACT_ADDRESS)))\n (no-owner (is-eq nft-owner none))\n )\n\n (if contract-owns-nft\n (inner-transfer-nft-asset nft-contract id CONTRACT_ADDRESS recipient)\n (if no-owner\n ;; Try minting the asset if there is no existing owner of this NFT\n (inner-mint-nft-asset nft-mint-contract id CONTRACT_ADDRESS recipient)\n ;; In this case, a principal other than this contract owns this NFT, so minting is not possible\n (err ERR_MINT_FAILED)\n )\n )\n )\n)\n\n;; A user calls this function to deposit an NFT into the contract.\n;; The function emits a print with details of this event.\n;; Returns response\n(define-public (deposit-nft-asset\n (nft-contract )\n (id uint)\n (sender principal)\n )\n (let (\n ;; Check that the asset belongs to the allowed-contracts map\n (subnet-contract-id (unwrap! (map-get? allowed-contracts (contract-of nft-contract)) (err ERR_DISALLOWED_ASSET)))\n )\n\n ;; Try to transfer the NFT to this contract\n (asserts! (try! (inner-transfer-nft-asset nft-contract id sender CONTRACT_ADDRESS)) (err ERR_TRANSFER_FAILED))\n\n ;; Emit a print event - the node consumes this\n (print {\n event: \"deposit-nft\",\n l1-contract-id: (as-contract nft-contract),\n nft-id: id,\n sender: sender,\n subnet-contract-id: subnet-contract-id,\n })\n\n (ok true)\n )\n)\n\n\n;; Helper function for `withdraw-nft-asset`\n;; Returns response\n(define-public (inner-withdraw-nft-asset\n (nft-contract )\n (l2-contract principal)\n (id uint)\n (recipient principal)\n (withdrawal-id uint)\n (height uint)\n (nft-mint-contract (optional ))\n (withdrawal-root (buff 32))\n (withdrawal-leaf-hash (buff 32))\n (sibling-hashes (list 50 {\n hash: (buff 32),\n is-left-side: bool,\n }))\n )\n (let ((hashes-are-valid (check-withdrawal-hashes withdrawal-root withdrawal-leaf-hash sibling-hashes)))\n\n (asserts! (try! hashes-are-valid) (err ERR_VALIDATION_FAILED))\n\n ;; check that the withdrawal request data matches the supplied leaf hash\n (asserts! (is-eq withdrawal-leaf-hash\n (leaf-hash-withdraw-nft l2-contract id recipient withdrawal-id height))\n (err ERR_VALIDATION_LEAF_FAILED))\n\n (asserts!\n (try!\n (match nft-mint-contract\n mint-contract (as-contract (inner-transfer-or-mint-nft-asset nft-contract mint-contract id recipient))\n (as-contract (inner-transfer-without-mint-nft-asset nft-contract id recipient))\n )\n )\n (err ERR_TRANSFER_FAILED)\n )\n\n (asserts!\n (finish-withdraw { withdrawal-leaf-hash: withdrawal-leaf-hash, withdrawal-root-hash: withdrawal-root })\n (err ERR_WITHDRAWAL_ALREADY_PROCESSED)\n )\n\n (ok true)\n )\n)\n\n;; A user calls this function to withdraw the specified NFT from this contract.\n;; In order for this withdrawal to go through, the given withdrawal must have been included\n;; in a withdrawal Merkle tree a subnet miner submitted. The user must provide the leaf\n;; hash of their withdrawal and the root hash of the specific Merkle tree their withdrawal\n;; is included in. They must also provide a list of sibling hashes. The withdraw function\n;; uses the provided hashes to ensure the requested withdrawal is valid.\n;; The function emits a print with details of this event.\n;; Returns response\n(define-public (withdraw-nft-asset\n (nft-contract )\n (id uint)\n (recipient principal)\n (withdrawal-id uint)\n (height uint)\n (nft-mint-contract (optional ))\n (withdrawal-root (buff 32))\n (withdrawal-leaf-hash (buff 32))\n (sibling-hashes (list 50 {\n hash: (buff 32),\n is-left-side: bool,\n }))\n )\n (let (\n ;; Check that the asset belongs to the allowed-contracts map\n (l2-contract (unwrap! (map-get? allowed-contracts (contract-of nft-contract)) (err ERR_DISALLOWED_ASSET)))\n )\n (asserts!\n (try! (inner-withdraw-nft-asset\n nft-contract\n l2-contract\n id\n recipient\n withdrawal-id\n height\n nft-mint-contract\n withdrawal-root\n withdrawal-leaf-hash\n sibling-hashes\n ))\n (err ERR_TRANSFER_FAILED)\n )\n\n ;; Emit a print event\n (print {\n event: \"withdraw-nft\",\n l1-contract-id: (as-contract nft-contract),\n nft-id: id,\n recipient: recipient\n })\n\n (ok true)\n )\n)\n\n\n;; Like `inner-transfer-or-mint-nft-asset but without allowing or requiring a mint function. In order to withdraw, the user must\n;; have the appropriate balance.\n(define-private (inner-transfer-without-mint-nft-asset\n (nft-contract )\n (id uint)\n (recipient principal)\n )\n (let (\n (call-result (contract-call? nft-contract get-owner id))\n (nft-owner (unwrap! call-result (err ERR_CONTRACT_CALL_FAILED)))\n (contract-owns-nft (is-eq nft-owner (some CONTRACT_ADDRESS)))\n )\n\n (asserts! contract-owns-nft (err ERR_NFT_NOT_OWNED_BY_CONTRACT))\n (inner-transfer-nft-asset nft-contract id CONTRACT_ADDRESS recipient)\n )\n)\n\n;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n;; FOR FUNGIBLE TOKEN ASSET TRANSFERS\n\n;; Helper function that transfers a specified amount of the fungible token from the given sender to the given recipient.\n;; Returns response\n(define-private (inner-transfer-ft-asset\n (ft-contract )\n (amount uint)\n (sender principal)\n (recipient principal)\n (memo (optional (buff 34)))\n )\n (let (\n (call-result (contract-call? ft-contract transfer amount sender recipient memo))\n (transfer-result (unwrap! call-result (err ERR_CONTRACT_CALL_FAILED)))\n )\n ;; FIXME: SIP-010 doesn't require that transfer returns (ok true) on success, so is this check necessary?\n ;; Check that the transfer succeeded\n (asserts! transfer-result (err ERR_TRANSFER_FAILED))\n\n (ok true)\n )\n)\n\n(define-private (inner-mint-ft-asset\n (ft-mint-contract )\n (amount uint)\n (sender principal)\n (recipient principal)\n )\n (let (\n (call-result (as-contract (contract-call? ft-mint-contract mint-from-subnet amount sender recipient)))\n (mint-result (unwrap! call-result (err ERR_CONTRACT_CALL_FAILED)))\n )\n ;; Check that the transfer succeeded\n (asserts! mint-result (err ERR_MINT_FAILED))\n\n (ok true)\n )\n)\n\n(define-private (inner-transfer-or-mint-ft-asset\n (ft-contract )\n (ft-mint-contract )\n (amount uint)\n (recipient principal)\n (memo (optional (buff 34)))\n )\n (let (\n (call-result (contract-call? ft-contract get-balance CONTRACT_ADDRESS))\n (contract-ft-balance (unwrap! call-result (err ERR_CONTRACT_CALL_FAILED)))\n (contract-owns-enough (>= contract-ft-balance amount))\n (amount-to-transfer (if contract-owns-enough amount contract-ft-balance))\n (amount-to-mint (- amount amount-to-transfer))\n )\n\n ;; Check that the total balance between the transfer and mint is equal to the original balance\n (asserts! (is-eq amount (+ amount-to-transfer amount-to-mint)) (err ERR_IN_COMPUTATION))\n\n (and\n (> amount-to-transfer u0)\n (try! (inner-transfer-ft-asset ft-contract amount-to-transfer CONTRACT_ADDRESS recipient memo))\n )\n (and\n (> amount-to-mint u0)\n (try! (inner-mint-ft-asset ft-mint-contract amount-to-mint CONTRACT_ADDRESS recipient))\n )\n\n (ok true)\n )\n)\n\n;; A user calls this function to deposit a fungible token into the contract.\n;; The function emits a print with details of this event.\n;; Returns response\n(define-public (deposit-ft-asset\n (ft-contract )\n (amount uint)\n (sender principal)\n (memo (optional (buff 34)))\n )\n (let (\n ;; Check that the asset belongs to the allowed-contracts map\n (subnet-contract-id (unwrap! (map-get? allowed-contracts (contract-of ft-contract)) (err ERR_DISALLOWED_ASSET)))\n )\n ;; Try to transfer the FT to this contract\n (asserts! (try! (inner-transfer-ft-asset ft-contract amount sender CONTRACT_ADDRESS memo)) (err ERR_TRANSFER_FAILED))\n\n (let (\n (ft-name (unwrap! (contract-call? ft-contract get-name) (err ERR_CONTRACT_CALL_FAILED)))\n )\n ;; Emit a print event - the node consumes this\n (print {\n event: \"deposit-ft\",\n l1-contract-id: (as-contract ft-contract),\n ft-name: ft-name,\n ft-amount: amount,\n sender: sender,\n subnet-contract-id: subnet-contract-id,\n })\n )\n\n (ok true)\n )\n)\n\n;; This function performs validity checks related to the withdrawal and performs the withdrawal as well.\n;; Returns response\n(define-private (inner-withdraw-ft-asset\n (ft-contract )\n (amount uint)\n (recipient principal)\n (withdrawal-id uint)\n (height uint)\n (memo (optional (buff 34)))\n (ft-mint-contract (optional ))\n (withdrawal-root (buff 32))\n (withdrawal-leaf-hash (buff 32))\n (sibling-hashes (list 50 {\n hash: (buff 32),\n is-left-side: bool,\n }))\n )\n (let ((hashes-are-valid (check-withdrawal-hashes withdrawal-root withdrawal-leaf-hash sibling-hashes)))\n (asserts! (try! hashes-are-valid) (err ERR_VALIDATION_FAILED))\n\n ;; check that the withdrawal request data matches the supplied leaf hash\n (asserts! (is-eq withdrawal-leaf-hash\n (leaf-hash-withdraw-ft (contract-of ft-contract) amount recipient withdrawal-id height))\n (err ERR_VALIDATION_LEAF_FAILED))\n\n (asserts!\n (try!\n (match ft-mint-contract\n mint-contract (as-contract (inner-transfer-or-mint-ft-asset ft-contract mint-contract amount recipient memo))\n (as-contract (inner-transfer-ft-asset ft-contract amount CONTRACT_ADDRESS recipient memo))\n )\n )\n (err ERR_TRANSFER_FAILED)\n )\n\n (asserts!\n (finish-withdraw { withdrawal-leaf-hash: withdrawal-leaf-hash, withdrawal-root-hash: withdrawal-root })\n (err ERR_WITHDRAWAL_ALREADY_PROCESSED))\n\n (ok true)\n )\n)\n\n;; A user can call this function to withdraw some amount of a fungible token asset from the\n;; contract and send it to a recipient.\n;; In order for this withdrawal to go through, the given withdrawal must have been included\n;; in a withdrawal Merkle tree a subnet miner submitted. The user must provide the leaf\n;; hash of their withdrawal and the root hash of the specific Merkle tree their withdrawal\n;; is included in. They must also provide a list of sibling hashes. The withdraw function\n;; uses the provided hashes to ensure the requested withdrawal is valid.\n;; The function emits a print with details of this event.\n;; Returns response\n(define-public (withdraw-ft-asset\n (ft-contract )\n (amount uint)\n (recipient principal)\n (withdrawal-id uint)\n (height uint)\n (memo (optional (buff 34)))\n (ft-mint-contract (optional ))\n (withdrawal-root (buff 32))\n (withdrawal-leaf-hash (buff 32))\n (sibling-hashes (list 50 {\n hash: (buff 32),\n is-left-side: bool,\n }))\n )\n (begin\n ;; Check that the withdraw amount is positive\n (asserts! (> amount u0) (err ERR_ATTEMPT_TO_TRANSFER_ZERO_AMOUNT))\n\n ;; Check that the asset belongs to the allowed-contracts map\n (unwrap! (map-get? allowed-contracts (contract-of ft-contract)) (err ERR_DISALLOWED_ASSET))\n\n (asserts!\n (try! (inner-withdraw-ft-asset\n ft-contract\n amount\n recipient\n withdrawal-id\n height\n memo\n ft-mint-contract\n withdrawal-root\n withdrawal-leaf-hash\n sibling-hashes))\n (err ERR_TRANSFER_FAILED)\n )\n\n (let (\n (ft-name (unwrap! (contract-call? ft-contract get-name) (err ERR_CONTRACT_CALL_FAILED)))\n )\n ;; Emit a print event\n (print {\n event: \"withdraw-ft\",\n l1-contract-id: (as-contract ft-contract),\n ft-name: ft-name,\n ft-amount: amount,\n recipient: recipient,\n })\n )\n\n (ok true)\n )\n)\n\n\n;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n;; FOR STX TRANSFERS\n\n\n;; Helper function that transfers the given amount from the specified fungible token from the given sender to the given recipient.\n;; Returns response\n(define-private (inner-transfer-stx (amount uint) (sender principal) (recipient principal))\n (let (\n (call-result (stx-transfer? amount sender recipient))\n (transfer-result (unwrap! call-result (err ERR_TRANSFER_FAILED)))\n )\n ;; Check that the transfer succeeded\n (asserts! transfer-result (err ERR_TRANSFER_FAILED))\n\n (ok true)\n )\n)\n\n;; A user calls this function to deposit STX into the contract.\n;; The function emits a print with details of this event.\n;; Returns response\n(define-public (deposit-stx (amount uint) (sender principal))\n (begin\n ;; Try to transfer the STX to this contract\n (asserts! (try! (inner-transfer-stx amount sender CONTRACT_ADDRESS)) (err ERR_TRANSFER_FAILED))\n\n ;; Emit a print event - the node consumes this\n (print { event: \"deposit-stx\", sender: sender, amount: amount })\n\n (ok true)\n )\n)\n\n(define-read-only (leaf-hash-withdraw-stx\n (amount uint)\n (recipient principal)\n (withdrawal-id uint)\n (height uint)\n )\n (sha512/256 (concat 0x00 (unwrap-panic (to-consensus-buff?\n {\n type: \"stx\",\n amount: amount,\n recipient: recipient,\n withdrawal-id: withdrawal-id,\n height: height\n })))\n )\n)\n\n(define-read-only (leaf-hash-withdraw-nft\n (asset-contract principal)\n (nft-id uint)\n (recipient principal)\n (withdrawal-id uint)\n (height uint)\n )\n (sha512/256 (concat 0x00 (unwrap-panic (to-consensus-buff?\n {\n type: \"nft\",\n nft-id: nft-id,\n asset-contract: asset-contract,\n recipient: recipient,\n withdrawal-id: withdrawal-id,\n height: height\n })))\n )\n)\n\n(define-read-only (leaf-hash-withdraw-ft\n (asset-contract principal)\n (amount uint)\n (recipient principal)\n (withdrawal-id uint)\n (height uint)\n )\n (sha512/256 (concat 0x00 (unwrap-panic (to-consensus-buff?\n {\n type: \"ft\",\n amount: amount,\n asset-contract: asset-contract,\n recipient: recipient,\n withdrawal-id: withdrawal-id,\n height: height\n })))\n )\n)\n\n;; A user calls this function to withdraw STX from this contract.\n;; In order for this withdrawal to go through, the given withdrawal must have been included\n;; in a withdrawal Merkle tree a subnet miner submitted. The user must provide the leaf\n;; hash of their withdrawal and the root hash of the specific Merkle tree their withdrawal\n;; is included in. They must also provide a list of sibling hashes. The withdraw function\n;; uses the provided hashes to ensure the requested withdrawal is valid.\n;; The function emits a print with details of this event.\n;; Returns response\n(define-public (withdraw-stx\n (amount uint)\n (recipient principal)\n (withdrawal-id uint)\n (height uint)\n (withdrawal-root (buff 32))\n (withdrawal-leaf-hash (buff 32))\n (sibling-hashes (list 50 {\n hash: (buff 32),\n is-left-side: bool,\n }))\n )\n (let ((hashes-are-valid (check-withdrawal-hashes withdrawal-root withdrawal-leaf-hash sibling-hashes)))\n\n (asserts! (try! hashes-are-valid) (err ERR_VALIDATION_FAILED))\n ;; check that the withdrawal request data matches the supplied leaf hash\n (asserts! (is-eq withdrawal-leaf-hash\n (leaf-hash-withdraw-stx amount recipient withdrawal-id height))\n (err ERR_VALIDATION_LEAF_FAILED))\n\n (asserts! (try! (as-contract (inner-transfer-stx amount tx-sender recipient))) (err ERR_TRANSFER_FAILED))\n\n (asserts!\n (finish-withdraw { withdrawal-leaf-hash: withdrawal-leaf-hash, withdrawal-root-hash: withdrawal-root })\n (err ERR_WITHDRAWAL_ALREADY_PROCESSED))\n\n ;; Emit a print event\n (print { event: \"withdraw-stx\", recipient: recipient, amount: amount })\n\n (ok true)\n )\n)\n\n\n;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n;; GENERAL WITHDRAWAL FUNCTIONS\n\n;; This function concats the two given hashes in the correct order. It also prepends the buff `0x01`, which is\n;; a tag denoting a node (versus a leaf).\n;; Returns a buff\n(define-private (create-node-hash\n (curr-hash (buff 32))\n (sibling-hash (buff 32))\n (is-sibling-left-side bool)\n )\n (let (\n (concatted-hash (if is-sibling-left-side\n (concat sibling-hash curr-hash)\n (concat curr-hash sibling-hash)\n ))\n )\n\n (concat 0x01 concatted-hash)\n )\n)\n\n;; This function hashes the curr hash with its sibling hash.\n;; Returns (buff 32)\n(define-private (hash-help\n (sibling {\n hash: (buff 32),\n is-left-side: bool,\n })\n (curr-node-hash (buff 32))\n )\n (let (\n (sibling-hash (get hash sibling))\n (is-sibling-left-side (get is-left-side sibling))\n (new-buff (create-node-hash curr-node-hash sibling-hash is-sibling-left-side))\n )\n (sha512/256 new-buff)\n )\n)\n\n;; This function checks:\n;; - That the provided withdrawal root matches a previously submitted one (passed to the function `commit-block`)\n;; - That the computed withdrawal root matches a previous valid withdrawal root\n;; - That the given withdrawal leaf hash has not been previously processed\n;; Returns response\n(define-private (check-withdrawal-hashes\n (withdrawal-root (buff 32))\n (withdrawal-leaf-hash (buff 32))\n (sibling-hashes (list 50 {\n hash: (buff 32),\n is-left-side: bool,\n }))\n )\n (begin\n ;; Check that the user submitted a valid withdrawal root\n (asserts! (is-some (map-get? withdrawal-roots-map withdrawal-root)) (err ERR_INVALID_MERKLE_ROOT))\n\n ;; Check that this withdrawal leaf has not been processed before\n (asserts!\n (is-none\n (map-get? processed-withdrawal-leaves-map\n { withdrawal-leaf-hash: withdrawal-leaf-hash, withdrawal-root-hash: withdrawal-root }))\n (err ERR_WITHDRAWAL_ALREADY_PROCESSED))\n\n (let ((calculated-withdrawal-root (fold hash-help sibling-hashes withdrawal-leaf-hash))\n (roots-match (is-eq calculated-withdrawal-root withdrawal-root)))\n (if roots-match\n (ok true)\n (err ERR_MERKLE_ROOT_DOES_NOT_MATCH))\n )\n )\n)\n\n;; This function should be called after the asset in question has been transferred.\n;; It adds the withdrawal leaf hash to a map of processed leaves. This ensures that\n;; this withdrawal leaf can't be used again to withdraw additional funds.\n;; Returns bool\n(define-private (finish-withdraw\n (withdraw-info {\n withdrawal-leaf-hash: (buff 32),\n withdrawal-root-hash: (buff 32)\n })\n )\n (map-insert processed-withdrawal-leaves-map withdraw-info true)\n)\n", - "contract_identifier": "ST13F481SBR0R7Z6NMMH8YV2FJJYXA5JPA0AD3HP9.subnet-v1" - }, - "type": "ContractDeployment" - }, - "nonce": 33, - "position": { - "index": 1 - }, - "proof": null, - "raw_tx": "0x808000000004003e44ad50f99edc5e6cc5543b636284186894a008000000000000002100000000000b71b00000a84691e27fd2d46475230707a657ef7ddf6de7a4b06a1ac2049384c6474e73f85ee4ce205e0904160adaa160498df02db1782f898b5905db4d249b7025f6604c030100000000060218666169722d616d6172616e74682d7268696e6f6365726f73000005103b3b2068656c6c6f2d776f726c6420636f6e74726163740a0a28646566696e652d636f6e7374616e742073656e6465722027535a324a365a593438475631455a35563256355242394d5036365357383650594b4b51394836445052290a28646566696e652d636f6e7374616e7420726563697069656e742027534d324a365a593438475631455a35563256355242394d5036365357383650594b4b51565838583047290a0a28646566696e652d66756e6769626c652d746f6b656e206e6f76656c2d746f6b656e2d3139290a28626567696e202866742d6d696e743f206e6f76656c2d746f6b656e2d3139207531322073656e64657229290a28626567696e202866742d7472616e736665723f206e6f76656c2d746f6b656e2d31392075322073656e64657220726563697069656e7429290a0a28646566696e652d6e6f6e2d66756e6769626c652d746f6b656e2068656c6c6f2d6e66742075696e74290a28626567696e20286e66742d6d696e743f2068656c6c6f2d6e66742075312073656e64657229290a28626567696e20286e66742d6d696e743f2068656c6c6f2d6e66742075322073656e64657229290a28626567696e20286e66742d7472616e736665723f2068656c6c6f2d6e66742075312073656e64657220726563697069656e7429290a0a28646566696e652d7075626c69632028746573742d656d69742d6576656e74290a2020202028626567696e0a2020202020202020287072696e7420224576656e74212048656c6c6f20776f726c6422290a2020202020202020286f6b2075312929290a28626567696e2028746573742d656d69742d6576656e7429290a0a28646566696e652d7075626c69632028746573742d6576656e742d7479706573290a2020202028626567696e0a202020202020202028756e777261702d70616e6963202866742d6d696e743f206e6f76656c2d746f6b656e2d313920753320726563697069656e7429290a202020202020202028756e777261702d70616e696320286e66742d6d696e743f2068656c6c6f2d6e667420753220726563697069656e7429290a202020202020202028756e777261702d70616e696320287374782d7472616e736665723f207536302074782d73656e6465722027535a324a365a593438475631455a35563256355242394d5036365357383650594b4b5139483644505229290a202020202020202028756e777261702d70616e696320287374782d6275726e3f207532302074782d73656e64657229290a2020202020202020286f6b2075312929290a0a28646566696e652d6d61702073746f7265207b6b65793a202862756666203332297d207b76616c75653a202862756666203332297d290a28646566696e652d7075626c696320286765742d76616c756520286b65792028627566662033322929290a2020202028626567696e0a2020202020202020286d6174636820286d61702d6765743f2073746f7265207b6b65793a206b65797d290a202020202020202020202020656e74727920286f6b20286765742076616c756520656e74727929290a202020202020202020202020286572722030292929290a28646566696e652d7075626c696320287365742d76616c756520286b65792028627566662033322929202876616c75652028627566662033322929290a2020202028626567696e0a2020202020202020286d61702d7365742073746f7265207b6b65793a206b65797d207b76616c75653a2076616c75657d290a2020202020202020286f6b207531292929", - "receipt": { - "contract_calls_stack": [], - "events": [], - "mutated_assets_radius": [], - "mutated_contracts_radius": [ - "ST13F481SBR0R7Z6NMMH8YV2FJJYXA5JPA0AD3HP9.subnet-v1" + "metadata": { + "description": "", + "execution_cost": { + "read_count": 8, + "read_length": 6, + "runtime": 84581, + "write_count": 13, + "write_length": 1612 + }, + "fee": 750000, + "kind": { + "data": { + "code": ";; The .subnet contract\n\n(define-constant CONTRACT_ADDRESS (as-contract tx-sender))\n\n;; Error codes\n(define-constant ERR_BLOCK_ALREADY_COMMITTED 1)\n(define-constant ERR_INVALID_MINER 2)\n(define-constant ERR_CONTRACT_CALL_FAILED 3)\n(define-constant ERR_TRANSFER_FAILED 4)\n(define-constant ERR_DISALLOWED_ASSET 5)\n(define-constant ERR_ASSET_ALREADY_ALLOWED 6)\n(define-constant ERR_MERKLE_ROOT_DOES_NOT_MATCH 7)\n(define-constant ERR_INVALID_MERKLE_ROOT 8)\n(define-constant ERR_WITHDRAWAL_ALREADY_PROCESSED 9)\n(define-constant ERR_VALIDATION_FAILED 10)\n;;; The value supplied for `target-chain-tip` does not match the current chain tip.\n(define-constant ERR_INVALID_CHAIN_TIP 11)\n;;; The contract was called before reaching this-chain height reaches 1.\n(define-constant ERR_CALLED_TOO_EARLY 12)\n(define-constant ERR_MINT_FAILED 13)\n(define-constant ERR_ATTEMPT_TO_TRANSFER_ZERO_AMOUNT 14)\n(define-constant ERR_IN_COMPUTATION 15)\n;; The contract does not own this NFT to withdraw it.\n(define-constant ERR_NFT_NOT_OWNED_BY_CONTRACT 16)\n(define-constant ERR_VALIDATION_LEAF_FAILED 30)\n\n;; Map from Stacks block height to block commit\n(define-map block-commits uint (buff 32))\n;; Map recording withdrawal roots\n(define-map withdrawal-roots-map (buff 32) bool)\n;; Map recording processed withdrawal leaves\n(define-map processed-withdrawal-leaves-map { withdrawal-leaf-hash: (buff 32), withdrawal-root-hash: (buff 32) } bool)\n\n;; principal that can commit blocks\n(define-data-var miner principal tx-sender)\n;; principal that can register contracts\n(define-data-var admin principal 'ST167FDXCJGS54J1T0J42VTX46G0QQQFRJGBK28RN)\n\n;; Map of allowed contracts for asset transfers - maps L1 contract principal to L2 contract principal\n(define-map allowed-contracts principal principal)\n\n;; Use trait declarations\n(use-trait nft-trait 'ST1NXBK3K5YYMD6FD41MVNP3JS1GABZ8TRVX023PT.nft-trait.nft-trait)\n(use-trait ft-trait 'ST1NXBK3K5YYMD6FD41MVNP3JS1GABZ8TRVX023PT.sip-010-trait-ft-standard.sip-010-trait)\n(use-trait mint-from-subnet-trait .subnet-traits-v1.mint-from-subnet-trait)\n\n;; Update the miner for this contract.\n(define-public (update-miner (new-miner principal))\n (begin\n (asserts! (is-eq tx-sender (var-get miner)) (err ERR_INVALID_MINER))\n (ok (var-set miner new-miner))\n )\n)\n\n;; Register a new FT contract to be supported by this subnet.\n(define-public (register-new-ft-contract (ft-contract ) (l2-contract principal))\n (begin\n ;; Verify that tx-sender is an authorized admin\n (asserts! (is-admin tx-sender) (err ERR_INVALID_MINER))\n\n ;; Set up the assets that the contract is allowed to transfer\n (asserts! (map-insert allowed-contracts (contract-of ft-contract) l2-contract)\n (err ERR_ASSET_ALREADY_ALLOWED))\n\n (print {\n event: \"register-contract\",\n asset-type: \"ft\",\n l1-contract: (contract-of ft-contract),\n l2-contract: l2-contract\n })\n\n (ok true)\n )\n)\n\n;; Register a new NFT contract to be supported by this subnet.\n(define-public (register-new-nft-contract (nft-contract ) (l2-contract principal))\n (begin\n ;; Verify that tx-sender is an authorized admin\n (asserts! (is-admin tx-sender) (err ERR_INVALID_MINER))\n\n ;; Set up the assets that the contract is allowed to transfer\n (asserts! (map-insert allowed-contracts (contract-of nft-contract) l2-contract)\n (err ERR_ASSET_ALREADY_ALLOWED))\n\n (print {\n event: \"register-contract\",\n asset-type: \"nft\",\n l1-contract: (contract-of nft-contract),\n l2-contract: l2-contract\n })\n\n (ok true)\n )\n)\n\n;; Helper function: returns a boolean indicating whether the given principal is a miner\n;; Returns bool\n(define-private (is-miner (miner-to-check principal))\n (is-eq miner-to-check (var-get miner))\n)\n\n;; Helper function: returns a boolean indicating whether the given principal is an admin\n;; Returns bool\n(define-private (is-admin (addr-to-check principal))\n (is-eq addr-to-check (var-get admin))\n)\n\n;; Helper function: determines whether the commit-block operation satisfies pre-conditions\n;; listed in `commit-block`.\n;; Returns response\n(define-private (can-commit-block? (commit-block-height uint) (target-chain-tip (buff 32)))\n (begin\n ;; check no block has been committed at this height\n (asserts! (is-none (map-get? block-commits commit-block-height)) (err ERR_BLOCK_ALREADY_COMMITTED))\n\n ;; check that `target-chain-tip` matches the burn chain tip\n (asserts! (is-eq\n target-chain-tip\n (unwrap! (get-block-info? id-header-hash (- block-height u1)) (err ERR_CALLED_TOO_EARLY)) )\n (err ERR_INVALID_CHAIN_TIP))\n\n ;; check that the tx sender is one of the miners\n (asserts! (is-miner tx-sender) (err ERR_INVALID_MINER))\n\n ;; check that the miner called this contract directly\n (asserts! (is-miner contract-caller) (err ERR_INVALID_MINER))\n\n (ok true)\n )\n)\n\n;; Helper function: modifies the block-commits map with a new commit and prints related info\n;; Returns response<(buff 32), ?>\n(define-private (inner-commit-block (block (buff 32)) (commit-block-height uint) (withdrawal-root (buff 32)))\n (begin\n (map-set block-commits commit-block-height block)\n (map-set withdrawal-roots-map withdrawal-root true)\n (print {\n event: \"block-commit\",\n block-commit: block,\n withdrawal-root: withdrawal-root,\n block-height: commit-block-height\n })\n (ok block)\n )\n)\n\n;; The subnet miner calls this function to commit a block at a particular height.\n;; `block` is the hash of the block being submitted.\n;; `target-chain-tip` is the `id-header-hash` of the burn block (i.e., block on\n;; this chain) that the miner intends to build off.\n;;\n;; Fails if:\n;; 1) we have already committed at this block height\n;; 2) `target-chain-tip` is not the burn chain tip (i.e., on this chain)\n;; 3) the sender is not a miner\n(define-public (commit-block (block (buff 32)) (target-chain-tip (buff 32)) (withdrawal-root (buff 32)))\n (let ((commit-block-height block-height))\n (try! (can-commit-block? commit-block-height target-chain-tip))\n (inner-commit-block block commit-block-height withdrawal-root)\n )\n)\n\n;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n;; FOR NFT ASSET TRANSFERS\n\n;; Helper function that transfers the specified NFT from the given sender to the given recipient.\n;; Returns response\n(define-private (inner-transfer-nft-asset\n (nft-contract )\n (id uint)\n (sender principal)\n (recipient principal)\n )\n (let (\n (call-result (contract-call? nft-contract transfer id sender recipient))\n (transfer-result (unwrap! call-result (err ERR_CONTRACT_CALL_FAILED)))\n )\n ;; Check that the transfer succeeded\n (asserts! transfer-result (err ERR_TRANSFER_FAILED))\n\n (ok true)\n )\n)\n\n(define-private (inner-mint-nft-asset\n (nft-mint-contract )\n (id uint)\n (sender principal)\n (recipient principal)\n )\n (let (\n (call-result (as-contract (contract-call? nft-mint-contract mint-from-subnet id sender recipient)))\n (mint-result (unwrap! call-result (err ERR_CONTRACT_CALL_FAILED)))\n )\n ;; Check that the transfer succeeded\n (asserts! mint-result (err ERR_MINT_FAILED))\n\n (ok true)\n )\n)\n\n(define-private (inner-transfer-or-mint-nft-asset\n (nft-contract )\n (nft-mint-contract )\n (id uint)\n (recipient principal)\n )\n (let (\n (call-result (contract-call? nft-contract get-owner id))\n (nft-owner (unwrap! call-result (err ERR_CONTRACT_CALL_FAILED)))\n (contract-owns-nft (is-eq nft-owner (some CONTRACT_ADDRESS)))\n (no-owner (is-eq nft-owner none))\n )\n\n (if contract-owns-nft\n (inner-transfer-nft-asset nft-contract id CONTRACT_ADDRESS recipient)\n (if no-owner\n ;; Try minting the asset if there is no existing owner of this NFT\n (inner-mint-nft-asset nft-mint-contract id CONTRACT_ADDRESS recipient)\n ;; In this case, a principal other than this contract owns this NFT, so minting is not possible\n (err ERR_MINT_FAILED)\n )\n )\n )\n)\n\n;; A user calls this function to deposit an NFT into the contract.\n;; The function emits a print with details of this event.\n;; Returns response\n(define-public (deposit-nft-asset\n (nft-contract )\n (id uint)\n (sender principal)\n )\n (let (\n ;; Check that the asset belongs to the allowed-contracts map\n (subnet-contract-id (unwrap! (map-get? allowed-contracts (contract-of nft-contract)) (err ERR_DISALLOWED_ASSET)))\n )\n\n ;; Try to transfer the NFT to this contract\n (asserts! (try! (inner-transfer-nft-asset nft-contract id sender CONTRACT_ADDRESS)) (err ERR_TRANSFER_FAILED))\n\n ;; Emit a print event - the node consumes this\n (print {\n event: \"deposit-nft\",\n l1-contract-id: (as-contract nft-contract),\n nft-id: id,\n sender: sender,\n subnet-contract-id: subnet-contract-id,\n })\n\n (ok true)\n )\n)\n\n\n;; Helper function for `withdraw-nft-asset`\n;; Returns response\n(define-public (inner-withdraw-nft-asset\n (nft-contract )\n (l2-contract principal)\n (id uint)\n (recipient principal)\n (withdrawal-id uint)\n (height uint)\n (nft-mint-contract (optional ))\n (withdrawal-root (buff 32))\n (withdrawal-leaf-hash (buff 32))\n (sibling-hashes (list 50 {\n hash: (buff 32),\n is-left-side: bool,\n }))\n )\n (let ((hashes-are-valid (check-withdrawal-hashes withdrawal-root withdrawal-leaf-hash sibling-hashes)))\n\n (asserts! (try! hashes-are-valid) (err ERR_VALIDATION_FAILED))\n\n ;; check that the withdrawal request data matches the supplied leaf hash\n (asserts! (is-eq withdrawal-leaf-hash\n (leaf-hash-withdraw-nft l2-contract id recipient withdrawal-id height))\n (err ERR_VALIDATION_LEAF_FAILED))\n\n (asserts!\n (try!\n (match nft-mint-contract\n mint-contract (as-contract (inner-transfer-or-mint-nft-asset nft-contract mint-contract id recipient))\n (as-contract (inner-transfer-without-mint-nft-asset nft-contract id recipient))\n )\n )\n (err ERR_TRANSFER_FAILED)\n )\n\n (asserts!\n (finish-withdraw { withdrawal-leaf-hash: withdrawal-leaf-hash, withdrawal-root-hash: withdrawal-root })\n (err ERR_WITHDRAWAL_ALREADY_PROCESSED)\n )\n\n (ok true)\n )\n)\n\n;; A user calls this function to withdraw the specified NFT from this contract.\n;; In order for this withdrawal to go through, the given withdrawal must have been included\n;; in a withdrawal Merkle tree a subnet miner submitted. The user must provide the leaf\n;; hash of their withdrawal and the root hash of the specific Merkle tree their withdrawal\n;; is included in. They must also provide a list of sibling hashes. The withdraw function\n;; uses the provided hashes to ensure the requested withdrawal is valid.\n;; The function emits a print with details of this event.\n;; Returns response\n(define-public (withdraw-nft-asset\n (nft-contract )\n (id uint)\n (recipient principal)\n (withdrawal-id uint)\n (height uint)\n (nft-mint-contract (optional ))\n (withdrawal-root (buff 32))\n (withdrawal-leaf-hash (buff 32))\n (sibling-hashes (list 50 {\n hash: (buff 32),\n is-left-side: bool,\n }))\n )\n (let (\n ;; Check that the asset belongs to the allowed-contracts map\n (l2-contract (unwrap! (map-get? allowed-contracts (contract-of nft-contract)) (err ERR_DISALLOWED_ASSET)))\n )\n (asserts!\n (try! (inner-withdraw-nft-asset\n nft-contract\n l2-contract\n id\n recipient\n withdrawal-id\n height\n nft-mint-contract\n withdrawal-root\n withdrawal-leaf-hash\n sibling-hashes\n ))\n (err ERR_TRANSFER_FAILED)\n )\n\n ;; Emit a print event\n (print {\n event: \"withdraw-nft\",\n l1-contract-id: (as-contract nft-contract),\n nft-id: id,\n recipient: recipient\n })\n\n (ok true)\n )\n)\n\n\n;; Like `inner-transfer-or-mint-nft-asset but without allowing or requiring a mint function. In order to withdraw, the user must\n;; have the appropriate balance.\n(define-private (inner-transfer-without-mint-nft-asset\n (nft-contract )\n (id uint)\n (recipient principal)\n )\n (let (\n (call-result (contract-call? nft-contract get-owner id))\n (nft-owner (unwrap! call-result (err ERR_CONTRACT_CALL_FAILED)))\n (contract-owns-nft (is-eq nft-owner (some CONTRACT_ADDRESS)))\n )\n\n (asserts! contract-owns-nft (err ERR_NFT_NOT_OWNED_BY_CONTRACT))\n (inner-transfer-nft-asset nft-contract id CONTRACT_ADDRESS recipient)\n )\n)\n\n;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n;; FOR FUNGIBLE TOKEN ASSET TRANSFERS\n\n;; Helper function that transfers a specified amount of the fungible token from the given sender to the given recipient.\n;; Returns response\n(define-private (inner-transfer-ft-asset\n (ft-contract )\n (amount uint)\n (sender principal)\n (recipient principal)\n (memo (optional (buff 34)))\n )\n (let (\n (call-result (contract-call? ft-contract transfer amount sender recipient memo))\n (transfer-result (unwrap! call-result (err ERR_CONTRACT_CALL_FAILED)))\n )\n ;; FIXME: SIP-010 doesn't require that transfer returns (ok true) on success, so is this check necessary?\n ;; Check that the transfer succeeded\n (asserts! transfer-result (err ERR_TRANSFER_FAILED))\n\n (ok true)\n )\n)\n\n(define-private (inner-mint-ft-asset\n (ft-mint-contract )\n (amount uint)\n (sender principal)\n (recipient principal)\n )\n (let (\n (call-result (as-contract (contract-call? ft-mint-contract mint-from-subnet amount sender recipient)))\n (mint-result (unwrap! call-result (err ERR_CONTRACT_CALL_FAILED)))\n )\n ;; Check that the transfer succeeded\n (asserts! mint-result (err ERR_MINT_FAILED))\n\n (ok true)\n )\n)\n\n(define-private (inner-transfer-or-mint-ft-asset\n (ft-contract )\n (ft-mint-contract )\n (amount uint)\n (recipient principal)\n (memo (optional (buff 34)))\n )\n (let (\n (call-result (contract-call? ft-contract get-balance CONTRACT_ADDRESS))\n (contract-ft-balance (unwrap! call-result (err ERR_CONTRACT_CALL_FAILED)))\n (contract-owns-enough (>= contract-ft-balance amount))\n (amount-to-transfer (if contract-owns-enough amount contract-ft-balance))\n (amount-to-mint (- amount amount-to-transfer))\n )\n\n ;; Check that the total balance between the transfer and mint is equal to the original balance\n (asserts! (is-eq amount (+ amount-to-transfer amount-to-mint)) (err ERR_IN_COMPUTATION))\n\n (and\n (> amount-to-transfer u0)\n (try! (inner-transfer-ft-asset ft-contract amount-to-transfer CONTRACT_ADDRESS recipient memo))\n )\n (and\n (> amount-to-mint u0)\n (try! (inner-mint-ft-asset ft-mint-contract amount-to-mint CONTRACT_ADDRESS recipient))\n )\n\n (ok true)\n )\n)\n\n;; A user calls this function to deposit a fungible token into the contract.\n;; The function emits a print with details of this event.\n;; Returns response\n(define-public (deposit-ft-asset\n (ft-contract )\n (amount uint)\n (sender principal)\n (memo (optional (buff 34)))\n )\n (let (\n ;; Check that the asset belongs to the allowed-contracts map\n (subnet-contract-id (unwrap! (map-get? allowed-contracts (contract-of ft-contract)) (err ERR_DISALLOWED_ASSET)))\n )\n ;; Try to transfer the FT to this contract\n (asserts! (try! (inner-transfer-ft-asset ft-contract amount sender CONTRACT_ADDRESS memo)) (err ERR_TRANSFER_FAILED))\n\n (let (\n (ft-name (unwrap! (contract-call? ft-contract get-name) (err ERR_CONTRACT_CALL_FAILED)))\n )\n ;; Emit a print event - the node consumes this\n (print {\n event: \"deposit-ft\",\n l1-contract-id: (as-contract ft-contract),\n ft-name: ft-name,\n ft-amount: amount,\n sender: sender,\n subnet-contract-id: subnet-contract-id,\n })\n )\n\n (ok true)\n )\n)\n\n;; This function performs validity checks related to the withdrawal and performs the withdrawal as well.\n;; Returns response\n(define-private (inner-withdraw-ft-asset\n (ft-contract )\n (amount uint)\n (recipient principal)\n (withdrawal-id uint)\n (height uint)\n (memo (optional (buff 34)))\n (ft-mint-contract (optional ))\n (withdrawal-root (buff 32))\n (withdrawal-leaf-hash (buff 32))\n (sibling-hashes (list 50 {\n hash: (buff 32),\n is-left-side: bool,\n }))\n )\n (let ((hashes-are-valid (check-withdrawal-hashes withdrawal-root withdrawal-leaf-hash sibling-hashes)))\n (asserts! (try! hashes-are-valid) (err ERR_VALIDATION_FAILED))\n\n ;; check that the withdrawal request data matches the supplied leaf hash\n (asserts! (is-eq withdrawal-leaf-hash\n (leaf-hash-withdraw-ft (contract-of ft-contract) amount recipient withdrawal-id height))\n (err ERR_VALIDATION_LEAF_FAILED))\n\n (asserts!\n (try!\n (match ft-mint-contract\n mint-contract (as-contract (inner-transfer-or-mint-ft-asset ft-contract mint-contract amount recipient memo))\n (as-contract (inner-transfer-ft-asset ft-contract amount CONTRACT_ADDRESS recipient memo))\n )\n )\n (err ERR_TRANSFER_FAILED)\n )\n\n (asserts!\n (finish-withdraw { withdrawal-leaf-hash: withdrawal-leaf-hash, withdrawal-root-hash: withdrawal-root })\n (err ERR_WITHDRAWAL_ALREADY_PROCESSED))\n\n (ok true)\n )\n)\n\n;; A user can call this function to withdraw some amount of a fungible token asset from the\n;; contract and send it to a recipient.\n;; In order for this withdrawal to go through, the given withdrawal must have been included\n;; in a withdrawal Merkle tree a subnet miner submitted. The user must provide the leaf\n;; hash of their withdrawal and the root hash of the specific Merkle tree their withdrawal\n;; is included in. They must also provide a list of sibling hashes. The withdraw function\n;; uses the provided hashes to ensure the requested withdrawal is valid.\n;; The function emits a print with details of this event.\n;; Returns response\n(define-public (withdraw-ft-asset\n (ft-contract )\n (amount uint)\n (recipient principal)\n (withdrawal-id uint)\n (height uint)\n (memo (optional (buff 34)))\n (ft-mint-contract (optional ))\n (withdrawal-root (buff 32))\n (withdrawal-leaf-hash (buff 32))\n (sibling-hashes (list 50 {\n hash: (buff 32),\n is-left-side: bool,\n }))\n )\n (begin\n ;; Check that the withdraw amount is positive\n (asserts! (> amount u0) (err ERR_ATTEMPT_TO_TRANSFER_ZERO_AMOUNT))\n\n ;; Check that the asset belongs to the allowed-contracts map\n (unwrap! (map-get? allowed-contracts (contract-of ft-contract)) (err ERR_DISALLOWED_ASSET))\n\n (asserts!\n (try! (inner-withdraw-ft-asset\n ft-contract\n amount\n recipient\n withdrawal-id\n height\n memo\n ft-mint-contract\n withdrawal-root\n withdrawal-leaf-hash\n sibling-hashes))\n (err ERR_TRANSFER_FAILED)\n )\n\n (let (\n (ft-name (unwrap! (contract-call? ft-contract get-name) (err ERR_CONTRACT_CALL_FAILED)))\n )\n ;; Emit a print event\n (print {\n event: \"withdraw-ft\",\n l1-contract-id: (as-contract ft-contract),\n ft-name: ft-name,\n ft-amount: amount,\n recipient: recipient,\n })\n )\n\n (ok true)\n )\n)\n\n\n;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n;; FOR STX TRANSFERS\n\n\n;; Helper function that transfers the given amount from the specified fungible token from the given sender to the given recipient.\n;; Returns response\n(define-private (inner-transfer-stx (amount uint) (sender principal) (recipient principal))\n (let (\n (call-result (stx-transfer? amount sender recipient))\n (transfer-result (unwrap! call-result (err ERR_TRANSFER_FAILED)))\n )\n ;; Check that the transfer succeeded\n (asserts! transfer-result (err ERR_TRANSFER_FAILED))\n\n (ok true)\n )\n)\n\n;; A user calls this function to deposit STX into the contract.\n;; The function emits a print with details of this event.\n;; Returns response\n(define-public (deposit-stx (amount uint) (sender principal))\n (begin\n ;; Try to transfer the STX to this contract\n (asserts! (try! (inner-transfer-stx amount sender CONTRACT_ADDRESS)) (err ERR_TRANSFER_FAILED))\n\n ;; Emit a print event - the node consumes this\n (print { event: \"deposit-stx\", sender: sender, amount: amount })\n\n (ok true)\n )\n)\n\n(define-read-only (leaf-hash-withdraw-stx\n (amount uint)\n (recipient principal)\n (withdrawal-id uint)\n (height uint)\n )\n (sha512/256 (concat 0x00 (unwrap-panic (to-consensus-buff?\n {\n type: \"stx\",\n amount: amount,\n recipient: recipient,\n withdrawal-id: withdrawal-id,\n height: height\n })))\n )\n)\n\n(define-read-only (leaf-hash-withdraw-nft\n (asset-contract principal)\n (nft-id uint)\n (recipient principal)\n (withdrawal-id uint)\n (height uint)\n )\n (sha512/256 (concat 0x00 (unwrap-panic (to-consensus-buff?\n {\n type: \"nft\",\n nft-id: nft-id,\n asset-contract: asset-contract,\n recipient: recipient,\n withdrawal-id: withdrawal-id,\n height: height\n })))\n )\n)\n\n(define-read-only (leaf-hash-withdraw-ft\n (asset-contract principal)\n (amount uint)\n (recipient principal)\n (withdrawal-id uint)\n (height uint)\n )\n (sha512/256 (concat 0x00 (unwrap-panic (to-consensus-buff?\n {\n type: \"ft\",\n amount: amount,\n asset-contract: asset-contract,\n recipient: recipient,\n withdrawal-id: withdrawal-id,\n height: height\n })))\n )\n)\n\n;; A user calls this function to withdraw STX from this contract.\n;; In order for this withdrawal to go through, the given withdrawal must have been included\n;; in a withdrawal Merkle tree a subnet miner submitted. The user must provide the leaf\n;; hash of their withdrawal and the root hash of the specific Merkle tree their withdrawal\n;; is included in. They must also provide a list of sibling hashes. The withdraw function\n;; uses the provided hashes to ensure the requested withdrawal is valid.\n;; The function emits a print with details of this event.\n;; Returns response\n(define-public (withdraw-stx\n (amount uint)\n (recipient principal)\n (withdrawal-id uint)\n (height uint)\n (withdrawal-root (buff 32))\n (withdrawal-leaf-hash (buff 32))\n (sibling-hashes (list 50 {\n hash: (buff 32),\n is-left-side: bool,\n }))\n )\n (let ((hashes-are-valid (check-withdrawal-hashes withdrawal-root withdrawal-leaf-hash sibling-hashes)))\n\n (asserts! (try! hashes-are-valid) (err ERR_VALIDATION_FAILED))\n ;; check that the withdrawal request data matches the supplied leaf hash\n (asserts! (is-eq withdrawal-leaf-hash\n (leaf-hash-withdraw-stx amount recipient withdrawal-id height))\n (err ERR_VALIDATION_LEAF_FAILED))\n\n (asserts! (try! (as-contract (inner-transfer-stx amount tx-sender recipient))) (err ERR_TRANSFER_FAILED))\n\n (asserts!\n (finish-withdraw { withdrawal-leaf-hash: withdrawal-leaf-hash, withdrawal-root-hash: withdrawal-root })\n (err ERR_WITHDRAWAL_ALREADY_PROCESSED))\n\n ;; Emit a print event\n (print { event: \"withdraw-stx\", recipient: recipient, amount: amount })\n\n (ok true)\n )\n)\n\n\n;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n;; GENERAL WITHDRAWAL FUNCTIONS\n\n;; This function concats the two given hashes in the correct order. It also prepends the buff `0x01`, which is\n;; a tag denoting a node (versus a leaf).\n;; Returns a buff\n(define-private (create-node-hash\n (curr-hash (buff 32))\n (sibling-hash (buff 32))\n (is-sibling-left-side bool)\n )\n (let (\n (concatted-hash (if is-sibling-left-side\n (concat sibling-hash curr-hash)\n (concat curr-hash sibling-hash)\n ))\n )\n\n (concat 0x01 concatted-hash)\n )\n)\n\n;; This function hashes the curr hash with its sibling hash.\n;; Returns (buff 32)\n(define-private (hash-help\n (sibling {\n hash: (buff 32),\n is-left-side: bool,\n })\n (curr-node-hash (buff 32))\n )\n (let (\n (sibling-hash (get hash sibling))\n (is-sibling-left-side (get is-left-side sibling))\n (new-buff (create-node-hash curr-node-hash sibling-hash is-sibling-left-side))\n )\n (sha512/256 new-buff)\n )\n)\n\n;; This function checks:\n;; - That the provided withdrawal root matches a previously submitted one (passed to the function `commit-block`)\n;; - That the computed withdrawal root matches a previous valid withdrawal root\n;; - That the given withdrawal leaf hash has not been previously processed\n;; Returns response\n(define-private (check-withdrawal-hashes\n (withdrawal-root (buff 32))\n (withdrawal-leaf-hash (buff 32))\n (sibling-hashes (list 50 {\n hash: (buff 32),\n is-left-side: bool,\n }))\n )\n (begin\n ;; Check that the user submitted a valid withdrawal root\n (asserts! (is-some (map-get? withdrawal-roots-map withdrawal-root)) (err ERR_INVALID_MERKLE_ROOT))\n\n ;; Check that this withdrawal leaf has not been processed before\n (asserts!\n (is-none\n (map-get? processed-withdrawal-leaves-map\n { withdrawal-leaf-hash: withdrawal-leaf-hash, withdrawal-root-hash: withdrawal-root }))\n (err ERR_WITHDRAWAL_ALREADY_PROCESSED))\n\n (let ((calculated-withdrawal-root (fold hash-help sibling-hashes withdrawal-leaf-hash))\n (roots-match (is-eq calculated-withdrawal-root withdrawal-root)))\n (if roots-match\n (ok true)\n (err ERR_MERKLE_ROOT_DOES_NOT_MATCH))\n )\n )\n)\n\n;; This function should be called after the asset in question has been transferred.\n;; It adds the withdrawal leaf hash to a map of processed leaves. This ensures that\n;; this withdrawal leaf can't be used again to withdraw additional funds.\n;; Returns bool\n(define-private (finish-withdraw\n (withdraw-info {\n withdrawal-leaf-hash: (buff 32),\n withdrawal-root-hash: (buff 32)\n })\n )\n (map-insert processed-withdrawal-leaves-map withdraw-info true)\n)\n", + "contract_identifier": "ST13F481SBR0R7Z6NMMH8YV2FJJYXA5JPA0AD3HP9.subnet-v1" + }, + "type": "ContractDeployment" + }, + "nonce": 33, + "position": { + "index": 1 + }, + "contract_abi": { + "clarity_version": "Clarity2", + "epoch": "Epoch24", + "functions": [ + { + "access": "private", + "args": [{ "name": "tid", "type": "uint128" }], + "name": "airdrop", + "outputs": { "type": "bool" } + } + ], + "fungible_tokens": [{ "name": "MEME" }], + "maps": [ + { + "key": { + "tuple": [ + { + "name": "name", + "type": { "buffer": { "length": 48 } } + }, + { + "name": "namespace", + "type": { "buffer": { "length": 20 } } + } ] - }, - "result": "(ok true)", - "sender": "ST13F481SBR0R7Z6NMMH8YV2FJJYXA5JPA0AD3HP9", - "success": true + }, + "name": "map_claimed_bns_note", + "value": "bool" + } + ], + "non_fungible_tokens": [], + "variables": [ + { + "access": "constant", + "name": "AIRDROP_COUNT_PER_MEMBER", + "type": "uint128" + } + ] + }, + "proof": null, + "raw_tx": "0x808000000004003e44ad50f99edc5e6cc5543b636284186894a008000000000000002100000000000b71b00000a84691e27fd2d46475230707a657ef7ddf6de7a4b06a1ac2049384c6474e73f85ee4ce205e0904160adaa160498df02db1782f898b5905db4d249b7025f6604c030100000000060218666169722d616d6172616e74682d7268696e6f6365726f73000005103b3b2068656c6c6f2d776f726c6420636f6e74726163740a0a28646566696e652d636f6e7374616e742073656e6465722027535a324a365a593438475631455a35563256355242394d5036365357383650594b4b51394836445052290a28646566696e652d636f6e7374616e7420726563697069656e742027534d324a365a593438475631455a35563256355242394d5036365357383650594b4b51565838583047290a0a28646566696e652d66756e6769626c652d746f6b656e206e6f76656c2d746f6b656e2d3139290a28626567696e202866742d6d696e743f206e6f76656c2d746f6b656e2d3139207531322073656e64657229290a28626567696e202866742d7472616e736665723f206e6f76656c2d746f6b656e2d31392075322073656e64657220726563697069656e7429290a0a28646566696e652d6e6f6e2d66756e6769626c652d746f6b656e2068656c6c6f2d6e66742075696e74290a28626567696e20286e66742d6d696e743f2068656c6c6f2d6e66742075312073656e64657229290a28626567696e20286e66742d6d696e743f2068656c6c6f2d6e66742075322073656e64657229290a28626567696e20286e66742d7472616e736665723f2068656c6c6f2d6e66742075312073656e64657220726563697069656e7429290a0a28646566696e652d7075626c69632028746573742d656d69742d6576656e74290a2020202028626567696e0a2020202020202020287072696e7420224576656e74212048656c6c6f20776f726c6422290a2020202020202020286f6b2075312929290a28626567696e2028746573742d656d69742d6576656e7429290a0a28646566696e652d7075626c69632028746573742d6576656e742d7479706573290a2020202028626567696e0a202020202020202028756e777261702d70616e6963202866742d6d696e743f206e6f76656c2d746f6b656e2d313920753320726563697069656e7429290a202020202020202028756e777261702d70616e696320286e66742d6d696e743f2068656c6c6f2d6e667420753220726563697069656e7429290a202020202020202028756e777261702d70616e696320287374782d7472616e736665723f207536302074782d73656e6465722027535a324a365a593438475631455a35563256355242394d5036365357383650594b4b5139483644505229290a202020202020202028756e777261702d70616e696320287374782d6275726e3f207532302074782d73656e64657229290a2020202020202020286f6b2075312929290a0a28646566696e652d6d61702073746f7265207b6b65793a202862756666203332297d207b76616c75653a202862756666203332297d290a28646566696e652d7075626c696320286765742d76616c756520286b65792028627566662033322929290a2020202028626567696e0a2020202020202020286d6174636820286d61702d6765743f2073746f7265207b6b65793a206b65797d290a202020202020202020202020656e74727920286f6b20286765742076616c756520656e74727929290a202020202020202020202020286572722030292929290a28646566696e652d7075626c696320287365742d76616c756520286b65792028627566662033322929202876616c75652028627566662033322929290a2020202028626567696e0a2020202020202020286d61702d7365742073746f7265207b6b65793a206b65797d207b76616c75653a2076616c75657d290a2020202020202020286f6b207531292929", + "receipt": { + "contract_calls_stack": [], + "events": [], + "mutated_assets_radius": [], + "mutated_contracts_radius": [ + "ST13F481SBR0R7Z6NMMH8YV2FJJYXA5JPA0AD3HP9.subnet-v1" + ] }, - "operations": [], - "transaction_identifier": { - "hash": "0x93c89ffdac77ed2ba52611563bd491f56f5d558e23d311a105663ae32bdf18e5" - } -} \ No newline at end of file + "result": "(ok true)", + "sender": "ST13F481SBR0R7Z6NMMH8YV2FJJYXA5JPA0AD3HP9", + "success": true + }, + "operations": [], + "transaction_identifier": { + "hash": "0x93c89ffdac77ed2ba52611563bd491f56f5d558e23d311a105663ae32bdf18e5" + } +} diff --git a/components/chainhook-sdk/src/chainhooks/tests/fixtures/stacks/testnet/occurrence.json b/components/chainhook-sdk/src/chainhooks/tests/fixtures/stacks/testnet/occurrence.json index 53ba07e47..76b8b30d2 100644 --- a/components/chainhook-sdk/src/chainhooks/tests/fixtures/stacks/testnet/occurrence.json +++ b/components/chainhook-sdk/src/chainhooks/tests/fixtures/stacks/testnet/occurrence.json @@ -45,6 +45,7 @@ }, "type": "ContractCall" }, + "nonce": 4064, "position": { "index": 1 }, @@ -123,6 +124,7 @@ }, "type": "ContractCall" }, + "nonce": 4064, "position": { "index": 1 }, @@ -200,6 +202,7 @@ }, "type": "ContractCall" }, + "nonce": 4064, "position": { "index": 1 }, @@ -278,6 +281,7 @@ }, "type": "ContractCall" }, + "nonce": 4064, "position": { "index": 1 }, @@ -355,6 +359,7 @@ }, "type": "ContractCall" }, + "nonce": 4064, "position": { "index": 1 }, @@ -434,6 +439,7 @@ }, "type": "ContractCall" }, + "nonce": 4064, "position": { "index": 1 }, @@ -512,6 +518,7 @@ }, "type": "ContractCall" }, + "nonce": 4064, "position": { "index": 1 }, @@ -590,6 +597,7 @@ }, "type": "ContractCall" }, + "nonce": 4064, "position": { "index": 1 }, @@ -669,6 +677,7 @@ }, "type": "ContractCall" }, + "nonce": 4064, "position": { "index": 1 }, @@ -747,6 +756,7 @@ }, "type": "ContractCall" }, + "nonce": 4064, "position": { "index": 1 }, @@ -825,6 +835,7 @@ }, "type": "ContractCall" }, + "nonce": 4064, "position": { "index": 1 }, @@ -903,6 +914,7 @@ }, "type": "ContractCall" }, + "nonce": 4064, "position": { "index": 1 }, @@ -981,6 +993,7 @@ }, "type": "ContractCall" }, + "nonce": 4064, "position": { "index": 1 }, @@ -1064,6 +1077,7 @@ }, "type": "ContractDeployment" }, + "nonce": 33, "position": { "index": 1 }, diff --git a/components/chainhook-sdk/src/chainhooks/tests/mod.rs b/components/chainhook-sdk/src/chainhooks/tests/mod.rs index 4c823931f..cf564b067 100644 --- a/components/chainhook-sdk/src/chainhooks/tests/mod.rs +++ b/components/chainhook-sdk/src/chainhooks/tests/mod.rs @@ -3,15 +3,29 @@ use std::collections::HashMap; use self::fixtures::get_all_event_types; use super::{ - stacks::{evaluate_stacks_chainhooks_on_chain_event, StacksTriggerChainhook, handle_stacks_hook_action, StacksChainhookOccurrence}, - types::{StacksChainhookSpecification, StacksPrintEventBasedPredicate, StacksNftEventBasedPredicate, StacksFtEventBasedPredicate,StacksContractCallBasedPredicate,StacksContractDeploymentPredicate, ExactMatchingRule, FileHook, StacksTrait}, + stacks::{ + evaluate_stacks_chainhooks_on_chain_event, handle_stacks_hook_action, + StacksChainhookOccurrence, StacksTriggerChainhook, + }, + types::{ + ExactMatchingRule, FileHook, StacksChainhookSpecification, + StacksContractCallBasedPredicate, StacksContractDeploymentPredicate, + StacksFtEventBasedPredicate, StacksNftEventBasedPredicate, StacksPrintEventBasedPredicate, + StacksTrait, + }, +}; +use crate::{chainhooks::stacks::serialize_stacks_payload_to_json, utils::Context}; +use crate::{ + chainhooks::{ + tests::fixtures::{get_expected_occurrence, get_test_event_by_type}, + types::{HookAction, StacksPredicate, StacksStxEventBasedPredicate}, + }, + utils::AbstractStacksBlock, }; -use crate::{chainhooks::{types::{HookAction, StacksPredicate, StacksStxEventBasedPredicate,}, tests::fixtures::{get_expected_occurrence, get_test_event_by_type}}, utils::AbstractStacksBlock}; -use crate::utils::Context; -use chainhook_types::{StacksNetwork, StacksTransactionEvent, StacksTransactionData}; use chainhook_types::{StacksBlockUpdate, StacksChainEvent, StacksChainUpdatedWithBlocksData}; -use test_case::test_case; +use chainhook_types::{StacksNetwork, StacksTransactionData, StacksTransactionEvent}; use serde_json::Value as JsonValue; +use test_case::test_case; pub mod fixtures; @@ -88,7 +102,6 @@ pub mod fixtures; 0; "FtEvent predicates don't match if missing event" )] - // NftEvent predicate tests #[test_case( vec![vec![get_test_event_by_type("nft_mint")]], @@ -211,11 +224,10 @@ pub mod fixtures; 0; "StxEvent predicates don't match if missing event" )] - // PrintEvent predicate tests #[test_case( vec![vec![get_test_event_by_type("smart_contract_print_event")]], - StacksPredicate::PrintEvent(StacksPrintEventBasedPredicate { + StacksPredicate::PrintEvent(StacksPrintEventBasedPredicate::Contains { contract_identifier: "ST3AXH4EBHD63FCFPTZ8GR29TNTVWDYPGY0KDY5E5.loan-data".to_string(), contains: "some-value".to_string() }), @@ -224,7 +236,7 @@ pub mod fixtures; )] #[test_case( vec![vec![get_test_event_by_type("smart_contract_not_print_event")]], - StacksPredicate::PrintEvent(StacksPrintEventBasedPredicate { + StacksPredicate::PrintEvent(StacksPrintEventBasedPredicate::Contains { contract_identifier: "ST3AXH4EBHD63FCFPTZ8GR29TNTVWDYPGY0KDY5E5.loan-data".to_string(), contains: "some-value".to_string(), }), @@ -233,57 +245,92 @@ pub mod fixtures; )] #[test_case( vec![vec![get_test_event_by_type("smart_contract_print_event")]], - StacksPredicate::PrintEvent(StacksPrintEventBasedPredicate { + StacksPredicate::PrintEvent(StacksPrintEventBasedPredicate::Contains { contract_identifier: "wront-id".to_string(), contains: "some-value".to_string(), - }), + }), 0; "PrintEvent predicate rejects non matching contract_identifier" )] #[test_case( vec![vec![get_test_event_by_type("smart_contract_print_event")]], - StacksPredicate::PrintEvent(StacksPrintEventBasedPredicate { - contract_identifier: + StacksPredicate::PrintEvent(StacksPrintEventBasedPredicate::Contains { + contract_identifier: "ST3AXH4EBHD63FCFPTZ8GR29TNTVWDYPGY0KDY5E5.loan-data".to_string(), contains: "wrong-value".to_string(), - }), + }), 0; "PrintEvent predicate rejects non matching contains value" )] #[test_case( vec![vec![get_test_event_by_type("smart_contract_print_event")]], - StacksPredicate::PrintEvent(StacksPrintEventBasedPredicate { + StacksPredicate::PrintEvent(StacksPrintEventBasedPredicate::Contains { contract_identifier: "*".to_string(), contains: "some-value".to_string(), - }), + }), 1; "PrintEvent predicate contract_identifier wildcard checks all print events for match" )] #[test_case( vec![vec![get_test_event_by_type("smart_contract_print_event")]], - StacksPredicate::PrintEvent(StacksPrintEventBasedPredicate { + StacksPredicate::PrintEvent(StacksPrintEventBasedPredicate::Contains { contract_identifier: "ST3AXH4EBHD63FCFPTZ8GR29TNTVWDYPGY0KDY5E5.loan-data".to_string(), contains: "*".to_string(), - }), + }), 1; "PrintEvent predicate contains wildcard matches all values for matching events" )] #[test_case( vec![vec![get_test_event_by_type("smart_contract_print_event")], vec![get_test_event_by_type("smart_contract_print_event_empty")]], - StacksPredicate::PrintEvent(StacksPrintEventBasedPredicate { + StacksPredicate::PrintEvent(StacksPrintEventBasedPredicate::Contains { contract_identifier: "*".to_string(), contains: "*".to_string(), - }), + }), 2; "PrintEvent predicate contract_identifier wildcard and contains wildcard matches all values on all print events" )] -fn test_stacks_predicates(blocks_with_events: Vec>, predicate: StacksPredicate, expected_applies: u64) { +#[test_case( + vec![vec![get_test_event_by_type("smart_contract_print_event")]], + StacksPredicate::PrintEvent(StacksPrintEventBasedPredicate::MatchesRegex { + contract_identifier: "ST3AXH4EBHD63FCFPTZ8GR29TNTVWDYPGY0KDY5E5.loan-data".to_string(), + regex: "(some)|(value)".to_string(), + }), + 1; + "PrintEvent predicate matches contract_identifier and regex" +)] +#[test_case( + vec![vec![get_test_event_by_type("smart_contract_print_event")]], + StacksPredicate::PrintEvent(StacksPrintEventBasedPredicate::MatchesRegex { + contract_identifier: "*".to_string(), + regex: "(some)|(value)".to_string(), + }), + 1; + "PrintEvent predicate contract_identifier wildcard checks all print events for match with regex" +)] +#[test_case( + vec![vec![get_test_event_by_type("smart_contract_print_event")]], + StacksPredicate::PrintEvent(StacksPrintEventBasedPredicate::MatchesRegex { + contract_identifier: "*".to_string(), + regex: "[".to_string(), + }), + 0 + ; + "PrintEvent predicate does not match invalid regex" +)] +fn test_stacks_predicates( + blocks_with_events: Vec>, + predicate: StacksPredicate, + expected_applies: u64, +) { // Prepare block - let new_blocks = blocks_with_events.iter().map(|events| StacksBlockUpdate { - block: fixtures::build_stacks_testnet_block_from_smart_contract_event_data(events), - parent_microblocks_to_apply: vec![], - parent_microblocks_to_rollback: vec![], - }).collect(); + let new_blocks = blocks_with_events + .iter() + .map(|events| StacksBlockUpdate { + block: fixtures::build_stacks_testnet_block_from_smart_contract_event_data(events), + parent_microblocks_to_apply: vec![], + parent_microblocks_to_rollback: vec![], + }) + .collect(); let event = StacksChainEvent::ChainUpdatedWithBlocks(StacksChainUpdatedWithBlocksData { new_blocks, confirmed_blocks: vec![], @@ -301,66 +348,69 @@ fn test_stacks_predicates(blocks_with_events: Vec>, expire_after_occurrence: None, capture_all_events: None, decode_clarity_values: None, + include_contract_abi: None, predicate: predicate, action: HookAction::Noop, enabled: true, + expired_at: None, }; let predicates = vec![&chainhook]; - let (triggered, _blocks) = + let (triggered, _predicates_evaluated, _expired) = evaluate_stacks_chainhooks_on_chain_event(&event, predicates, &Context::empty()); if expected_applies == 0 { assert_eq!(triggered.len(), 0) - } - else { + } else { let actual_applies: u64 = triggered[0].apply.len().try_into().unwrap(); assert_eq!(actual_applies, expected_applies); } } - #[test_case( StacksPredicate::ContractDeployment(StacksContractDeploymentPredicate::Deployer("ST13F481SBR0R7Z6NMMH8YV2FJJYXA5JPA0AD3HP9".to_string())), 1; "Deployer predicate matches by contract deployer" )] #[test_case( - StacksPredicate::ContractDeployment(StacksContractDeploymentPredicate::Deployer("*".to_string())), + StacksPredicate::ContractDeployment(StacksContractDeploymentPredicate::Deployer("*".to_string())), 1; - "Deployer predicate wildcard deployer catches all occurences" + "Deployer predicate wildcard deployer catches all occurrences" )] #[test_case( - StacksPredicate::ContractDeployment(StacksContractDeploymentPredicate::Deployer("wrong-deployer".to_string())), + StacksPredicate::ContractDeployment(StacksContractDeploymentPredicate::Deployer("wrong-deployer".to_string())), 0; "Deployer predicate does not match non-matching deployer" )] #[test_case( - StacksPredicate::ContractDeployment(StacksContractDeploymentPredicate::ImplementTrait(StacksTrait::Sip09)), + StacksPredicate::ContractDeployment(StacksContractDeploymentPredicate::ImplementTrait(StacksTrait::Sip09)), 0; "ImplementSip predicate returns no values for Sip09" )] #[test_case( - StacksPredicate::ContractDeployment(StacksContractDeploymentPredicate::ImplementTrait(StacksTrait::Sip10)), + StacksPredicate::ContractDeployment(StacksContractDeploymentPredicate::ImplementTrait(StacksTrait::Sip10)), 0; "ImplementSip predicate returns no values for Sip10" )] #[test_case( - StacksPredicate::ContractDeployment(StacksContractDeploymentPredicate::ImplementTrait(StacksTrait::Any)), + StacksPredicate::ContractDeployment(StacksContractDeploymentPredicate::ImplementTrait(StacksTrait::Any)), 0; "ImplementSip predicate returns no values for Any" )] fn test_stacks_predicate_contract_deploy(predicate: StacksPredicate, expected_applies: u64) { // Prepare block - let new_blocks = vec![StacksBlockUpdate { - block: fixtures::build_stacks_testnet_block_with_contract_deployment(), - parent_microblocks_to_apply: vec![], - parent_microblocks_to_rollback: vec![], - }, StacksBlockUpdate { - block: fixtures::build_stacks_testnet_block_with_contract_call(), - parent_microblocks_to_apply: vec![], - parent_microblocks_to_rollback: vec![], - }]; + let new_blocks = vec![ + StacksBlockUpdate { + block: fixtures::build_stacks_testnet_block_with_contract_deployment(), + parent_microblocks_to_apply: vec![], + parent_microblocks_to_rollback: vec![], + }, + StacksBlockUpdate { + block: fixtures::build_stacks_testnet_block_with_contract_call(), + parent_microblocks_to_apply: vec![], + parent_microblocks_to_rollback: vec![], + }, + ]; let event = StacksChainEvent::ChainUpdatedWithBlocks(StacksChainUpdatedWithBlocksData { new_blocks, confirmed_blocks: vec![], @@ -378,32 +428,140 @@ fn test_stacks_predicate_contract_deploy(predicate: StacksPredicate, expected_ap expire_after_occurrence: None, capture_all_events: None, decode_clarity_values: None, + include_contract_abi: None, predicate: predicate, action: HookAction::Noop, enabled: true, + expired_at: None, }; let predicates = vec![&chainhook]; - let (triggered, _blocks) = + let (triggered, _predicates_evaluated, _predicates_expired) = evaluate_stacks_chainhooks_on_chain_event(&event, predicates, &Context::empty()); if expected_applies == 0 { assert_eq!(triggered.len(), 0) - } - else if triggered.len() == 0 { + } else if triggered.len() == 0 { panic!("expected more than one block to be applied, but no predicates were triggered") - } - else { + } else { let actual_applies: u64 = triggered[0].apply.len().try_into().unwrap(); assert_eq!(actual_applies, expected_applies); } } +#[test] +fn verify_optional_addition_of_contract_abi() { + // "mine" two blocks + // - one contract deploy (which should have a contract abi) and + // - one contract call (which should not) + let new_blocks = vec![ + StacksBlockUpdate { + block: fixtures::build_stacks_testnet_block_with_contract_deployment(), + parent_microblocks_to_apply: vec![], + parent_microblocks_to_rollback: vec![], + }, + StacksBlockUpdate { + block: fixtures::build_stacks_testnet_block_with_contract_call(), + parent_microblocks_to_apply: vec![], + parent_microblocks_to_rollback: vec![], + }, + ]; + let event: StacksChainEvent = + StacksChainEvent::ChainUpdatedWithBlocks(StacksChainUpdatedWithBlocksData { + new_blocks, + confirmed_blocks: vec![], + }); + let mut contract_deploy_chainhook = StacksChainhookSpecification { + uuid: "contract-deploy".to_string(), + owner_uuid: None, + name: "".to_string(), + network: StacksNetwork::Testnet, + version: 1, + blocks: None, + start_block: None, + end_block: None, + expire_after_occurrence: None, + capture_all_events: None, + decode_clarity_values: None, + include_contract_abi: Some(true), + predicate: StacksPredicate::ContractDeployment( + StacksContractDeploymentPredicate::Deployer("*".to_string()), + ), + action: HookAction::Noop, + enabled: true, + expired_at: None, + }; + let contract_call_chainhook = StacksChainhookSpecification { + uuid: "contract-call".to_string(), + owner_uuid: None, + name: "".to_string(), + network: StacksNetwork::Testnet, + version: 1, + blocks: None, + start_block: None, + end_block: None, + expire_after_occurrence: None, + capture_all_events: None, + decode_clarity_values: None, + include_contract_abi: Some(true), + predicate: StacksPredicate::ContractCall(StacksContractCallBasedPredicate { + contract_identifier: "ST13F481SBR0R7Z6NMMH8YV2FJJYXA5JPA0AD3HP9.subnet-v1".to_string(), + method: "commit-block".to_string(), + }), + action: HookAction::Noop, + enabled: true, + expired_at: None, + }; + + let predicates = vec![&contract_deploy_chainhook, &contract_call_chainhook]; + let (triggered, _blocks, _) = + evaluate_stacks_chainhooks_on_chain_event(&event, predicates, &Context::empty()); + assert_eq!(triggered.len(), 2); + + for t in triggered.into_iter() { + let result = serialize_stacks_payload_to_json(t, &HashMap::new(), &Context::empty()); + let result = result.as_object().unwrap(); + let uuid = result.get("chainhook").unwrap().get("uuid").unwrap(); + let apply_blocks = result.get("apply").unwrap(); + for block in apply_blocks.as_array().unwrap() { + let transactions = block.get("transactions").unwrap(); + for transaction in transactions.as_array().unwrap() { + let contract_abi = transaction.get("metadata").unwrap().get("contract_abi"); + if uuid == "contract-call" { + assert_eq!(contract_abi, None); + } else if uuid == "contract-deploy" { + assert!(contract_abi.is_some()) + } else { + unreachable!() + } + } + } + } + contract_deploy_chainhook.include_contract_abi = Some(false); + let predicates = vec![&contract_deploy_chainhook, &contract_call_chainhook]; + let (triggered, _blocks, _) = + evaluate_stacks_chainhooks_on_chain_event(&event, predicates, &Context::empty()); + assert_eq!(triggered.len(), 2); + + for t in triggered.into_iter() { + let result = serialize_stacks_payload_to_json(t, &HashMap::new(), &Context::empty()); + let result = result.as_object().unwrap(); + let apply_blocks = result.get("apply").unwrap(); + for block in apply_blocks.as_array().unwrap() { + let transactions = block.get("transactions").unwrap(); + for transaction in transactions.as_array().unwrap() { + let contract_abi = transaction.get("metadata").unwrap().get("contract_abi"); + assert_eq!(contract_abi, None); + } + } + } +} + #[test_case( StacksPredicate::ContractCall(StacksContractCallBasedPredicate { contract_identifier: "ST13F481SBR0R7Z6NMMH8YV2FJJYXA5JPA0AD3HP9.subnet-v1".to_string(), method: "commit-block".to_string() - }), + }), 1; "ContractCall predicate matches by contract identifier and method" )] @@ -411,7 +569,7 @@ fn test_stacks_predicate_contract_deploy(predicate: StacksPredicate, expected_ap StacksPredicate::ContractCall(StacksContractCallBasedPredicate { contract_identifier: "ST13F481SBR0R7Z6NMMH8YV2FJJYXA5JPA0AD3HP9.subnet-v1".to_string(), method: "wrong-method".to_string() - }), + }), 0; "ContractCall predicate does not match for wrong method" )] @@ -419,7 +577,7 @@ fn test_stacks_predicate_contract_deploy(predicate: StacksPredicate, expected_ap StacksPredicate::ContractCall(StacksContractCallBasedPredicate { contract_identifier: "wrong-id".to_string(), method: "commit-block".to_string() - }), + }), 0; "ContractCall predicate does not match for wrong contract identifier" )] @@ -435,15 +593,18 @@ fn test_stacks_predicate_contract_deploy(predicate: StacksPredicate, expected_ap )] fn test_stacks_predicate_contract_call(predicate: StacksPredicate, expected_applies: u64) { // Prepare block - let new_blocks = vec![StacksBlockUpdate { - block: fixtures::build_stacks_testnet_block_with_contract_call(), - parent_microblocks_to_apply: vec![], - parent_microblocks_to_rollback: vec![], - },StacksBlockUpdate { - block: fixtures::build_stacks_testnet_block_with_contract_deployment(), - parent_microblocks_to_apply: vec![], - parent_microblocks_to_rollback: vec![], - }]; + let new_blocks = vec![ + StacksBlockUpdate { + block: fixtures::build_stacks_testnet_block_with_contract_call(), + parent_microblocks_to_apply: vec![], + parent_microblocks_to_rollback: vec![], + }, + StacksBlockUpdate { + block: fixtures::build_stacks_testnet_block_with_contract_deployment(), + parent_microblocks_to_apply: vec![], + parent_microblocks_to_rollback: vec![], + }, + ]; let event = StacksChainEvent::ChainUpdatedWithBlocks(StacksChainUpdatedWithBlocksData { new_blocks, confirmed_blocks: vec![], @@ -461,22 +622,22 @@ fn test_stacks_predicate_contract_call(predicate: StacksPredicate, expected_appl expire_after_occurrence: None, capture_all_events: None, decode_clarity_values: None, + include_contract_abi: None, predicate: predicate, action: HookAction::Noop, enabled: true, + expired_at: None, }; let predicates = vec![&chainhook]; - let (triggered, _blocks) = + let (triggered, _predicates_evaluated, _predicates_expired) = evaluate_stacks_chainhooks_on_chain_event(&event, predicates, &Context::empty()); if expected_applies == 0 { assert_eq!(triggered.len(), 0) - } - else if triggered.len() == 0 { + } else if triggered.len() == 0 { panic!("expected more than one block to be applied, but no predicates were triggered") - } - else { + } else { let actual_applies: u64 = triggered[0].apply.len().try_into().unwrap(); assert_eq!(actual_applies, expected_applies); } @@ -496,40 +657,50 @@ fn test_stacks_hook_action_noop() { expire_after_occurrence: None, capture_all_events: None, decode_clarity_values: None, - predicate: StacksPredicate::Txid(ExactMatchingRule::Equals("0xb92c2ade84a8b85f4c72170680ae42e65438aea4db72ba4b2d6a6960f4141ce8".to_string())), + include_contract_abi: None, + predicate: StacksPredicate::Txid(ExactMatchingRule::Equals( + "0xb92c2ade84a8b85f4c72170680ae42e65438aea4db72ba4b2d6a6960f4141ce8".to_string(), + )), action: HookAction::Noop, enabled: true, + expired_at: None, }; - let apply_block_data = fixtures::build_stacks_testnet_block_with_contract_call(); - let apply_transactions = apply_block_data.transactions.iter().map(|t|t).collect(); + let apply_transactions = apply_block_data.transactions.iter().map(|t| t).collect(); let apply_blocks: &dyn AbstractStacksBlock = &apply_block_data; let rollback_block_data = fixtures::build_stacks_testnet_block_with_contract_deployment(); - let rollback_transactions = rollback_block_data.transactions.iter().map(|t|t).collect(); + let rollback_transactions = rollback_block_data.transactions.iter().map(|t| t).collect(); let rollback_blocks: &dyn AbstractStacksBlock = &apply_block_data; let trigger = StacksTriggerChainhook { chainhook: &chainhook, apply: vec![(apply_transactions, apply_blocks)], - rollback: vec![(rollback_transactions, rollback_blocks)] + rollback: vec![(rollback_transactions, rollback_blocks)], }; let proofs = HashMap::new(); - let ctx = Context { logger: None, tracer: false }; + let ctx = Context { + logger: None, + tracer: false, + }; let occurrence = handle_stacks_hook_action(trigger, &proofs, &ctx).unwrap(); if let StacksChainhookOccurrence::Data(data) = occurrence { assert_eq!(data.apply.len(), 1); - assert_eq!(data.apply[0].block_identifier.hash, apply_block_data.block_identifier.hash); + assert_eq!( + data.apply[0].block_identifier.hash, + apply_block_data.block_identifier.hash + ); assert_eq!(data.rollback.len(), 1); - assert_eq!(data.rollback[0].block_identifier.hash, rollback_block_data.block_identifier.hash); - } - else { + assert_eq!( + data.rollback[0].block_identifier.hash, + rollback_block_data.block_identifier.hash + ); + } else { panic!("wrong occurrence type"); } } - #[test] fn test_stacks_hook_action_file_append() { let chainhook = StacksChainhookSpecification { @@ -544,30 +715,49 @@ fn test_stacks_hook_action_file_append() { expire_after_occurrence: None, capture_all_events: None, decode_clarity_values: Some(true), - predicate: StacksPredicate::Txid(ExactMatchingRule::Equals("0xb92c2ade84a8b85f4c72170680ae42e65438aea4db72ba4b2d6a6960f4141ce8".to_string())), - action: HookAction::FileAppend(FileHook {path: "./".to_string()}), + include_contract_abi: None, + predicate: StacksPredicate::Txid(ExactMatchingRule::Equals( + "0xb92c2ade84a8b85f4c72170680ae42e65438aea4db72ba4b2d6a6960f4141ce8".to_string(), + )), + action: HookAction::FileAppend(FileHook { + path: "./".to_string(), + }), enabled: true, + expired_at: None, }; let events = get_all_event_types(); let mut apply_blocks = vec![]; for event in events.iter() { - apply_blocks.push(fixtures::build_stacks_testnet_block_from_smart_contract_event_data(&vec![event.to_owned()])); - + apply_blocks.push( + fixtures::build_stacks_testnet_block_from_smart_contract_event_data(&vec![ + event.to_owned() + ]), + ); } - let apply: Vec<(Vec<&StacksTransactionData>, &dyn AbstractStacksBlock)> = apply_blocks.iter().map(|b| (b.transactions.iter().map(|t| t).collect(), b as &dyn AbstractStacksBlock)).collect(); - + let apply: Vec<(Vec<&StacksTransactionData>, &dyn AbstractStacksBlock)> = apply_blocks + .iter() + .map(|b| { + ( + b.transactions.iter().map(|t| t).collect(), + b as &dyn AbstractStacksBlock, + ) + }) + .collect(); let rollback_block_data = fixtures::build_stacks_testnet_block_with_contract_deployment(); - let rollback_transactions = rollback_block_data.transactions.iter().map(|t|t).collect(); + let rollback_transactions = rollback_block_data.transactions.iter().map(|t| t).collect(); let rollback_block: &dyn AbstractStacksBlock = &rollback_block_data; let trigger = StacksTriggerChainhook { chainhook: &chainhook, apply: apply, - rollback: vec![(rollback_transactions, rollback_block)] + rollback: vec![(rollback_transactions, rollback_block)], }; let proofs = HashMap::new(); - let ctx = Context { logger: None, tracer: false }; + let ctx = Context { + logger: None, + tracer: false, + }; let occurrence = handle_stacks_hook_action(trigger, &proofs, &ctx).unwrap(); if let StacksChainhookOccurrence::File(path, bytes) = occurrence { assert_eq!(path, "./".to_string()); @@ -576,8 +766,7 @@ fn test_stacks_hook_action_file_append() { let actual = serde_json::to_string_pretty(obj).unwrap(); let expected = get_expected_occurrence(); assert_eq!(expected, actual); - } - else { - panic!("wrong occurence type"); + } else { + panic!("wrong occurrence type"); } } diff --git a/components/chainhook-sdk/src/chainhooks/types.rs b/components/chainhook-sdk/src/chainhooks/types.rs index 0a1c179a5..2e5f1e1a0 100644 --- a/components/chainhook-sdk/src/chainhooks/types.rs +++ b/components/chainhook-sdk/src/chainhooks/types.rs @@ -3,8 +3,7 @@ use std::collections::BTreeMap; use chainhook_types::{BitcoinNetwork, StacksNetwork}; use reqwest::Url; use serde::ser::{SerializeSeq, Serializer}; -use serde::{Deserialize, Serialize}; -use serde_json::Value as JsonValue; +use serde::{de, Deserialize, Deserializer, Serialize}; use schemars::JsonSchema; @@ -22,27 +21,6 @@ impl ChainhookConfig { } } - pub fn get_spec_with_uuid(&self, uuid: &str) -> Option { - let res = self - .stacks_chainhooks - .iter() - .filter(|spec| spec.uuid.eq(&uuid)) - .collect::>(); - if let Some(spec) = res.first() { - return Some(ChainhookSpecification::Stacks((*spec).clone())); - } - - let res = self - .bitcoin_chainhooks - .iter() - .filter(|spec| spec.uuid.eq(&uuid)) - .collect::>(); - if let Some(spec) = res.first() { - return Some(ChainhookSpecification::Bitcoin((*spec).clone())); - } - None - } - pub fn register_full_specification( &mut self, networks: (&BitcoinNetwork, &StacksNetwork), @@ -131,6 +109,30 @@ impl ChainhookConfig { } None } + + pub fn expire_stacks_hook(&mut self, hook_uuid: String, block_height: u64) { + let mut i = 0; + while i < self.stacks_chainhooks.len() { + if ChainhookSpecification::stacks_key(&self.stacks_chainhooks[i].uuid) == hook_uuid { + self.stacks_chainhooks[i].expired_at = Some(block_height); + break; + } else { + i += 1; + } + } + } + + pub fn expire_bitcoin_hook(&mut self, hook_uuid: String, block_height: u64) { + let mut i = 0; + while i < self.bitcoin_chainhooks.len() { + if ChainhookSpecification::bitcoin_key(&self.bitcoin_chainhooks[i].uuid) == hook_uuid { + self.bitcoin_chainhooks[i].expired_at = Some(block_height); + break; + } else { + i += 1; + } + } + } } impl Serialize for ChainhookConfig { @@ -159,13 +161,6 @@ pub enum ChainhookSpecification { } impl ChainhookSpecification { - pub fn name(&self) -> &str { - match &self { - Self::Bitcoin(data) => &data.name, - Self::Stacks(data) => &data.name, - } - } - pub fn either_stx_or_btc_key(uuid: &str) -> String { format!("predicate:{}", uuid) } @@ -178,23 +173,6 @@ impl ChainhookSpecification { format!("predicate:{}", uuid) } - pub fn into_serialized_json(&self) -> JsonValue { - match &self { - Self::Stacks(data) => json!({ - "chain": "stacks", - "uuid": data.uuid, - "network": data.network, - "predicate": data.predicate, - }), - Self::Bitcoin(data) => json!({ - "chain": "bitcoin", - "uuid": data.uuid, - "network": data.network, - "predicate": data.predicate, - }), - } - } - pub fn key(&self) -> String { match &self { Self::Bitcoin(data) => Self::bitcoin_key(&data.uuid), @@ -214,18 +192,6 @@ impl ChainhookSpecification { Self::Stacks(data) => &data.uuid, } } - - pub fn validate(&self) -> Result<(), String> { - match &self { - Self::Bitcoin(data) => { - let _ = data.action.validate()?; - } - Self::Stacks(data) => { - let _ = data.action.validate()?; - } - } - Ok(()) - } } #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] @@ -251,6 +217,7 @@ pub struct BitcoinChainhookSpecification { pub include_outputs: bool, pub include_witness: bool, pub enabled: bool, + pub expired_at: Option, } impl BitcoinChainhookSpecification { @@ -336,6 +303,7 @@ impl BitcoinChainhookFullSpecification { include_outputs: spec.include_outputs.unwrap_or(false), include_witness: spec.include_witness.unwrap_or(false), enabled: false, + expired_at: None, }) } } @@ -395,9 +363,11 @@ impl StacksChainhookFullSpecification { capture_all_events: spec.capture_all_events, decode_clarity_values: spec.decode_clarity_values, expire_after_occurrence: spec.expire_after_occurrence, + include_contract_abi: spec.include_contract_abi, predicate: spec.predicate, action: spec.action, enabled: false, + expired_at: None, }) } } @@ -416,6 +386,8 @@ pub struct StacksChainhookNetworkSpecification { pub capture_all_events: Option, #[serde(skip_serializing_if = "Option::is_none")] pub decode_clarity_values: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub include_contract_abi: Option, #[serde(rename = "if_this")] pub predicate: StacksPredicate, #[serde(rename = "then_that")] @@ -539,6 +511,7 @@ pub enum OutputPredicate { P2sh(ExactMatchingRule), P2wpkh(ExactMatchingRule), P2wsh(ExactMatchingRule), + Descriptor(DescriptorMatchingRule), } #[derive(Clone, Debug, Serialize, Deserialize, PartialEq, JsonSchema)] @@ -689,6 +662,30 @@ pub enum ExactMatchingRule { Equals(String), } +#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, JsonSchema)] +#[serde(rename_all = "snake_case")] +pub struct DescriptorMatchingRule { + // expression defines the bitcoin descriptor. + pub expression: String, + #[serde(default, deserialize_with = "deserialize_descriptor_range")] + pub range: Option<[u32; 2]>, +} + +// deserialize_descriptor_range makes sure that the range value is valid. +fn deserialize_descriptor_range<'de, D>(deserializer: D) -> Result, D::Error> +where + D: Deserializer<'de>, +{ + let range: [u32; 2] = Deserialize::deserialize(deserializer)?; + if !(range[0] < range[1]) { + Err(de::Error::custom( + "First element of 'range' must be lower than the second element", + )) + } else { + Ok(Some(range)) + } +} + #[derive(Clone, Debug, Serialize, Deserialize, PartialEq, JsonSchema)] #[serde(rename_all = "snake_case")] pub enum BlockIdentifierHashRule { @@ -716,10 +713,12 @@ pub struct StacksChainhookSpecification { pub capture_all_events: Option, #[serde(skip_serializing_if = "Option::is_none")] pub decode_clarity_values: Option, + pub include_contract_abi: Option, #[serde(rename = "predicate")] pub predicate: StacksPredicate, pub action: HookAction, pub enabled: bool, + pub expired_at: Option, } impl StacksChainhookSpecification { @@ -776,9 +775,17 @@ pub enum StacksTrait { #[derive(Clone, Debug, Serialize, Deserialize, PartialEq, JsonSchema)] #[serde(rename_all = "snake_case")] -pub struct StacksPrintEventBasedPredicate { - pub contract_identifier: String, - pub contains: String, +#[serde(untagged)] +pub enum StacksPrintEventBasedPredicate { + Contains { + contract_identifier: String, + contains: String, + }, + MatchesRegex { + contract_identifier: String, + #[serde(rename = "matches_regex")] + regex: String, + }, } #[derive(Clone, Debug, Serialize, Deserialize, PartialEq, JsonSchema)] diff --git a/components/chainhook-sdk/src/indexer/bitcoin/blocks_pool.rs b/components/chainhook-sdk/src/indexer/bitcoin/blocks_pool.rs deleted file mode 100644 index 2c0c8e130..000000000 --- a/components/chainhook-sdk/src/indexer/bitcoin/blocks_pool.rs +++ /dev/null @@ -1,366 +0,0 @@ -use crate::{ - indexer::{ChainSegment, ChainSegmentIncompatibility}, - utils::Context, -}; -use chainhook_types::{ - BitcoinBlockData, BitcoinChainEvent, BitcoinChainUpdatedWithBlocksData, - BitcoinChainUpdatedWithReorgData, BlockIdentifier, -}; -use hiro_system_kit::slog; -use std::collections::{BTreeMap, BTreeSet, HashMap, HashSet}; - -pub struct BitcoinBlockPool { - canonical_fork_id: usize, - orphans: BTreeSet, - block_store: HashMap, - forks: BTreeMap, -} - -impl BitcoinBlockPool { - pub fn new() -> BitcoinBlockPool { - let mut forks = BTreeMap::new(); - forks.insert(0, ChainSegment::new()); - BitcoinBlockPool { - canonical_fork_id: 0, - block_store: HashMap::new(), - orphans: BTreeSet::new(), - forks, - } - } - - pub fn process_block( - &mut self, - block: BitcoinBlockData, - ctx: &Context, - ) -> Result, String> { - ctx.try_log(|logger| { - slog::info!( - logger, - "Start processing Bitcoin {}", - block.block_identifier - ) - }); - - // Keep block data in memory - let existing_entry = self - .block_store - .insert(block.block_identifier.clone(), block.clone()); - if existing_entry.is_some() { - ctx.try_log(|logger| { - slog::warn!( - logger, - "Bitcoin {} has already been processed", - block.block_identifier - ) - }); - return Ok(None); - } - - for (i, fork) in self.forks.iter() { - ctx.try_log(|logger| slog::info!(logger, "Active fork {}: {}", i, fork)); - } - // Retrieve previous canonical fork - let previous_canonical_fork_id = self.canonical_fork_id; - let previous_canonical_fork = match self.forks.get(&previous_canonical_fork_id) { - Some(fork) => fork.clone(), - None => { - ctx.try_log(|logger| { - slog::error!(logger, "unable to retrieve previous bitcoin fork") - }); - return Ok(None); - } - }; - - let mut fork_updated = None; - for (_, fork) in self.forks.iter_mut() { - let (block_appended, mut new_fork) = fork.try_append_block(&block, ctx); - if block_appended { - if let Some(new_fork) = new_fork.take() { - let fork_id = self.forks.len(); - self.forks.insert(fork_id, new_fork); - fork_updated = self.forks.get_mut(&fork_id); - } else { - fork_updated = Some(fork); - } - // A block can only be added to one segment - break; - } - } - - let fork_updated = match fork_updated.take() { - Some(fork) => { - ctx.try_log(|logger| { - slog::debug!( - logger, - "Bitcoin {} successfully appended to {}", - block.block_identifier, - fork - ) - }); - fork - } - None => { - ctx.try_log(|logger| { - slog::debug!( - logger, - "Unable to process Bitcoin {} - inboxed for later", - block.block_identifier - ) - }); - self.orphans.insert(block.block_identifier.clone()); - return Ok(None); - } - }; - - // Process former orphans - let orphans = self.orphans.clone(); - let mut orphans_to_untrack = HashSet::new(); - - let mut at_least_one_orphan_appended = true; - // As long as we are successful appending blocks that were previously unprocessable, - // Keep looping on this backlog - let mut applied = HashSet::new(); - let mut forks_created = vec![]; - while at_least_one_orphan_appended { - at_least_one_orphan_appended = false; - for orphan_block_identifier in orphans.iter() { - if applied.contains(orphan_block_identifier) { - continue; - } - let block = match self.block_store.get(orphan_block_identifier) { - Some(block) => block.clone(), - None => continue, - }; - - let (orphan_appended, mut new_fork) = fork_updated.try_append_block(&block, ctx); - if orphan_appended { - applied.insert(orphan_block_identifier); - orphans_to_untrack.insert(orphan_block_identifier); - if let Some(new_fork) = new_fork.take() { - forks_created.push(new_fork); - } - } - at_least_one_orphan_appended = at_least_one_orphan_appended || orphan_appended; - } - } - - // Update orphans - for orphan in orphans_to_untrack.into_iter() { - ctx.try_log(|logger| slog::info!(logger, "Dequeuing orphan {}", orphan)); - self.orphans.remove(orphan); - } - - // Select canonical fork - let mut canonical_fork_id = 0; - let mut highest_height = 0; - for (fork_id, fork) in self.forks.iter() { - ctx.try_log(|logger| slog::info!(logger, "Active fork: {} - {}", fork_id, fork)); - if fork.get_length() >= highest_height { - highest_height = fork.get_length(); - canonical_fork_id = *fork_id; - } - } - ctx.try_log(|logger| { - slog::info!( - logger, - "Active fork selected as canonical: {}", - canonical_fork_id - ) - }); - - self.canonical_fork_id = canonical_fork_id; - // Generate chain event from the previous and current canonical forks - let canonical_fork = self.forks.get(&canonical_fork_id).unwrap().clone(); - if canonical_fork.eq(&previous_canonical_fork) { - ctx.try_log(|logger| slog::info!(logger, "Canonical fork unchanged")); - return Ok(None); - } - - let res = self.generate_block_chain_event(&canonical_fork, &previous_canonical_fork, ctx); - let mut chain_event = match res { - Ok(chain_event) => chain_event, - Err(ChainSegmentIncompatibility::ParentBlockUnknown) => { - self.canonical_fork_id = previous_canonical_fork_id; - return Ok(None); - } - _ => return Ok(None), - }; - - self.collect_and_prune_confirmed_blocks(&mut chain_event, ctx); - - Ok(Some(chain_event)) - } - - pub fn collect_and_prune_confirmed_blocks( - &mut self, - chain_event: &mut BitcoinChainEvent, - ctx: &Context, - ) { - let (tip, confirmed_blocks) = match chain_event { - BitcoinChainEvent::ChainUpdatedWithBlocks(ref mut event) => { - match event.new_blocks.last() { - Some(tip) => (tip.block_identifier.clone(), &mut event.confirmed_blocks), - None => return, - } - } - BitcoinChainEvent::ChainUpdatedWithReorg(ref mut event) => { - match event.blocks_to_apply.last() { - Some(tip) => (tip.block_identifier.clone(), &mut event.confirmed_blocks), - None => return, - } - } - }; - - let mut forks_to_prune = vec![]; - let mut ancestor_identifier = &tip; - - // Retrieve the whole canonical segment present in memory, ascending order - // [1] ... [6] [7] - let canonical_segment = { - let mut segment = vec![]; - while let Some(ancestor) = self.block_store.get(&ancestor_identifier) { - ancestor_identifier = &ancestor.parent_block_identifier; - segment.push(ancestor.block_identifier.clone()); - } - segment - }; - if canonical_segment.len() < 7 { - return; - } - // Any block beyond 6th ancestor is considered as confirmed and can be pruned - let cut_off = &canonical_segment[5]; - - // Prune forks using the confirmed block - let mut blocks_to_prune = vec![]; - for (fork_id, fork) in self.forks.iter_mut() { - let mut res = fork.prune_confirmed_blocks(&cut_off); - blocks_to_prune.append(&mut res); - if fork.block_ids.is_empty() { - forks_to_prune.push(*fork_id); - } - } - - // Prune orphans using the confirmed block - let iter = self.orphans.clone().into_iter(); - for orphan in iter { - if orphan.index < cut_off.index { - self.orphans.remove(&orphan); - blocks_to_prune.push(orphan); - } - } - - for confirmed_block in canonical_segment[6..].into_iter() { - let block = match self.block_store.remove(confirmed_block) { - None => { - ctx.try_log(|logger| { - slog::error!(logger, "unable to retrieve data for {}", confirmed_block) - }); - return; - } - Some(block) => block, - }; - confirmed_blocks.push(block); - } - - // Prune data - for block_to_prune in blocks_to_prune { - self.block_store.remove(&block_to_prune); - } - for fork_id in forks_to_prune { - self.forks.remove(&fork_id); - } - confirmed_blocks.reverse(); - } - - pub fn generate_block_chain_event( - &mut self, - canonical_segment: &ChainSegment, - other_segment: &ChainSegment, - ctx: &Context, - ) -> Result { - if other_segment.is_empty() { - let mut new_blocks = vec![]; - for i in 0..canonical_segment.block_ids.len() { - let block_identifier = - &canonical_segment.block_ids[canonical_segment.block_ids.len() - 1 - i]; - let block = match self.block_store.get(block_identifier) { - Some(block) => block.clone(), - None => { - ctx.try_log(|logger| { - slog::error!( - logger, - "unable to retrive Bitcoin {} from block store", - block_identifier - ) - }); - return Err(ChainSegmentIncompatibility::Unknown); - } - }; - new_blocks.push(block) - } - return Ok(BitcoinChainEvent::ChainUpdatedWithBlocks( - BitcoinChainUpdatedWithBlocksData { - new_blocks, - confirmed_blocks: vec![], - }, - )); - } - if let Ok(divergence) = canonical_segment.try_identify_divergence(other_segment, false, ctx) - { - if divergence.block_ids_to_rollback.is_empty() { - let mut new_blocks = vec![]; - for i in 0..divergence.block_ids_to_apply.len() { - let block_identifier = &divergence.block_ids_to_apply[i]; - let block = match self.block_store.get(block_identifier) { - Some(block) => block.clone(), - None => panic!("unable to retrive block from block store"), - }; - new_blocks.push(block) - } - return Ok(BitcoinChainEvent::ChainUpdatedWithBlocks( - BitcoinChainUpdatedWithBlocksData { - new_blocks, - confirmed_blocks: vec![], - }, - )); - } else { - return Ok(BitcoinChainEvent::ChainUpdatedWithReorg( - BitcoinChainUpdatedWithReorgData { - blocks_to_rollback: divergence - .block_ids_to_rollback - .iter() - .map(|block_id| { - let block = match self.block_store.get(block_id) { - Some(block) => block.clone(), - None => panic!("unable to retrive block from block store"), - }; - block - }) - .collect::>(), - blocks_to_apply: divergence - .block_ids_to_apply - .iter() - .map(|block_id| { - let block = match self.block_store.get(block_id) { - Some(block) => block.clone(), - None => panic!("unable to retrive block from block store"), - }; - block - }) - .collect::>(), - confirmed_blocks: vec![], - }, - )); - } - } - ctx.try_log(|logger| { - slog::debug!( - logger, - "Unable to infer chain event out of {} and {}", - canonical_segment, - other_segment - ) - }); - Err(ChainSegmentIncompatibility::ParentBlockUnknown) - } -} diff --git a/components/chainhook-sdk/src/indexer/bitcoin/mod.rs b/components/chainhook-sdk/src/indexer/bitcoin/mod.rs index a6014f4a8..a90c792dd 100644 --- a/components/chainhook-sdk/src/indexer/bitcoin/mod.rs +++ b/components/chainhook-sdk/src/indexer/bitcoin/mod.rs @@ -1,5 +1,3 @@ -mod blocks_pool; - use std::time::Duration; use crate::chainhooks::types::{ @@ -11,7 +9,6 @@ use crate::utils::Context; use bitcoincore_rpc::bitcoin::hashes::Hash; use bitcoincore_rpc::bitcoin::{self, Address, Amount, BlockHash}; use bitcoincore_rpc_json::GetRawTransactionResultVoutScriptPubKey; -pub use blocks_pool::BitcoinBlockPool; use chainhook_types::bitcoin::{OutPoint, TxIn, TxOut}; use chainhook_types::{ BitcoinBlockData, BitcoinBlockMetadata, BitcoinNetwork, BitcoinTransactionData, @@ -20,10 +17,11 @@ use chainhook_types::{ StacksBlockCommitmentData, TransactionIdentifier, TransferSTXData, }; use hiro_system_kit::slog; -use rand::{thread_rng, Rng}; use reqwest::Client as HttpClient; use serde::Deserialize; +use super::fork_scratch_pad::CONFIRMED_SEGMENT_MINIMUM_LENGTH; + #[derive(Clone, PartialEq, Debug, Deserialize, Serialize)] #[serde(rename_all = "camelCase")] pub struct BitcoinBlockFullBreakdown { @@ -33,6 +31,7 @@ pub struct BitcoinBlockFullBreakdown { pub time: usize, pub nonce: u32, pub previousblockhash: Option, + pub confirmations: i32, } impl BitcoinBlockFullBreakdown { @@ -117,7 +116,7 @@ pub struct BitcoinTransactionOutputFullBreakdown { pub script_pub_key: GetRawTransactionResultVoutScriptPubKey, } -#[derive(Deserialize)] +#[derive(Deserialize, Serialize)] pub struct NewBitcoinBlock { pub burn_block_hash: String, pub burn_block_height: u64, @@ -127,7 +126,7 @@ pub struct NewBitcoinBlock { } #[allow(dead_code)] -#[derive(Deserialize)] +#[derive(Deserialize, Serialize)] pub struct RewardParticipant { recipient: String, amt: u64, @@ -230,40 +229,7 @@ pub async fn retrieve_block_hash( Ok(block_hash) } -pub async fn try_fetch_block_bytes_with_retry( - http_client: HttpClient, - block_height: u64, - bitcoin_config: BitcoinConfig, - ctx: Context, -) -> Result, String> { - let block_hash = - retrieve_block_hash_with_retry(&http_client, &block_height, &bitcoin_config, &ctx) - .await - .unwrap(); - - let mut errors_count = 0; - - let response = loop { - match fetch_block(&http_client, &block_hash, &bitcoin_config, &ctx).await { - Ok(result) => break result, - Err(_e) => { - errors_count += 1; - if errors_count > 1 { - ctx.try_log(|logger| { - slog::warn!( - logger, - "unable to fetch block #{block_hash}: will retry in a few seconds (attempt #{errors_count}).", - ) - }); - } - std::thread::sleep(std::time::Duration::from_millis(1500)); - continue; - } - } - }; - Ok(response) -} - +// not used internally by chainhook; exported for ordhook pub async fn try_download_block_bytes_with_retry( http_client: HttpClient, block_height: u64, @@ -298,56 +264,6 @@ pub async fn try_download_block_bytes_with_retry( Ok(response) } -pub async fn download_block_with_retry( - http_client: &HttpClient, - block_hash: &str, - bitcoin_config: &BitcoinConfig, - ctx: &Context, -) -> Result { - let mut errors_count = 0; - let mut backoff: f64 = 1.0; - let mut rng = thread_rng(); - - let block = loop { - let response = { - match download_block(http_client, block_hash, bitcoin_config, ctx).await { - Ok(result) => result, - Err(_e) => { - errors_count += 1; - backoff = 2.0 * backoff + (backoff * rng.gen_range(0.0..1.0)); - let duration = std::time::Duration::from_millis((backoff * 1_000.0) as u64); - if errors_count > 1 { - ctx.try_log(|logger| { - slog::warn!( - logger, - "unable to fetch block #{block_hash}: will retry in a few seconds (attempt #{errors_count}).", - ) - }); - } - std::thread::sleep(duration); - continue; - } - } - }; - - match parse_downloaded_block(response) { - Ok(result) => break result, - Err(e) => { - errors_count += 1; - ctx.try_log(|logger| { - slog::warn!( - logger, - "unable to parse fetched block #{block_hash}: will retry in a few seconds (attempt #{errors_count}) ({e})", - ) - }); - std::thread::sleep(std::time::Duration::from_millis(500)); - continue; - } - }; - }; - Ok(block) -} - pub async fn download_block( http_client: &HttpClient, block_hash: &str, @@ -386,35 +302,6 @@ pub fn parse_downloaded_block( Ok(block) } -pub async fn fetch_block( - http_client: &HttpClient, - block_hash: &str, - bitcoin_config: &BitcoinConfig, - _ctx: &Context, -) -> Result, String> { - let block = http_client - .get(format!( - "{}/rest/block/{}.json", - bitcoin_config.rpc_url, block_hash - )) - .header("Content-Type", "application/json") - .header("Host", &bitcoin_config.rpc_url[7..]) - .send() - .await - .map_err(|e| format!("unable to send request ({})", e))? - .bytes() - .await - .map_err(|e| format!("unable to get bytes ({})", e))? - .to_vec(); - Ok(block) -} - -pub fn parse_fetched_block(downloaded_block: Vec) -> Result { - let block = serde_json::from_slice::(&downloaded_block[..]) - .map_err(|e: serde_json::Error| format!("unable to parse block ({})", e))?; - Ok(block) -} - pub async fn download_and_parse_block( http_client: &HttpClient, block_hash: &str, @@ -551,7 +438,10 @@ pub fn standardize_bitcoin_block( .previousblockhash .unwrap_or(BlockHash::all_zeros().to_string()) ), - index: block_height - 1, + index: match block_height { + 0 => 0, + _ => block_height - 1, + }, }, timestamp: block.time as u32, metadata: BitcoinBlockMetadata { @@ -575,7 +465,7 @@ fn try_parse_stacks_operation( // Safely parsing the first 2 bytes (following OP_RETURN + PUSH_DATA) let op_return_output = &outputs[0].script_pub_key.hex; - if op_return_output.len() < 7 { + if op_return_output.len() < CONFIRMED_SEGMENT_MINIMUM_LENGTH as usize { return None; } if op_return_output[3] != expected_magic_bytes[0] diff --git a/components/chainhook-sdk/src/indexer/fork_scratch_pad.rs b/components/chainhook-sdk/src/indexer/fork_scratch_pad.rs index 3f47941c5..251913a06 100644 --- a/components/chainhook-sdk/src/indexer/fork_scratch_pad.rs +++ b/components/chainhook-sdk/src/indexer/fork_scratch_pad.rs @@ -15,7 +15,7 @@ pub struct ForkScratchPad { forks: BTreeMap, headers_store: BTreeMap, } - +pub const CONFIRMED_SEGMENT_MINIMUM_LENGTH: i32 = 7; impl ForkScratchPad { pub fn new() -> ForkScratchPad { let mut forks = BTreeMap::new(); @@ -29,6 +29,15 @@ impl ForkScratchPad { } } + pub fn can_process_header(&self, header: &BlockHeader) -> bool { + if self.headers_store.is_empty() { + return true; + } + + self.headers_store + .contains_key(&header.parent_block_identifier) + } + pub fn process_header( &mut self, header: BlockHeader, @@ -219,7 +228,7 @@ impl ForkScratchPad { } segment }; - if canonical_segment.len() < 7 { + if canonical_segment.len() < CONFIRMED_SEGMENT_MINIMUM_LENGTH as usize { return; } // Any block beyond 6th ancestor is considered as confirmed and can be pruned diff --git a/components/chainhook-sdk/src/indexer/mod.rs b/components/chainhook-sdk/src/indexer/mod.rs index 899992972..fbf580b20 100644 --- a/components/chainhook-sdk/src/indexer/mod.rs +++ b/components/chainhook-sdk/src/indexer/mod.rs @@ -49,7 +49,7 @@ impl BitcoinChainContext { } } -#[derive(Debug, Clone)] +#[derive(Debug, Clone, PartialEq)] pub struct IndexerConfig { pub bitcoin_network: BitcoinNetwork, pub stacks_network: StacksNetwork, diff --git a/components/chainhook-sdk/src/indexer/stacks/blocks_pool.rs b/components/chainhook-sdk/src/indexer/stacks/blocks_pool.rs index 33c9c91ea..4e52c7bfb 100644 --- a/components/chainhook-sdk/src/indexer/stacks/blocks_pool.rs +++ b/components/chainhook-sdk/src/indexer/stacks/blocks_pool.rs @@ -1,5 +1,8 @@ use crate::{ - indexer::{ChainSegment, ChainSegmentIncompatibility}, + indexer::{ + fork_scratch_pad::CONFIRMED_SEGMENT_MINIMUM_LENGTH, ChainSegment, + ChainSegmentIncompatibility, + }, utils::Context, }; use chainhook_types::{ @@ -264,7 +267,7 @@ impl StacksBlockPool { segment }; - if canonical_segment.len() < 7 { + if canonical_segment.len() < CONFIRMED_SEGMENT_MINIMUM_LENGTH as usize { ctx.try_log(|logger| slog::info!(logger, "No block to confirm")); return; } diff --git a/components/chainhook-sdk/src/indexer/stacks/mod.rs b/components/chainhook-sdk/src/indexer/stacks/mod.rs index 12460a6ff..60a65a9ea 100644 --- a/components/chainhook-sdk/src/indexer/stacks/mod.rs +++ b/components/chainhook-sdk/src/indexer/stacks/mod.rs @@ -18,7 +18,7 @@ use std::convert::TryInto; use std::io::Cursor; use std::str; -#[derive(Deserialize)] +#[derive(Deserialize, Serialize)] pub struct NewBlock { pub block_height: u64, pub block_hash: String, @@ -44,7 +44,7 @@ pub struct NewBlockHeader { pub parent_index_block_hash: Option, } -#[derive(Deserialize)] +#[derive(Deserialize, Serialize)] pub struct MaturedMinerReward { pub from_index_consensus_hash: String, pub from_stacks_block_hash: String, @@ -68,7 +68,7 @@ pub struct NewMicroblockTrail { pub events: Vec, } -#[derive(Deserialize, Debug)] +#[derive(Deserialize, Serialize, Debug)] pub struct NewTransaction { pub txid: String, pub tx_index: usize, @@ -76,6 +76,7 @@ pub struct NewTransaction { pub raw_result: String, pub raw_tx: String, pub execution_cost: Option, + pub contract_abi: Option, } #[derive(Deserialize, Debug)] @@ -89,9 +90,10 @@ pub struct NewMicroblockTransaction { pub microblock_sequence: usize, pub microblock_hash: String, pub microblock_parent_hash: String, + pub contract_abi: Option, } -#[derive(Debug, Deserialize)] +#[derive(Debug, Deserialize, Serialize)] pub struct NewEvent { pub txid: String, pub committed: bool, @@ -251,8 +253,10 @@ pub fn standardize_stacks_block( let pox_cycle_length: u64 = (chain_ctx.pox_info.prepare_phase_block_length + chain_ctx.pox_info.reward_phase_block_length) .into(); - let current_len = - block.burn_block_height - (1 + chain_ctx.pox_info.first_burnchain_block_height); + let current_len = u64::saturating_sub( + block.burn_block_height, + 1 + chain_ctx.pox_info.first_burnchain_block_height, + ); let pox_cycle_id: u32 = (current_len / pox_cycle_length).try_into().unwrap_or(0); let mut events: HashMap<&String, Vec<&NewEvent>> = HashMap::new(); for event in block.events.iter() { @@ -311,6 +315,7 @@ pub fn standardize_stacks_block( description, position: StacksTransactionPosition::anchor_block(tx.tx_index), proof: None, + contract_abi: tx.contract_abi.clone(), }, }); } @@ -336,7 +341,10 @@ pub fn standardize_stacks_block( }, parent_block_identifier: BlockIdentifier { hash: block.parent_index_block_hash.clone(), - index: block.block_height - 1, + index: match block.block_height { + 0 => 0, + _ => block.block_height - 1, + }, }, timestamp: block.parent_burn_block_timestamp, metadata: StacksBlockMetadata { @@ -449,6 +457,7 @@ pub fn standardize_stacks_microblock_trail( tx.tx_index, ), proof: None, + contract_abi: tx.contract_abi.clone(), }, }; diff --git a/components/chainhook-sdk/src/indexer/stacks/tests.rs b/components/chainhook-sdk/src/indexer/stacks/tests.rs index 84665a1be..0793b8602 100644 --- a/components/chainhook-sdk/src/indexer/stacks/tests.rs +++ b/components/chainhook-sdk/src/indexer/stacks/tests.rs @@ -1,4 +1,17 @@ -use super::super::tests::{helpers, process_stacks_blocks_and_check_expectations}; +use chainhook_types::{ + DataMapDeleteEventData, DataMapInsertEventData, DataMapUpdateEventData, DataVarSetEventData, + FTBurnEventData, FTMintEventData, FTTransferEventData, NFTBurnEventData, NFTMintEventData, + NFTTransferEventData, STXBurnEventData, STXLockEventData, STXMintEventData, + STXTransferEventData, SmartContractEventData, StacksTransactionEvent, +}; + +use crate::indexer::tests::helpers::stacks_events::create_new_event_from_stacks_event; + +use super::{ + super::tests::{helpers, process_stacks_blocks_and_check_expectations}, + NewEvent, +}; +use test_case::test_case; #[test] fn test_stacks_vector_001() { @@ -259,3 +272,116 @@ fn test_stacks_vector_051() { fn test_stacks_vector_052() { process_stacks_blocks_and_check_expectations(helpers::stacks_shapes::get_vector_052()); } + +#[test_case(StacksTransactionEvent::STXTransferEvent(STXTransferEventData { + sender: format!(""), + recipient: format!(""), + amount: format!("1"), +}); "stx_transfer")] +#[test_case(StacksTransactionEvent::STXMintEvent(STXMintEventData { + recipient: format!(""), + amount: format!("1"), +}); "stx_mint")] +#[test_case(StacksTransactionEvent::STXBurnEvent(STXBurnEventData { + sender: format!(""), + amount: format!("1"), +}); "stx_burn")] +#[test_case(StacksTransactionEvent::STXLockEvent(STXLockEventData { + locked_amount: format!("1"), + unlock_height: format!(""), + locked_address: format!(""), +}); "stx_lock")] +#[test_case(StacksTransactionEvent::NFTTransferEvent(NFTTransferEventData { + asset_class_identifier: format!(""), + hex_asset_identifier: format!(""), + sender: format!(""), + recipient: format!(""), +}); "nft_transfer")] +#[test_case(StacksTransactionEvent::NFTMintEvent(NFTMintEventData { + asset_class_identifier: format!(""), + hex_asset_identifier: format!(""), + recipient: format!(""), +}); "nft_mint")] +#[test_case(StacksTransactionEvent::NFTBurnEvent(NFTBurnEventData { + asset_class_identifier: format!(""), + hex_asset_identifier: format!(""), + sender: format!(""), +}); "nft_burn")] +#[test_case(StacksTransactionEvent::FTTransferEvent(FTTransferEventData { + asset_class_identifier: format!(""), + sender: format!(""), + recipient: format!(""), + amount: format!("1"), +}); "ft_transfer")] +#[test_case(StacksTransactionEvent::FTMintEvent(FTMintEventData { + asset_class_identifier: format!(""), + recipient: format!(""), + amount: format!("1"), +}); "ft_mint")] +#[test_case(StacksTransactionEvent::FTBurnEvent(FTBurnEventData { + asset_class_identifier: format!(""), + sender: format!(""), + amount: format!("1"), +}); "ft_burn")] +#[test_case(StacksTransactionEvent::DataVarSetEvent(DataVarSetEventData { + contract_identifier: format!(""), + var: format!(""), + hex_new_value: format!(""), +}); "data_var_set")] +#[test_case(StacksTransactionEvent::DataMapInsertEvent(DataMapInsertEventData { + contract_identifier: format!(""), + hex_inserted_key: format!(""), + hex_inserted_value: format!(""), + map: format!("") +}); "data_map_insert")] +#[test_case(StacksTransactionEvent::DataMapUpdateEvent(DataMapUpdateEventData { + contract_identifier: format!(""), + hex_new_value: format!(""), + hex_key: format!(""), + map: format!("") +}); "data_map_update")] +#[test_case(StacksTransactionEvent::DataMapDeleteEvent(DataMapDeleteEventData { + contract_identifier: format!(""), + hex_deleted_key: format!(""), + map: format!("") +}); "data_map_delete")] +#[test_case(StacksTransactionEvent::SmartContractEvent(SmartContractEventData { + contract_identifier: format!(""), + topic: format!("print"), + hex_value: format!(""), +}); "smart_contract_print_event")] +fn new_events_can_be_converted_into_chainhook_event(original_event: StacksTransactionEvent) { + let new_event = create_new_event_from_stacks_event(original_event.clone()); + let event = new_event.into_chainhook_event().unwrap(); + let original_event_serialized = serde_json::to_string(&original_event).unwrap(); + let event_serialized = serde_json::to_string(&event).unwrap(); + assert_eq!(original_event_serialized, event_serialized); +} + +#[test] +fn into_chainhook_event_rejects_invalid_missing_event() { + let new_event = NewEvent { + txid: format!(""), + committed: false, + event_index: 0, + event_type: format!(""), + stx_transfer_event: None, + stx_mint_event: None, + stx_burn_event: None, + stx_lock_event: None, + nft_transfer_event: None, + nft_mint_event: None, + nft_burn_event: None, + ft_transfer_event: None, + ft_mint_event: None, + ft_burn_event: None, + data_var_set_event: None, + data_map_insert_event: None, + data_map_update_event: None, + data_map_delete_event: None, + contract_event: None, + }; + new_event + .into_chainhook_event() + .expect_err("expected error on missing event"); +} diff --git a/components/chainhook-sdk/src/indexer/tests/helpers/bitcoin_blocks.rs b/components/chainhook-sdk/src/indexer/tests/helpers/bitcoin_blocks.rs index 37e31276c..268ce421d 100644 --- a/components/chainhook-sdk/src/indexer/tests/helpers/bitcoin_blocks.rs +++ b/components/chainhook-sdk/src/indexer/tests/helpers/bitcoin_blocks.rs @@ -11,13 +11,19 @@ pub fn generate_test_bitcoin_block( let mut hash = vec![ fork_id, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ]; + + let parent_height = match block_height { + 0 => 0, + _ => block_height - 1, + }; + let parent_block_identifier = match parent { Some(parent) => { - assert_eq!(parent.block_identifier.index, block_height - 1); + assert_eq!(parent.block_identifier.index, parent_height); parent.block_identifier.clone() } _ => { - let mut parent_hash = if (block_height - 1) == 1 { + let mut parent_hash = if parent_height == 1 { vec![ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ] @@ -26,9 +32,10 @@ pub fn generate_test_bitcoin_block( fork_id, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ] }; - parent_hash.append(&mut (block_height - 1).to_be_bytes().to_vec()); + + parent_hash.append(&mut parent_height.to_be_bytes().to_vec()); BlockIdentifier { - index: block_height - 1, + index: parent_height, hash: format!("0x{}", hex::encode(&parent_hash[..])), } } diff --git a/components/chainhook-sdk/src/indexer/tests/helpers/mod.rs b/components/chainhook-sdk/src/indexer/tests/helpers/mod.rs index bb49fc4ed..f6e8ce4d4 100644 --- a/components/chainhook-sdk/src/indexer/tests/helpers/mod.rs +++ b/components/chainhook-sdk/src/indexer/tests/helpers/mod.rs @@ -7,6 +7,7 @@ pub mod bitcoin_shapes; pub mod microblocks; #[allow(non_snake_case, unreachable_code)] pub mod stacks_blocks; +pub mod stacks_events; pub mod stacks_shapes; pub mod transactions; diff --git a/components/chainhook-sdk/src/indexer/tests/helpers/stacks_blocks.rs b/components/chainhook-sdk/src/indexer/tests/helpers/stacks_blocks.rs index 29b0f7d88..39d39dd72 100644 --- a/components/chainhook-sdk/src/indexer/tests/helpers/stacks_blocks.rs +++ b/components/chainhook-sdk/src/indexer/tests/helpers/stacks_blocks.rs @@ -12,15 +12,21 @@ pub fn generate_test_stacks_block( let mut hash = vec![ fork_id, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ]; + + let parent_height = match block_height { + 0 => 0, + _ => block_height - 1, + }; + let (parent_block_identifier, confirm_microblock_identifier) = match parent { Some(BlockEvent::Block(parent)) => { - assert_eq!(parent.block_identifier.index, block_height - 1); + assert_eq!(parent.block_identifier.index, parent_height); (parent.block_identifier.clone(), None) } Some(BlockEvent::Microblock(microblock_parent)) => { assert_eq!( microblock_parent.metadata.anchor_block_identifier.index, - block_height - 1 + parent_height, ); ( microblock_parent.metadata.anchor_block_identifier.clone(), @@ -28,7 +34,7 @@ pub fn generate_test_stacks_block( ) } _ => { - let mut parent_hash = if (block_height - 1) == 1 { + let mut parent_hash = if parent_height == 1 { vec![ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ] @@ -37,10 +43,10 @@ pub fn generate_test_stacks_block( fork_id, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ] }; - parent_hash.append(&mut (block_height - 1).to_be_bytes().to_vec()); + parent_hash.append(&mut parent_height.to_be_bytes().to_vec()); ( BlockIdentifier { - index: block_height - 1, + index: parent_height, hash: hex::encode(&parent_hash[..]), }, None, @@ -58,7 +64,7 @@ pub fn generate_test_stacks_block( transactions, metadata: StacksBlockMetadata { bitcoin_anchor_block_identifier: BlockIdentifier { - index: block_height - 1, + index: parent_height, hash: format!(""), }, pox_cycle_index: 1, diff --git a/components/chainhook-sdk/src/indexer/tests/helpers/stacks_events.rs b/components/chainhook-sdk/src/indexer/tests/helpers/stacks_events.rs new file mode 100644 index 000000000..2e1650248 --- /dev/null +++ b/components/chainhook-sdk/src/indexer/tests/helpers/stacks_events.rs @@ -0,0 +1,118 @@ +use chainhook_types::StacksTransactionEvent; + +use crate::indexer::stacks::NewEvent; + +pub fn create_new_event_from_stacks_event(event: StacksTransactionEvent) -> NewEvent { + let mut event_type = String::new(); + let stx_transfer_event = if let StacksTransactionEvent::STXTransferEvent(data) = &event { + event_type = format!("stx_transfer"); + Some(serde_json::to_value(data).unwrap()) + } else { + None + }; + let stx_mint_event = if let StacksTransactionEvent::STXMintEvent(data) = &event { + event_type = format!("stx_mint"); + Some(serde_json::to_value(data).unwrap()) + } else { + None + }; + let stx_burn_event = if let StacksTransactionEvent::STXBurnEvent(data) = &event { + event_type = format!("stx_burn"); + Some(serde_json::to_value(data).unwrap()) + } else { + None + }; + let stx_lock_event = if let StacksTransactionEvent::STXLockEvent(data) = &event { + event_type = format!("stx_lock"); + Some(serde_json::to_value(data).unwrap()) + } else { + None + }; + let nft_transfer_event = if let StacksTransactionEvent::NFTTransferEvent(data) = &event { + event_type = format!("nft_transfer"); + Some(serde_json::to_value(data).unwrap()) + } else { + None + }; + let nft_mint_event = if let StacksTransactionEvent::NFTMintEvent(data) = &event { + event_type = format!("nft_mint"); + Some(serde_json::to_value(data).unwrap()) + } else { + None + }; + let nft_burn_event = if let StacksTransactionEvent::NFTBurnEvent(data) = &event { + event_type = format!("nft_burn"); + Some(serde_json::to_value(data).unwrap()) + } else { + None + }; + let ft_transfer_event = if let StacksTransactionEvent::FTTransferEvent(data) = &event { + event_type = format!("ft_transfer"); + Some(serde_json::to_value(data).unwrap()) + } else { + None + }; + let ft_mint_event = if let StacksTransactionEvent::FTMintEvent(data) = &event { + event_type = format!("ft_mint"); + Some(serde_json::to_value(data).unwrap()) + } else { + None + }; + let ft_burn_event = if let StacksTransactionEvent::FTBurnEvent(data) = &event { + event_type = format!("ft_burn"); + Some(serde_json::to_value(data).unwrap()) + } else { + None + }; + let data_var_set_event = if let StacksTransactionEvent::DataVarSetEvent(data) = &event { + event_type = format!("data_var_set"); + Some(serde_json::to_value(data).unwrap()) + } else { + None + }; + let data_map_insert_event = if let StacksTransactionEvent::DataMapInsertEvent(data) = &event { + event_type = format!("data_map_insert"); + Some(serde_json::to_value(data).unwrap()) + } else { + None + }; + let data_map_update_event = if let StacksTransactionEvent::DataMapUpdateEvent(data) = &event { + event_type = format!("data_map_update"); + Some(serde_json::to_value(data).unwrap()) + } else { + None + }; + let data_map_delete_event = if let StacksTransactionEvent::DataMapDeleteEvent(data) = &event { + event_type = format!("data_map_delete"); + Some(serde_json::to_value(data).unwrap()) + } else { + None + }; + let contract_event = if let StacksTransactionEvent::SmartContractEvent(data) = &event { + event_type = format!("smart_contract_print_event"); + Some(serde_json::to_value(data).unwrap()) + } else { + None + }; + NewEvent { + txid: format!(""), + committed: false, + event_index: 0, + event_type, + stx_transfer_event, + stx_mint_event, + stx_burn_event, + stx_lock_event, + nft_transfer_event, + nft_mint_event, + nft_burn_event, + ft_transfer_event, + ft_mint_event, + ft_burn_event, + data_var_set_event, + data_map_insert_event, + data_map_update_event, + data_map_delete_event, + contract_event, + } +} diff --git a/components/chainhook-sdk/src/indexer/tests/helpers/stacks_shapes.rs b/components/chainhook-sdk/src/indexer/tests/helpers/stacks_shapes.rs index c0f79f9d9..316849128 100644 --- a/components/chainhook-sdk/src/indexer/tests/helpers/stacks_shapes.rs +++ b/components/chainhook-sdk/src/indexer/tests/helpers/stacks_shapes.rs @@ -3721,7 +3721,7 @@ pub fn get_vector_051() -> Vec<(BlockEvent, StacksChainEventExpectation)> { /// Vector 052: Generate the following blocks /// /// [a1](1) - [b1](2) - B1(3) -/// +/// /// pub fn get_vector_052() -> Vec<(BlockEvent, StacksChainEventExpectation)> { vec![ diff --git a/components/chainhook-sdk/src/indexer/tests/helpers/transactions.rs b/components/chainhook-sdk/src/indexer/tests/helpers/transactions.rs index 24b7fe9e8..505c9b9ad 100644 --- a/components/chainhook-sdk/src/indexer/tests/helpers/transactions.rs +++ b/components/chainhook-sdk/src/indexer/tests/helpers/transactions.rs @@ -64,6 +64,7 @@ pub fn generate_test_tx_stacks_contract_call( sponsor: None, position: chainhook_types::StacksTransactionPosition::anchor_block(0), proof: None, + contract_abi: None, }, } } diff --git a/components/chainhook-sdk/src/observer/mod.rs b/components/chainhook-sdk/src/observer/mod.rs index e40b47c35..298e3ee7e 100644 --- a/components/chainhook-sdk/src/observer/mod.rs +++ b/components/chainhook-sdk/src/observer/mod.rs @@ -1,4 +1,6 @@ mod http; +#[cfg(feature = "zeromq")] +mod zmq; use crate::chainhooks::bitcoin::{ evaluate_bitcoin_chainhooks_on_chain_event, handle_bitcoin_hook_action, @@ -28,7 +30,6 @@ use chainhook_types::{ }; use hiro_system_kit; use hiro_system_kit::slog; -use reqwest::Client as HttpClient; use rocket::config::{self, Config, LogLevel}; use rocket::data::{Limits, ToByteUnit}; use rocket::serde::Deserialize; @@ -41,9 +42,7 @@ use std::str; use std::str::FromStr; use std::sync::mpsc::{Receiver, Sender}; use std::sync::{Arc, Mutex, RwLock}; -use std::time::{Duration, SystemTime, UNIX_EPOCH}; -#[cfg(feature = "zeromq")] -use zeromq::{Socket, SocketRecv}; +use std::time::{SystemTime, UNIX_EPOCH}; pub const DEFAULT_INGESTION_PORT: u16 = 20445; @@ -61,64 +60,15 @@ pub enum Event { StacksChainEvent(StacksChainEvent), } -// TODO(lgalabru): Support for GRPC? -#[derive(Deserialize, Debug, Clone)] -pub enum EventHandler { - WebHook(String), -} - -impl EventHandler { - async fn propagate_stacks_event(&self, stacks_event: &StacksChainEvent) { - match self { - EventHandler::WebHook(host) => { - let path = "chain-events/stacks"; - let url = format!("{}/{}", host, path); - let body = rocket::serde::json::serde_json::to_vec(&stacks_event).unwrap_or(vec![]); - let http_client = HttpClient::builder() - .timeout(Duration::from_secs(20)) - .build() - .expect("Unable to build http client"); - let _ = http_client - .post(url) - .header("Content-Type", "application/json") - .body(body) - .send() - .await; - // TODO(lgalabru): handle response errors - } - } - } - - async fn propagate_bitcoin_event(&self, bitcoin_event: &BitcoinChainEvent) { - match self { - EventHandler::WebHook(host) => { - let path = "chain-events/bitcoin"; - let url = format!("{}/{}", host, path); - let body = - rocket::serde::json::serde_json::to_vec(&bitcoin_event).unwrap_or(vec![]); - let http_client = HttpClient::builder() - .timeout(Duration::from_secs(20)) - .build() - .expect("Unable to build http client"); - let _res = http_client - .post(url) - .header("Content-Type", "application/json") - .body(body) - .send() - .await; - // TODO(lgalabru): handle response errors - } - } - } - - async fn notify_bitcoin_transaction_proxied(&self) {} +pub enum DataHandlerEvent { + Process(BitcoinChainhookOccurrencePayload), + Terminate, } #[derive(Debug, Clone)] pub struct EventObserverConfig { pub chainhook_config: Option, pub bitcoin_rpc_proxy_enabled: bool, - pub event_handlers: Vec, pub ingestion_port: u16, pub bitcoind_rpc_username: String, pub bitcoind_rpc_password: String, @@ -128,6 +78,7 @@ pub struct EventObserverConfig { pub cache_path: String, pub bitcoin_network: BitcoinNetwork, pub stacks_network: StacksNetwork, + pub data_handler_tx: Option>, } #[derive(Deserialize, Debug, Clone)] @@ -162,73 +113,29 @@ impl EventObserverConfig { bitcoin_config } + pub fn get_chainhook_store(&self) -> ChainhookStore { + let mut chainhook_store = ChainhookStore::new(); + // If authorization not required, we create a default ChainhookConfig + if let Some(ref chainhook_config) = self.chainhook_config { + let mut chainhook_config = chainhook_config.clone(); + chainhook_store + .predicates + .stacks_chainhooks + .append(&mut chainhook_config.stacks_chainhooks); + chainhook_store + .predicates + .bitcoin_chainhooks + .append(&mut chainhook_config.bitcoin_chainhooks); + } + chainhook_store + } + pub fn get_stacks_node_config(&self) -> &StacksNodeConfig { match self.bitcoin_block_signaling { BitcoinBlockSignaling::Stacks(ref config) => config, _ => unreachable!(), } } - - pub fn new_using_overrides( - overrides: Option<&EventObserverConfigOverrides>, - ) -> Result { - let bitcoin_network = - if let Some(network) = overrides.and_then(|c| c.bitcoin_network.as_ref()) { - BitcoinNetwork::from_str(network)? - } else { - BitcoinNetwork::Regtest - }; - - let stacks_network = - if let Some(network) = overrides.and_then(|c| c.stacks_network.as_ref()) { - StacksNetwork::from_str(network)? - } else { - StacksNetwork::Devnet - }; - - let config = EventObserverConfig { - bitcoin_rpc_proxy_enabled: false, - event_handlers: vec![], - chainhook_config: None, - ingestion_port: overrides - .and_then(|c| c.ingestion_port) - .unwrap_or(DEFAULT_INGESTION_PORT), - bitcoind_rpc_username: overrides - .and_then(|c| c.bitcoind_rpc_username.clone()) - .unwrap_or("devnet".to_string()), - bitcoind_rpc_password: overrides - .and_then(|c| c.bitcoind_rpc_password.clone()) - .unwrap_or("devnet".to_string()), - bitcoind_rpc_url: overrides - .and_then(|c| c.bitcoind_rpc_url.clone()) - .unwrap_or("http://localhost:18443".to_string()), - bitcoin_block_signaling: overrides - .and_then(|c| match c.bitcoind_zmq_url.as_ref() { - Some(url) => Some(BitcoinBlockSignaling::ZeroMQ(url.clone())), - None => Some(BitcoinBlockSignaling::Stacks( - StacksNodeConfig::default_localhost( - overrides - .and_then(|c| c.ingestion_port) - .unwrap_or(DEFAULT_INGESTION_PORT), - ), - )), - }) - .unwrap_or(BitcoinBlockSignaling::Stacks( - StacksNodeConfig::default_localhost( - overrides - .and_then(|c| c.ingestion_port) - .unwrap_or(DEFAULT_INGESTION_PORT), - ), - )), - display_logs: overrides.and_then(|c| c.display_logs).unwrap_or(false), - cache_path: overrides - .and_then(|c| c.cache_path.clone()) - .unwrap_or("cache".to_string()), - bitcoin_network, - stacks_network, - }; - Ok(config) - } } #[derive(Deserialize, Debug)] @@ -248,10 +155,18 @@ pub enum ObserverCommand { EnablePredicate(ChainhookSpecification), DeregisterBitcoinPredicate(String), DeregisterStacksPredicate(String), + ExpireBitcoinPredicate(HookExpirationData), + ExpireStacksPredicate(HookExpirationData), NotifyBitcoinTransactionProxied, Terminate, } +#[derive(Clone, Debug, PartialEq)] +pub struct HookExpirationData { + pub hook_uuid: String, + pub block_height: u64, +} + #[derive(Clone, Debug, PartialEq)] pub enum StacksChainMempoolEvent { TransactionsAdmitted(Vec), @@ -268,6 +183,7 @@ pub struct MempoolAdmissionData { pub struct PredicateEvaluationReport { pub predicates_evaluated: BTreeMap>, pub predicates_triggered: BTreeMap>, + pub predicates_expired: BTreeMap>, } impl PredicateEvaluationReport { @@ -275,6 +191,7 @@ impl PredicateEvaluationReport { PredicateEvaluationReport { predicates_evaluated: BTreeMap::new(), predicates_triggered: BTreeMap::new(), + predicates_expired: BTreeMap::new(), } } @@ -305,6 +222,19 @@ impl PredicateEvaluationReport { }); } } + + pub fn track_expiration(&mut self, uuid: &str, block_identifier: &BlockIdentifier) { + self.predicates_expired + .entry(uuid.to_string()) + .and_modify(|e| { + e.insert(block_identifier.clone()); + }) + .or_insert_with(|| { + let mut set = BTreeSet::new(); + set.insert(block_identifier.clone()); + set + }); + } } #[derive(Clone, Debug)] @@ -363,14 +293,14 @@ impl ChainhookStore { } } -#[derive(Debug, Default, Serialize, Clone)] +#[derive(Debug, Default, Serialize, Deserialize, Clone)] pub struct ReorgMetrics { timestamp: i64, applied_blocks: usize, rolled_back_blocks: usize, } -#[derive(Debug, Default, Serialize, Clone)] +#[derive(Debug, Default, Serialize, Deserialize, Clone)] pub struct ChainMetrics { pub tip_height: u64, pub last_reorg: Option, @@ -386,18 +316,87 @@ impl ChainMetrics { } } -#[derive(Debug, Default, Serialize, Clone)] +#[derive(Debug, Default, Serialize, Deserialize, Clone)] pub struct ObserverMetrics { pub bitcoin: ChainMetrics, pub stacks: ChainMetrics, } +#[derive(Debug, Clone)] +pub struct BitcoinBlockDataCached { + pub block: BitcoinBlockData, + pub processed_by_sidecar: bool, +} + +pub struct ObserverSidecar { + pub bitcoin_blocks_mutator: Option<( + crossbeam_channel::Sender<(Vec, Vec)>, + crossbeam_channel::Receiver>, + )>, + pub bitcoin_chain_event_notifier: Option>, +} + +impl ObserverSidecar { + fn perform_bitcoin_sidecar_mutations( + &self, + blocks: Vec, + blocks_ids_to_rollback: Vec, + ctx: &Context, + ) -> Vec { + if let Some(ref block_mutator) = self.bitcoin_blocks_mutator { + ctx.try_log(|logger| slog::info!(logger, "Sending blocks to pre-processor",)); + let _ = block_mutator + .0 + .send((blocks.clone(), blocks_ids_to_rollback)); + ctx.try_log(|logger| slog::info!(logger, "Waiting for blocks from pre-processor",)); + match block_mutator.1.recv() { + Ok(updated_blocks) => { + ctx.try_log(|logger| slog::info!(logger, "Block received from pre-processor",)); + updated_blocks + } + Err(e) => { + ctx.try_log(|logger| { + slog::error!( + logger, + "Unable to receive block from pre-processor {}", + e.to_string() + ) + }); + blocks + } + } + } else { + blocks + } + } + + fn notify_chain_event(&self, chain_event: &BitcoinChainEvent, _ctx: &Context) { + if let Some(ref notifier) = self.bitcoin_chain_event_notifier { + match chain_event { + BitcoinChainEvent::ChainUpdatedWithBlocks(data) => { + for block in data.new_blocks.iter() { + let _ = notifier.send(HandleBlock::ApplyBlock(block.clone())); + } + } + BitcoinChainEvent::ChainUpdatedWithReorg(data) => { + for block in data.blocks_to_rollback.iter() { + let _ = notifier.send(HandleBlock::UndoBlock(block.clone())); + } + for block in data.blocks_to_apply.iter() { + let _ = notifier.send(HandleBlock::ApplyBlock(block.clone())); + } + } + } + } + } +} + pub fn start_event_observer( config: EventObserverConfig, observer_commands_tx: Sender, observer_commands_rx: Receiver, observer_events_tx: Option>, - block_pre_processor: Option<(Sender, Receiver>)>, + observer_sidecar: Option, ctx: Context, ) -> Result<(), Box> { match config.bitcoin_block_signaling { @@ -414,7 +413,7 @@ pub fn start_event_observer( observer_commands_tx_moved, observer_commands_rx, observer_events_tx, - block_pre_processor, + observer_sidecar, context_cloned, ); let _ = hiro_system_kit::nestable_block_on(future); @@ -431,7 +430,7 @@ pub fn start_event_observer( observer_commands_tx_moved, observer_commands_rx, observer_events_tx, - block_pre_processor, + observer_sidecar, context_cloned, ); let _ = hiro_system_kit::nestable_block_on(future); @@ -455,13 +454,13 @@ pub fn start_event_observer( pub async fn start_bitcoin_event_observer( config: EventObserverConfig, - observer_commands_tx: Sender, + _observer_commands_tx: Sender, observer_commands_rx: Receiver, observer_events_tx: Option>, - block_pre_processor: Option<(Sender, Receiver>)>, + observer_sidecar: Option, ctx: Context, ) -> Result<(), Box> { - let chainhook_store = ChainhookStore::new(); + let chainhook_store = config.get_chainhook_store(); let observer_metrics = ObserverMetrics { bitcoin: ChainMetrics { @@ -475,7 +474,16 @@ pub async fn start_bitcoin_event_observer( }; let observer_metrics_rw_lock = Arc::new(RwLock::new(observer_metrics)); - start_zeromq_runloop(&config, observer_commands_tx, &ctx); + #[cfg(feature = "zeromq")] + { + let ctx_moved = ctx.clone(); + let config_moved = config.clone(); + let _ = hiro_system_kit::thread_named("ZMQ handler").spawn(move || { + let future = + zmq::start_zeromq_runloop(&config_moved, _observer_commands_tx, &ctx_moved); + let _ = hiro_system_kit::nestable_block_on(future); + }); + } // This loop is used for handling background jobs, emitted by HTTP calls. start_observer_commands_handler( @@ -485,18 +493,18 @@ pub async fn start_bitcoin_event_observer( observer_events_tx, None, observer_metrics_rw_lock.clone(), - block_pre_processor, + observer_sidecar, ctx, ) .await } pub async fn start_stacks_event_observer( - mut config: EventObserverConfig, + config: EventObserverConfig, observer_commands_tx: Sender, observer_commands_rx: Receiver, observer_events_tx: Option>, - block_pre_processor: Option<(Sender, Receiver>)>, + observer_sidecar: Option, ctx: Context, ) -> Result<(), Box> { let indexer_config = IndexerConfig { @@ -524,18 +532,7 @@ pub async fn start_stacks_event_observer( let bitcoin_rpc_proxy_enabled = config.bitcoin_rpc_proxy_enabled; let bitcoin_config = config.get_bitcoin_config(); - let mut chainhook_store = ChainhookStore::new(); - // If authorization not required, we create a default ChainhookConfig - if let Some(ref mut initial_chainhook_config) = config.chainhook_config { - chainhook_store - .predicates - .stacks_chainhooks - .append(&mut initial_chainhook_config.stacks_chainhooks); - chainhook_store - .predicates - .bitcoin_chainhooks - .append(&mut initial_chainhook_config.bitcoin_chainhooks); - } + let chainhook_store = config.get_chainhook_store(); let indexer_rw_lock = Arc::new(RwLock::new(indexer)); @@ -613,7 +610,7 @@ pub async fn start_stacks_event_observer( observer_events_tx, ingestion_shutdown, observer_metrics_rw_lock.clone(), - block_pre_processor, + observer_sidecar, ctx, ) .await @@ -640,117 +637,6 @@ pub fn get_bitcoin_proof( } } -#[allow(unused_variables, unused_imports)] -pub fn start_zeromq_runloop( - config: &EventObserverConfig, - observer_commands_tx: Sender, - ctx: &Context, -) { - #[cfg(feature = "zeromq")] - { - use crate::indexer::fork_scratch_pad::ForkScratchPad; - - if let BitcoinBlockSignaling::ZeroMQ(ref bitcoind_zmq_url) = config.bitcoin_block_signaling - { - let bitcoind_zmq_url = bitcoind_zmq_url.clone(); - let ctx_moved = ctx.clone(); - let bitcoin_config = config.get_bitcoin_config(); - let http_client = build_http_client(); - - hiro_system_kit::thread_named("Bitcoind zmq listener") - .spawn(move || { - ctx_moved.try_log(|logger| { - slog::info!( - logger, - "Waiting for ZMQ connection acknowledgment from bitcoind" - ) - }); - - let _: Result<(), Box> = - hiro_system_kit::nestable_block_on(async move { - let mut socket = zeromq::SubSocket::new(); - - socket - .connect(&bitcoind_zmq_url) - .await - .expect("Failed to connect"); - - socket.subscribe("").await?; - ctx_moved.try_log(|logger| { - slog::info!(logger, "Waiting for ZMQ messages from bitcoind") - }); - - let mut bitcoin_blocks_pool = ForkScratchPad::new(); - - loop { - let message = match socket.recv().await { - Ok(message) => message, - Err(e) => { - ctx_moved.try_log(|logger| { - slog::error!( - logger, - "Unable to receive ZMQ message: {}", - e.to_string() - ) - }); - continue; - } - }; - let block_hash = hex::encode(message.get(1).unwrap().to_vec()); - - let block = match download_and_parse_block_with_retry( - &http_client, - &block_hash, - &bitcoin_config, - &ctx_moved, - ) - .await - { - Ok(block) => block, - Err(e) => { - ctx_moved.try_log(|logger| { - slog::warn!( - logger, - "unable to download_and_parse_block: {}", - e.to_string() - ) - }); - continue; - } - }; - - ctx_moved.try_log(|logger| { - slog::info!( - logger, - "Bitcoin block #{} dispatched for processing", - block.height - ) - }); - - let header = block.get_block_header(); - let _ = observer_commands_tx - .send(ObserverCommand::ProcessBitcoinBlock(block)); - - if let Ok(Some(event)) = - bitcoin_blocks_pool.process_header(header, &ctx_moved) - { - let _ = observer_commands_tx - .send(ObserverCommand::PropagateBitcoinChainEvent(event)); - } - } - }); - }) - .expect("unable to spawn thread"); - } - } -} - -pub fn pre_process_bitcoin_block() {} - -pub fn apply_bitcoin_block() {} - -pub fn rollback_bitcoin_block() {} - pub fn gather_proofs<'a>( trigger: &BitcoinTriggerChainhook<'a>, proofs: &mut HashMap<&'a TransactionIdentifier, String>, @@ -794,8 +680,8 @@ pub fn gather_proofs<'a>( } pub enum HandleBlock { - ApplyBlocks(Vec), - UndoBlocks(Vec), + ApplyBlock(BitcoinBlockData), + UndoBlock(BitcoinBlockData), } pub async fn start_observer_commands_handler( @@ -805,14 +691,17 @@ pub async fn start_observer_commands_handler( observer_events_tx: Option>, ingestion_shutdown: Option, observer_metrics: Arc>, - block_pre_processor: Option<(Sender, Receiver>)>, + observer_sidecar: Option, ctx: Context, ) -> Result<(), Box> { let mut chainhooks_occurrences_tracker: HashMap = HashMap::new(); - let event_handlers = config.event_handlers.clone(); let networks = (&config.bitcoin_network, &config.stacks_network); - let mut bitcoin_block_store: HashMap = HashMap::new(); + let mut bitcoin_block_store: HashMap = HashMap::new(); let http_client = build_http_client(); + let store_update_required = observer_sidecar + .as_ref() + .and_then(|s| s.bitcoin_blocks_mutator.as_ref()) + .is_some(); loop { let command = match observer_commands_rx.recv() { @@ -838,7 +727,7 @@ pub async fn start_observer_commands_handler( } ObserverCommand::ProcessBitcoinBlock(mut block_data) => { let block_hash = block_data.hash.to_string(); - let new_block = loop { + let block = loop { match standardize_bitcoin_block( block_data.clone(), &config.bitcoin_network, @@ -876,8 +765,8 @@ pub async fn start_observer_commands_handler( }; match observer_metrics.write() { Ok(mut metrics) => { - if new_block.block_identifier.index > metrics.bitcoin.tip_height { - metrics.bitcoin.tip_height = new_block.block_identifier.index; + if block.block_identifier.index > metrics.bitcoin.tip_height { + metrics.bitcoin.tip_height = block.block_identifier.index; } metrics.bitcoin.last_block_ingestion_at = SystemTime::now() .duration_since(UNIX_EPOCH) @@ -889,10 +778,22 @@ pub async fn start_observer_commands_handler( slog::warn!(logger, "unable to acquire observer_metrics_rw_lock:{}", e) }), }; - bitcoin_block_store.insert(new_block.block_identifier.clone(), new_block); + bitcoin_block_store.insert( + block.block_identifier.clone(), + BitcoinBlockDataCached { + block, + processed_by_sidecar: false, + }, + ); } ObserverCommand::CacheBitcoinBlock(block) => { - bitcoin_block_store.insert(block.block_identifier.clone(), block); + bitcoin_block_store.insert( + block.block_identifier.clone(), + BitcoinBlockDataCached { + block, + processed_by_sidecar: false, + }, + ); } ObserverCommand::PropagateBitcoinChainEvent(blockchain_event) => { ctx.try_log(|logger| { @@ -903,36 +804,43 @@ pub async fn start_observer_commands_handler( // Update Chain event before propagation let chain_event = match blockchain_event { BlockchainEvent::BlockchainUpdatedWithHeaders(data) => { + let mut blocks_to_mutate = vec![]; let mut new_blocks = vec![]; for header in data.new_headers.iter() { - match bitcoin_block_store.get(&header.block_identifier) { - Some(block) => { - new_blocks.push(block.clone()); - } - None => { - ctx.try_log(|logger| { - slog::error!( - logger, - "Unable to retrieve bitcoin block {}", - header.block_identifier - ) - }); - } - } + if store_update_required { + let Some(block) = + bitcoin_block_store.remove(&header.block_identifier) + else { + continue; + }; + blocks_to_mutate.push(block); + } else { + let Some(cache) = bitcoin_block_store.get(&header.block_identifier) + else { + continue; + }; + new_blocks.push(cache.block.clone()); + }; } - new_blocks = handle_blocks_pre_processing( - &block_pre_processor, - new_blocks, - true, - &ctx, - ); + if let Some(ref sidecar) = observer_sidecar { + let updated_blocks = sidecar.perform_bitcoin_sidecar_mutations( + blocks_to_mutate, + vec![], + &ctx, + ); + for cache in updated_blocks.into_iter() { + bitcoin_block_store + .insert(cache.block.block_identifier.clone(), cache.clone()); + new_blocks.push(cache.block); + } + } for header in data.confirmed_headers.iter() { match bitcoin_block_store.remove(&header.block_identifier) { - Some(block) => { - confirmed_blocks.push(block); + Some(res) => { + confirmed_blocks.push(res.block); } None => { ctx.try_log(|logger| { @@ -954,28 +862,35 @@ pub async fn start_observer_commands_handler( ) } BlockchainEvent::BlockchainUpdatedWithReorg(data) => { - let mut blocks_to_apply = vec![]; let mut blocks_to_rollback = vec![]; - let blocks_ids_to_rollback = data - .headers_to_rollback - .iter() - .map(|b| b.block_identifier.index.to_string()) - .collect::>(); - let blocks_ids_to_apply = data - .headers_to_apply - .iter() - .map(|b| b.block_identifier.index.to_string()) - .collect::>(); + let mut blocks_to_mutate = vec![]; + let mut blocks_to_apply = vec![]; - ctx.try_log(|logger| { - slog::info!(logger, "Bitcoin reorg detected, will rollback blocks {} and apply blocks {}", blocks_ids_to_rollback.join(", "), blocks_ids_to_apply.join(", ")) - }); + for header in data.headers_to_apply.iter() { + if store_update_required { + let Some(block) = + bitcoin_block_store.remove(&header.block_identifier) + else { + continue; + }; + blocks_to_mutate.push(block); + } else { + let Some(cache) = bitcoin_block_store.get(&header.block_identifier) + else { + continue; + }; + blocks_to_apply.push(cache.block.clone()); + }; + } + + let mut blocks_ids_to_rollback: Vec = vec![]; for header in data.headers_to_rollback.iter() { match bitcoin_block_store.get(&header.block_identifier) { - Some(block) => { - blocks_to_rollback.push(block.clone()); + Some(cache) => { + blocks_ids_to_rollback.push(header.block_identifier.clone()); + blocks_to_rollback.push(cache.block.clone()); } None => { ctx.try_log(|logger| { @@ -989,41 +904,23 @@ pub async fn start_observer_commands_handler( } } - blocks_to_rollback = handle_blocks_pre_processing( - &block_pre_processor, - blocks_to_rollback, - false, - &ctx, - ); - - for header in data.headers_to_apply.iter() { - match bitcoin_block_store.get_mut(&header.block_identifier) { - Some(block) => { - blocks_to_apply.push(block.clone()); - } - None => { - ctx.try_log(|logger| { - slog::error!( - logger, - "Unable to retrieve bitcoin block {}", - header.block_identifier - ) - }); - } + if let Some(ref sidecar) = observer_sidecar { + let updated_blocks = sidecar.perform_bitcoin_sidecar_mutations( + blocks_to_mutate, + blocks_ids_to_rollback, + &ctx, + ); + for cache in updated_blocks.into_iter() { + bitcoin_block_store + .insert(cache.block.block_identifier.clone(), cache.clone()); + blocks_to_apply.push(cache.block); } } - blocks_to_apply = handle_blocks_pre_processing( - &block_pre_processor, - blocks_to_apply, - true, - &ctx, - ); - for header in data.confirmed_headers.iter() { match bitcoin_block_store.remove(&header.block_identifier) { - Some(block) => { - confirmed_blocks.push(block); + Some(res) => { + confirmed_blocks.push(res.block); } None => { ctx.try_log(|logger| { @@ -1068,8 +965,8 @@ pub async fn start_observer_commands_handler( } }; - for event_handler in event_handlers.iter() { - event_handler.propagate_bitcoin_event(&chain_event).await; + if let Some(ref sidecar) = observer_sidecar { + sidecar.notify_chain_event(&chain_event, &ctx) } // process hooks let mut hooks_ids_to_deregister = vec![]; @@ -1081,6 +978,7 @@ pub async fn start_observer_commands_handler( .bitcoin_chainhooks .iter() .filter(|p| p.enabled) + .filter(|p| p.expired_at.is_none()) .collect::>(); ctx.try_log(|logger| { slog::info!( @@ -1090,15 +988,19 @@ pub async fn start_observer_commands_handler( ) }); - let (predicates_triggered, predicates_evaluated) = + let (predicates_triggered, predicates_evaluated, predicates_expired) = evaluate_bitcoin_chainhooks_on_chain_event( &chain_event, &bitcoin_chainhooks, &ctx, ); + for (uuid, block_identifier) in predicates_evaluated.into_iter() { report.track_evaluation(uuid, block_identifier); } + for (uuid, block_identifier) in predicates_expired.into_iter() { + report.track_expiration(uuid, block_identifier); + } for entry in predicates_triggered.iter() { let blocks_ids = entry .apply @@ -1122,6 +1024,11 @@ pub async fn start_observer_commands_handler( let mut total_occurrences: u64 = *chainhooks_occurrences_tracker .get(&trigger.chainhook.uuid) .unwrap_or(&0); + // todo: this currently is only additive, and an occurrence means we match a chain event, + // rather than the number of blocks. Should we instead add to the total occurrences for + // every apply block, and subtract for every rollback? If we did this, we could set the + // status to `Expired` when we go above `expire_after_occurrence` occurrences, rather than + // deregistering total_occurrences += 1; let limit = trigger.chainhook.expire_after_occurrence.unwrap_or(0); @@ -1189,12 +1096,6 @@ pub async fn start_observer_commands_handler( .predicates .deregister_bitcoin_hook(hook_uuid.clone()) { - if let Some(ref tx) = observer_events_tx { - let _ = tx.send(ObserverEvent::PredicateDeregistered( - ChainhookSpecification::Bitcoin(chainhook), - )); - } - match observer_metrics.write() { Ok(mut metrics) => metrics.bitcoin.deregister_prediate(), Err(e) => ctx.try_log(|logger| { @@ -1205,6 +1106,12 @@ pub async fn start_observer_commands_handler( ) }), } + + if let Some(ref tx) = observer_events_tx { + let _ = tx.send(ObserverEvent::PredicateDeregistered( + ChainhookSpecification::Bitcoin(chainhook), + )); + } } } @@ -1220,9 +1127,6 @@ pub async fn start_observer_commands_handler( ctx.try_log(|logger| { slog::info!(logger, "Handling PropagateStacksChainEvent command") }); - for event_handler in event_handlers.iter() { - event_handler.propagate_stacks_event(&chain_event).await; - } let mut hooks_ids_to_deregister = vec![]; let mut requests = vec![]; let mut report = PredicateEvaluationReport::new(); @@ -1232,6 +1136,7 @@ pub async fn start_observer_commands_handler( .stacks_chainhooks .iter() .filter(|p| p.enabled) + .filter(|p| p.expired_at.is_none()) .collect::>(); ctx.try_log(|logger| { slog::info!( @@ -1302,7 +1207,7 @@ pub async fn start_observer_commands_handler( } // process hooks - let (predicates_triggered, predicates_evaluated) = + let (predicates_triggered, predicates_evaluated, predicates_expired) = evaluate_stacks_chainhooks_on_chain_event( &chain_event, stacks_chainhooks, @@ -1311,6 +1216,9 @@ pub async fn start_observer_commands_handler( for (uuid, block_identifier) in predicates_evaluated.into_iter() { report.track_evaluation(uuid, block_identifier); } + for (uuid, block_identifier) in predicates_expired.into_iter() { + report.track_expiration(uuid, block_identifier); + } for entry in predicates_triggered.iter() { let blocks_ids = entry .apply @@ -1379,14 +1287,9 @@ pub async fn start_observer_commands_handler( .predicates .deregister_stacks_hook(hook_uuid.clone()) { - if let Some(ref tx) = observer_events_tx { - let _ = tx.send(ObserverEvent::PredicateDeregistered( - ChainhookSpecification::Stacks(chainhook), - )); - } - match observer_metrics.write() { Ok(mut metrics) => metrics.stacks.deregister_prediate(), + Err(e) => ctx.try_log(|logger| { slog::warn!( logger, @@ -1395,6 +1298,12 @@ pub async fn start_observer_commands_handler( ) }), } + + if let Some(ref tx) = observer_events_tx { + let _ = tx.send(ObserverEvent::PredicateDeregistered( + ChainhookSpecification::Stacks(chainhook), + )); + } } } @@ -1426,9 +1335,6 @@ pub async fn start_observer_commands_handler( ctx.try_log(|logger| { slog::info!(logger, "Handling NotifyBitcoinTransactionProxied command") }); - for event_handler in event_handlers.iter() { - event_handler.notify_bitcoin_transaction_proxied().await; - } if let Some(ref tx) = observer_events_tx { let _ = tx.send(ObserverEvent::NotifyBitcoinTransactionProxied); } @@ -1449,16 +1355,10 @@ pub async fn start_observer_commands_handler( e.to_string() ) }); - continue; + panic!("Unable to register new chainhook spec: {}", e.to_string()); + //continue; } }; - ctx.try_log(|logger| slog::info!(logger, "Registering chainhook {}", spec.uuid(),)); - if let Some(ref tx) = observer_events_tx { - let _ = tx.send(ObserverEvent::PredicateRegistered(spec.clone())); - } else { - ctx.try_log(|logger| slog::info!(logger, "Enabling Predicate {}", spec.uuid())); - chainhook_store.predicates.enable_specification(&mut spec); - } match observer_metrics.write() { Ok(mut metrics) => match spec { @@ -1473,6 +1373,14 @@ pub async fn start_observer_commands_handler( slog::warn!(logger, "unable to acquire observer_metrics_rw_lock:{}", e) }), }; + + ctx.try_log(|logger| slog::info!(logger, "Registering chainhook {}", spec.uuid(),)); + if let Some(ref tx) = observer_events_tx { + let _ = tx.send(ObserverEvent::PredicateRegistered(spec.clone())); + } else { + ctx.try_log(|logger| slog::info!(logger, "Enabling Predicate {}", spec.uuid())); + chainhook_store.predicates.enable_specification(&mut spec); + } } ObserverCommand::EnablePredicate(mut spec) => { ctx.try_log(|logger| slog::info!(logger, "Enabling Predicate {}", spec.uuid())); @@ -1486,11 +1394,6 @@ pub async fn start_observer_commands_handler( slog::info!(logger, "Handling DeregisterStacksPredicate command") }); let hook = chainhook_store.predicates.deregister_stacks_hook(hook_uuid); - if let (Some(tx), Some(hook)) = (&observer_events_tx, hook) { - let _ = tx.send(ObserverEvent::PredicateDeregistered( - ChainhookSpecification::Stacks(hook), - )); - } match observer_metrics.write() { Ok(mut metrics) => metrics.stacks.deregister_prediate(), @@ -1498,6 +1401,12 @@ pub async fn start_observer_commands_handler( slog::warn!(logger, "unable to acquire observer_metrics_rw_lock:{}", e) }), } + + if let (Some(tx), Some(hook)) = (&observer_events_tx, hook) { + let _ = tx.send(ObserverEvent::PredicateDeregistered( + ChainhookSpecification::Stacks(hook), + )); + } } ObserverCommand::DeregisterBitcoinPredicate(hook_uuid) => { ctx.try_log(|logger| { @@ -1506,55 +1415,43 @@ pub async fn start_observer_commands_handler( let hook = chainhook_store .predicates .deregister_bitcoin_hook(hook_uuid); + + match observer_metrics.write() { + Ok(mut metrics) => metrics.bitcoin.deregister_prediate(), + Err(e) => ctx.try_log(|logger| { + slog::warn!(logger, "unable to acquire observer_metrics_rw_lock:{}", e) + }), + } + if let (Some(tx), Some(hook)) = (&observer_events_tx, hook) { let _ = tx.send(ObserverEvent::PredicateDeregistered( ChainhookSpecification::Bitcoin(hook), )); - - match observer_metrics.write() { - Ok(mut metrics) => metrics.bitcoin.deregister_prediate(), - Err(e) => ctx.try_log(|logger| { - slog::warn!(logger, "unable to acquire observer_metrics_rw_lock:{}", e) - }), - } } } - } - } - Ok(()) -} - -fn handle_blocks_pre_processing( - block_pre_processor: &Option<(Sender, Receiver>)>, - blocks: Vec, - apply: bool, - ctx: &Context, -) -> Vec { - if let Some(ref processor) = block_pre_processor { - ctx.try_log(|logger| slog::info!(logger, "Sending blocks to pre-processor",)); - let _ = processor.0.send(match apply { - true => HandleBlock::ApplyBlocks(blocks.clone()), - false => HandleBlock::UndoBlocks(blocks.clone()), - }); - ctx.try_log(|logger| slog::info!(logger, "Waiting for blocks from pre-processor",)); - match processor.1.recv() { - Ok(updated_blocks) => { - ctx.try_log(|logger| slog::info!(logger, "Blocks received from pre-processor",)); - return updated_blocks; + ObserverCommand::ExpireStacksPredicate(HookExpirationData { + hook_uuid, + block_height, + }) => { + ctx.try_log(|logger| slog::info!(logger, "Handling ExpireStacksPredicate command")); + chainhook_store + .predicates + .expire_stacks_hook(hook_uuid, block_height); } - Err(e) => { + ObserverCommand::ExpireBitcoinPredicate(HookExpirationData { + hook_uuid, + block_height, + }) => { ctx.try_log(|logger| { - slog::error!( - logger, - "Unable to receive block from pre-processor {}", - e.to_string() - ) + slog::info!(logger, "Handling ExpireBitcoinPredicate command") }); - return blocks; + chainhook_store + .predicates + .expire_bitcoin_hook(hook_uuid, block_height); } } } - blocks + Ok(()) } #[cfg(test)] diff --git a/components/chainhook-sdk/src/observer/tests/mod.rs b/components/chainhook-sdk/src/observer/tests/mod.rs index 8d4b3a7f1..2b5910887 100644 --- a/components/chainhook-sdk/src/observer/tests/mod.rs +++ b/components/chainhook-sdk/src/observer/tests/mod.rs @@ -2,20 +2,23 @@ use crate::chainhooks::types::{ BitcoinChainhookFullSpecification, BitcoinChainhookNetworkSpecification, BitcoinChainhookSpecification, BitcoinPredicateType, ChainhookConfig, ChainhookFullSpecification, ChainhookSpecification, ExactMatchingRule, HookAction, - OutputPredicate, StacksChainhookFullSpecification, StacksChainhookNetworkSpecification, - StacksChainhookSpecification, StacksContractCallBasedPredicate, StacksPredicate, + OrdinalOperations, OutputPredicate, StacksChainhookFullSpecification, + StacksChainhookNetworkSpecification, StacksChainhookSpecification, + StacksContractCallBasedPredicate, StacksPredicate, }; +use crate::indexer::fork_scratch_pad::ForkScratchPad; use crate::indexer::tests::helpers::transactions::generate_test_tx_bitcoin_p2pkh_transfer; use crate::indexer::tests::helpers::{ accounts, bitcoin_blocks, stacks_blocks, transactions::generate_test_tx_stacks_contract_call, }; use crate::observer::{ start_observer_commands_handler, ChainhookStore, EventObserverConfig, ObserverCommand, - ObserverMetrics, + ObserverMetrics, ObserverSidecar, }; use crate::utils::{AbstractBlock, Context}; use chainhook_types::{ - BitcoinBlockSignaling, BitcoinNetwork, BlockchainEvent, BlockchainUpdatedWithHeaders, + BitcoinBlockSignaling, BitcoinChainEvent, BitcoinNetwork, BlockchainEvent, + BlockchainUpdatedWithHeaders, OrdinalInscriptionRevealData, OrdinalOperation, StacksBlockUpdate, StacksChainEvent, StacksChainUpdatedWithBlocksData, StacksNetwork, StacksNodeConfig, }; @@ -30,7 +33,6 @@ fn generate_test_config() -> (EventObserverConfig, ChainhookStore) { let config: EventObserverConfig = EventObserverConfig { chainhook_config: Some(ChainhookConfig::new()), bitcoin_rpc_proxy_enabled: false, - event_handlers: vec![], ingestion_port: 0, bitcoind_rpc_username: "user".into(), bitcoind_rpc_password: "user".into(), @@ -42,6 +44,7 @@ fn generate_test_config() -> (EventObserverConfig, ChainhookStore) { cache_path: "cache".into(), bitcoin_network: BitcoinNetwork::Regtest, stacks_network: StacksNetwork::Devnet, + data_handler_tx: None, }; let predicates = ChainhookConfig::new(); let chainhook_store = ChainhookStore { predicates }; @@ -64,6 +67,7 @@ fn stacks_chainhook_contract_call( expire_after_occurrence, capture_all_events: None, decode_clarity_values: Some(true), + include_contract_abi: None, predicate: StacksPredicate::ContractCall(StacksContractCallBasedPredicate { contract_identifier: contract_identifier.to_string(), method: method.to_string(), @@ -116,6 +120,34 @@ fn bitcoin_chainhook_p2pkh( spec } +fn bitcoin_chainhook_ordinals(id: u8) -> BitcoinChainhookFullSpecification { + let mut networks = BTreeMap::new(); + networks.insert( + BitcoinNetwork::Regtest, + BitcoinChainhookNetworkSpecification { + start_block: None, + end_block: None, + blocks: None, + expire_after_occurrence: None, + predicate: BitcoinPredicateType::OrdinalsProtocol(OrdinalOperations::InscriptionFeed), + action: HookAction::Noop, + include_proof: None, + include_inputs: None, + include_outputs: None, + include_witness: None, + }, + ); + + let spec = BitcoinChainhookFullSpecification { + uuid: format!("{}", id), + name: format!("Chainhook {}", id), + owner_uuid: None, + version: 1, + networks, + }; + spec +} + fn generate_and_register_new_stacks_chainhook( observer_commands_tx: &Sender, observer_events_rx: &crossbeam_channel::Receiver, @@ -202,6 +234,133 @@ fn generate_and_register_new_bitcoin_chainhook( chainhook } +fn assert_predicates_triggered_event( + observer_events_rx: &crossbeam_channel::Receiver, + expected_len: usize, +) { + assert!( + match observer_events_rx.recv() { + Ok(ObserverEvent::PredicatesTriggered(len)) => { + assert_eq!( + len, expected_len, + "expected {} predicate(s) to be triggered", + expected_len + ); + true + } + _ => false, + }, + "expected PredicatesTriggered event to occur" + ); +} + +fn assert_stacks_chain_event(observer_events_rx: &crossbeam_channel::Receiver) { + assert!( + match observer_events_rx.recv() { + Ok(ObserverEvent::StacksChainEvent(_)) => { + true + } + _ => false, + }, + "expected StacksChainEvent event to occur" + ); +} + +fn assert_observer_metrics_stacks_registered_predicates( + observer_metrics_rw_lock: &Arc>, + expected_count: usize, +) { + assert_eq!( + expected_count, + observer_metrics_rw_lock + .read() + .unwrap() + .stacks + .registered_predicates, + "expected {} registered stacks hooks", + expected_count + ); +} + +fn assert_observer_metrics_stacks_deregistered_predicates( + observer_metrics_rw_lock: &Arc>, + expected_count: usize, +) { + assert_eq!( + expected_count, + observer_metrics_rw_lock + .read() + .unwrap() + .stacks + .deregistered_predicates, + "expected {} deregistered stacks hooks", + expected_count + ); +} + +fn assert_observer_metrics_bitcoin_registered_predicates( + observer_metrics_rw_lock: &Arc>, + expected_count: usize, +) { + assert_eq!( + expected_count, + observer_metrics_rw_lock + .read() + .unwrap() + .bitcoin + .registered_predicates, + "expected {} registered bitcoin hooks", + expected_count + ); +} + +fn assert_observer_metrics_bitcoin_deregistered_predicates( + observer_metrics_rw_lock: &Arc>, + expected_count: usize, +) { + assert_eq!( + expected_count, + observer_metrics_rw_lock + .read() + .unwrap() + .bitcoin + .deregistered_predicates, + "expected {} deregistered bitcoin hooks", + expected_count + ); +} + +fn generate_and_register_new_ordinals_chainhook( + observer_commands_tx: &Sender, + observer_events_rx: &crossbeam_channel::Receiver, + id: u8, +) -> BitcoinChainhookSpecification { + let chainhook = bitcoin_chainhook_ordinals(id); + let _ = observer_commands_tx.send(ObserverCommand::RegisterPredicate( + ChainhookFullSpecification::Bitcoin(chainhook.clone()), + )); + let mut chainhook = chainhook + .into_selected_network_specification(&BitcoinNetwork::Regtest) + .unwrap(); + chainhook.enabled = true; + let _ = observer_commands_tx.send(ObserverCommand::EnablePredicate( + ChainhookSpecification::Bitcoin(chainhook.clone()), + )); + assert!(match observer_events_rx.recv() { + Ok(ObserverEvent::PredicateRegistered(_)) => { + true + } + _ => false, + }); + assert!(match observer_events_rx.recv() { + Ok(ObserverEvent::PredicateEnabled(_)) => { + true + } + _ => false, + }); + chainhook +} + #[test] fn test_stacks_chainhook_register_deregister() { let (observer_commands_tx, observer_commands_rx) = channel(); @@ -233,14 +392,7 @@ fn test_stacks_chainhook_register_deregister() { ); // registering stacks chainhook should increment the observer_metric's registered stacks hooks - assert_eq!( - 1, - observer_metrics_rw_lock - .read() - .unwrap() - .stacks - .registered_predicates - ); + assert_observer_metrics_stacks_registered_predicates(&observer_metrics_rw_lock, 1); // Simulate a block that does not include a trigger let transactions = vec![generate_test_tx_stacks_contract_call( @@ -264,20 +416,9 @@ fn test_stacks_chainhook_register_deregister() { }); // Should signal that no hook were triggered - assert!(match observer_events_rx.recv() { - Ok(ObserverEvent::PredicatesTriggered(len)) => { - assert_eq!(len, 0); - true - } - _ => false, - }); + assert_predicates_triggered_event(&observer_events_rx, 0); // Should propagate block - assert!(match observer_events_rx.recv() { - Ok(ObserverEvent::StacksChainEvent(_)) => { - true - } - _ => false, - }); + assert_stacks_chain_event(&observer_events_rx); // Simulate a block that does include a trigger let transactions = vec![generate_test_tx_stacks_contract_call( @@ -295,30 +436,30 @@ fn test_stacks_chainhook_register_deregister() { }); let _ = observer_commands_tx.send(ObserverCommand::PropagateStacksChainEvent(chain_event)); // Should signal that no hook were triggered - assert!(match observer_events_rx.recv() { - Ok(ObserverEvent::PredicatesTriggered(len)) => { - assert_eq!(len, 1); - true - } - _ => false, - }); - - assert!(match observer_events_rx.recv() { - Ok(ObserverEvent::StacksPredicateTriggered(payload)) => { - assert_eq!(payload.apply.len(), 1); - assert_eq!(payload.apply[0].transactions.len(), 1); - true - } - _ => false, - }); + assert_predicates_triggered_event(&observer_events_rx, 1); + + assert!( + match observer_events_rx.recv() { + Ok(ObserverEvent::StacksPredicateTriggered(payload)) => { + assert_eq!( + payload.apply.len(), + 1, + "expected 1 predicate to be triggered" + ); + assert_eq!( + payload.apply[0].transactions.len(), + 1, + "expected triggered predicate to have 1 transaction" + ); + true + } + _ => false, + }, + "expected StacksPredicateTriggered event to occur" + ); // Should propagate block - assert!(match observer_events_rx.recv() { - Ok(ObserverEvent::StacksChainEvent(_)) => { - true - } - _ => false, - }); + assert_stacks_chain_event(&observer_events_rx); // Simulate a block that does include 2 trigger let transactions = vec![ @@ -352,13 +493,7 @@ fn test_stacks_chainhook_register_deregister() { }); let _ = observer_commands_tx.send(ObserverCommand::PropagateStacksChainEvent(chain_event)); // Should signal that no hook were triggered - assert!(match observer_events_rx.recv() { - Ok(ObserverEvent::PredicatesTriggered(len)) => { - assert_eq!(len, 1); - true - } - _ => false, - }); + assert_predicates_triggered_event(&observer_events_rx, 1); assert!(match observer_events_rx.recv() { Ok(ObserverEvent::StacksPredicateTriggered(payload)) => { @@ -370,12 +505,7 @@ fn test_stacks_chainhook_register_deregister() { }); // Should propagate block - assert!(match observer_events_rx.recv() { - Ok(ObserverEvent::StacksChainEvent(_)) => { - true - } - _ => false, - }); + assert_stacks_chain_event(&observer_events_rx); // Deregister the hook let _ = observer_commands_tx.send(ObserverCommand::DeregisterStacksPredicate( @@ -393,23 +523,9 @@ fn test_stacks_chainhook_register_deregister() { }); // deregistering stacks chainhook should decrement the observer_metric's registered stacks hooks - assert_eq!( - 0, - observer_metrics_rw_lock - .read() - .unwrap() - .stacks - .registered_predicates - ); + assert_observer_metrics_stacks_registered_predicates(&observer_metrics_rw_lock, 0); // and increment the deregistered hooks - assert_eq!( - 1, - observer_metrics_rw_lock - .read() - .unwrap() - .stacks - .deregistered_predicates - ); + assert_observer_metrics_stacks_deregistered_predicates(&observer_metrics_rw_lock, 1); // Simulate a block that does not include a trigger let transactions = vec![generate_test_tx_stacks_contract_call( @@ -427,20 +543,9 @@ fn test_stacks_chainhook_register_deregister() { }); let _ = observer_commands_tx.send(ObserverCommand::PropagateStacksChainEvent(chain_event)); // Should signal that no hook were triggered - assert!(match observer_events_rx.recv() { - Ok(ObserverEvent::PredicatesTriggered(len)) => { - assert_eq!(len, 0); - true - } - _ => false, - }); + assert_predicates_triggered_event(&observer_events_rx, 0); // Should propagate block - assert!(match observer_events_rx.recv() { - Ok(ObserverEvent::StacksChainEvent(_)) => { - true - } - _ => false, - }); + assert_stacks_chain_event(&observer_events_rx); // Simulate a block that does include a trigger let transactions = vec![generate_test_tx_stacks_contract_call( @@ -458,20 +563,9 @@ fn test_stacks_chainhook_register_deregister() { }); let _ = observer_commands_tx.send(ObserverCommand::PropagateStacksChainEvent(chain_event)); // Should signal that no hook were triggered - assert!(match observer_events_rx.recv() { - Ok(ObserverEvent::PredicatesTriggered(len)) => { - assert_eq!(len, 0); - true - } - _ => false, - }); + assert_predicates_triggered_event(&observer_events_rx, 0); // Should propagate block - assert!(match observer_events_rx.recv() { - Ok(ObserverEvent::StacksChainEvent(_)) => { - true - } - _ => false, - }); + assert_stacks_chain_event(&observer_events_rx); let _ = observer_commands_tx.send(ObserverCommand::Terminate); handle.join().expect("unable to terminate thread"); @@ -522,14 +616,7 @@ fn test_stacks_chainhook_auto_deregister() { _ => false, }); // registering stacks chainhook should increment the observer_metric's registered stacks hooks - assert_eq!( - 1, - observer_metrics_rw_lock - .read() - .unwrap() - .stacks - .registered_predicates - ); + assert_observer_metrics_stacks_registered_predicates(&observer_metrics_rw_lock, 1); // Simulate a block that does not include a trigger let transactions = vec![generate_test_tx_stacks_contract_call( @@ -552,24 +639,22 @@ fn test_stacks_chainhook_auto_deregister() { _ => false, }); - assert!(match observer_events_rx.recv() { - Ok(ObserverEvent::PredicatesTriggered(len)) => { - assert_eq!(len, 0); - true - } - Ok(e) => { - println!("{:?}", e); - true - } - _ => false, - }); + assert!( + match observer_events_rx.recv() { + Ok(ObserverEvent::PredicatesTriggered(len)) => { + assert_eq!(len, 0); + true + } + Ok(e) => { + println!("{:?}", e); + true + } + _ => false, + }, + "expected PredicatesTriggered event to occur" + ); // Should propagate block - assert!(match observer_events_rx.recv() { - Ok(ObserverEvent::StacksChainEvent(_)) => { - true - } - _ => false, - }); + assert_stacks_chain_event(&observer_events_rx); // Simulate a block that does include a trigger let transactions = vec![generate_test_tx_stacks_contract_call( @@ -586,14 +671,8 @@ fn test_stacks_chainhook_auto_deregister() { confirmed_blocks: vec![], }); let _ = observer_commands_tx.send(ObserverCommand::PropagateStacksChainEvent(chain_event)); - // Should signal that no hook were triggered - assert!(match observer_events_rx.recv() { - Ok(ObserverEvent::PredicatesTriggered(len)) => { - assert_eq!(len, 1); - true - } - _ => false, - }); + // Should signal that hooks were triggered + assert_predicates_triggered_event(&observer_events_rx, 1); assert!(match observer_events_rx.recv() { Ok(ObserverEvent::StacksPredicateTriggered(_)) => { @@ -603,12 +682,7 @@ fn test_stacks_chainhook_auto_deregister() { }); // Should propagate block - assert!(match observer_events_rx.recv() { - Ok(ObserverEvent::StacksChainEvent(_)) => { - true - } - _ => false, - }); + assert_stacks_chain_event(&observer_events_rx); // Simulate another block that does include a trigger let transactions = vec![generate_test_tx_stacks_contract_call( @@ -626,13 +700,8 @@ fn test_stacks_chainhook_auto_deregister() { }); let _ = observer_commands_tx.send(ObserverCommand::PropagateStacksChainEvent(chain_event)); // Should signal that no hook were triggered - assert!(match observer_events_rx.recv() { - Ok(ObserverEvent::PredicatesTriggered(len)) => { - assert_eq!(len, 0); - true - } - _ => false, - }); + assert_predicates_triggered_event(&observer_events_rx, 0); + // Should signal that a hook was deregistered assert!(match observer_events_rx.recv() { Ok(ObserverEvent::PredicateDeregistered(deregistered_hook)) => { @@ -643,38 +712,12 @@ fn test_stacks_chainhook_auto_deregister() { }); // deregistering stacks chainhook should decrement the observer_metric's registered stacks hooks - assert_eq!( - 0, - observer_metrics_rw_lock - .read() - .unwrap() - .stacks - .registered_predicates - ); + assert_observer_metrics_stacks_registered_predicates(&observer_metrics_rw_lock, 0); // and increment the deregistered hooks - assert_eq!( - 1, - observer_metrics_rw_lock - .read() - .unwrap() - .stacks - .deregistered_predicates - ); + assert_observer_metrics_stacks_deregistered_predicates(&observer_metrics_rw_lock, 1); // Should propagate block - assert!(match observer_events_rx.recv() { - Ok(ObserverEvent::StacksChainEvent(_)) => { - true - } - Ok(event) => { - println!("Unexpected event: {:?}", event); - false - } - Err(e) => { - println!("Error: {:?}", e); - false - } - }); + assert_stacks_chain_event(&observer_events_rx); let _ = observer_commands_tx.send(ObserverCommand::Terminate); handle.join().expect("unable to terminate thread"); @@ -711,14 +754,7 @@ fn test_bitcoin_chainhook_register_deregister() { ); // registering bitcoin chainhook should increment the observer_metric's registered bitcoin hooks - assert_eq!( - 1, - observer_metrics_rw_lock - .read() - .unwrap() - .bitcoin - .registered_predicates - ); + assert_observer_metrics_bitcoin_registered_predicates(&observer_metrics_rw_lock, 1); // Simulate a block that does not include a trigger (wallet_1 to wallet_3) let transactions = vec![generate_test_tx_bitcoin_p2pkh_transfer( @@ -735,20 +771,7 @@ fn test_bitcoin_chainhook_register_deregister() { }); let _ = observer_commands_tx.send(ObserverCommand::PropagateBitcoinChainEvent(chain_event)); // Should signal that no hook were triggered - assert!(match observer_events_rx.recv() { - Ok(ObserverEvent::PredicatesTriggered(len)) => { - assert_eq!(len, 0); - true - } - Ok(event) => { - println!("Unexpected event: {:?}", event); - false - } - Err(e) => { - println!("Error: {:?}", e); - false - } - }); + assert_predicates_triggered_event(&observer_events_rx, 0); // Should propagate block assert!(match observer_events_rx.recv() { @@ -773,14 +796,8 @@ fn test_bitcoin_chainhook_register_deregister() { }); let _ = observer_commands_tx.send(ObserverCommand::PropagateBitcoinChainEvent(chain_event)); - // Should signal that no hook were triggered - assert!(match observer_events_rx.recv() { - Ok(ObserverEvent::PredicatesTriggered(len)) => { - assert_eq!(len, 1); - true - } - _ => false, - }); + // Should signal that 1 hook was triggered + assert_predicates_triggered_event(&observer_events_rx, 1); assert!(match observer_events_rx.recv() { Ok(ObserverEvent::BitcoinPredicateTriggered(payload)) => { @@ -828,14 +845,8 @@ fn test_bitcoin_chainhook_register_deregister() { }); let _ = observer_commands_tx.send(ObserverCommand::PropagateBitcoinChainEvent(chain_event)); - // Should signal that no hook were triggered - assert!(match observer_events_rx.recv() { - Ok(ObserverEvent::PredicatesTriggered(len)) => { - assert_eq!(len, 1); - true - } - _ => false, - }); + // Should signal that 1 hook was triggered + assert_predicates_triggered_event(&observer_events_rx, 1); assert!(match observer_events_rx.recv() { Ok(ObserverEvent::BitcoinPredicateTriggered(payload)) => { @@ -870,23 +881,9 @@ fn test_bitcoin_chainhook_register_deregister() { }); // deregistering bitcoin chainhook should decrement the observer_metric's registered bitcoin hooks - assert_eq!( - 0, - observer_metrics_rw_lock - .read() - .unwrap() - .bitcoin - .registered_predicates - ); + assert_observer_metrics_bitcoin_registered_predicates(&observer_metrics_rw_lock, 0); // and increment the deregistered hooks - assert_eq!( - 1, - observer_metrics_rw_lock - .read() - .unwrap() - .bitcoin - .deregistered_predicates - ); + assert_observer_metrics_bitcoin_deregistered_predicates(&observer_metrics_rw_lock, 1); // Simulate a block that does not include a trigger let transactions = vec![generate_test_tx_bitcoin_p2pkh_transfer( @@ -904,13 +901,8 @@ fn test_bitcoin_chainhook_register_deregister() { let _ = observer_commands_tx.send(ObserverCommand::PropagateBitcoinChainEvent(chain_event)); // Should signal that no hook were triggered - assert!(match observer_events_rx.recv() { - Ok(ObserverEvent::PredicatesTriggered(len)) => { - assert_eq!(len, 0); - true - } - _ => false, - }); + assert_predicates_triggered_event(&observer_events_rx, 0); + // Should propagate block assert!(match observer_events_rx.recv() { Ok(ObserverEvent::BitcoinChainEvent(_)) => { @@ -934,13 +926,8 @@ fn test_bitcoin_chainhook_register_deregister() { }); let _ = observer_commands_tx.send(ObserverCommand::PropagateBitcoinChainEvent(chain_event)); // Should signal that no hook were triggered - assert!(match observer_events_rx.recv() { - Ok(ObserverEvent::PredicatesTriggered(len)) => { - assert_eq!(len, 0); - true - } - _ => false, - }); + assert_predicates_triggered_event(&observer_events_rx, 0); + // Should propagate block assert!(match observer_events_rx.recv() { Ok(ObserverEvent::BitcoinChainEvent(_)) => { @@ -984,14 +971,7 @@ fn test_bitcoin_chainhook_auto_deregister() { ); // registering bitcoin chainhook should increment the observer_metric's registered bitcoin hooks - assert_eq!( - 1, - observer_metrics_rw_lock - .read() - .unwrap() - .bitcoin - .registered_predicates - ); + assert_observer_metrics_bitcoin_registered_predicates(&observer_metrics_rw_lock, 1); // Simulate a block that does not include a trigger (wallet_1 to wallet_3) let transactions = vec![generate_test_tx_bitcoin_p2pkh_transfer( @@ -1009,13 +989,8 @@ fn test_bitcoin_chainhook_auto_deregister() { let _ = observer_commands_tx.send(ObserverCommand::PropagateBitcoinChainEvent(chain_event)); // Should signal that no hook were triggered - assert!(match observer_events_rx.recv() { - Ok(ObserverEvent::PredicatesTriggered(len)) => { - assert_eq!(len, 0); - true - } - _ => false, - }); + assert_predicates_triggered_event(&observer_events_rx, 0); + // Should propagate block assert!(match observer_events_rx.recv() { Ok(ObserverEvent::BitcoinChainEvent(_)) => { @@ -1040,14 +1015,8 @@ fn test_bitcoin_chainhook_auto_deregister() { }); let _ = observer_commands_tx.send(ObserverCommand::PropagateBitcoinChainEvent(chain_event)); - // Should signal that no hook were triggered - assert!(match observer_events_rx.recv() { - Ok(ObserverEvent::PredicatesTriggered(len)) => { - assert_eq!(len, 1); - true - } - _ => false, - }); + // Should signal that 1 hook was triggered + assert_predicates_triggered_event(&observer_events_rx, 1); assert!(match observer_events_rx.recv() { Ok(ObserverEvent::BitcoinPredicateTriggered(_)) => { @@ -1081,13 +1050,8 @@ fn test_bitcoin_chainhook_auto_deregister() { let _ = observer_commands_tx.send(ObserverCommand::PropagateBitcoinChainEvent(chain_event)); // Should signal that no hook were triggered - assert!(match observer_events_rx.recv() { - Ok(ObserverEvent::PredicatesTriggered(len)) => { - assert_eq!(len, 0); - true - } - _ => false, - }); + assert_predicates_triggered_event(&observer_events_rx, 0); + // Should propagate block assert!(match observer_events_rx.recv() { Ok(ObserverEvent::BitcoinChainEvent(_)) => { @@ -1113,13 +1077,8 @@ fn test_bitcoin_chainhook_auto_deregister() { let _ = observer_commands_tx.send(ObserverCommand::PropagateBitcoinChainEvent(chain_event)); // Should signal that no hook were triggered - assert!(match observer_events_rx.recv() { - Ok(ObserverEvent::PredicatesTriggered(len)) => { - assert_eq!(len, 0); - true - } - _ => false, - }); + assert_predicates_triggered_event(&observer_events_rx, 0); + // Should signal that a hook was deregistered assert!(match observer_events_rx.recv() { Ok(ObserverEvent::PredicateDeregistered(deregistered_hook)) => { @@ -1130,27 +1089,237 @@ fn test_bitcoin_chainhook_auto_deregister() { }); // deregistering bitcoin chainhook should decrement the observer_metric's registered bitcoin hooks - assert_eq!( - 0, - observer_metrics_rw_lock - .read() - .unwrap() - .bitcoin - .registered_predicates - ); + assert_observer_metrics_bitcoin_registered_predicates(&observer_metrics_rw_lock, 0); // and increment the deregistered hooks + assert_observer_metrics_bitcoin_deregistered_predicates(&observer_metrics_rw_lock, 1); + + // Should propagate block + assert!(match observer_events_rx.recv() { + Ok(ObserverEvent::BitcoinChainEvent(_)) => { + true + } + _ => false, + }); + + let _ = observer_commands_tx.send(ObserverCommand::Terminate); + handle.join().expect("unable to terminate thread"); +} + +#[test] +fn test_bitcoin_chainhook_through_reorg() { + let (observer_commands_tx, observer_commands_rx) = channel(); + let (block_pre_processor_in_tx, block_pre_processor_in_rx) = crossbeam_channel::unbounded(); + let (block_pre_processor_out_tx, block_pre_processor_out_rx) = crossbeam_channel::unbounded(); + + let (observer_events_tx, observer_events_rx) = crossbeam_channel::unbounded(); + let observer_metrics_rw_lock = Arc::new(RwLock::new(ObserverMetrics::default())); + let observer_metrics_rw_lock_moved = observer_metrics_rw_lock.clone(); + + let empty_ctx = Context::empty(); + + let observer_sidecar = ObserverSidecar { + bitcoin_blocks_mutator: Some((block_pre_processor_in_tx, block_pre_processor_out_rx)), + bitcoin_chain_event_notifier: None, + }; + + let handle = std::thread::spawn(move || { + let (config, chainhook_store) = generate_test_config(); + let _ = hiro_system_kit::nestable_block_on(start_observer_commands_handler( + config, + chainhook_store, + observer_commands_rx, + Some(observer_events_tx), + None, + observer_metrics_rw_lock_moved, + Some(observer_sidecar), + Context::empty(), + )); + }); + + // The block pre-processor will simulate block augmentation with new informations, which should trigger + // registered predicates + let block_pre_processor_handle = std::thread::spawn(move || { + let mut cursor: u64 = 0; + while let Ok((mut blocks, _)) = block_pre_processor_in_rx.recv() { + for b in blocks.iter_mut() { + for (tx_index, tx) in b.block.transactions.iter_mut().enumerate() { + cursor += 1; + tx.metadata + .ordinal_operations + .push(OrdinalOperation::InscriptionRevealed( + OrdinalInscriptionRevealData { + content_bytes: format!("{cursor}"), + content_type: "".to_string(), + content_length: cursor as usize, + inscription_number: cursor as i64, + inscription_fee: cursor, + inscription_output_value: cursor, + inscription_id: format!("{cursor}"), + inscription_input_index: 0, + inscriber_address: None, + ordinal_number: cursor, + ordinal_block_height: b.block.block_identifier.index, + ordinal_offset: 0, + tx_index, + transfers_pre_inscription: cursor as u32, + satpoint_post_inscription: format!("{cursor}"), + curse_type: None, + }, + )) + } + } + let _ = block_pre_processor_out_tx.send(blocks); + } + }); + + let genesis = bitcoin_blocks::generate_test_bitcoin_block(0, 1, vec![], None); + let mut fork_pad = ForkScratchPad::new(); + let _ = fork_pad.process_header(genesis.get_header(), &empty_ctx); + + // Create and register a new chainhook (wallet_2 received some sats) + let _chainhook = + generate_and_register_new_ordinals_chainhook(&observer_commands_tx, &observer_events_rx, 1); + + // registering bitcoin chainhook should increment the observer_metric's registered bitcoin hooks assert_eq!( 1, observer_metrics_rw_lock .read() .unwrap() .bitcoin - .deregistered_predicates + .registered_predicates ); + // Simulate a block that does not include a trigger (wallet_1 to wallet_3) + let transactions = vec![generate_test_tx_bitcoin_p2pkh_transfer( + 0, + &accounts::wallet_1_btc_address(), + &accounts::wallet_3_btc_address(), + 3, + )]; + let block = bitcoin_blocks::generate_test_bitcoin_block(0, 2, transactions, None); + let _ = observer_commands_tx.send(ObserverCommand::CacheBitcoinBlock(block.clone())); + + let chain_event = fork_pad + .process_header(block.get_header(), &empty_ctx) + .unwrap() + .unwrap(); + let _ = observer_commands_tx.send(ObserverCommand::PropagateBitcoinChainEvent(chain_event)); + // Should signal that no hook were triggered + assert!(match observer_events_rx.recv() { + Ok(ObserverEvent::PredicatesTriggered(len)) => { + assert_eq!(len, 1); + true + } + Ok(event) => { + println!("Unexpected event: {:?}", event); + false + } + Err(e) => { + println!("Error: {:?}", e); + false + } + }); + + // 1) Should kick off predicate event + assert!(match observer_events_rx.recv() { + Ok(ObserverEvent::BitcoinPredicateTriggered(payload)) => { + assert_eq!(payload.apply.len(), 1); + assert_eq!(payload.apply[0].block.transactions.len(), 1); + true + } + _ => false, + }); + + // 2) Should kick off bitcoin chain event + assert!(match observer_events_rx.recv() { + Ok(ObserverEvent::BitcoinChainEvent((BitcoinChainEvent::ChainUpdatedWithBlocks(_), _))) => { + true + } + _ => false, + }); + + // Simulate a block that does include a trigger (wallet_1 to wallet_2) + let transactions = vec![generate_test_tx_bitcoin_p2pkh_transfer( + 0, + &accounts::wallet_1_btc_address(), + &accounts::wallet_2_btc_address(), + 3, + )]; + let block = bitcoin_blocks::generate_test_bitcoin_block(1, 2, transactions, None); + let _ = observer_commands_tx.send(ObserverCommand::CacheBitcoinBlock(block.clone())); + let chain_event = fork_pad + .process_header(block.get_header(), &empty_ctx) + .unwrap() + .unwrap(); + let _ = observer_commands_tx.send(ObserverCommand::PropagateBitcoinChainEvent(chain_event)); + + // Should signal that no hook were triggered + assert!(match observer_events_rx.recv() { + Ok(ObserverEvent::PredicatesTriggered(len)) => { + assert_eq!(len, 1); + true + } + _ => false, + }); + + assert!(match observer_events_rx.recv() { + Ok(ObserverEvent::BitcoinPredicateTriggered(payload)) => { + assert_eq!(payload.rollback.len(), 1); + assert_eq!(payload.rollback[0].block.transactions.len(), 1); + assert_eq!(payload.apply.len(), 1); + assert_eq!(payload.apply[0].block.transactions.len(), 1); + true + } + _ => false, + }); + + // Should propagate chain event + assert!(match observer_events_rx.recv() { + Ok(ObserverEvent::BitcoinChainEvent((BitcoinChainEvent::ChainUpdatedWithReorg(_), _))) => { + true + } + _ => false, + }); + + // Simulate a block that does include a trigger (wallet_1 to wallet_2) + let transactions = vec![generate_test_tx_bitcoin_p2pkh_transfer( + 0, + &accounts::wallet_1_btc_address(), + &accounts::wallet_2_btc_address(), + 3, + )]; + let block = bitcoin_blocks::generate_test_bitcoin_block(0, 3, transactions, None); + let _ = observer_commands_tx.send(ObserverCommand::CacheBitcoinBlock(block.clone())); + let chain_event = fork_pad + .process_header(block.get_header(), &empty_ctx) + .unwrap() + .unwrap(); + let _ = observer_commands_tx.send(ObserverCommand::PropagateBitcoinChainEvent(chain_event)); + + // Should signal that no hook were triggered + assert!(match observer_events_rx.recv() { + Ok(ObserverEvent::PredicatesTriggered(len)) => { + assert_eq!(len, 1); + true + } + _ => false, + }); + + assert!(match observer_events_rx.recv() { + Ok(ObserverEvent::BitcoinPredicateTriggered(payload)) => { + assert_eq!(payload.rollback.len(), 1); + assert_eq!(payload.rollback[0].block.transactions.len(), 1); + assert_eq!(payload.apply.len(), 2); + assert_eq!(payload.apply[0].block.transactions.len(), 1); + true + } + _ => false, + }); + // Should propagate block assert!(match observer_events_rx.recv() { - Ok(ObserverEvent::BitcoinChainEvent(_)) => { + Ok(ObserverEvent::BitcoinChainEvent((BitcoinChainEvent::ChainUpdatedWithReorg(_), _))) => { true } _ => false, @@ -1158,4 +1327,7 @@ fn test_bitcoin_chainhook_auto_deregister() { let _ = observer_commands_tx.send(ObserverCommand::Terminate); handle.join().expect("unable to terminate thread"); + block_pre_processor_handle + .join() + .expect("unable to terminate thread"); } diff --git a/components/chainhook-sdk/src/observer/zmq.rs b/components/chainhook-sdk/src/observer/zmq.rs new file mode 100644 index 000000000..30a50592f --- /dev/null +++ b/components/chainhook-sdk/src/observer/zmq.rs @@ -0,0 +1,155 @@ +use chainhook_types::BitcoinBlockSignaling; +use hiro_system_kit::slog; +use std::sync::mpsc::Sender; +use zmq::Socket; + +use crate::{ + indexer::{ + bitcoin::{build_http_client, download_and_parse_block_with_retry}, + fork_scratch_pad::ForkScratchPad, + }, + utils::Context, +}; +use std::collections::VecDeque; + +use super::{EventObserverConfig, ObserverCommand}; + +fn new_zmq_socket() -> Socket { + let context = zmq::Context::new(); + let socket = context.socket(zmq::SUB).unwrap(); + assert!(socket.set_subscribe(b"hashblock").is_ok()); + assert!(socket.set_rcvhwm(0).is_ok()); + // We override the OS default behavior: + assert!(socket.set_tcp_keepalive(1).is_ok()); + // The keepalive routine will wait for 5 minutes + assert!(socket.set_tcp_keepalive_idle(300).is_ok()); + // And then resend it every 60 seconds + assert!(socket.set_tcp_keepalive_intvl(60).is_ok()); + // 120 times + assert!(socket.set_tcp_keepalive_cnt(120).is_ok()); + socket +} + +pub async fn start_zeromq_runloop( + config: &EventObserverConfig, + observer_commands_tx: Sender, + ctx: &Context, +) { + let BitcoinBlockSignaling::ZeroMQ(ref bitcoind_zmq_url) = config.bitcoin_block_signaling else { + unreachable!() + }; + + let bitcoind_zmq_url = bitcoind_zmq_url.clone(); + let bitcoin_config = config.get_bitcoin_config(); + let http_client = build_http_client(); + + ctx.try_log(|logger| { + slog::info!( + logger, + "Waiting for ZMQ connection acknowledgment from bitcoind" + ) + }); + + let mut socket = new_zmq_socket(); + assert!(socket.connect(&bitcoind_zmq_url).is_ok()); + ctx.try_log(|logger| slog::info!(logger, "Waiting for ZMQ messages from bitcoind")); + + let mut bitcoin_blocks_pool = ForkScratchPad::new(); + + loop { + let msg = match socket.recv_multipart(0) { + Ok(msg) => msg, + Err(e) => { + ctx.try_log(|logger| { + slog::error!(logger, "Unable to receive ZMQ message: {}", e.to_string()) + }); + socket = new_zmq_socket(); + assert!(socket.connect(&bitcoind_zmq_url).is_ok()); + continue; + } + }; + let (topic, data, _sequence) = (&msg[0], &msg[1], &msg[2]); + + if !topic.eq(b"hashblock") { + ctx.try_log(|logger| slog::error!(logger, "Topic not supported",)); + continue; + } + + let block_hash = hex::encode(data); + + ctx.try_log(|logger| slog::info!(logger, "Bitcoin block hash announced #{block_hash}",)); + + let mut block_hashes: VecDeque = VecDeque::new(); + block_hashes.push_front(block_hash); + + while let Some(block_hash) = block_hashes.pop_front() { + let block = match download_and_parse_block_with_retry( + &http_client, + &block_hash, + &bitcoin_config, + &ctx, + ) + .await + { + Ok(block) => block, + Err(e) => { + ctx.try_log(|logger| { + slog::warn!( + logger, + "unable to download_and_parse_block: {}", + e.to_string() + ) + }); + continue; + } + }; + + let header = block.get_block_header(); + ctx.try_log(|logger| { + slog::info!( + logger, + "Bitcoin block #{} dispatched for processing", + block.height + ) + }); + + let _ = observer_commands_tx.send(ObserverCommand::ProcessBitcoinBlock(block)); + + if bitcoin_blocks_pool.can_process_header(&header) { + match bitcoin_blocks_pool.process_header(header, &ctx) { + Ok(Some(event)) => { + let _ = observer_commands_tx + .send(ObserverCommand::PropagateBitcoinChainEvent(event)); + } + Err(e) => { + ctx.try_log(|logger| { + slog::warn!(logger, "Unable to append block: {:?}", e) + }); + } + Ok(None) => { + ctx.try_log(|logger| slog::warn!(logger, "Unable to append block")); + } + } + } else { + // Handle a behaviour specific to ZMQ usage in bitcoind. + // Considering a simple re-org: + // A (1) - B1 (2) - C1 (3) + // \ B2 (4) - C2 (5) - D2 (6) + // When D2 is being discovered (making A -> B2 -> C2 -> D2 the new canonical fork) + // it looks like ZMQ is only publishing D2. + // Without additional operation, we end up with a block that we can't append. + let parent_block_hash = header + .parent_block_identifier + .get_hash_bytes_str() + .to_string(); + ctx.try_log(|logger| { + slog::info!( + logger, + "Possible re-org detected, retrieving parent block {parent_block_hash}" + ) + }); + block_hashes.push_front(parent_block_hash); + } + } + } +} diff --git a/components/chainhook-sdk/src/utils/mod.rs b/components/chainhook-sdk/src/utils/mod.rs index c14e695ec..f6da8ef8c 100644 --- a/components/chainhook-sdk/src/utils/mod.rs +++ b/components/chainhook-sdk/src/utils/mod.rs @@ -149,57 +149,56 @@ pub async fn send_request( attempts_max: u16, attempts_interval_sec: u16, ctx: &Context, -) -> Result<(), ()> { +) -> Result<(), String> { let mut retry = 0; loop { let request_builder = match request_builder.try_clone() { Some(rb) => rb, None => { ctx.try_log(|logger| slog::warn!(logger, "unable to clone request builder")); - return Err(()); + return Err(format!( + "internal server error: unable to clone request builder" + )); } }; - match request_builder.send().await { + let err_msg = match request_builder.send().await { Ok(res) => { if res.status().is_success() { ctx.try_log(|logger| slog::info!(logger, "Trigger {} successful", res.url())); return Ok(()); } else { retry += 1; - ctx.try_log(|logger| { - slog::warn!( - logger, - "Trigger {} failed with status {}", - res.url(), - res.status() - ) - }); + let err_msg = + format!("Trigger {} failed with status {}", res.url(), res.status()); + ctx.try_log(|logger| slog::warn!(logger, "{}", err_msg)); + err_msg } } Err(e) => { retry += 1; - ctx.try_log(|logger| { - slog::warn!(logger, "unable to send request {}", e.to_string()) - }); + let err_msg = format!("unable to send request {}", e.to_string()); + ctx.try_log(|logger| slog::warn!(logger, "{}", err_msg)); + err_msg } - } + }; if retry >= attempts_max { - ctx.try_log(|logger| { - slog::error!(logger, "unable to send request after several retries") - }); - return Err(()); + let msg: String = format!( + "unable to send request after several retries. most recent error: {}", + err_msg + ); + ctx.try_log(|logger| slog::warn!(logger, "{}", msg)); + return Err(msg); } std::thread::sleep(std::time::Duration::from_secs(attempts_interval_sec.into())); } } -pub fn file_append(path: String, bytes: Vec, ctx: &Context) -> Result<(), ()> { +pub fn file_append(path: String, bytes: Vec, ctx: &Context) -> Result<(), String> { let mut file_path = match std::env::current_dir() { Err(e) => { - ctx.try_log(|logger| { - slog::warn!(logger, "unable to retrieve current_dir {}", e.to_string()) - }); - return Err(()); + let msg = format!("unable to retrieve current_dir {}", e.to_string()); + ctx.try_log(|logger| slog::warn!(logger, "{}", msg)); + return Err(msg); } Ok(p) => p, }; @@ -210,15 +209,13 @@ pub fn file_append(path: String, bytes: Vec, ctx: &Context) -> Result<(), () let _ = file.write_all(&bytes); } Err(e) => { - ctx.try_log(|logger| { - slog::warn!( - logger, - "unable to create file {}: {}", - file_path.display(), - e.to_string() - ) - }); - return Err(()); + let msg = format!( + "unable to create file {}: {}", + file_path.display(), + e.to_string() + ); + ctx.try_log(|logger| slog::warn!(logger, "{}", msg)); + return Err(msg); } } } @@ -230,8 +227,9 @@ pub fn file_append(path: String, bytes: Vec, ctx: &Context) -> Result<(), () .open(file_path) { Err(e) => { - ctx.try_log(|logger| slog::warn!(logger, "unable to open file {}", e.to_string())); - return Err(()); + let msg = format!("unable to open file {}", e.to_string()); + ctx.try_log(|logger| slog::warn!(logger, "{}", msg)); + return Err(msg); } Ok(p) => p, }; @@ -239,21 +237,17 @@ pub fn file_append(path: String, bytes: Vec, ctx: &Context) -> Result<(), () let utf8 = match String::from_utf8(bytes) { Ok(string) => string, Err(e) => { - ctx.try_log(|logger| { - slog::warn!( - logger, - "unable serialize bytes as utf8 string {}", - e.to_string() - ) - }); - return Err(()); + let msg = format!("unable serialize bytes as utf8 string {}", e.to_string()); + ctx.try_log(|logger| slog::warn!(logger, "{}", msg)); + return Err(msg); } }; if let Err(e) = writeln!(file, "{}", utf8) { - ctx.try_log(|logger| slog::warn!(logger, "unable to open file {}", e.to_string())); + let msg = format!("unable to open file {}", e.to_string()); + ctx.try_log(|logger| slog::warn!(logger, "{}", msg)); eprintln!("Couldn't write to file: {}", e); - return Err(()); + return Err(msg); } Ok(()) diff --git a/components/chainhook-types-rs/Cargo.toml b/components/chainhook-types-rs/Cargo.toml index 409f36a1a..e93c82138 100644 --- a/components/chainhook-types-rs/Cargo.toml +++ b/components/chainhook-types-rs/Cargo.toml @@ -2,7 +2,7 @@ name = "chainhook-types" description = "Bitcoin and Stacks data schemas, based on the Rosetta specification" license = "MIT" -version = "1.0.9" +version = "1.1.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/components/chainhook-types-rs/src/contract_interface.rs b/components/chainhook-types-rs/src/contract_interface.rs new file mode 100644 index 000000000..07aeb827b --- /dev/null +++ b/components/chainhook-types-rs/src/contract_interface.rs @@ -0,0 +1,171 @@ +// NOTE: This module is a very slightly simplified version of the +// `clarity-vm` repository's [ContractInterface](https://github.com/stacks-network/stacks-blockchain/blob/eca1cfe81f0c0989ebd3e53c32e3e5d70ed83757/clarity/src/vm/analysis/contract_interface_builder/mod.rs#L368) type. +// We've copied it here rather than using `clarity-vm` as a dependency to avoid circular dependencies. + +use std::{fmt, str::FromStr}; + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct ContractInterface { + pub functions: Vec, + pub variables: Vec, + pub maps: Vec, + pub fungible_tokens: Vec, + pub non_fungible_tokens: Vec, + pub epoch: String, + pub clarity_version: String, +} + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct ContractInterfaceFunction { + pub name: String, + pub access: ContractInterfaceFunctionAccess, + pub args: Vec, + pub outputs: ContractInterfaceFunctionOutput, +} +#[allow(non_camel_case_types)] +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub enum ContractInterfaceFunctionAccess { + private, + public, + read_only, +} +#[allow(non_camel_case_types)] +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub enum ContractInterfaceVariableAccess { + constant, + variable, +} +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct ContractInterfaceFunctionArg { + pub name: String, + #[serde(rename = "type")] + pub type_f: ContractInterfaceAtomType, +} + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct ContractInterfaceFunctionOutput { + #[serde(rename = "type")] + pub type_f: ContractInterfaceAtomType, +} + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct ContractInterfaceVariable { + pub name: String, + #[serde(rename = "type")] + pub type_f: ContractInterfaceAtomType, + pub access: ContractInterfaceVariableAccess, +} + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct ContractInterfaceMap { + pub name: String, + pub key: ContractInterfaceAtomType, + pub value: ContractInterfaceAtomType, +} + +#[allow(non_camel_case_types)] +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub enum ContractInterfaceAtomType { + none, + int128, + uint128, + bool, + principal, + buffer { + length: u32, + }, + #[serde(rename = "string-utf8")] + string_utf8 { + length: u32, + }, + #[serde(rename = "string-ascii")] + string_ascii { + length: u32, + }, + tuple(Vec), + optional(Box), + response { + ok: Box, + error: Box, + }, + list { + #[serde(rename = "type")] + type_f: Box, + length: u32, + }, + trait_reference, +} + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct ContractInterfaceTupleEntryType { + pub name: String, + #[serde(rename = "type")] + pub type_f: ContractInterfaceAtomType, +} + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct ContractInterfaceFungibleTokens { + pub name: String, +} + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct ContractInterfaceNonFungibleTokens { + pub name: String, + #[serde(rename = "type")] + pub type_f: ContractInterfaceAtomType, +} +#[derive(Serialize, Deserialize, Clone, Copy, Debug, PartialEq, PartialOrd)] +pub enum ClarityVersion { + Clarity1, + Clarity2, +} + +impl fmt::Display for ClarityVersion { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + ClarityVersion::Clarity1 => write!(f, "Clarity 1"), + ClarityVersion::Clarity2 => write!(f, "Clarity 2"), + } + } +} + +impl FromStr for ClarityVersion { + type Err = String; + fn from_str(version: &str) -> Result { + let s = version.to_string().to_lowercase(); + if s == "clarity1" { + Ok(ClarityVersion::Clarity1) + } else if s == "clarity2" { + Ok(ClarityVersion::Clarity2) + } else { + Err(format!( + "Invalid clarity version. Valid versions are: Clarity1, Clarity2." + )) + } + } +} +#[repr(u32)] +#[derive(Debug, Clone, Eq, PartialEq, PartialOrd, Ord, Hash, Copy, Serialize, Deserialize)] +pub enum StacksEpochId { + Epoch10 = 0x01000, + Epoch20 = 0x02000, + Epoch2_05 = 0x02005, + Epoch21 = 0x0200a, + Epoch22 = 0x0200f, + Epoch23 = 0x02014, + Epoch24 = 0x02019, +} + +impl std::fmt::Display for StacksEpochId { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + StacksEpochId::Epoch10 => write!(f, "1.0"), + StacksEpochId::Epoch20 => write!(f, "2.0"), + StacksEpochId::Epoch2_05 => write!(f, "2.05"), + StacksEpochId::Epoch21 => write!(f, "2.1"), + StacksEpochId::Epoch22 => write!(f, "2.2"), + StacksEpochId::Epoch23 => write!(f, "2.3"), + StacksEpochId::Epoch24 => write!(f, "2.4"), + } + } +} diff --git a/components/chainhook-types-rs/src/lib.rs b/components/chainhook-types-rs/src/lib.rs index b4baf2a3d..cd8ef7b02 100644 --- a/components/chainhook-types-rs/src/lib.rs +++ b/components/chainhook-types-rs/src/lib.rs @@ -4,10 +4,12 @@ extern crate serde; extern crate serde_derive; pub mod bitcoin; +mod contract_interface; mod events; mod processors; mod rosetta; +pub use contract_interface::*; pub use events::*; pub use processors::*; pub use rosetta::*; diff --git a/components/chainhook-types-rs/src/rosetta.rs b/components/chainhook-types-rs/src/rosetta.rs index a90fe92f7..8e2f2b2fb 100644 --- a/components/chainhook-types-rs/src/rosetta.rs +++ b/components/chainhook-types-rs/src/rosetta.rs @@ -1,4 +1,5 @@ use super::bitcoin::{TxIn, TxOut}; +use crate::contract_interface::ContractInterface; use crate::events::*; use schemars::JsonSchema; use std::cmp::Ordering; @@ -14,6 +15,16 @@ pub struct BlockIdentifier { pub hash: String, } +impl BlockIdentifier { + pub fn get_hash_bytes_str(&self) -> &str { + &self.hash[2..] + } + + pub fn get_hash_bytes(&self) -> Vec { + hex::decode(&self.get_hash_bytes_str()).unwrap() + } +} + impl Display for BlockIdentifier { fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { write!( @@ -209,6 +220,8 @@ pub struct StacksTransactionMetadata { pub execution_cost: Option, pub position: StacksTransactionPosition, pub proof: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub contract_abi: Option, } /// TODO @@ -305,7 +318,6 @@ pub struct BitcoinTransactionMetadata { #[serde(rename_all = "snake_case")] pub enum OrdinalOperation { InscriptionRevealed(OrdinalInscriptionRevealData), - CursedInscriptionRevealed(OrdinalInscriptionRevealData), InscriptionTransferred(OrdinalInscriptionTransferData), } @@ -325,6 +337,7 @@ pub enum OrdinalInscriptionCurseType { Batch, P2wsh, Reinscription, + Unknown, } #[derive(Debug, Clone, PartialEq, Deserialize, Serialize)] @@ -884,13 +897,13 @@ impl BitcoinNetwork { } } -#[derive(Deserialize, Debug, Clone)] +#[derive(Deserialize, Debug, Clone, PartialEq)] pub enum BitcoinBlockSignaling { Stacks(StacksNodeConfig), ZeroMQ(String), } -#[derive(Deserialize, Debug, Clone)] +#[derive(Deserialize, Debug, Clone, PartialEq)] pub struct StacksNodeConfig { pub rpc_url: String, pub ingestion_port: u16, diff --git a/components/client/typescript/src/schemas/bitcoin/payload.ts b/components/client/typescript/src/schemas/bitcoin/payload.ts index bec316844..5c524f2ad 100644 --- a/components/client/typescript/src/schemas/bitcoin/payload.ts +++ b/components/client/typescript/src/schemas/bitcoin/payload.ts @@ -21,6 +21,7 @@ export const BitcoinInscriptionRevealedSchema = Type.Object({ ordinal_offset: Type.Integer(), satpoint_post_inscription: Type.String(), transfers_pre_inscription: Type.Integer(), + curse_type: Nullable(Type.Any()), tx_index: Type.Integer(), }); export type BitcoinInscriptionRevealed = Static; @@ -42,30 +43,7 @@ export const BitcoinInscriptionTransferredSchema = Type.Object({ }); export type BitcoinInscriptionTransferred = Static; -export const BitcoinCursedInscriptionRevealedSchema = Type.Object({ - content_bytes: Type.String(), - content_type: Type.String(), - content_length: Type.Integer(), - inscription_number: Type.Integer(), - inscription_fee: Type.Integer(), - inscription_id: Type.String(), - inscription_output_value: Type.Integer(), - inscription_input_index: Type.Integer(), - inscriber_address: Nullable(Type.String()), - ordinal_number: Type.Integer(), - ordinal_block_height: Type.Integer(), - ordinal_offset: Type.Integer(), - satpoint_post_inscription: Type.String(), - transfers_pre_inscription: Type.Integer(), - curse_type: Nullable(Type.Any()), - tx_index: Type.Integer(), -}); -export type BitcoinCursedInscriptionRevealed = Static< - typeof BitcoinCursedInscriptionRevealedSchema ->; - export const BitcoinOrdinalOperationSchema = Type.Object({ - cursed_inscription_revealed: Type.Optional(BitcoinCursedInscriptionRevealedSchema), inscription_revealed: Type.Optional(BitcoinInscriptionRevealedSchema), inscription_transferred: Type.Optional(BitcoinInscriptionTransferredSchema), }); diff --git a/dockerfiles/components/chainhook-node.dockerfile b/dockerfiles/components/chainhook-node.dockerfile index 5fbd1db8c..7f50d74f4 100644 --- a/dockerfiles/components/chainhook-node.dockerfile +++ b/dockerfiles/components/chainhook-node.dockerfile @@ -4,7 +4,7 @@ WORKDIR /src RUN apt update && apt install -y ca-certificates pkg-config libssl-dev libclang-11-dev -RUN rustup update 1.67.0 && rustup default 1.67.0 +RUN rustup update 1.70.0 && rustup default 1.70.0 COPY ./components/chainhook-cli /src/components/chainhook-cli diff --git a/docs/chainhook-openapi.json b/docs/chainhook-openapi.json index d09ef8f19..2ba909c65 100644 --- a/docs/chainhook-openapi.json +++ b/docs/chainhook-openapi.json @@ -2,7 +2,7 @@ "openapi": "3.0.0", "info": { "title": "chainhook", - "version": "0.17.0" + "version": "1.1.1" }, "paths": { "/ping": { @@ -521,6 +521,18 @@ } }, "additionalProperties": false + }, + { + "type": "object", + "required": [ + "descriptor" + ], + "properties": { + "descriptor": { + "$ref": "#/components/schemas/DescriptorMatchingRule" + } + }, + "additionalProperties": false } ], "required": [ @@ -726,6 +738,29 @@ } ] }, + "DescriptorMatchingRule": { + "type": "object", + "required": [ + "expression" + ], + "properties": { + "expression": { + "type": "string" + }, + "range": { + "default": null, + "type": "array", + "items": { + "type": "integer", + "format": "uint32", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2, + "nullable": true + } + } + }, "HookAction": { "oneOf": [ { @@ -837,6 +872,10 @@ "type": "boolean", "nullable": true }, + "include_contract_abi": { + "type": "boolean", + "nullable": true + }, "if_this": { "$ref": "#/components/schemas/StacksPredicate" }, @@ -997,9 +1036,39 @@ }, { "type": "object", + "anyOf": [ + { + "type": "object", + "required": [ + "contains", + "contract_identifier" + ], + "properties": { + "contract_identifier": { + "type": "string" + }, + "contains": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "contract_identifier", + "matches_regex" + ], + "properties": { + "contract_identifier": { + "type": "string" + }, + "matches_regex": { + "type": "string" + } + } + } + ], "required": [ - "contains", - "contract_identifier", "scope" ], "properties": { @@ -1008,12 +1077,6 @@ "enum": [ "print_event" ] - }, - "contract_identifier": { - "type": "string" - }, - "contains": { - "type": "string" } } }, diff --git a/docs/faq.md b/docs/faq.md index f97dfe3a0..778b4203f 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -1,8 +1,8 @@ --- -title: FAQ's +title: FAQs --- -# FAQ's +# FAQs #### **Can Chainhook target both Bitcoin and Stacks?** diff --git a/docs/getting-started.md b/docs/getting-started.md index 94ca44690..0f49ae187 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -9,7 +9,7 @@ Chainhook is a transaction indexing engine for Stacks and Bitcoin. It can extrac Chainhook can extract data from the Bitcoin and the Stacks blockchains using predicates (sometimes called `chainhooks`). A predicate specifies a rule applied as a filtering function on every block transaction. - **Chainhook as a development tool** has a few convenient features designed to make developers as productive as possible by allowing them to iterate quickly in their local environments. -- **Chainhook as a service** can be used to evaluate new Bitcoin and/or Stacks blocks against your predicates. You can also dynamically register new predicates by [enabling predicates registration API](./overview.md#then-that-predicate-design) +- **Chainhook as a service** can be used to evaluate new Bitcoin and/or Stacks blocks against your predicates. You can also dynamically register new predicates by [enabling predicates registration API](./overview.md#then-that-predicate-design). ## Install Chainhook from the Source @@ -21,13 +21,13 @@ Chainhook can be installed from the source by following the steps below: git clone https://github.com/hirosystems/chainhook.git ``` -2. Navigate to the root directory of the cloned repo +2. Navigate to the root directory of the cloned repo: ```bash cd chainhook ``` -3. Run cargo target to install chainhook +3. Run cargo target to install chainhook: ```bash cargo chainhook-install diff --git a/docs/how-to-guides/how-to-run-chainhook-as-a-service-using-bitcoind.md b/docs/how-to-guides/how-to-run-chainhook-as-a-service-using-bitcoind.md index b4c9a9f5b..47b0cbc09 100644 --- a/docs/how-to-guides/how-to-run-chainhook-as-a-service-using-bitcoind.md +++ b/docs/how-to-guides/how-to-run-chainhook-as-a-service-using-bitcoind.md @@ -1,32 +1,35 @@ --- -title: Run Chainhook as a Service using Bitcoind +title: Run Chainhook as a Service Using Bitcoind --- -You can run Chainhook as a service to evaluate Bitcoin against your predicates. You can also dynamically register new predicates by enabling predicates registration API. +You can run Chainhook as a service to evaluate your `if_this / then_that` predicates against the Bitcoin blockchain, delivering data—either file appendations or HTTP POST requests to a server you designate—for your application's use case. You can also dynamically register new predicates as the service is running by enabling the predicates registration API. ## Prerequisites ### Setting up a Bitcoin Node -Install bitcoind using [this](https://bitcoin.org/en/bitcoin-core/) link. Ingesting blocks using bitcoind happens through zeromq, an embedded networking library in the bitcoind installation package. +The Bitcoin Core daemon (bitcoind) is a program that implements the Bitcoin protocol for remote procedure call (RPC) use. Chainhook can be set up to interact with the Bitcoin chainstate through bitcoind's ZeroMQ interface, its embedded networking library, passing raw blockchain data to be evaluated for relevant events. -Bitcoind installation will download binaries in a zip format, `bitcoin-22.0-osx64.tar.gz`. You can extract the zip file to view the folders. Expand the `bin` folder to see the bitcoind executable files. - -- Navigate to your project folder, create a new file, and rename it to `bitcoin.conf` on your local machine. Copy the below configuration to the `bitcoin.conf` file. -- Get the downloaded path of the bitcoind from the [prerequisites section](#prerequisites) and use it in the `datadir` configuration below. -- Set a username of your choice for bitcoind and use it in the `rpcuser` configuration below. -- Set a password of your choice for bitcoind and use it in the `rpcpassword` configuration below. +This guide is written to work with the latest Bitcoin Core software containing bitcoind, [Bitcoin Core 25.0](https://bitcoincore.org/bin/bitcoin-core-25.0/). > **_NOTE:_** > -> Make a note of the `rpcuser`, `rpcpassword` and `rpcport` values to use them later in the chainhook configuration. +> While bitcoind can and will start syncing a Bitcoin node, customizing this node to your use cases beyond supporting a Chainhook is out of scope for this guide. See the Bitcoin wiki for ["Running Bitcoin"](https://en.bitcoin.it/wiki/Running_Bitcoin) or bitcoin.org's [Running A Full Node guide](https://bitcoin.org/en/full-node). + +- Make note of the path of your `bitcoind` executable (located within the `bin` directory of the `bitcoin-25.0` folder you downloaded above appropriate to your operating system). +- Navigate to your project folder where your Chainhook node will reside, create a new file, and rename it to `bitcoin.conf`. Copy the configuration below to this `bitcoin.conf` file. +- Find and copy your Bitcoin data directory and paste to the `datadir` field in the `bitcoin.conf` file below. Either copy the default path (see [list of default directories by operating system](https://en.bitcoin.it/wiki/Data_directory)) or copy the custom path you set for your Bitcoin data. +- Set a username of your choice for bitcoind and use it in the `rpcuser` configuration below (`devnet` is a default). +- Set a password of your choice for bitcoind and use it in the `rpcpassword` configuration below (`devnet` is a default). ```conf -datadir= +# Bitcoin Core Configuration + +datadir=/path/to/bitcoin/directory/ # Path to Bitcoin directory server=1 -rpcuser="bitcoind_username" # You can set the username here -rpcpassword="bitcoind_password" # You can set the password here -rpcport=8332 # You can set your localhost port number here +rpcuser=devnet +rpcpassword=devnet +rpcport=8332 rpcallowip=0.0.0.0/0 rpcallowip=::/0 txindex=1 @@ -46,49 +49,60 @@ dbcache=4096 zmqpubhashblock=tcp://0.0.0.0:18543 ``` -Now that you have `bitcoin.conf` file ready with the bitcoind configurations, you can run the bitcoind node. -In the command below, use the path to your `bitcoin.conf` file from your machine and run the command in the terminal. - > **_NOTE:_** > -> The below command is a startup process that might take a few hours to run. +> The below command is a startup process that, if this is your first time syncing a node, might take a few hours to a few days to run. Alternatively, if the directory pointed to in the `datadir` field above contains bitcoin blockchain data, syncing will resume. + +Now that you have the `bitcoin.conf` file ready with the bitcoind configurations, you can run the bitcoind node. The command takes the form `path/to/bitcoind -conf=path/to/bitcoin.conf`, for example: ```console -./bitcoind -conf=/bitcoin.conf +/Volumes/SSD/bitcoin-25.0/bin/bitcoind -conf=/Volumes/SSD/project/Chainhook/bitcoin.conf ``` -Once the above command runs, you will see `zmq_url` entries in the output, enabling zeromq. +Once the above command runs, you will see `zmq_url` entries in the console's stdout, displaying ZeroMQ logs of your bitcoin node. ### Configure Chainhook -In this section, you will configure chainhook to match the network configurations with the bitcoin config file. First, [install the latest version of chainhook](../getting-started.md#install-chainhook-from-source). +In this section, you will configure Chainhook to match the network configurations with the bitcoin config file. First, [install the latest version of Chainhook](../getting-started.md#install-chainhook-from-source). Next, you will generate a `Chainhook.toml` file to connect Chainhook with your bitcoind node. Navigate to the directory where you want to generate the `Chainhook.toml` file and use the following command in your terminal: ```console -chainhook config generate --testnet +chainhook config generate --mainnet ``` -The following `Chainhook.toml` file should be generated: +Several network parameters in the generated `Chainhook.toml` configuration file need to match those in the `bitcoin.conf` file created earlier in the [Setting up a Bitcoin Node](#setting-up-a-bitcoin-node) section. Please update the following parameters accordingly: + +1. Update `bitcoind_rpc_username` with the username set for `rpcuser` in `bitcoin.conf`. +2. Update `bitcoind_rpc_password` with the password set for `rpcpassword` in `bitcoin.conf`. +3. Update `bitcoind_rpc_url` with the same host and port used for `rpcport` in `bitcoin.conf`. + +Additionally, if you want to receive events from the configured Bitcoin node, substitute `stacks_node_rpc_url` with `bitcoind_zmq_url`, as follows: ```toml [storage] working_dir = "cache" -# The Http Api allows you to register/deregister -# dynamically predicates. -# Disable by default. -# -[http_api] -http_port = 20456 -database_uri = "redis://localhost:6379/" +# The Http Api allows you to register / deregister +# predicates dynamically. +# This is disabled by default. + +# [http_api] +# http_port = 20456 +# database_uri = "redis://localhost:6379/" [network] -mode = "testnet" -bitcoind_rpc_url = "http://localhost:8332" # Must match the rpcport in the bitcoin.conf -bitcoind_rpc_username = "" # Must match the rpcuser in the bitcoin.conf -bitcoind_rpc_password = "" # Must match the rpcpassword in the bitcoin.conf -stacks_node_rpc_url = "http://localhost:20443" +mode = "mainnet" +bitcoind_rpc_url = "http://localhost:8332" +bitcoind_rpc_username = "devnet" +bitcoind_rpc_password = "devnet" +# Bitcoin block events can be received by Chainhook +# either through a Bitcoin node's ZeroMQ interface, +# or through the Stacks node. The Stacks node is +# used by default: +# stacks_node_rpc_url = "http://localhost:20443" +# but zmq can be used instead: +bitcoind_zmq_url = "tcp://0.0.0.0:18543" [limits] max_number_of_bitcoin_predicates = 100 @@ -101,227 +115,259 @@ max_caching_memory_size_mb = 32000 [[event_source]] tsv_file_url = "https://archive.hiro.so/mainnet/stacks-blockchain-api/mainnet-stacks-blockchain-api-latest" - ``` -In the `Chainhook.toml` file that gets generated, you'll need to match the network parameters to the `bitcoin.config` that was generated earlier in [this](#setting-up-a-bitcoin-node) section to allow Chainhook to connect to the bitcoin layer. - -The Bitcoin node is exposing the rpc endpoints. To protect the endpoints, we are using rpc username and password fields. To run Chainhook as a service using Bitcoin, you must match the rpc endpoints username, password, and network ports. - -As such, some configurations must match Chainhook and the bitcoind node. In the `Chainhook.toml`, update the following network parameters to match the `bitcoin.conf`: +Here is a table of the relevant parameters this guide changes in our configuration files. -| bitcoin.conf | Chainhook.toml | -| ----------- | ----------- | -| rpcuser | bitcoind_rpc_username | -| rpcpassword | bitcoind_rpc_password | -| rpcport | bitcoind_rpc_url | -| zmqpubhashblock | bitcoind_zmq_url | - -In the `Chainhook.toml` file, - -- Update the `bitcoind_rpc_username` to use the username set for `rpcuser` earlier. -- Update the `bitcoind_rpc_password` to use the password set for `rpcpassword` earlier. -- Update the `bitcoind_rpc_url` to use the same host and port for the `rpcport` earlier. -- Next, update the `bitcoind_zmq_url` to use the same host and port for the `zmqpubhashblock` that was set earlier. +| bitcoin.conf | Chainhook.toml | +| --------------- | --------------------- | +| rpcuser | bitcoind_rpc_username | +| rpcpassword | bitcoind_rpc_password | +| rpcport | bitcoind_rpc_url | +| zmqpubhashblock | bitcoind_zmq_url | ## Scan blockchain based on predicates -Now that your bitcoind and Chainhook configurations are done, you can scan your blocks by defining your [predicates](../overview.md#if-this-predicate-design). This section helps you with an example JSON file to scan a range of blocks in the blockchain and render the results. To understand the supported predicates for Bitcoin, refer to [how to use chainhooks with bitcoin](how-to-use-chainhooks-with-bitcoin.md). - -The following are the two examples to walk you through `file_append` and `http_post` `then-that` predicate designs. - -Example 1 uses the `ordinals.json` file to scan the predicates and render results using `file_append`. -Example 2 uses the `ordinals_protocol.json` to scan the predicates and render results using `http_post`. +Now that your bitcoind and Chainhook configurations are complete, you can define the Chainhook [predicates](../overview.md#if-this-predicate-design) you would like to scan against bitcoin blocks. These predicates are where you specify the kind of blockchain events that trigger Chainhook to deliver a result (either a file appendation or an HTTP POST request). This section helps you with an example JSON file to scan a range of blocks in the blockchain to trigger results. To understand the supported predicates for Bitcoin, refer to [how to use chainhooks with bitcoin](how-to-use-chainhooks-with-bitcoin.md). -You can choose between the following examples to scan the predicates. +The following is an example to walk you through an `if_this / then_that` predicate design that appends event payloads to the configured file destination. -### Example 1 +### Example 1 - `file_append` -Run the following command in your terminal to generate a sample JSON file with predicates. +To generate a sample JSON file with predicates, execute the following command in your terminal: ```console -chainhook predicates new ordinals.json --bitcoin +chainhook predicates new stacking-pool.json --bitcoin ``` -A JSON file `ordinals.json` is generated. +Replace the contents of the `stacking-pool.json` file with the following: ```json { - "uuid": "1", - "name": "Hello Ordinals", - "chain": "bitcoin", - "version": 1, - "networks": { - "testnet": { - "start_block": 777534, - "end_block": 777540, - "if_this": { - "scope": "ordinals_protocol", - "operation": "inscription_feed" - }, - "then_that": { - "file_append": { - "path": "inscription_feed.txt" - } - } + "chain": "bitcoin", + "uuid": "1", + "name": "Stacking Pool", + "version": 1, + "networks": { + "mainnet": { + "start_block": 801500, + "end_block": 802000, + "if_this": { + "scope": "outputs", + "p2wpkh": { + "equals": "bc1qs0kkdpsrzh3ngqgth7mkavlwlzr7lms2zv3wxe" } - + }, + "then_that": { + "file_append": { + "path": "bitcoin-transactions.txt" + } + } } + } } ``` +This example demonstrates scanning a portion of the Bitcoin blockchain to capture specific outputs from a Bitcoin address associated with a Stacking pool, [Friedgar Pool](https://pool.friedger.de/). + > **_NOTE:_** > > You can get blockchain height and current block by referring to https://explorer.hiro.so/blocks?chain=mainnet -Now, use the following command to scan the blocks based on the predicates defined in the `ordinals.json` file. +Now, use the following command to scan the blocks based on the predicates defined in the `stacking-pool.json` file. ```console -chainhook predicates scan ordinals.json --config-path=./Chainhook.toml +chainhook predicates scan stacking-pool.json --config-path=./Chainhook.toml ``` -The output of the above command will be a text file `inscription_feed.txt` generated based on the predicate definition. - -> **_TIP:_** -> -> To optimize your experience with scanning, the following are a few knobs you can play with: -> - Use of adequate values for `start_block` and `end_block` in predicates will drastically improve the performance. -> - Reducing the number of network hops between the Chainhook and the bitcoind processes can also help, so your network setup can play a major role in performance. +The output of the above command will be a text file `bitcoin-transactions.txt` generated based on the predicate definition. -### Example 2 +### Example 2 - `http_post` -Run the following command to generate a sample JSON file with predicates in your terminal. +Let's generate another sample predicate, this time we are going to send the payload to an API endpoint: ```console -chainhook predicates new ordinals_protocol.json --bitcoin +chainhook predicates new stacking-pool-api.json --bitcoin ``` -A JSON file `ordinals_protocol.json` is generated. You can now edit the JSON based on the available predicates for Bitcoin. To understand the available predicates, refer to [how to use chainhooks with bitcoin](how-to-use-chainhooks-with-bitcoin.md). +Replace the contents of the `stacking-pool-api.json` file with the following: ```json { - "uuid": "1", - "name": "Hello Ordinals", - "chain": "bitcoin", - "version": 1, - "networks": { - "testnet": { - "if_this": { - "scope": "ordinals_protocol", - "operation": "inscription_feed" - }, - "then_that": { - "http_post": { - "url": "http://localhost:3000/events", - "authorization_header": "123904" - } - }, - "start_block": 777534, + "chain": "bitcoin", + "uuid": "2", + "name": "Stacking Pool (API)", + "version": 1, + "networks": { + "mainnet": { + "start_block": 801500, + "if_this": { + "scope": "outputs", + "p2wpkh": { + "equals": "bc1qs0kkdpsrzh3ngqgth7mkavlwlzr7lms2zv3wxe" } - + }, + "then_that": { + "http_post": { + "url": "http://localhost:3000/events", + "authorization_header": "12345" + } + } } + } } ``` > **_NOTE:_** > -> The `start_block` is the required field to use the `http_post` `then-that` predicate. +> The `start_block` is a required field when using the `http_post` `then_that` predicate. -Now, use the following command to scan the blocks based on the predicates defined in the `ordinals_protocol.json` file. +Once you are finished setting up your endpoint, use the following command to scan the blocks based on the predicates defined in the `stacking-pool-api.json` file. ```console -chainhook predicates scan ordinals_protocol.json --config-path=./Chainhook.toml +chainhook predicates scan stacking-pool-api.json --config-path=./Chainhook.toml ``` -The above command posts events to the URL, `http://localhost:3000/events` mentioned in the JSON file. +The above command posts events to the URL, http://localhost:3000/events mentioned in the JSON file. ## Initiate Chainhook Service -In this section, you'll learn how to initiate the chainhook service using the following two ways and use the REST API call to post the events onto a server. +In the examples above, our Chainhook scanned historical blockchain data against predicates and delivered results. In this next section, let's learn how to set up a Chainhook that acts as an ongoing observer and event-streaming service. + +We can start a Chainhook service with an existing predicate. We can also dynamically register new predicates by making an API call to our Chainhook. In both of these instances, our predicates will be delivering their results to a server set up to receive results. + +- Initiate the chainhook service by passing the predicate path to the command as shown below: -- Initiate the chainhook service by passing the predicate path to the command as shown below. +```console +chainhook service start --predicate-path=stacking-pool-api.json --config-path=Chainhook.toml +``` + +The above command registers the predicate based on the predicate definition in the `stacking-pool-api.json` file. + +## Dynamically Register Predicates + +You can also dynamically register new predicates with your Chainhook service. + +First, we need to uncomment the following lines of code in the `Chainhook.toml` file to enable the predicate registration server: + +```toml +# ... + +[http_api] +http_port = 20456 +database_uri = "redis://localhost:6379/" + +# ... +``` + +> **_NOTE:_** +> +> This assumes you have a local instance of [Redis](https://redis.io/docs/getting-started/) running. + +Start the Chainhook service by running the following command: - ```console - chainhook service start --predicate-path=ordinals_protocol.json --config-path=Chainhook.toml - ``` +``` +chainhook service start --config-path=Chainhook.toml +``` + +To dynamically register a new predicate, send a POST request to the running predicate registration server at `localhost:20456/v1/chainhooks`. Include the new predicate in JSON format within the request body. Use the following `curl` command as an example: - The above command registers the predicates based on the predicate definition in the `ordinals_protocol.json` file. - -- You can also dynamically register predicates via the predicate registration server. To do this: - - Uncomment the following lines of code in the `Chainhook.toml` file to enable the predicate registration server. - ``` - [http_api] - http_port = 20456 - database_uri = "redis://localhost:6379/" - ``` - - Start the Chainhook service by running ```chainhook service start --config-path=Chainhook.toml```. - - Now, the predicate registration server is running at `localhost:20456`. To dynamically register a new predicate, send a POST request to `localhost:20456/v1/chainhooks` with the new predicate, in JSON format, included in the request body. For complete documentation on the API endpoints available, see the [OpenAPI](https://raw.githubusercontent.com/hirosystems/chainhook/develop/docs/chainhook-openapi.json) specification. - - ![Example post request](../images/chainhook-post-request.jpeg) +```console +curl -X POST \ + -H "Content-Type: application/json" \ + -d '{ + "chain": "bitcoin", + "uuid": "3", + "name": "Ordinals", + "version": 1, + "networks": { + "mainnet": { + "start_block": 777534, + "if_this": { + "scope": "ordinals_protocol", + "operation": "inscription_feed" + }, + "then_that": { + "http_post": { + "url": "http://localhost:3000/events", + "authorization_header": "12345" + } + } + } + } + }' \ + http://localhost:20456/v1/chainhooks +``` -The sample payload response should look like this: +The sample response should look like this: ```jsonc { - "chainhook": { - "predicate": { - "operation": "inscription_feed", - "scope": "ordinals_protocol" - }, - "uuid": "1" + "chainhook": { + "predicate": { + "operation": "inscription_feed", + "scope": "ordinals_protocol" }, - "apply": [{ - "block_identifier": { - "hash": "0x00000000000000000003e3e2ffd3baaff2cddda7d12e84ed0ffe6f7778e988d4", - "index": 777534 - }, - "metadata": {}, - "parent_block_identifier": { - "hash": "0x0000000000000000000463a1034c59e6dc94c7e52855582af11882743b86e2a7", - "index": 777533 - }, - "timestamp": 1676923039, - "transactions": [{ - "transaction_identifier": { - "hash": "0xca20efe5e4d71c16cd9b8dfe4d969efdd225ef0a26136a6a4409cb3afb2e013e" - }, - "metadata": { - "ordinal_operations": [{ - "inscription_revealed": { - "content_bytes": "", - "content_length": 12293, - "content_type": "image/jpeg", - "inscriber_address": "bc1punnjva5ayg84kf5tmvx265uwvp8py3ux24skz43aycj5rzdgzjfq0jxsuc", - "inscription_fee": 64520, - "inscription_id": "ca20efe5e4d71c16cd9b8dfe4d969efdd225ef0a26136a6a4409cb3afb2e013ei0", - "inscription_number": 0, - "inscription_output_value": 10000, - "ordinal_block_height": 543164, - "ordinal_number": 1728956147664701, - "ordinal_offset": 1147664701, - "satpoint_post_inscription": "ca20efe5e4d71c16cd9b8dfe4d969efdd225ef0a26136a6a4409cb3afb2e013e:0:0", - "transfers_pre_inscription": 0 - } - }], - "proof": null - }, - "operations": [] - // Other transactions - }] - }], - "rollback": [], + "uuid": "1" + }, + "apply": [ + { + "block_identifier": { + "hash": "0x00000000000000000003e3e2ffd3baaff2cddda7d12e84ed0ffe6f7778e988d4", + "index": 777534 + }, + "metadata": {}, + "parent_block_identifier": { + "hash": "0x0000000000000000000463a1034c59e6dc94c7e52855582af11882743b86e2a7", + "index": 777533 + }, + "timestamp": 1676923039, + "transactions": [ + { + "transaction_identifier": { + "hash": "0xca20efe5e4d71c16cd9b8dfe4d969efdd225ef0a26136a6a4409cb3afb2e013e" + }, + "metadata": { + "ordinal_operations": [ + { + "inscription_revealed": { + "content_bytes": "", + "content_length": 12293, + "content_type": "image/jpeg", + "inscriber_address": "bc1punnjva5ayg84kf5tmvx265uwvp8py3ux24skz43aycj5rzdgzjfq0jxsuc", + "inscription_fee": 64520, + "inscription_id": "ca20efe5e4d71c16cd9b8dfe4d969efdd225ef0a26136a6a4409cb3afb2e013ei0", + "inscription_number": 0, + "inscription_output_value": 10000, + "ordinal_block_height": 543164, + "ordinal_number": 1728956147664701, + "ordinal_offset": 1147664701, + "satpoint_post_inscription": "ca20efe5e4d71c16cd9b8dfe4d969efdd225ef0a26136a6a4409cb3afb2e013e:0:0", + "transfers_pre_inscription": 0 + } + } + ], + "proof": null + }, + "operations": [] + // Other transactions + } + ] + } + ], + "rollback": [] } ``` Understand the output of the above JSON file with the following details. - The `apply` payload includes the block header and the transactions that triggered the predicate. - -- The `rollback` payload includes the block header and the transactions that triggered the predicate for a past block that is no longer part of the canonical chain and must be reverted. +- The `rollback` payload includes the block header and the transactions that triggered the predicate for a past block that is no longer part of the canonical chain and must be reverted. (Note: This is a chief component of Chainhook's reorg aware functionality, maintaining rollback data for blocks near the chaintip.) > **_TIP:_** > > You can also run chainhook service by passing multiple predicates. -> Example: ```chainhook service start --predicate-path=predicate_1.json --predicate-path=predicate_2.json --config-path=Chainhook.toml``` +> Example: `chainhook service start --predicate-path=predicate_1.json --predicate-path=predicate_2.json --config-path=Chainhook.toml` ## References diff --git a/docs/how-to-guides/how-to-run-chainhook-as-a-service-using-stacks.md b/docs/how-to-guides/how-to-run-chainhook-as-a-service-using-stacks.md index 9e29ba4d4..2f1849060 100644 --- a/docs/how-to-guides/how-to-run-chainhook-as-a-service-using-stacks.md +++ b/docs/how-to-guides/how-to-run-chainhook-as-a-service-using-stacks.md @@ -1,5 +1,5 @@ --- -title: Run Chainhook as a Service using Stacks +title: Run Chainhook as a Service Using Stacks --- You can run Chainhook as a service to evaluate Stacks blocks against your predicates. You can also dynamically register new predicates by enabling predicates registration API. @@ -8,13 +8,13 @@ Start with the prerequisite section and configure your files to start the chainh ## Prerequisite -### Configure Stacks Node +### Configure Your Stacks Node -- Configure your stacks node using the [Stacks node configuration](https://docs.stacks.co/docs/nodes-and-miners/stacks-node-configuration) documentation. -- Recommend the latest version of Stacks. You can check the latest version by following [this](https://github.com/stacks-network/stacks-blockchain/releases) link. -- Set up the bitcoin node by following [this](how-to-run-chainhook-as-a-service-using-bitcoind.md#setting-up-a-bitcoin-node) article, then get the `rpcuser`, `rpcpassword`, and `rpc_port` values defined in the `bitcoin.conf` file. +- Configure your Stacks node using the [Stacks node configuration](https://docs.stacks.co/docs/nodes-and-miners/stacks-node-configuration) documentation. +- We Recommend using the latest version of Stacks. You can check the latest version by following [this](https://github.com/stacks-network/stacks-blockchain/releases) link. +- Set up your Bitcoin node by following [this](how-to-run-chainhook-as-a-service-using-bitcoind.md#setting-up-a-bitcoin-node) article, then get the `rpcuser`, `rpcpassword`, and `rpc_port` values defined in the `bitcoin.conf` file. -A `Stacks.toml` file is generated when configuring the stacks node. Below is the sample `Stacks.toml` file. +A `Stacks.toml` file is generated when configuring your Stacks node. Below is the sample `Stacks.toml` file. ```toml [node] @@ -48,10 +48,15 @@ events_keys = ["*"] In this section, you will configure a chainhook to communicate with the network. Run the following command in your terminal and generate the `Chainhook.toml` file. ```console -chainhook config generate --testnet +chainhook config generate --mainnet ``` -Ensure that the `bitcoind_rpc_url`, `bitcoind_rpc_username`, `bitcoind_rpc_password` match with the `rpcport`, `rpcuser` and `rpcpassword` in the `bitcoin.conf` file and the port of the `stacks_node_rpc_url` matches the `rpc_bind` in the `Stacks.toml` file. +Several network parameters in the generated `Chainhook.toml` configuration file need to match those in the `bitcoin.conf` file created earlier in the [Setting up a Bitcoin Node](#setting-up-a-bitcoin-node) section. Please update the following parameters accordingly: + +1. Update `bitcoind_rpc_username` with the username set for `rpcuser` in `bitcoin.conf`. +2. Update `bitcoind_rpc_password` with the password set for `rpcpassword` in `bitcoin.conf`. +3. Update `bitcoind_rpc_url` with the same host and port used for `rpcport` in `bitcoin.conf`. +4. Ensure `stacks_node_rpc_url` matches the `rpc_bind` in the `Stacks.toml`. The following `Chainhook.toml` file is generated: @@ -59,9 +64,9 @@ The following `Chainhook.toml` file is generated: [storage] working_dir = "cache" -# The HTTP API allows you to register/deregister -# dynamically predicates -# Disable by default +# The Http Api allows you to register / deregister +# dynamically predicates. +# Disable by default. # # [http_api] # http_port = 20456 @@ -69,10 +74,17 @@ working_dir = "cache" [network] mode = "mainnet" -bitcoind_rpc_url = "http://localhost:8332" # Must match with the rpcport in the bitcoin.conf -bitcoind_rpc_username = "" # Must match with the rpcuser in the bitcoin.conf -bitcoind_rpc_password = "" # Must match with the rpcpassword in the bitcoin.conf -stacks_node_rpc_url = "http://localhost:20443" # Must match with the rpc_bind in the Stacks.toml file +bitcoind_rpc_url = "http://localhost:8332" +bitcoind_rpc_username = "devnet" +bitcoind_rpc_password = "devnet" +# Bitcoin block events can be received by Chainhook +# either through a Bitcoin node's ZeroMQ interface, +# or through the Stacks node. The Stacks node is +# used by default: +stacks_node_rpc_url = "http://localhost:20443" +stacks_events_ingestion_port = 20455 +# but zmq can be used instead: +# bitcoind_zmq_url = "tcp://0.0.0.0:18543" [limits] max_number_of_bitcoin_predicates = 100 @@ -85,57 +97,56 @@ max_caching_memory_size_mb = 32000 [[event_source]] tsv_file_url = "https://archive.hiro.so/mainnet/stacks-blockchain-api/mainnet-stacks-blockchain-api-latest" - ``` -Ensure the following configurations are matched to allow chainhook to communicate with the Stacks and Bitcoin layers. +Ensure the following configurations are matched to allow chainhook to communicate with both Stacks and Bitcoin. -| bitcoin.conf | Stacks.toml | Chainhook.toml | -| ----------- | ----------- | ------------- | -| rpcuser | username | bitcoind_rpc_username | -| rpcpassword | password | bitcoind_rpc_password | -| rpcport | rpc_port | bitcoind_rpc_url | -| zmqpubhashblock | | bitcoind_zmq_url | -| | rpc_bind | stacks_node_rpc_url | -| | endpoint | stacks_events_ingestion_port | +| bitcoin.conf | Stacks.toml | Chainhook.toml | +| --------------- | ----------- | ---------------------------- | +| rpcuser | username | bitcoind_rpc_username | +| rpcpassword | password | bitcoind_rpc_password | +| rpcport | rpc_port | bitcoind_rpc_url | +| zmqpubhashblock | | bitcoind_zmq_url | +| | rpc_bind | stacks_node_rpc_url | +| | endpoint | stacks_events_ingestion_port | > **_NOTE:_** > -> The `bitcoind_zmq_url` is optional when running chainhook as a service using stacks because stacks will pull the blocks from Stacks and the Bitcoin chain. +> The `bitcoind_zmq_url` is optional when running chainhook as a service using Stacks because Stacks will pull the blocks from Stacks and the Bitcoin chain. -## Scan blockchain based on predicates +## Scan the blockchain based on predicates -Now that the stacks and chainhook configurations are done, you can scan your blocks by defining your [predicates](../overview.md#if-this-predicate-design). This section helps you with sample JSON files to scan the blocks in the blockchain and render the results. To understand the supported predicates for Stacks, refer to [how to use chainhook with stacks](how-to-use-chainhooks-with-stacks.md). +Now that the Stacks and Chainhook configurations are done, you can scan your blocks by defining your [predicates](../overview.md#if-this-predicate-design). This section helps you with sample JSON files to scan blockchain blocks and render the results. To understand the supported predicates for Stacks, refer to [how to use chainhook with stacks](how-to-use-chainhooks-with-stacks.md). The following are the two examples to walk you through `file_append` and `http_post` `then-that` predicate designs. -Example 1 uses a `print_event.json` file to scan the predicates and render results using `file_append`. -Example 2 uses `print_event.json` to scan the predicates and render results using `http_post`. +Example 1 uses a `print-event.json` file to scan the predicates and render results using `file_append`. +Example 2 uses `print-event-post.json` to scan the predicates and render results using `http_post`. You can choose between the following examples to scan the predicates. -### Example 1 +### Example 1 - `file_append` Run the following command to generate a sample JSON file with predicates in your terminal. ```console -chainhook predicates new print_event_1.json --stacks +chainhook predicates new print-event.json --stacks ``` -A JSON file `print_event_1.json` is generated. +A JSON file `print-event.json` is generated. ```json { "chain": "stacks", - "uuid": "1da35032-e399-430c-bfbc-eca94709ad11", + "uuid": "6ad27176-2b83-4381-b51c-50baede11e3f", "name": "Hello world", "version": 1, "networks": { "testnet": { - "start_block": 0, - "end_block": 100, + "start_block": 34239, + "end_block": 50000, "if_this": { - "scope": "print_event_1", + "scope": "print_event", "contract_identifier": "ST1SVA0SST0EDT4MFYGWGP6GNSXMMQJDVP1G8QTTC.arkadiko-freddie-v1-1", "contains": "vault" }, @@ -146,10 +157,10 @@ A JSON file `print_event_1.json` is generated. } }, "mainnet": { - "start_block": 0, - "end_block": 100, + "start_block": 34239, + "end_block": 50000, "if_this": { - "scope": "print_event_1", + "scope": "print_event", "contract_identifier": "SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-freddie-v1-1", "contains": "vault" }, @@ -167,62 +178,69 @@ A JSON file `print_event_1.json` is generated. > > You can get blockchain height and current block in the [Explorer](https://explorer.hiro.so/blocks?chain=mainnet). -The sample `arkadiko.txt` should look like this: +Now, use the following command to scan the blocks based on the predicates defined in the `mainnet` network block of your `print-event.json` file: -``` -{"apply":[{"block_identifier":{"hash":"0xf048102fee15dda049e6781c8e9aec1b39b1b9dc68d06fd9b84dced1b80ddd62","index":34307},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000000098e9ebc30e7c8e32b30ffecbd7dc5c715b5f07e1de25c","index":705648},"confirm_microblock_identifier":{"hash":"0xa65642590e98f54183a0be747a1c01e41d3ba211f6599eff2574d78ed2578468","index":2},"pox_cycle_index":18,"pox_cycle_length":2100,"pox_cycle_position":1797,"stacks_block_hash":"0x77a1aed86e895cb4b7b969986aa6a28eb2465e7227f351dd4e23d28448b222e9"},"parent_block_identifier":{"hash":"0x3117663ee5c5690d76e3f6c97597cbcc95085e7cecb0791d3edc4f95a4ce6f23","index":34306},"timestamp":1634625398,"transactions":[{"metadata":{"description":"invoked: SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-freddie-v1-1::collateralize-and-mint(u300000000, u130000000, (tuple (auto-payoff true) (stack-pox true)), \"STX-A\", SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-stx-reserve-v1-1, SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-token, SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-collateral-types-v1-1, SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-oracle-v1-1)","execution_cost":{"read_count":155,"read_length":318312,"runtime":349859000,"write_count":10,"write_length":3621},"fee":188800,"kind":{"data":{"args":["u300000000","u130000000","(tuple (auto-payoff true) (stack-pox true))","\"STX-A\"","SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-stx-reserve-v1-1","SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-token","SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-collateral-types-v1-1","SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-oracle-v1-1"],"contract_identifier":"SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-freddie-v1-1","method":"collateralize-and-mint"},"type":"ContractCall"},"nonce":15,"position":{"index":16},"proof":null,... +```console +chainhook predicates scan print-event.json --mainnet ``` -Now, use the following command to scan the blocks based on the predicates defined in the `print_event_1.json` file. +The output of the above command will be a text file `arkadiko.txt` generated based on the predicate definition. It should look something like this: -```console -chainhook predicates scan print_event_1.json --testnet ``` - -The output of the above command will be a text file `arkadiko.txt` generated based on the predicate definition. +{"apply":[{"block_identifier":{"hash":"0xf048102fee15dda049e6781c8e9aec1b39b1b9dc68d06fd9b84dced1b80ddd62","index":34307},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000000098e9ebc30e7c8e32b30ffecbd7dc5c715b5f07e1de25c","index":705648},"confirm_microblock_identifier":{"hash":"0xa65642590e98f54183a0be747a1c01e41d3ba211f6599eff2574d78ed2578468","index":2},"pox_cycle_index":18,"pox_cycle_length":2100,"pox_cycle_position":1797,"stacks_block_hash":"0x77a1aed86e895cb4b7b969986aa6a28eb2465e7227f351dd4e23d28448b222e9"},"parent_block_identifier":{"hash":"0x3117663ee5c5690d76e3f6c97597cbcc95085e7cecb0791d3edc4f95a4ce6f23","index":34306},"timestamp":1634625398,"transactions":[{"metadata":{"description":"invoked: SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-freddie-v1-1::collateralize-and-mint(u300000000, u130000000, (tuple (auto-payoff true) (stack-pox true)), \"STX-A\", SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-stx-reserve-v1-1, SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-token, SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-collateral-types-v1-1, SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-oracle-v1-1)","execution_cost":{"read_count":155,"read_length":318312,"runtime":349859000,"write_count":10,"write_length":3621},"fee":188800,"kind":{"data":{"args":["u300000000","u130000000","(tuple (auto-payoff true) (stack-pox true))","\"STX-A\"","SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-stx-reserve-v1-1","SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-token","SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-collateral-types-v1-1","SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-oracle-v1-1"],"contract_identifier":"SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-freddie-v1-1","method":"collateralize-and-mint"},"type":"ContractCall"},"nonce":15,"position":{"index":16},"proof":null,"raw_tx":"0x000000000104003936cedf1ddb6bc1aa6f243772cab048c586a18b000000000000000f000000000002e1800001b563c7e917648668a796d972ef9352b76035102c6159c2061bc9e9a0d161098e1ebd17d6c0754e0308d2b53ef1035e5dcfba37f0cc6f16e69f842ad7f6b691980302000000010002163936cedf1ddb6bc1aa6f243772cab048c586a18b010000000011e1a3000216982f3ec112a5f5928a5c96a914bd733793b896a51561726b6164696b6f2d667265646469652d76312d3116636f6c6c61746572616c697a652d616e642d6d696e74000000080100000000000000000000000011e1a3000100000000000000000000000007bfa4800c000000020b6175746f2d7061796f66660309737461636b2d706f78030d000000055354582d410616982f3ec112a5f5928a5c96a914bd733793b896a51961726b6164696b6f2d7374782d726573657276652d76312d310616982f3ec112a5f5928a5c96a914bd733793b896a50e61726b6164696b6f2d746f6b656e0616982f3ec112a5f5928a5c96a914bd733793b896a51e61726b6164696b6f2d636f6c6c61746572616c2d74797065732d76312d310616982f3ec112a5f5928a5c96a914bd733793b896a51461726b6164696b6f2d6f7261636c652d76312d31","receipt":{"contract_calls_stack":[],"events":[{"data":{"amount":"130000000","asset_identifier":"SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.usda-token::usda","recipient":"SPWKDKPZ3QDPQGDADWJ3EWPAP14CB1N1HDQ897W5"},"type":"FTMintEvent"},{"data":{"contract_identifier":"SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-freddie-v1-1","raw_value":"0x0c0000000306616374696f6e0d000000076372656174656404646174610c000000110d61756374696f6e2d656e646564040b6175746f2d7061796f6666030a636f6c6c61746572616c0100000000000000000000000011e1a30010636f6c6c61746572616c2d746f6b656e0d000000035354580f636f6c6c61746572616c2d747970650d000000055354582d4117637265617465642d61742d626c6f636b2d686569676874010000000000000000000000000000860304646562740100000000000000000000000007bfa48002696401000000000000000000000000000000010d69732d6c69717569646174656404136c6566746f7665722d636f6c6c61746572616c0100000000000000000000000000000000056f776e657205163936cedf1ddb6bc1aa6f243772cab048c586a18b107265766f6b65642d737461636b696e67041573746162696c6974792d6665652d6163637275656401000000000000000000000000000000001a73746162696c6974792d6665652d6c6173742d6163637275656401000000000000000000000000000086030e737461636b65642d746f6b656e730100000000000000000000000011e1a3000c737461636b65722d6e616d650d00000007737461636b657217757064617465642d61742d626c6f636b2d686569676874010000000000000000000000000000860304747970650d000000057661756c74","topic":"print"},"type":"SmartContractEvent"},{"data":{"amount":"300000000","recipient":"SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-stx-reserve-v1-1","sender":"SPWKDKPZ3QDPQGDADWJ3EWPAP14CB1N1HDQ897W5"},"type":"STXTransferEvent"},{"data":{"contract_identifier":"SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-dao","raw_value":"0x0c0000000306616374696f6e0d000000066d696e74656404646174610c0000000206616d6f756e740100000000000000000000000007bfa48009726563697069656e7405163936cedf1ddb6bc1aa6f243772cab048c586a18b04747970650d00000005746f6b656e","topic":"print"},"type":"SmartContractEvent"},{"data":{"contract_identifier":"SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-stx-reserve-v1-1","raw_value":"0x0703","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":["SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.usda-token::usda"],"mutated_contracts_radius":["SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-dao","SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-stx-reserve-v1-1","SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-freddie-v1-1","SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.usda-token"]},"result":"(ok u130000000)","sender":"SPWKDKPZ3QDPQGDADWJ3EWPAP14CB1N1HDQ897W5","success":true},"operations":[{"account":{"address":"SPWKDKPZ3QDPQGDADWJ3EWPAP14CB1N1HDQ897W5"},"amount":{"currency":{"decimals":6,"metadata":{"asset_class_identifier":"SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.usda-token::usda","asset_identifier":null,"standard":"SIP10"},"symbol":"TOKEN"},"value":130000000},"operation_identifier":{"index":0},"status":"SUCCESS","type":"CREDIT"},{"account":{"address":"SPWKDKPZ3QDPQGDADWJ3EWPAP14CB1N1HDQ897W5"},"amount":{"currency":{"decimals":6,"symbol":"STX"},"value":300000000},"operation_identifier":{"index":1},"related_operations":[{"index":2}],"status":"SUCCESS","type":"DEBIT"},{"account":{"address":"SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-stx-reserve-v1-1"},"amount":{"currency":{"decimals":6,"symbol":"STX"},"value":300000000},"operation_identifier":{"index":2},"related_operations":[{"index":1}],"status":"SUCCESS","type":"CREDIT"}],"transaction_identifier":{"hash":"0x580d89b79f4e7cda9e2ae9f1a70a5392149a055b0b6f25968afb80c6cc09306a"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contains":"vault","contract_identifier":"SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-freddie-v1-1","scope":"print_event"},"uuid":"6ad27176-2b83-4381-b51c-50baede11e3f"},"rollback":[]} +``` > **_TIP:_** -> To optimize your experience with scanning, the following are a few knobs you can play with: -> Use of adequate values for `start_block` and `end_block` in predicates will drastically improve the performance. +> To optimize your experience with scanning, there are a few variables you can play with: +> Use of adequate values for `start_block` and `end_block` in predicates will drastically improve performance. > Networking: reducing the number of network hops between the chainhook and the bitcoind processes can also help. -The sample output file, `arkadiko.txt,` looks like this: - -```text -{"apply":[{"block_identifier":{"hash":"0xf048102fee15dda049e6781c8e9aec1b39b1b9dc68d06fd9b84dced1b80ddd62","index":34307},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000000098e9ebc30e7c8e32b30ffecbd7dc5c715b5f07e1de25c","index":705648},"confirm_microblock_identifier":{"hash":"0xa65642590e98f54183a0be747a1c01e41d3ba211f6599eff2574d78ed2578468","index":2},"pox_cycle_index":18,"pox_cycle_length":2100,"pox_cycle_position":1797,"stacks_block_hash":"0x77a1aed86e895cb4b7b969986aa6a28eb2465e7227f351dd4e23d28448b222e9"},"parent_block_identifier":{"hash":"0x3117663ee5c5690d76e3f6c97597cbcc95085e7cecb0791d3edc4f95a4ce6f23","index":34306},"timestamp":1634625398,"transactions":[{"metadata":{"description":"invoked: SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-freddie-v1-1::collateralize-and-mint(u300000000, u130000000, (tuple (auto-payoff true) (stack-pox true)), \"STX-A\", SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-stx-reserve-v1-1, SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-token, SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-collateral-types-v1-1, SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-oracle-v1-1)","execution_cost":{"read_count":155,"read_length":318312,"runtime":349859000,"write_count":10,"write_length":3621},"fee":188800,"kind":{"data":{"args":["u300000000","u130000000","(tuple (auto-payoff true) (stack-pox true))","\"STX-A\"",......... -``` - -### Example 2 +### Example 2 - `http_post` -Run the following command to generate a sample JSON file with predicates in your terminal. +Run the following command to generate a sample JSON file with predicates in your terminal: ```console -chainhook predicates new print_event_2.json --stacks +chainhook predicates new print-event-post.json --stacks ``` -A JSON file `print_event_2.json` is generated. +Update the generated JSON file `print-event-post.json` with the following: ```json { "chain": "stacks", - "uuid": "1", - "name": "Lorem ipsum", + "uuid": "e5fa09b2-ec3e-4b6a-9a4a-0ebb454f6e19", + "name": "Hello world", "version": 1, "networks": { "testnet": { - "if_this": { - "scope": "print_event_2", - "contract_identifier": "ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM.monkey-sip09", - "contains": "vault" - }, - "then_that": { - "http_post": { - "url": "http://localhost:3000/api/v1/vaults", - "authorization_header": "Bearer cn389ncoiwuencr" - } - }, - "start_block": 10200, - "expire_after_occurrence": 5, + "if_this": { + "scope": "print_event", + "contract_identifier": "ST1SVA0SST0EDT4MFYGWGP6GNSXMMQJDVP1G8QTTC.arkadiko-freddie-v1-1", + "contains": "vault" + }, + "then_that": { + "http_post": { + "url": "http://localhost:3000/events", + "authorization_header": "Bearer cn389ncoiwuencr" + } + }, + "start_block": 10200, + "expire_after_occurrence": 5 + }, + "mainnet": { + "if_this": { + "scope": "print-event", + "contract_identifier": "SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-freddie-v1-1", + "contains": "vault" + }, + "then_that": { + "http_post": { + "url": "http://localhost:3000/events", + "authorization_header": "Bearer cn389ncoiwuencr" + } + }, + "start_block": 10200, + "expire_after_occurrence": 5 } } } @@ -232,38 +250,91 @@ A JSON file `print_event_2.json` is generated. > > The `start_block` is the required field to use the `http_post` `then-that` predicate. -Now, use the following command to scan the blocks based on the predicates defined in the `print_event_2.json` file. +Now, use the following command to scan the blocks based on the predicates defined in the `print-event-post.json` file: ```console -chainhook predicates scan print_event_2.json --testnet +chainhook predicates scan print-event-post.json --mainnet ``` -The above command posts events to the URL `http://localhost:3000/api/v1/vaults` mentioned in the `Chainhook.toml` file. +The above command posts events to the URL `http://localhost:3000/events` mentioned in the `Chainhook.toml` file. ## Initiate Chainhook Service -In this section, you'll learn how to initiate the chainhook service using the following two ways and use the REST API call to post the events onto a server. +In this section, you'll learn two ways to initiate the Chainhook service as well as how to use the REST API call to post the events onto a server. -- Initiate the chainhook service by passing the predicate path to the command as shown below. +- Initiate the Chainhook service by passing the predicate path to the command as shown below: ```console - chainhook service start --predicate-path=print_event_1.json --config-path=Chainhook.toml + chainhook service start --predicate-path=print-event.json --config-path=Chainhook.toml ``` - The above command registers the predicates based on the predicate definition in the `print_event_1.json` file. - -- You can also dynamically register predicates via the predicate registration server. To do this: - - Uncomment the following lines of code in the `Chainhook.toml` file to enable the predicate registration server. - ``` - [http_api] - http_port = 20456 - database_uri = "redis://localhost:6379/" - ``` - - Start the Chainhook service by running ```chainhook service start --config-path=Chainhook.toml```. - - Now, the predicate registration server is running at `localhost:20456`. To dynamically register a new predicate, send a POST request to `localhost:20456/v1/chainhooks` with the new predicate, in JSON format, included in the request body. For complete documentation on the API endpoints available, see the [OpenAPI](https://raw.githubusercontent.com/hirosystems/chainhook/develop/docs/chainhook-openapi.json) specification. - - ![Example post request](../images/chainhook-post-request.jpeg) + The above command registers the predicates based on the predicate definition in the `print-event.json` file. + +## Dynamically Register Predicates + +You can also dynamically register new predicates with your Chainhook service. + +First, we need to uncomment the following lines of code in the `Chainhook.toml` file to enable the predicate registration server: + +```toml +# ... + +[http_api] +http_port = 20456 +database_uri = "redis://localhost:6379/" + +# ... +``` + +> **_NOTE:_** +> +> This assumes you have a local instance of [Redis](https://redis.io/docs/getting-started/) running. + +Start the Chainhook service by running the following command: + +``` +chainhook service start --config-path=Chainhook.toml +``` + +To dynamically register a new predicate, send a POST request to the running predicate registration server at `localhost:20456/v1/chainhooks`. Include the new predicate in JSON format within the request body. In another terminal window, use the following `curl` command as an example: + +```console +curl -X POST \ + -H "Content-Type: application/json" \ + -d '{ + "chain": "stacks", + "uuid": "42", + "name": "Arkadiko", + "version": 1, + "networks": { + "mainnet": { + "start_block": 777534, + "if_this": { + "scope": "print-event", + "contract_identifier": "SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-freddie-v1-1", + "contains": "vault" + }, + "then_that": { + "http_post": { + "url": "http://localhost:3000/events", + "authorization_header": "Bearer cn389ncoiwuencr" + } + } + } + } + }' \ + http://localhost:20456/v1/chainhooks +``` + +You should see in your terminal: + +```console +{"result":"42","status":200} +``` + +And if you hop back over to your `Chainhook` service terminal window, you will see that your predicate has been registered. > **_TIP:_** > > You can also run chainhook service by passing multiple predicates. -> Example: ```chainhook service start --predicate-path=predicate_1.json --predicate-path=predicate_2.json --config-path=Chainhook.toml``` +> Example: `chainhook service start --predicate-path=predicate_1.json --predicate-path=predicate_2.json --config-path=Chainhook.toml` diff --git a/docs/how-to-guides/how-to-use-chainhooks-with-bitcoin.md b/docs/how-to-guides/how-to-use-chainhooks-with-bitcoin.md index 338cc5c0f..8eae61b76 100644 --- a/docs/how-to-guides/how-to-use-chainhooks-with-bitcoin.md +++ b/docs/how-to-guides/how-to-use-chainhooks-with-bitcoin.md @@ -1,6 +1,4 @@ ---- -title: Use Chainhooks with Bitcoin ---- +# Use Chainhooks with Bitcoin The following guide helps you define predicates to use Chainhook with Bitcoin. The predicates are specified based on `if-this`, `then-that` constructs. @@ -23,54 +21,58 @@ Get any transaction matching a given transaction ID (txid): } ``` -Get any transaction, including: +Get any transaction matching a given `OP_RETURN` payload: +Example: Given the following `script_pubkey` : -- OP_RETURN output starting with a set of characters. - - `starts_with` mandatory argument admits: - - ASCII string type. Example: `X2[` - - hex encoded bytes. Example: `0x589403` +``` +OP_RETURN +PUSHDATA(0x03) +0x616263 +``` + +or `0x6a03616263` in hex, the following predicates will match the transaction above. + +Get any transaction, where its `OP_RETURN` payload starts with a set of characters: +- `starts_with` mandatory argument admits: + - ASCII string type. Example: `ab` + - hex encoded bytes. Example: `0x6162` ```json { "if_this": { "scope": "outputs", "op_return": { - "starts_with": "X2[" + "starts_with": "ab" } } } ``` - -`op_return` is used to find blocks starting, ending, or equivalent to a specific string from the list of output blocks. - -Get any transaction, including an OP_RETURN output matching the sequence of bytes specified: - +Get any transaction, where its `OP_RETURN` payload is equals to set of characters: - `equals` mandatory argument admits: - - hex encoded bytes. Example: `0x69bd04208265aca9424d0337dac7d9e84371a2c91ece1891d67d3554bd9fdbe60afc6924d4b0773d90000006700010000006600012` + - ASCII string type: Example `abc` + - hex encoded bytes. Example: `0x616263` ```json { "if_this": { "scope": "outputs", "op_return": { - "equals": "0x69bd04208265aca9424d0337dac7d9e84371a2c91ece1891d67d3554bd9fdbe60afc6924d4b0773d90000006700010000006600012" + "equals": "0x616263" } } } ``` - -Get any transaction, including an OP_RETURN output ending with a set of characters: - +Get any transaction, where its `OP_RETURN` payload ends with a set of characters: - `ends_with` mandatory argument admits: - - ASCII string type. Example: `X2[` - - hex encoded bytes. Example: `0x76a914000000000000000000000000000000000000000088ac` + - ASCII string type. Example: `bc` + - hex encoded bytes. Example: `0x6263` ```json { "if_this": { "scope": "outputs", "op_return": { - "ends_with": "0x76a914000000000000000000000000000000000000000088ac" + "ends_with": "0x6263" } } } @@ -150,6 +152,31 @@ Get any transaction, including a `p2wsh` output paying a given recipient: `p2wsh` (Pay-to-Witness-Script-Hash) is a Bitcoin transaction output script type used in Segregated Witness (SegWit) that enables users to send funds to a hashed script, allowing for more complex transaction conditions and greater scalability by separating the script from the transaction data. +**Wallet Descriptors** provide a compact and semi-standardized method for describing how scripts and addresses within a wallet are generated. Chainhooks users that want to track addresses derived from an extended pubkey or a multisig-wallet for example, can now rely on this feature instead of defining one predicate per address. +For example if we wanted to track the first 3 addressed generated by the following descriptor: +``` +wpkh(tprv8ZgxMBicQKsPePxn6j3TjvB2MBzQkuhGgc6oRh2WZancZQgxktcnjZJ44XdsRiw3jNkbVTK9JW6KFHvnRKgAMtSyuBevMJprSkZ4PTfmTgV/84'/1'/0'/0/*) +``` +which reads: describe a P2WPKH output with the specified extended public key, and produces these BIP84 addresses: + +``` +bcrt1qzy2rdyvu8c57qd8exyyp0mw7dk5drsu9ewzdsu +bcrt1qsfsjnagr29m8h3a3vdand2s85cg4cefkcwk2fy +bcrt1qauewfytqe5mtr0xwp786r6fl39kmum2lr65kmj +``` +The following predicate should be defined: +```json +{ + "if_this": { + "scope": "outputs", + "descriptor": { + "expression": "wpkh(tprv8ZgxMBicQKsPePxn6j3TjvB2MBzQkuhGgc6oRh2WZancZQgxktcnjZJ44XdsRiw3jNkbVTK9JW6KFHvnRKgAMtSyuBevMJprSkZ4PTfmTgV/84'/1'/0'/0/*)", + "range": [0,3] + } + } +} +``` + Get any Bitcoin transaction, including a Block commitment. Broadcasted payloads include _Proof of Transfer_ reward information: ```json diff --git a/docs/how-to-guides/how-to-use-chainhooks-with-stacks.md b/docs/how-to-guides/how-to-use-chainhooks-with-stacks.md index 796c73154..f95fd213f 100644 --- a/docs/how-to-guides/how-to-use-chainhooks-with-stacks.md +++ b/docs/how-to-guides/how-to-use-chainhooks-with-stacks.md @@ -100,8 +100,12 @@ Get any transaction moving STX tokens: Get any transaction emitting given print events predicate - `contract-identifier` mandatory argument admits: - - string type, fully qualifying the contract to observe. Example: `ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM.monkey-sip09` `contains` mandatory argument admits: - - string type, used for matching event + - string type, fully qualifying the contract to observe. Example: `ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM.monkey-sip09` + - Either the `contains` or `matches_regex` argument: + - `contains` argument admits string type, used for matching an event containing the specified string. Example: `vault` + - `matches_regex` argument admits string type that should be valid regex, used for matching an event that regex matches with the specified string. Example: `(?:^|\\W)vault(?:$|\\W)` + +The following example uses `contains` argument: ```json { @@ -113,13 +117,27 @@ Get any transaction emitting given print events predicate } ``` +The following example uses `matches_regex` argument: + +```json +{ + "if_this": { + "scope": "print_event", + "contract_identifier": "ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM.monkey-sip09", + "matches_regex": "(?:^|\\W)vault(?:$|\\W)" + }, +} +``` + Get any transaction calling a specific method for a given contract **directly**. > [!Warning] > If the observed method is being called by another contract, this predicate won't detect it. - `contract-identifier` mandatory argument admits: - - string type, fully qualifying the contract to observe. Example: `SP000000000000000000002Q6VF78.pox` `method` mandatory argument admits: - string type, used for specifying the method to observe. Example: `stack-stx`. + - string type, fully qualifying the contract to observe.Example: `SP000000000000000000002Q6VF78.pox` +- `method` mandatory argument admits: + - string type, used for specifying the method to observe. Example: `stack-stx` ```json { @@ -149,7 +167,6 @@ Get any transaction, including a contract deployment implementing a given trait // coming soon - `implement-trait` mandatory argument admits: - - string type, fully qualifying the trait's shape to observe. Example: `ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM.sip09-protocol` ```json @@ -208,9 +225,12 @@ Following additional configurations can be used to improve the performance of ch - Stop evaluating chainhook after a given number of occurrences found: `"expire_after_occurrence": 1` -- Include decoded clarity values in the payload +- Include decoded clarity values in the payload: `"decode_clarity_values": true` +- Include the contract ABI for transactions that deploy contracts: +`"include_contract_abi": true` + ## Example predicate definition to print events Retrieve and HTTP Post to `http://localhost:3000/api/v1/wrapBtc` the first five transactions interacting with ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM.monkey-sip09, emitting print events containing the word 'vault'. diff --git a/docs/images/predicate-status-flowchart/PredicateStatusFlowchart.excalidraw b/docs/images/predicate-status-flowchart/PredicateStatusFlowchart.excalidraw new file mode 100644 index 000000000..ea0a68f69 --- /dev/null +++ b/docs/images/predicate-status-flowchart/PredicateStatusFlowchart.excalidraw @@ -0,0 +1,2106 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "https://excalidraw.com", + "elements": [ + { + "type": "rectangle", + "version": 115, + "versionNonce": 776192013, + "isDeleted": false, + "id": "UjFEV39vA62xHmRyCWSK7", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 449.421875, + "y": 207.65234375, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 119.8125, + "height": 60, + "seed": 573568707, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "ZE7lDcLAT02gRVQmoJnXa" + }, + { + "id": "UD4g2rtPMdMX76aHEISpO", + "type": "arrow" + }, + { + "id": "GITe4hkmrvQm2qJrc8t7t", + "type": "arrow" + } + ], + "updated": 1693246725368, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 53, + "versionNonce": 417452867, + "isDeleted": false, + "id": "ZE7lDcLAT02gRVQmoJnXa", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 460.96875, + "y": 214.65234375, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 96.71875, + "height": 46, + "seed": 1247093507, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1693246725368, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 2, + "text": "Predicate \nRegistered", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "UjFEV39vA62xHmRyCWSK7", + "originalText": "Predicate Registered", + "lineHeight": 1.15, + "baseline": 42 + }, + { + "type": "text", + "version": 99, + "versionNonce": 1028273773, + "isDeleted": false, + "id": "zKSW9tDVlAxKSh4c03IRw", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 409.80290950583037, + "y": 155.15546228734917, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 221.259765625, + "height": 23, + "seed": 1447675757, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1693246725368, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 2, + "text": "Chainhook internal event", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Chainhook internal event", + "lineHeight": 1.15, + "baseline": 19 + }, + { + "type": "text", + "version": 15, + "versionNonce": 1013740259, + "isDeleted": false, + "id": "ulrhrsP3bCg8l-5i5OfdS", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 806.73046875, + "y": 171.51171875, + "strokeColor": "#fffefe", + "backgroundColor": "transparent", + "width": 41.142578125, + "height": 23, + "seed": 1667394467, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1693246725368, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 2, + "text": "St88", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "St88", + "lineHeight": 1.15, + "baseline": 19 + }, + { + "type": "text", + "version": 16, + "versionNonce": 1693638861, + "isDeleted": false, + "id": "U4geAUEooWO-tMaYj9N75", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 822.984375, + "y": 160.59375, + "strokeColor": "#fffefe", + "backgroundColor": "transparent", + "width": 57.8125, + "height": 23, + "seed": 1177292965, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1693246725368, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 2, + "text": "asdaD", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "asdaD", + "lineHeight": 1.15, + "baseline": 19 + }, + { + "type": "text", + "version": 52, + "versionNonce": 1086463619, + "isDeleted": false, + "id": "n5Zrr2oxW5fu_2iuise9s", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 761.06640625, + "y": 153.85546875, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 56.69921875, + "height": 23, + "seed": 104812043, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1693246725368, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 2, + "text": "Status", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Status", + "lineHeight": 1.15, + "baseline": 19 + }, + { + "type": "rectangle", + "version": 136, + "versionNonce": 987184941, + "isDeleted": false, + "id": "oIz1vfaYEdHCDHe55ML85", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 734.12109375, + "y": 200.4609375, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 116, + "height": 60, + "seed": 1248398789, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "y9OfFloAQ08yICPUt4ENt" + }, + { + "id": "UD4g2rtPMdMX76aHEISpO", + "type": "arrow" + } + ], + "updated": 1693246725368, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 153, + "versionNonce": 1889621539, + "isDeleted": false, + "id": "y9OfFloAQ08yICPUt4ENt", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 776.1171875, + "y": 221.2609375, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 32.0078125, + "height": 18.4, + "seed": 1607994373, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1693246725368, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 2, + "text": "New", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "oIz1vfaYEdHCDHe55ML85", + "originalText": "New", + "lineHeight": 1.15, + "baseline": 15 + }, + { + "type": "arrow", + "version": 56, + "versionNonce": 1700843917, + "isDeleted": false, + "id": "UD4g2rtPMdMX76aHEISpO", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 575.43359375, + "y": 237.90625, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 144.51953125, + "height": 7.2265625, + "seed": 407840299, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1693246725368, + "link": null, + "locked": false, + "startBinding": { + "elementId": "UjFEV39vA62xHmRyCWSK7", + "focus": 0.10787658104469203, + "gap": 6.19921875 + }, + "endBinding": { + "elementId": "oIz1vfaYEdHCDHe55ML85", + "focus": 0.10303698493891769, + "gap": 14.16796875 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 144.51953125, + -7.2265625 + ] + ] + }, + { + "type": "rectangle", + "version": 77, + "versionNonce": 725836451, + "isDeleted": false, + "id": "ZvmnqZNJc9EgAXmWaosEK", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 451.30859375, + "y": 335.8671875, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 122.58984375, + "height": 62.125, + "seed": 596047819, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "cf8-xfK78OwT9blo_W07S" + }, + { + "id": "GITe4hkmrvQm2qJrc8t7t", + "type": "arrow" + }, + { + "id": "QZwGIHg6zCwxolwZCbUqW", + "type": "arrow" + }, + { + "id": "djLZxg7-dQzazao679PIu", + "type": "arrow" + }, + { + "id": "wT0WIuYwXK9qJaJbdcCZC", + "type": "arrow" + }, + { + "id": "WkYhnsevmXLh2XqowRPZx", + "type": "arrow" + } + ], + "updated": 1693323268825, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 45, + "versionNonce": 29956077, + "isDeleted": false, + "id": "cf8-xfK78OwT9blo_W07S", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 468.1259765625, + "y": 343.9296875, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 88.955078125, + "height": 46, + "seed": 785147909, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1693246725368, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 2, + "text": "Scanning \nBegins", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "ZvmnqZNJc9EgAXmWaosEK", + "originalText": "Scanning Begins", + "lineHeight": 1.15, + "baseline": 42 + }, + { + "type": "arrow", + "version": 84, + "versionNonce": 753297763, + "isDeleted": false, + "id": "GITe4hkmrvQm2qJrc8t7t", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 507.8048168187531, + "y": 276.203125, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 1.9888765502169576, + "height": 55.27734375, + "seed": 68704875, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1693246725368, + "link": null, + "locked": false, + "startBinding": { + "elementId": "UjFEV39vA62xHmRyCWSK7", + "focus": 0.05547291428400007, + "gap": 8.55078125 + }, + "endBinding": { + "elementId": "ZvmnqZNJc9EgAXmWaosEK", + "focus": -0.024584171650176338, + "gap": 4.38671875 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 1.9888765502169576, + 55.27734375 + ] + ] + }, + { + "type": "arrow", + "version": 710, + "versionNonce": 296045421, + "isDeleted": false, + "id": "QZwGIHg6zCwxolwZCbUqW", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 574.8984375, + "y": 369.9349412775456, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 100.75641225658967, + "height": 2.640611566035318, + "seed": 1435301899, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1693323288384, + "link": null, + "locked": false, + "startBinding": { + "elementId": "ZvmnqZNJc9EgAXmWaosEK", + "gap": 1, + "focus": 0.1381729988434557 + }, + "endBinding": { + "elementId": "I44ZjRGQe17clLABwWI_0", + "gap": 9.548596947956753, + "focus": 0.09048922543133398 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 100.75641225658967, + -2.640611566035318 + ] + ] + }, + { + "type": "rectangle", + "version": 472, + "versionNonce": 1302164749, + "isDeleted": false, + "id": "I44ZjRGQe17clLABwWI_0", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 685.2034467045464, + "y": 286.1482954047348, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 301, + "height": 170, + "seed": 327511045, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "g76NiXIvyHiE2XIoI09j4" + }, + { + "id": "QZwGIHg6zCwxolwZCbUqW", + "type": "arrow" + } + ], + "updated": 1693323288384, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 742, + "versionNonce": 1052323299, + "isDeleted": false, + "id": "g76NiXIvyHiE2XIoI09j4", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 690.2034467045464, + "y": 297.54829540473486, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 284.6328125, + "height": 147.2, + "seed": 241410917, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1693323288384, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 2, + "text": "Scanning:\n{\n number_of_blocks_to_scan: number,\n number_of_blocks_evaluated: number,\n number_of_times_triggered: number,\n last_evaluated_block_height: number,\n last_occurrence: timestamp\n}", + "textAlign": "left", + "verticalAlign": "middle", + "containerId": "I44ZjRGQe17clLABwWI_0", + "originalText": "Scanning:\n{\n number_of_blocks_to_scan: number,\n number_of_blocks_evaluated: number,\n number_of_times_triggered: number,\n last_evaluated_block_height: number,\n last_occurrence: timestamp\n}", + "lineHeight": 1.15, + "baseline": 143 + }, + { + "type": "arrow", + "version": 740, + "versionNonce": 1953915021, + "isDeleted": false, + "id": "djLZxg7-dQzazao679PIu", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 456.2992116259511, + "y": 404.3939634938485, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 52.77049207145819, + "height": 333.28550289040726, + "seed": 1649129189, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1693323307829, + "link": null, + "locked": false, + "startBinding": { + "elementId": "ZvmnqZNJc9EgAXmWaosEK", + "focus": 0.6820987961010629, + "gap": 6.401775993848503 + }, + "endBinding": { + "elementId": "VJVw8FzuCprLKb3d5rkg7", + "focus": -1.055639275814804, + "gap": 12.611451096629935 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -52.77049207145819, + 213.5266977787108 + ], + [ + -40.98989083312517, + 333.28550289040726 + ] + ] + }, + { + "type": "arrow", + "version": 862, + "versionNonce": 240497827, + "isDeleted": false, + "id": "wT0WIuYwXK9qJaJbdcCZC", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 502.18588894383083, + "y": 405.5301706503234, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 10.897504678678956, + "height": 137.49192545589256, + "seed": 1097920421, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1693323294435, + "link": null, + "locked": false, + "startBinding": { + "elementId": "ZvmnqZNJc9EgAXmWaosEK", + "focus": 0.11552311874670006, + "gap": 7.537983150323328 + }, + "endBinding": { + "elementId": "cuhfmFofLnkXv7e6B6frL", + "focus": -0.2904145603107151, + "gap": 12.30967309967673 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -10.897504678678956, + 137.49192545589256 + ] + ] + }, + { + "type": "rectangle", + "version": 198, + "versionNonce": 1587877443, + "isDeleted": false, + "id": "PjV1T-aVal-O9M1bWSnHt", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 549.8509848204694, + "y": 468.1896019526268, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 107.90234375, + "height": 60, + "seed": 1022741893, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "8WcD_O-LpU-RAcn5iSEbV" + }, + { + "id": "0c2QxpluQRDQYeIoOqeQ8", + "type": "arrow" + }, + { + "id": "5TjKVv9EWolhxDOo0FOtP", + "type": "arrow" + }, + { + "id": "rMULHXDE5-aPl8XX1HpiF", + "type": "arrow" + }, + { + "id": "WkYhnsevmXLh2XqowRPZx", + "type": "arrow" + } + ], + "updated": 1693323268825, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 149, + "versionNonce": 733108675, + "isDeleted": false, + "id": "8WcD_O-LpU-RAcn5iSEbV", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 566.0091879454694, + "y": 475.1896019526268, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 75.5859375, + "height": 46, + "seed": 1248103755, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1693323250981, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 2, + "text": "an error \noccurs", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "PjV1T-aVal-O9M1bWSnHt", + "originalText": "an error occurs", + "lineHeight": 1.15, + "baseline": 42 + }, + { + "type": "rectangle", + "version": 223, + "versionNonce": 1052011181, + "isDeleted": false, + "id": "rM7jCr5aR4SHEFYIlN8cy", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 735.3088360229422, + "y": 485.9675585524932, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 201, + "height": 46, + "seed": 1239186315, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "11_pUdLMmE8tXvaDM7Juc" + }, + { + "id": "0c2QxpluQRDQYeIoOqeQ8", + "type": "arrow" + } + ], + "updated": 1693323291564, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 211, + "versionNonce": 85893795, + "isDeleted": false, + "id": "11_pUdLMmE8tXvaDM7Juc", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 740.3088360229422, + "y": 499.76755855249314, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 163.625, + "height": 18.4, + "seed": 500437605, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1693323291564, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 2, + "text": "Interrupted: string error", + "textAlign": "left", + "verticalAlign": "middle", + "containerId": "rM7jCr5aR4SHEFYIlN8cy", + "originalText": "Interrupted: string error", + "lineHeight": 1.15, + "baseline": 15 + }, + { + "type": "arrow", + "version": 593, + "versionNonce": 1528321603, + "isDeleted": false, + "id": "0c2QxpluQRDQYeIoOqeQ8", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 660.5775473204694, + "y": 502.1463532508906, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 63.93281899779993, + "height": 8.847597802710993, + "seed": 407387397, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1693323291564, + "link": null, + "locked": false, + "startBinding": { + "elementId": "PjV1T-aVal-O9M1bWSnHt", + "focus": -0.10928341680618532, + "gap": 2.82421875 + }, + "endBinding": { + "elementId": "rM7jCr5aR4SHEFYIlN8cy", + "focus": -0.47222365654962584, + "gap": 10.798469704672812 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 63.93281899779993, + 8.847597802710993 + ] + ] + }, + { + "type": "rectangle", + "version": 372, + "versionNonce": 1421216333, + "isDeleted": false, + "id": "cuhfmFofLnkXv7e6B6frL", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 426.54333754341405, + "y": 555.3317692058927, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 173, + "height": 85, + "seed": 402021, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "uHnEVWA05ARKVWKeYFR4X" + }, + { + "id": "wT0WIuYwXK9qJaJbdcCZC", + "type": "arrow" + }, + { + "id": "3VdXQBfzi-sxK4qZXtwHA", + "type": "arrow" + }, + { + "id": "5TjKVv9EWolhxDOo0FOtP", + "type": "arrow" + }, + { + "id": "1IKMEYtMW6iV8e47xxpUh", + "type": "arrow" + }, + { + "id": "g57-8kI6Tx2dqbk17t8WB", + "type": "arrow" + } + ], + "updated": 1693323294434, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 480, + "versionNonce": 20991235, + "isDeleted": false, + "id": "uHnEVWA05ARKVWKeYFR4X", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 432.98962660591405, + "y": 574.8317692058927, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 160.107421875, + "height": 46, + "seed": 1933358597, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1693323294434, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 2, + "text": "Scanning reaches\n chain tip", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "cuhfmFofLnkXv7e6B6frL", + "originalText": "Scanning reaches chain tip", + "lineHeight": 1.15, + "baseline": 42 + }, + { + "type": "arrow", + "version": 662, + "versionNonce": 261957699, + "isDeleted": false, + "id": "3VdXQBfzi-sxK4qZXtwHA", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 606.871462543414, + "y": 608.5031917728453, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 94.12180678440996, + "height": 7.795856229389301, + "seed": 587078571, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1693323294435, + "link": null, + "locked": false, + "startBinding": { + "elementId": "cuhfmFofLnkXv7e6B6frL", + "gap": 7.328125, + "focus": 0.36937968830832907 + }, + "endBinding": { + "elementId": "GouMOOaqys858htk8Em2w", + "gap": 1.21484375, + "focus": 0.5087553000652315 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 94.12180678440996, + -7.795856229389301 + ] + ] + }, + { + "type": "rectangle", + "version": 303, + "versionNonce": 1542562787, + "isDeleted": false, + "id": "GouMOOaqys858htk8Em2w", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 702.208113077824, + "y": 554.0675712078972, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fffefe", + "width": 380, + "height": 158, + "seed": 214722923, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "H-CDqq8nfnf7JdUhzfd05" + }, + { + "id": "3VdXQBfzi-sxK4qZXtwHA", + "type": "arrow" + } + ], + "updated": 1693323292615, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 460, + "versionNonce": 1347764173, + "isDeleted": false, + "id": "H-CDqq8nfnf7JdUhzfd05", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 707.208113077824, + "y": 559.4675712078972, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 284.6328125, + "height": 147.2, + "seed": 420596171, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1693323292615, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 2, + "text": "Streaming:\n{\n number_of_times_triggered: number,\n number_of_blocks_evaluated: number,\n last_evaluated_block_height: number,\n last_occurrence: timestamp,\n last_evaluation: timestamp\n}", + "textAlign": "left", + "verticalAlign": "middle", + "containerId": "GouMOOaqys858htk8Em2w", + "originalText": "Streaming:\n{\n number_of_times_triggered: number,\n number_of_blocks_evaluated: number,\n last_evaluated_block_height: number,\n last_occurrence: timestamp,\n last_evaluation: timestamp\n}", + "lineHeight": 1.15, + "baseline": 143 + }, + { + "type": "arrow", + "version": 628, + "versionNonce": 1257580515, + "isDeleted": false, + "id": "5TjKVv9EWolhxDOo0FOtP", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 563.9355095175913, + "y": 551.1796545141408, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 21.70734913495869, + "height": 19.99645646469287, + "seed": 1956554859, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1693323294435, + "link": null, + "locked": false, + "startBinding": { + "elementId": "cuhfmFofLnkXv7e6B6frL", + "focus": -0.0005490411077573741, + "gap": 4.152114691751876 + }, + "endBinding": { + "elementId": "PjV1T-aVal-O9M1bWSnHt", + "focus": -0.20408736108212475, + "gap": 2.9935960968210793 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 21.70734913495869, + -19.99645646469287 + ] + ] + }, + { + "type": "rectangle", + "version": 607, + "versionNonce": 773623669, + "isDeleted": false, + "id": "VJVw8FzuCprLKb3d5rkg7", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 427.92077188945586, + "y": 698.4218140201257, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 196, + "height": 109, + "seed": 369499083, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "sbI2nD8phu5m6TgLXK3Hn" + }, + { + "id": "06estKp-6kQgwxO2t6KFG", + "type": "arrow" + }, + { + "id": "rMULHXDE5-aPl8XX1HpiF", + "type": "arrow" + }, + { + "id": "1IKMEYtMW6iV8e47xxpUh", + "type": "arrow" + }, + { + "id": "djLZxg7-dQzazao679PIu", + "type": "arrow" + }, + { + "id": "AI2OtMRbHFAQsydSNQb9y", + "type": "arrow" + }, + { + "id": "dPq75c13Wt7-UY0z2ZlUX", + "type": "arrow" + }, + { + "id": "KvsZXMShlfH_2BOhg46qy", + "type": "arrow" + } + ], + "updated": 1694622859986, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 1013, + "versionNonce": 1575463309, + "isDeleted": false, + "id": "sbI2nD8phu5m6TgLXK3Hn", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 440.88170938945586, + "y": 718.4218140201257, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 170.078125, + "height": 69, + "seed": 1711696491, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1693323298384, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 2, + "text": "Scanning or \nstreaming reaches \n\"end_block\" ", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "VJVw8FzuCprLKb3d5rkg7", + "originalText": "Scanning or streaming reaches \"end_block\" ", + "lineHeight": 1.15, + "baseline": 65 + }, + { + "type": "rectangle", + "version": 443, + "versionNonce": 1725637197, + "isDeleted": false, + "id": "v8XemaV8aJ9l--tdjufTD", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 711.6753975882452, + "y": 734.9948541984346, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fffefe", + "width": 325, + "height": 155, + "seed": 523773989, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "oMSttaMhU_wKGGAHXk_id" + }, + { + "id": "06estKp-6kQgwxO2t6KFG", + "type": "arrow" + } + ], + "updated": 1693323296449, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 581, + "versionNonce": 682379323, + "isDeleted": false, + "id": "oMSttaMhU_wKGGAHXk_id", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 716.6753975882452, + "y": 748.0948541984346, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 284.6328125, + "height": 128.79999999999998, + "seed": 1755962245, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1694622802753, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 2, + "text": "ExpiredUnconfirmed:\n{\n number_of_times_triggered: number,\n number_of_blocks_evaluated: number,\n last_evaluated_block_height: number,\n last_occurrence: timestamp\n}", + "textAlign": "left", + "verticalAlign": "middle", + "containerId": "v8XemaV8aJ9l--tdjufTD", + "originalText": "ExpiredUnconfirmed:\n{\n number_of_times_triggered: number,\n number_of_blocks_evaluated: number,\n last_evaluated_block_height: number,\n last_occurrence: timestamp\n}", + "lineHeight": 1.15, + "baseline": 125 + }, + { + "type": "arrow", + "version": 1136, + "versionNonce": 1941237741, + "isDeleted": false, + "id": "06estKp-6kQgwxO2t6KFG", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 626.5613968894559, + "y": 770.3360832644444, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 80.82493819878937, + "height": 8.000145116694966, + "seed": 1044084779, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1693323298385, + "link": null, + "locked": false, + "startBinding": { + "elementId": "VJVw8FzuCprLKb3d5rkg7", + "gap": 2.640625, + "focus": 0.10172512118319793 + }, + "endBinding": { + "elementId": "v8XemaV8aJ9l--tdjufTD", + "gap": 4.2890625, + "focus": 0.1885960285484996 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 80.82493819878937, + 8.000145116694966 + ] + ] + }, + { + "type": "arrow", + "version": 577, + "versionNonce": 38015331, + "isDeleted": false, + "id": "rMULHXDE5-aPl8XX1HpiF", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 616.5597720892812, + "y": 693.9391277225493, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 6.774993717848588, + "height": 156.8105767747229, + "seed": 1662498571, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1693323298385, + "link": null, + "locked": false, + "startBinding": { + "elementId": "VJVw8FzuCprLKb3d5rkg7", + "gap": 4.482686297576379, + "focus": 0.4705886791648863 + }, + "endBinding": { + "elementId": "PjV1T-aVal-O9M1bWSnHt", + "focus": -0.11921475427335945, + "gap": 8.93894899519944 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 2.339646886887863, + -4.447393347200659 + ], + [ + -4.435346830960725, + -156.8105767747229 + ] + ] + }, + { + "type": "arrow", + "version": 665, + "versionNonce": 1461841155, + "isDeleted": false, + "id": "1IKMEYtMW6iV8e47xxpUh", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 511.8992995910817, + "y": 651.6471881312585, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 4.936153623101745, + "height": 42.33736553126937, + "seed": 584409253, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1693323298385, + "link": null, + "locked": false, + "startBinding": { + "elementId": "cuhfmFofLnkXv7e6B6frL", + "gap": 11.315418925365861, + "focus": 0.07620959491265597 + }, + "endBinding": { + "elementId": "VJVw8FzuCprLKb3d5rkg7", + "gap": 4.437260357597779, + "focus": -0.02121397528307976 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 4.936153623101745, + 42.33736553126937 + ] + ] + }, + { + "type": "rectangle", + "version": 831, + "versionNonce": 1114522747, + "isDeleted": false, + "id": "QFC4ZYVbNfa9mBV9mRzba", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 390.78225569843585, + "y": 1008.7176721301067, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 196, + "height": 109, + "seed": 318026947, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "bjF0emENn5CCcCN01MRab" + }, + { + "id": "AI2OtMRbHFAQsydSNQb9y", + "type": "arrow" + }, + { + "id": "KvsZXMShlfH_2BOhg46qy", + "type": "arrow" + }, + { + "id": "g57-8kI6Tx2dqbk17t8WB", + "type": "arrow" + } + ], + "updated": 1694622809464, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 1245, + "versionNonce": 516291867, + "isDeleted": false, + "id": "bjF0emENn5CCcCN01MRab", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 461.54592757343585, + "y": 1051.7176721301066, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 54.47265625, + "height": 23, + "seed": 78062691, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1694622809464, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 2, + "text": "Reorg", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "QFC4ZYVbNfa9mBV9mRzba", + "originalText": "Reorg", + "lineHeight": 1.15, + "baseline": 19 + }, + { + "type": "arrow", + "version": 478, + "versionNonce": 1670999509, + "isDeleted": false, + "id": "AI2OtMRbHFAQsydSNQb9y", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 414.421285151069, + "y": 1005.0299520619433, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 23.009228451167758, + "height": 199.37867487825895, + "seed": 1595966755, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1694622874029, + "link": null, + "locked": false, + "startBinding": { + "elementId": "QFC4ZYVbNfa9mBV9mRzba", + "focus": -0.6597163319224459, + "gap": 3.687720068163401 + }, + "endBinding": { + "elementId": "VJVw8FzuCprLKb3d5rkg7", + "focus": 0.7675854498548031, + "gap": 1.9927953926588202 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -11.502537105439728, + -111.53573918643804 + ], + [ + 11.50669134572803, + -199.37867487825895 + ] + ] + }, + { + "type": "arrow", + "version": 1133, + "versionNonce": 1677632725, + "isDeleted": false, + "id": "KvsZXMShlfH_2BOhg46qy", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 444.71562375340613, + "y": 809.7039836076483, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 21.935401940051293, + "height": 196.29494448998514, + "seed": 640396717, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1694622885264, + "link": null, + "locked": false, + "startBinding": { + "elementId": "VJVw8FzuCprLKb3d5rkg7", + "focus": 0.6206873428350862, + "gap": 2.282169587522617 + }, + "endBinding": { + "elementId": "QFC4ZYVbNfa9mBV9mRzba", + "focus": -0.41444467780518385, + "gap": 2.7187440324732393 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -21.935401940051293, + 97.53554194371304 + ], + [ + -7.894879904453546, + 196.29494448998514 + ] + ] + }, + { + "type": "arrow", + "version": 710, + "versionNonce": 762124187, + "isDeleted": false, + "id": "g57-8kI6Tx2dqbk17t8WB", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 404.70901517425114, + "y": 1007.7176721301066, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 84.18863410793688, + "height": 360.68468353730907, + "seed": 1246228803, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1694622809464, + "link": null, + "locked": false, + "startBinding": { + "elementId": "QFC4ZYVbNfa9mBV9mRzba", + "focus": -0.5378213678267441, + "gap": 1 + }, + "endBinding": { + "elementId": "cuhfmFofLnkXv7e6B6frL", + "focus": 0.5837090881973133, + "gap": 6.7012193869048815 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -56.1934924337628, + -151.93928882820387 + ], + [ + 27.99514167417408, + -360.68468353730907 + ] + ] + }, + { + "type": "arrow", + "version": 126, + "versionNonce": 445686637, + "isDeleted": false, + "id": "WkYhnsevmXLh2XqowRPZx", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 563.5594198689771, + "y": 401.85717673144467, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 14.25196204286408, + "height": 60.58308263581745, + "seed": 950922723, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1693323268829, + "link": null, + "locked": false, + "startBinding": { + "elementId": "ZvmnqZNJc9EgAXmWaosEK", + "focus": -0.6230017385259247, + "gap": 3.8649892314446674 + }, + "endBinding": { + "elementId": "PjV1T-aVal-O9M1bWSnHt", + "focus": -0.28817041786904013, + "gap": 5.749342585364701 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 14.25196204286408, + 60.58308263581745 + ] + ] + }, + { + "type": "rectangle", + "version": 720, + "versionNonce": 613937909, + "isDeleted": false, + "id": "6evQPs114K99wYslVA3lc", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 469.0322503573975, + "y": 856.7813382617101, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 196, + "height": 109, + "seed": 1851342139, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "qstuPvboSd5cDgDO2crr8" + }, + { + "id": "dPq75c13Wt7-UY0z2ZlUX", + "type": "arrow" + }, + { + "id": "-DLh1Hquji1zA-aPPWB68", + "type": "arrow" + } + ], + "updated": 1694622852486, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 1152, + "versionNonce": 1017418427, + "isDeleted": false, + "id": "qstuPvboSd5cDgDO2crr8", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 501.5635003573975, + "y": 888.2813382617101, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 130.9375, + "height": 46, + "seed": 743693787, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1694622825027, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 2, + "text": "\"end_block\" is \nconfirmed", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "6evQPs114K99wYslVA3lc", + "originalText": "\"end_block\" is confirmed", + "lineHeight": 1.15, + "baseline": 42 + }, + { + "id": "dPq75c13Wt7-UY0z2ZlUX", + "type": "arrow", + "x": 548.9557224304908, + "y": 812.1542895512052, + "width": 4.149587198984591, + "height": 42.60450633807136, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "seed": 1420309461, + "version": 68, + "versionNonce": 497034715, + "isDeleted": false, + "boundElements": null, + "updated": 1694622835426, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 4.149587198984591, + 42.60450633807136 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "VJVw8FzuCprLKb3d5rkg7", + "focus": -0.16712940342499136, + "gap": 4.732475531079558 + }, + "endBinding": { + "elementId": "6evQPs114K99wYslVA3lc", + "focus": -0.08152081048962034, + "gap": 2.0225423724334632 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "rectangle", + "version": 546, + "versionNonce": 1370847669, + "isDeleted": false, + "id": "WEx7Gt9m-vnKB2WzyjWmh", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 709.4556719342766, + "y": 923.9101941297819, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fffefe", + "width": 325, + "height": 155, + "seed": 834510197, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "YWpk3RazRnr8Q68Id41Wm" + }, + { + "id": "-DLh1Hquji1zA-aPPWB68", + "type": "arrow" + } + ], + "updated": 1694622852486, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 688, + "versionNonce": 51897557, + "isDeleted": false, + "id": "YWpk3RazRnr8Q68Id41Wm", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 714.4556719342766, + "y": 937.0101941297819, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 284.6328125, + "height": 128.79999999999998, + "seed": 997467861, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1694622845413, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 2, + "text": "ExpiredConfirmed:\n{\n number_of_times_triggered: number,\n number_of_blocks_evaluated: number,\n last_evaluated_block_height: number,\n last_occurrence: timestamp\n}", + "textAlign": "left", + "verticalAlign": "middle", + "containerId": "WEx7Gt9m-vnKB2WzyjWmh", + "originalText": "ExpiredConfirmed:\n{\n number_of_times_triggered: number,\n number_of_blocks_evaluated: number,\n last_evaluated_block_height: number,\n last_occurrence: timestamp\n}", + "lineHeight": 1.15, + "baseline": 125 + }, + { + "id": "-DLh1Hquji1zA-aPPWB68", + "type": "arrow", + "x": 667.1655294401883, + "y": 948.8546927383518, + "width": 35.36053812696866, + "height": 24.220766483342913, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "seed": 788113307, + "version": 145, + "versionNonce": 1876812667, + "isDeleted": false, + "boundElements": null, + "updated": 1694622855694, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 35.36053812696866, + 24.220766483342913 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "6evQPs114K99wYslVA3lc", + "focus": -0.2549978383729463, + "gap": 2.13327908279075 + }, + "endBinding": { + "elementId": "WEx7Gt9m-vnKB2WzyjWmh", + "focus": -0.46459503844075406, + "gap": 6.929604367119623 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + } + ], + "appState": { + "gridSize": null, + "viewBackgroundColor": "#ffffff" + }, + "files": {} +} \ No newline at end of file diff --git a/docs/images/predicate-status-flowchart/PredicateStatusFlowchart.png b/docs/images/predicate-status-flowchart/PredicateStatusFlowchart.png new file mode 100644 index 000000000..e37e24006 Binary files /dev/null and b/docs/images/predicate-status-flowchart/PredicateStatusFlowchart.png differ diff --git a/docs/overview.md b/docs/overview.md index 6f82710ce..b154a4059 100644 --- a/docs/overview.md +++ b/docs/overview.md @@ -4,7 +4,7 @@ title: Overview # Chainhook Overview -Chainhook is a reorg-aware transaction indexing engine that helps developers get reliable blockchain data, regardless of forks and reorgs. By focusing only on the data devs care about, Chainhook helps developers work with much lighter datasets and build IFTTT logic into their applications. +Chainhook is a reorg-aware transaction indexing engine that helps you get reliable blockchain data, regardless of forks and reorgs. By focusing only on the data developers care about, Chainhook helps devs work with much lighter datasets and build IFTTT logic into their applications. Chainhook can be used as a tool in your local development environment and as a service in the cloud environment. @@ -18,15 +18,15 @@ With Chainhook, developers can build consistent, reorg-proof databases that inde ## Features -1. **Faster, More Efficient Indexing:** Instead of working with a generic blockchain indexer, taking hours to process every single transaction of every single block, developers can create their own indexes, build, iterate, and refine them in minutes. Chainhook can help developers avoid massive storage management and storage scaling issues by avoiding full chain indexation. Lighter indexes imply faster query results, which helps minimize end-user response time. This leads to an enhanced Developer Experience and an improved End-User Experience. +1. **Faster, More Efficient Indexing:** Instead of working with a generic blockchain indexer, taking hours to process every single transaction of every single block, you can create your own index, build, iterate, and refine it in minutes. Chainhook can help you avoid massive storage management and storage scaling issues by avoiding full chain indexation. Lighter indexes lead to faster query results, which helps minimize end-user response time. This leads to a better developer experience and a better end-user experience. 2. **Re-org and Fork Aware:** Chainhook stores possible chain forks and checks each new chain event against the forks to maintain the current valid fork. All triggers, also known as **predicates**, are evaluated against the current valid fork. In the event of a reorg, Chainhook computes a list of new blocks to apply and old blocks to rollback and evaluates the registered predicates against those blocks. -3. **IFTTT Logic, powering your applications:** Chainhook helps developers create elegant event-based architectures using triggers, also known as **predicates**. Developers can write “if_this / then_that” **predicates**that when triggered, are packaged as events and forwarded to the configured destination. By using cloud functions as destinations, developers can also cut costs on processing by only paying for processing when a block that contains some data relevant to the developer's application is being mined. +3. **IFTTT Logic, powering your applications:** Chainhook helps developers create elegant event-based architectures using triggers, also known as **predicates**. Developers can write “if_this / then_that” **predicates** that when triggered, are packaged as events and forwarded to the configured destination. By using cloud functions as destinations, developers can also cut costs on processing by only paying for processing when a block that contains some data relevant to the developer's application is being mined. ## Chainhooks: Trigger IFTTT Logic in your Application -With Chainhook, developers can trigger actions based on predicates they can define. Chainhooks can be triggered by events such as: +With Chainhook, you can trigger actions based on predicates you define. Chainhooks can be triggered by events such as: - A certain amount of SIP-10 tokens were transferred - A particular blockchain address received some tokens on the Stacks/Bitcoin blockchain diff --git a/rust-toolchain b/rust-toolchain index 969710ab0..22048ac5b 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -1,2 +1,2 @@ [toolchain] -channel = "1.67.0" +channel = "1.70.0" diff --git a/tests/integration-tests/.env b/tests/integration-tests/.env new file mode 100644 index 000000000..5f08869a1 --- /dev/null +++ b/tests/integration-tests/.env @@ -0,0 +1 @@ +DOMAIN_URL="https://a738-2405-201-200a-3191-40d5-db02-efa-357.ngrok.io" diff --git a/tests/integration-tests/.gitignore b/tests/integration-tests/.gitignore new file mode 100755 index 000000000..1327e1ab4 --- /dev/null +++ b/tests/integration-tests/.gitignore @@ -0,0 +1,20 @@ +dist/ +node_modules/ +example/node_modules +example/dist +tests/screenshots/* +.next +.idea +.DS_Store +.vercel +yarn-error.log +stacks-wallet-chromium.zip +packages +web-ext-artifacts/ +.yalc/ +yalc.lock +coverage +.jest-cache +release_body.md +metamask-extension/chrome/* +cache diff --git a/tests/integration-tests/Chainhook.toml b/tests/integration-tests/Chainhook.toml new file mode 100644 index 000000000..8b94a5415 --- /dev/null +++ b/tests/integration-tests/Chainhook.toml @@ -0,0 +1,35 @@ +[storage] +working_dir = "cache" + +# The Http Api allows you to register / deregister +# dynamically predicates. +# Disable by default. +# +# [http_api] +# http_port = 20456 +# database_uri = "redis://localhost:6379/" + +[network] +mode = "testnet" +bitcoind_rpc_url = "http://localhost:8332" +bitcoind_rpc_username = "root" +bitcoind_rpc_password = "root" +# Bitcoin block events can be received by Chainhook +# either through a Bitcoin node's ZeroMQ interface, +# or through the Stacks node. The Stacks node is +# used by default: +stacks_node_rpc_url = "http://localhost:20443" +# but zmq can be used instead: +# bitcoind_zmq_url = "tcp://0.0.0.0:18543" + +[limits] +max_number_of_bitcoin_predicates = 100 +max_number_of_concurrent_bitcoin_scans = 100 +max_number_of_stacks_predicates = 10 +max_number_of_concurrent_stacks_scans = 10 +max_number_of_processing_threads = 16 +max_number_of_networking_threads = 16 +max_caching_memory_size_mb = 32000 + +[[event_source]] +tsv_file_url = "https://archive.hiro.so/testnet/stacks-blockchain-api/testnet-stacks-blockchain-api-latest" diff --git a/tests/integration-tests/jest.config.js b/tests/integration-tests/jest.config.js new file mode 100755 index 000000000..2b6c331d4 --- /dev/null +++ b/tests/integration-tests/jest.config.js @@ -0,0 +1,13 @@ +module.exports = { + collectCoverage: true, + coverageReporters: ['html', 'json-summary'], + collectCoverageFrom: ['tests/*.ts'], + testEnvironment: 'node', + setupFiles: ["/tests/setup-tests.ts"], + moduleFileExtensions: ['js', 'json', 'jsx', 'ts', 'tsx', 'node', 'd.ts'], + roots: ['/tests'], + preset: 'ts-jest', + testMatch: ['**/?(*.)+(spec).(js|ts|tsx)'], + testRunner: 'jest-circus/runner', + cacheDirectory: '/.jest-cache', +}; diff --git a/tests/integration-tests/package-lock.json b/tests/integration-tests/package-lock.json new file mode 100644 index 000000000..f17e886c9 --- /dev/null +++ b/tests/integration-tests/package-lock.json @@ -0,0 +1,25910 @@ +{ + "name": "chainhook-playwright", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "chainhook-playwright", + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "@types/express": "^4.17.17", + "express": "^4.18.2" + }, + "devDependencies": { + "@babel/core": "7.16.5", + "@babel/plugin-proposal-class-properties": "7.16.5", + "@babel/plugin-transform-regenerator": "7.16.5", + "@babel/plugin-transform-runtime": "7.16.5", + "@babel/preset-env": "7.16.5", + "@babel/preset-react": "7.16.5", + "@babel/preset-typescript": "7.16.5", + "@babel/runtime": "7.16.5", + "@playwright/test": "^1.25.1", + "@types/chroma-js": "2.1.3", + "@types/chrome": "0.0.171", + "@types/jest": "27.0.3", + "@types/jest-dev-server": "5.0.0", + "@types/jsdom": "16.2.14", + "@types/just-debounce-it": "1.5.0", + "@types/node": "^17.0.45", + "@types/webpack": "5.28.0", + "@types/webpack-dev-server": "4.5.0", + "dotenv": "10.0.0", + "eslint": "7.32.0", + "jest": "^27.0.7", + "jest-chrome": "0.7.2", + "jest-circus": "27.3.1", + "jest-dev-server": "6.0.0", + "jest-junit": "13.0.0", + "playwright": "^1.25.1", + "playwright-chromium": "1.17.1", + "playwright-core": "1.17.1", + "prettier": "^2.7.1", + "puppeteer": "^17.0.0", + "puppeteer-core": "^17.0.0", + "ts-jest": "27.0.7", + "ts-node": "10.4", + "typescript": "4.5.4", + "webpack-cli": "4.9.1", + "webpack-dev-server": "^4.10.1", + "webpack-hot-middleware": "2.25.1" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", + "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", + "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.5.tgz", + "integrity": "sha512-wUcenlLzuWMZ9Zt8S0KmFwGlH6QKRh3vsm/dhDA3CHkiTA45YuG1XkHRcNRl73EFPXDp/d5kVOU0/y7x2w6OaQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.5", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-module-transforms": "^7.16.5", + "@babel/helpers": "^7.16.5", + "@babel/parser": "^7.16.5", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.5", + "@babel/types": "^7.16.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.9.tgz", + "integrity": "sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.5.tgz", + "integrity": "sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz", + "integrity": "sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.5", + "browserslist": "^4.21.9", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.9.tgz", + "integrity": "sha512-Pwyi89uO4YrGKxL/eNJ8lfEH55DnRloGPOseaA8NFNL6jAUnn+KccaISiFazCj5IolPPDjGSdzQzXVzODVRqUQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz", + "integrity": "sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", + "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", + "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz", + "integrity": "sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", + "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", + "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz", + "integrity": "sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-wrap-function": "^7.22.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz", + "integrity": "sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", + "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", + "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.9.tgz", + "integrity": "sha512-sZ+QzfauuUEfxSEjKFmi3qDSHgLsTPK/pEpoD/qonZKOtTPTLbf59oabPQ4rKekt9lFcj/hTZaOhWwFYrgjk+Q==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz", + "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.6", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", + "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.22.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz", + "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz", + "integrity": "sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz", + "integrity": "sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", + "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.5.tgz", + "integrity": "sha512-pJD3HjgRv83s5dv1sTnDbZOaTjghKEz8KUn1Kbh2eAIRhGuyQ1XSeI4xVXU3UlIEVA3DAyIdxqT1eRn7Wcn55A==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz", + "integrity": "sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", + "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", + "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz", + "integrity": "sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", + "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", + "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", + "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", + "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", + "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.5.tgz", + "integrity": "sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz", + "integrity": "sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", + "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.5.tgz", + "integrity": "sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", + "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", + "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", + "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz", + "integrity": "sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", + "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", + "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", + "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz", + "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz", + "integrity": "sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz", + "integrity": "sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", + "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", + "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", + "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.6.tgz", + "integrity": "sha512-Vd5HiWml0mDVtcLHIoEU5sw6HOUW/Zk0acLs/SAeuLzkGNOPc9DB4nkUajemhCmTIz3eiaKREZn2hQQqF79YTg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz", + "integrity": "sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", + "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz", + "integrity": "sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.5.tgz", + "integrity": "sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", + "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", + "dev": true, + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz", + "integrity": "sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.5.tgz", + "integrity": "sha512-2z+it2eVWU8TtQQRauvGUqZwLy4+7rTfo6wO4npr+fvvN1SW30ZF3O/ZRCNmTuu4F5MIP8OJhXAhRV5QMJOuYg==", + "dev": true, + "dependencies": { + "regenerator-transform": "^0.14.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", + "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.5.tgz", + "integrity": "sha512-gxpfS8XQWDbQ8oP5NcmpXxtEgCJkbO+W9VhZlOhr0xPyVaRjAQPOv7ZDj9fg0d5s9+NiVvMCE6gbkEkcsxwGRw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.16.5", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", + "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", + "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", + "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", + "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", + "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.9.tgz", + "integrity": "sha512-BnVR1CpKiuD0iobHPaM1iLvcwPYN2uVFAqoLVSpEDKWuOikoCv5HbKLxclhKYUXlWkX86DoZGtqI4XhbOsyrMg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.9", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-typescript": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.5.tgz", + "integrity": "sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", + "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.5.tgz", + "integrity": "sha512-MiJJW5pwsktG61NDxpZ4oJ1CKxM1ncam9bzRtx9g40/WkLRkxFP6mhpkYV0/DxcciqoiHicx291+eUQrXb/SfQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.5", + "@babel/plugin-proposal-class-properties": "^7.16.5", + "@babel/plugin-proposal-class-static-block": "^7.16.5", + "@babel/plugin-proposal-dynamic-import": "^7.16.5", + "@babel/plugin-proposal-export-namespace-from": "^7.16.5", + "@babel/plugin-proposal-json-strings": "^7.16.5", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.5", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.5", + "@babel/plugin-proposal-numeric-separator": "^7.16.5", + "@babel/plugin-proposal-object-rest-spread": "^7.16.5", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.5", + "@babel/plugin-proposal-optional-chaining": "^7.16.5", + "@babel/plugin-proposal-private-methods": "^7.16.5", + "@babel/plugin-proposal-private-property-in-object": "^7.16.5", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.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.16.5", + "@babel/plugin-transform-async-to-generator": "^7.16.5", + "@babel/plugin-transform-block-scoped-functions": "^7.16.5", + "@babel/plugin-transform-block-scoping": "^7.16.5", + "@babel/plugin-transform-classes": "^7.16.5", + "@babel/plugin-transform-computed-properties": "^7.16.5", + "@babel/plugin-transform-destructuring": "^7.16.5", + "@babel/plugin-transform-dotall-regex": "^7.16.5", + "@babel/plugin-transform-duplicate-keys": "^7.16.5", + "@babel/plugin-transform-exponentiation-operator": "^7.16.5", + "@babel/plugin-transform-for-of": "^7.16.5", + "@babel/plugin-transform-function-name": "^7.16.5", + "@babel/plugin-transform-literals": "^7.16.5", + "@babel/plugin-transform-member-expression-literals": "^7.16.5", + "@babel/plugin-transform-modules-amd": "^7.16.5", + "@babel/plugin-transform-modules-commonjs": "^7.16.5", + "@babel/plugin-transform-modules-systemjs": "^7.16.5", + "@babel/plugin-transform-modules-umd": "^7.16.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.5", + "@babel/plugin-transform-new-target": "^7.16.5", + "@babel/plugin-transform-object-super": "^7.16.5", + "@babel/plugin-transform-parameters": "^7.16.5", + "@babel/plugin-transform-property-literals": "^7.16.5", + "@babel/plugin-transform-regenerator": "^7.16.5", + "@babel/plugin-transform-reserved-words": "^7.16.5", + "@babel/plugin-transform-shorthand-properties": "^7.16.5", + "@babel/plugin-transform-spread": "^7.16.5", + "@babel/plugin-transform-sticky-regex": "^7.16.5", + "@babel/plugin-transform-template-literals": "^7.16.5", + "@babel/plugin-transform-typeof-symbol": "^7.16.5", + "@babel/plugin-transform-unicode-escapes": "^7.16.5", + "@babel/plugin-transform-unicode-regex": "^7.16.5", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.19.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6.tgz", + "integrity": "sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.5.tgz", + "integrity": "sha512-3kzUOQeaxY/2vhPDS7CX/KGEGu/1bOYGvdRDJ2U5yjEz5o5jmIeTPLoiQBPGjfhPascLuW5OlMiPzwOOuB6txg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-transform-react-display-name": "^7.16.5", + "@babel/plugin-transform-react-jsx": "^7.16.5", + "@babel/plugin-transform-react-jsx-development": "^7.16.5", + "@babel/plugin-transform-react-pure-annotations": "^7.16.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.5.tgz", + "integrity": "sha512-lmAWRoJ9iOSvs3DqOndQpj8XqXkzaiQs50VG/zESiI9D3eoZhGriU675xNCr0UwvsuXrhMAGvyk1w+EVWF3u8Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-transform-typescript": "^7.16.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, + "node_modules/@babel/runtime": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.5.tgz", + "integrity": "sha512-TXWihFIS3Pyv5hzR7j6ihmeLkZfrXGxAr5UfSl8CHf+6q/wpiYDkUau0czckpYG8QmnCIuPpdLtuA9VmuGGyMA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", + "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.22.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.8.tgz", + "integrity": "sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.7", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.22.7", + "@babel/types": "^7.22.5", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", + "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@cspotcode/source-map-consumer": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", + "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", + "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-consumer": "0.8.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "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/@eslint/eslintrc/node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/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/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "dev": true + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.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.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "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/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/@jest/console": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/console/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "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" + } + }, + "node_modules/@jest/console/node_modules/@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/console/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/@jest/console/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/@jest/console/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/@jest/console/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/@jest/console/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/@jest/console/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/console/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/@jest/core": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "dev": true, + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", + "micromatch": "^4.0.4", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/core/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "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" + } + }, + "node_modules/@jest/core/node_modules/@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/core/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/@jest/core/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@jest/core/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/@jest/core/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/@jest/core/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/@jest/core/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/@jest/core/node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/@jest/core/node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/core/node_modules/jest-resolve": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/core/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/core/node_modules/jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/core/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/@jest/core/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/@jest/core/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/@jest/environment": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/environment/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "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" + } + }, + "node_modules/@jest/environment/node_modules/@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/environment/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/@jest/environment/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/@jest/environment/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/@jest/environment/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/@jest/environment/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/@jest/environment/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/@jest/fake-timers": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/fake-timers/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "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" + } + }, + "node_modules/@jest/fake-timers/node_modules/@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/fake-timers/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/@jest/fake-timers/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/@jest/fake-timers/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/@jest/fake-timers/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/@jest/fake-timers/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/@jest/fake-timers/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/fake-timers/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/@jest/globals": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/globals/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "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" + } + }, + "node_modules/@jest/globals/node_modules/@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/globals/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/@jest/globals/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/@jest/globals/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/@jest/globals/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/@jest/globals/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/@jest/globals/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/@jest/reporters": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.1.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "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" + } + }, + "node_modules/@jest/reporters/node_modules/@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/reporters/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/@jest/reporters/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@jest/reporters/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/@jest/reporters/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/@jest/reporters/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/@jest/reporters/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/@jest/reporters/node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/@jest/reporters/node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/jest-resolve": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/@jest/reporters/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/@jest/reporters/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/@jest/reporters/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/@jest/schemas": { + "version": "29.6.0", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.0.tgz", + "integrity": "sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9", + "source-map": "^0.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/source-map/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/@jest/test-result": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "dev": true, + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/test-result/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "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" + } + }, + "node_modules/@jest/test-result/node_modules/@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/test-result/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/@jest/test-result/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/@jest/test-result/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/@jest/test-result/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/@jest/test-result/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/@jest/test-result/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/@jest/test-sequencer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "dev": true, + "dependencies": { + "@jest/test-result": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/test-sequencer/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "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" + } + }, + "node_modules/@jest/test-sequencer/node_modules/@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/test-sequencer/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/@jest/test-sequencer/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/@jest/test-sequencer/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/@jest/test-sequencer/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/@jest/test-sequencer/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/@jest/test-sequencer/node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/@jest/test-sequencer/node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/test-sequencer/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/test-sequencer/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/@jest/test-sequencer/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/@jest/test-sequencer/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/@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/transform/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "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" + } + }, + "node_modules/@jest/transform/node_modules/@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/transform/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/@jest/transform/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/@jest/transform/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/@jest/transform/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/@jest/transform/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/@jest/transform/node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/@jest/transform/node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/transform/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/transform/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/@jest/transform/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/@jest/transform/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/@jest/transform/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/@jest/types": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.1.tgz", + "integrity": "sha512-tPKQNMPuXgvdOn2/Lg9HNfUvjYVGolt04Hp03f5hAk878uwOLikN+JzeLY0HcVgKgFl9Hs3EIqpu3WX27XNhnw==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@jest/schemas": "^29.6.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types/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, + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/types/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, + "optional": true, + "peer": 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/@jest/types/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, + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/types/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, + "optional": true, + "peer": true + }, + "node_modules/@jest/types/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, + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/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, + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true + }, + "node_modules/@playwright/test": { + "version": "1.36.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.36.1.tgz", + "integrity": "sha512-YK7yGWK0N3C2QInPU6iaf/L3N95dlGdbsezLya4n0ZCh3IL7VgPGxC6Gnznh9ApWdOmkJeleT2kMTcWPRZvzqg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "playwright-core": "1.36.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=16" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/@playwright/test/node_modules/playwright-core": { + "version": "1.36.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.36.1.tgz", + "integrity": "sha512-7+tmPuMcEW4xeCL9cp9KxmYpQYHKkyjwoXRnoeTowaeNat8PoBMk/HwCYhqkH2fRkshfKEOiVus/IhID2Pg8kg==", + "dev": true, + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", + "dev": true + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/@sinonjs/commons": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "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/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, + "node_modules/@types/babel__core": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz", + "integrity": "sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.1.tgz", + "integrity": "sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/chroma-js": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@types/chroma-js/-/chroma-js-2.1.3.tgz", + "integrity": "sha512-1xGPhoSGY1CPmXLCBcjVZSQinFjL26vlR8ZqprsBWiFyED4JacJJ9zHhh5aaUXqbY9B37mKQ73nlydVAXmr1+g==", + "dev": true + }, + "node_modules/@types/chrome": { + "version": "0.0.171", + "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.171.tgz", + "integrity": "sha512-CnCwFKI3COygib3DNJrCjePeoU2OCDGGbUcmftXtQ3loMABsLgwpG8z+LxV4kjQJFzmJDqOyhCSsbY9yyEfapQ==", + "dev": true, + "dependencies": { + "@types/filesystem": "*", + "@types/har-format": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.0.tgz", + "integrity": "sha512-gsF+c/0XOguWgaOgvFs+xnnRqt9GwgTvIks36WpE6ueeI4KCEHHd8K/CKHqhOqrJKsYH8m27kRzQEvWXAwXUTw==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", + "dev": true + }, + "node_modules/@types/express": { + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.35", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz", + "integrity": "sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/filesystem": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/filesystem/-/filesystem-0.0.32.tgz", + "integrity": "sha512-Yuf4jR5YYMR2DVgwuCiP11s0xuVRyPKmz8vo6HBY3CGdeMj8af93CFZX+T82+VD1+UqHOxTq31lO7MI7lepBtQ==", + "dev": true, + "dependencies": { + "@types/filewriter": "*" + } + }, + "node_modules/@types/filewriter": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/filewriter/-/filewriter-0.0.29.tgz", + "integrity": "sha512-BsPXH/irW0ht0Ji6iw/jJaK8Lj3FJemon2gvEqHKpCdDCeemHa+rI3WBGq5z7cDMZgoLjY40oninGxqk+8NzNQ==", + "dev": true + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", + "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/har-format": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/@types/har-format/-/har-format-1.2.11.tgz", + "integrity": "sha512-T232/TneofqK30AD1LRrrf8KnjLvzrjWDp7eWST5KoiSzrBfRsLrWDPk4STQPW4NZG6v2MltnduBVmakbZOBIQ==", + "dev": true + }, + "node_modules/@types/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==" + }, + "node_modules/@types/http-proxy": { + "version": "1.17.11", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz", + "integrity": "sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "27.0.3", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.0.3.tgz", + "integrity": "sha512-cmmwv9t7gBYt7hNKH5Spu7Kuu/DotGa+Ff+JGRKZ4db5eh8PnKS4LuebJ3YLUoyOyIHraTGyULn23YtEAm0VSg==", + "dev": true, + "dependencies": { + "jest-diff": "^27.0.0", + "pretty-format": "^27.0.0" + } + }, + "node_modules/@types/jest-dev-server": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/jest-dev-server/-/jest-dev-server-5.0.0.tgz", + "integrity": "sha512-2o5mY2c/WTXO0j+FrtWMxDt0NBi0o6R6aNx4xaym/OfVP8owAeZa582eFxQEqZ7KzHDqvkEEJ9YZ9O3Zw/MpPw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/wait-on": "*" + } + }, + "node_modules/@types/jsdom": { + "version": "16.2.14", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-16.2.14.tgz", + "integrity": "sha512-6BAy1xXEmMuHeAJ4Fv4yXKwBDTGTOseExKE3OaHiNycdHdZw59KfYzrt0DkDluvwmik1HRt6QS7bImxUmpSy+w==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/parse5": "*", + "@types/tough-cookie": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "dev": true + }, + "node_modules/@types/just-debounce-it": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@types/just-debounce-it/-/just-debounce-it-1.5.0.tgz", + "integrity": "sha512-X0idscP49ASBe/yI29yLpBG1p/bae72yDMWsBGzxS1aaKinUl0Q2FkYVBMs+BXlVi3yPm4boWsiuFTQ0Dzw3dw==", + "deprecated": "This is a stub types definition. just-debounce-it provides its own type definitions, so you do not need this installed.", + "dev": true, + "dependencies": { + "just-debounce-it": "*" + } + }, + "node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" + }, + "node_modules/@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" + }, + "node_modules/@types/parse5": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-7.0.0.tgz", + "integrity": "sha512-f2SeAxumolBmhuR62vNGTsSAvdz/Oj0k682xNrcKJ4dmRnTPODB74j6CPoNPzBPTHsu7Y7W7u93Mgp8Ovo8vWw==", + "deprecated": "This is a stub types definition. parse5 provides its own type definitions, so you do not need this installed.", + "dev": true, + "dependencies": { + "parse5": "*" + } + }, + "node_modules/@types/prettier": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", + "dev": true + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "node_modules/@types/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", + "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz", + "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==", + "dependencies": { + "@types/http-errors": "*", + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "node_modules/@types/tough-cookie": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.2.tgz", + "integrity": "sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==", + "dev": true + }, + "node_modules/@types/wait-on": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@types/wait-on/-/wait-on-5.3.1.tgz", + "integrity": "sha512-2FFOKCF/YydrMUaqg+fkk49qf0e5rDgwt6aQsMzFQzbS419h2gNOXyiwp/o2yYy27bi/C1z+HgfncryjGzlvgQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/webpack": { + "version": "5.28.0", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-5.28.0.tgz", + "integrity": "sha512-8cP0CzcxUiFuA9xGJkfeVpqmWTk9nx6CWwamRGCj95ph1SmlRRk9KlCZ6avhCbZd4L68LvYT6l1kpdEnQXrF8w==", + "dev": true, + "dependencies": { + "@types/node": "*", + "tapable": "^2.2.0", + "webpack": "^5" + } + }, + "node_modules/@types/webpack-dev-middleware": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@types/webpack-dev-middleware/-/webpack-dev-middleware-5.3.0.tgz", + "integrity": "sha512-SklLlklFBfTyIXo1iWXxzeytjlysWfj5QfIcRJrCc7MgzuCjnZOHXviQwe81iFGq9ZkCUXAg2fpbZdHhj5lSWA==", + "deprecated": "This is a stub types definition. webpack-dev-middleware provides its own type definitions, so you do not need this installed.", + "dev": true, + "dependencies": { + "webpack-dev-middleware": "*" + } + }, + "node_modules/@types/webpack-dev-server": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@types/webpack-dev-server/-/webpack-dev-server-4.5.0.tgz", + "integrity": "sha512-HMb6pZPANObue3LwbdpQLWzQyF9O0wntiPyXj4vGutlAbNKTXH4hDCHaZyfvfZDmFn+5HprrWHm1TGt3awNr/A==", + "dev": true, + "dependencies": { + "@types/bonjour": "*", + "@types/connect-history-api-fallback": "*", + "@types/express": "*", + "@types/serve-index": "*", + "@types/serve-static": "*", + "@types/webpack-dev-middleware": "*", + "chokidar": "^3.5.1", + "http-proxy-middleware": "^2.0.0", + "webpack": "*" + } + }, + "node_modules/@types/ws": { + "version": "8.5.5", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", + "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "node_modules/@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "dev": true, + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", + "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", + "dev": true, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x", + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", + "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", + "dev": true, + "dependencies": { + "envinfo": "^7.7.3" + }, + "peerDependencies": { + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", + "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", + "dev": true, + "peerDependencies": { + "webpack-cli": "4.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "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-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "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/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true, + "engines": { + "node": ">=0.4.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/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/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "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/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "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/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "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/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "node_modules/axios": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", + "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.14.7" + } + }, + "node_modules/babel-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "dev": true, + "dependencies": { + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-jest/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "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" + } + }, + "node_modules/babel-jest/node_modules/@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/babel-jest/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/babel-jest/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/babel-jest/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/babel-jest/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/babel-jest/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/babel-jest/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/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "dev": true, + "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.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", + "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.18.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "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" + } + }, + "node_modules/babel-preset-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^27.5.1", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "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/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "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/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/bonjour-service": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz", + "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==", + "dev": true, + "dependencies": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "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==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "node_modules/browserslist": { + "version": "4.21.9", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", + "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001503", + "electron-to-chromium": "^1.4.431", + "node-releases": "^2.0.12", + "update-browserslist-db": "^1.0.11" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "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": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "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/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "engines": { + "node": ">= 0.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.30001517", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz", + "integrity": "sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "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/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", + "dev": true + }, + "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/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true + }, + "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/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/compression/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/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/core-js-compat": { + "version": "3.31.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.31.1.tgz", + "integrity": "sha512-wIDWd2s5/5aJSdpOJHfSibxNODxoGoWOBHt8JSPB41NOE94M7kuTPZCYLOlTtuoXTsBPKobpJ6T+y0SSy5L9SA==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.9" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "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/cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "dev": true, + "dependencies": { + "node-fetch": "2.6.7" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "node_modules/cwd": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/cwd/-/cwd-0.10.0.tgz", + "integrity": "sha512-YGZxdTTL9lmLkCUTpg4j0zQ7IhRB5ZmqNBbGCl3Tg6MP/d5/6sY7L5mmTjzbc6JKgVZYiqTQTNhPFsbXNGlRaA==", + "dev": true, + "dependencies": { + "find-pkg": "^0.1.2", + "fs-exists-sync": "^0.1.0" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true + }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true + }, + "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/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/devtools-protocol": { + "version": "0.0.1036444", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1036444.tgz", + "integrity": "sha512-0y4f/T8H9lsESV9kKP1HDUXgHxCdniFeJh6Erq+FbdOEvp/Ydp9t8kcAAM5gOd17pMrTDlFWntoHtzzeTUWKNw==", + "dev": true + }, + "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/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", + "dev": true + }, + "node_modules/dns-packet": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.0.tgz", + "integrity": "sha512-rza3UH1LwdHh9qyPXp8lkwpjSNk/AMD3dPytUoRoqnypDUhY0xvbdmVhWOfxO68frEfV9BU8V12Ez7ZsHGZpCQ==", + "dev": true, + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "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/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, + "dependencies": { + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.468", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.468.tgz", + "integrity": "sha512-6M1qyhaJOt7rQtNti1lBA0GwclPH+oKCmsra/hkcWs5INLxfXXD/dtdnaKUYQu/pjOBP/8Osoe4mAcNvvzoFag==", + "dev": true + }, + "node_modules/emittery": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "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/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.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/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/envinfo": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz", + "integrity": "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "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-module-lexer": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", + "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==", + "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-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "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": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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-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": "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-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/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/@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/eslint/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/eslint/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/eslint/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/eslint/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/eslint/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/node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/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/eslint/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/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/eslint/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/eslint/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "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.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "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.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "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/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expand-tilde": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", + "integrity": "sha512-rtmc+cjLZqnu9dSYosX9EWmSJhTwpACgJQTfj4hgg2JjOD/6SIQalZrt4a3aQeh++oNxkazcaxrhPUj6+g5G/Q==", + "dev": true, + "dependencies": { + "os-homedir": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/expect/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "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" + } + }, + "node_modules/expect/node_modules/@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/expect/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/expect/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/expect/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/expect/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/expect/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/expect/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/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "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-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": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "dependencies": { + "pend": "~1.2.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/find-file-up": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/find-file-up/-/find-file-up-0.1.3.tgz", + "integrity": "sha512-mBxmNbVyjg1LQIIpgO8hN+ybWBgDQK8qjht+EbrTCGmmPV/sc7RF1i9stPTD6bpvXZywBdrwRYxhSdJv867L6A==", + "dev": true, + "dependencies": { + "fs-exists-sync": "^0.1.0", + "resolve-dir": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/find-pkg": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/find-pkg/-/find-pkg-0.1.2.tgz", + "integrity": "sha512-0rnQWcFwZr7eO0513HahrWafsc3CTFioEB7DRiEYCUM/70QXSY8f3mCST17HXLcPvEhzH/Ty/Bxd72ZZsr/yvw==", + "dev": true, + "dependencies": { + "find-file-up": "^0.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/find-process": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/find-process/-/find-process-1.4.7.tgz", + "integrity": "sha512-/U4CYp1214Xrp3u3Fqr9yNynUrr5Le4y0SsJh2lMDDSbpwYSz3M2SMWQC+wqcx79cN8PQtHQIL8KnuY9M66fdg==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "commander": "^5.1.0", + "debug": "^4.1.1" + }, + "bin": { + "find-process": "bin/find-process.js" + } + }, + "node_modules/find-process/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/find-process/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/find-process/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/find-process/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/find-process/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/find-process/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/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/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.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "node_modules/fs-exists-sync": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", + "integrity": "sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.4.tgz", + "integrity": "sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "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==", + "dev": true, + "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": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "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-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "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-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "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==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/global-modules": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", + "integrity": "sha512-JeXuCbvYzYXcwE6acL9V2bAOeSIGl4dD+iwLY9iUx2VBJJ80R18HCn+JCwHM9Oegdfya3lEkGCdaRkSyc10hDA==", + "dev": true, + "dependencies": { + "global-prefix": "^0.1.4", + "is-windows": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", + "integrity": "sha512-gOPiyxcD9dJGCEArAhF4Hd0BAqvAe/JzERP7tYumE4yIkmIedPUVXcJFWbV3/p/ovIIvKjkrTk+f1UVkq7vvbw==", + "dev": true, + "dependencies": { + "homedir-polyfill": "^1.0.0", + "ini": "^1.3.4", + "is-windows": "^0.2.0", + "which": "^1.2.12" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "dependencies": { + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "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/hpack.js/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/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^1.0.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/html-entities": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", + "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] + }, + "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-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "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/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "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/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/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/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "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": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "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==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true + }, + "node_modules/ipaddr.js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", + "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "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-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "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-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "node_modules/is-windows": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", + "integrity": "sha512-n67eJYmXbniZB7RF4I/FTjK1s6RPOCTxhYrVYLRaCt3lF0mpWZPKr3T2LSZAqyjQsxR2qMmGYXXzK0YWwcPM1Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "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-report/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/istanbul-lib-report/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/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "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.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "dev": true, + "dependencies": { + "@jest/core": "^27.5.1", + "import-local": "^3.0.2", + "jest-cli": "^27.5.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "execa": "^5.0.0", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-changed-files/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "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" + } + }, + "node_modules/jest-changed-files/node_modules/@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-changed-files/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/jest-changed-files/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/jest-changed-files/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/jest-changed-files/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/jest-changed-files/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/jest-changed-files/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/jest-chrome": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/jest-chrome/-/jest-chrome-0.7.2.tgz", + "integrity": "sha512-RSRDi8qNX54Q3ltSC2rW25+47nwY4DoruHOjHR0JZxijITS2PZrQ3j0jZPP3ywC0GuX0JNNwsKD3+iaKzOJEAA==", + "dev": true, + "dependencies": { + "@types/chrome": "^0.0.114" + }, + "peerDependencies": { + "jest": "^26.0.1 || ^27.0.0" + } + }, + "node_modules/jest-chrome/node_modules/@types/chrome": { + "version": "0.0.114", + "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.114.tgz", + "integrity": "sha512-i7qRr74IrxHtbnrZSKUuP5Uvd5EOKwlwJq/yp7+yTPihOXnPhNQO4Z5bqb1XTnrjdbUKEJicaVVbhcgtRijmLA==", + "dev": true, + "dependencies": { + "@types/filesystem": "*", + "@types/har-format": "*" + } + }, + "node_modules/jest-circus": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.3.1.tgz", + "integrity": "sha512-v1dsM9II6gvXokgqq6Yh2jHCpfg7ZqV4jWY66u7npz24JnhP3NHxI0sKT7+ZMQ7IrOWHYAaeEllOySbDbWsiXw==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.3.1", + "@jest/test-result": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.3.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.3.1", + "jest-matcher-utils": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-runtime": "^27.3.1", + "jest-snapshot": "^27.3.1", + "jest-util": "^27.3.1", + "pretty-format": "^27.3.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "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" + } + }, + "node_modules/jest-circus/node_modules/@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-circus/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/jest-circus/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/jest-circus/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/jest-circus/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/jest-circus/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/jest-circus/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus/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/jest-cli": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "dev": true, + "dependencies": { + "@jest/core": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "prompts": "^2.0.1", + "yargs": "^16.2.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-cli/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "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" + } + }, + "node_modules/jest-cli/node_modules/@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-cli/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/jest-cli/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-cli/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/jest-cli/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/jest-cli/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/jest-cli/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/jest-cli/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-cli/node_modules/jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-cli/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/jest-config": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-config/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "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" + } + }, + "node_modules/jest-config/node_modules/@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-config/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/jest-config/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-config/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/jest-config/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/jest-config/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/jest-config/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/jest-config/node_modules/jest-circus": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-config/node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-config/node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-config/node_modules/jest-resolve": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-config/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-config/node_modules/jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-config/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-config/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jest-config/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/jest-dev-server": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/jest-dev-server/-/jest-dev-server-6.0.0.tgz", + "integrity": "sha512-6X8+/gtFeZBfX7fX3BTAnZzPbdDYcWUdhsvcbJI5PsDXdJ06VNMPqwcPP7ZR5hUeXyvww6CX6ro+oIiARHo5Sg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.2", + "cwd": "^0.10.0", + "find-process": "^1.4.5", + "prompts": "^2.4.1", + "spawnd": "^6.0.0", + "tree-kill": "^1.2.2", + "wait-on": "^6.0.0" + } + }, + "node_modules/jest-dev-server/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/jest-dev-server/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/jest-dev-server/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/jest-dev-server/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/jest-dev-server/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/jest-dev-server/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/jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-diff/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/jest-diff/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/jest-diff/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/jest-diff/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/jest-diff/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/jest-diff/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/jest-docblock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "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" + } + }, + "node_modules/jest-each/node_modules/@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-each/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/jest-each/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/jest-each/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/jest-each/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/jest-each/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/jest-each/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each/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/jest-environment-jsdom": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", + "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", + "jsdom": "^16.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "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" + } + }, + "node_modules/jest-environment-jsdom/node_modules/@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-environment-jsdom/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/jest-environment-jsdom/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/jest-environment-jsdom/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/jest-environment-jsdom/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/jest-environment-jsdom/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/jest-environment-jsdom/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-jsdom/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/jest-environment-node": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-node/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "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" + } + }, + "node_modules/jest-environment-node/node_modules/@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-environment-node/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/jest-environment-node/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/jest-environment-node/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/jest-environment-node/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/jest-environment-node/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/jest-environment-node/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-node/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/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.6.1.tgz", + "integrity": "sha512-0m7f9PZXxOCk1gRACiVgX85knUKPKLPg4oRCjLoqIm9brTHXaorMA0JpmtmVkQiT8nmXyIVoZd/nnH1cfC33ig==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.1", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.6.1", + "jest-worker": "^29.6.1", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-jasmine2": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", + "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "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" + } + }, + "node_modules/jest-jasmine2/node_modules/@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-jasmine2/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/jest-jasmine2/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/jest-jasmine2/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/jest-jasmine2/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/jest-jasmine2/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/jest-jasmine2/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/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/jest-junit": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-13.0.0.tgz", + "integrity": "sha512-JSHR+Dhb32FGJaiKkqsB7AR3OqWKtldLd6ZH2+FJ8D4tsweb8Id8zEVReU4+OlrRO1ZluqJLQEETm+Q6/KilBg==", + "dev": true, + "dependencies": { + "mkdirp": "^1.0.4", + "strip-ansi": "^6.0.1", + "uuid": "^8.3.2", + "xml": "^1.0.1" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/jest-leak-detector": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", + "dev": true, + "dependencies": { + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/jest-matcher-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-matcher-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-message-util/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "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" + } + }, + "node_modules/jest-message-util/node_modules/@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-message-util/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/jest-message-util/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/jest-message-util/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/jest-message-util/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/jest-message-util/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/jest-message-util/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/jest-mock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-mock/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "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" + } + }, + "node_modules/jest-mock/node_modules/@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-mock/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/jest-mock/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/jest-mock/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/jest-mock/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/jest-mock/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/jest-mock/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/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz", + "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.6.1.tgz", + "integrity": "sha512-AeRkyS8g37UyJiP9w3mmI/VXU/q8l/IH52vj/cDAyScDcemRbSBhfX/NMYIGilQgSVwsjxrCHf3XJu4f+lxCMg==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.6.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.6.1", + "jest-validate": "^29.6.1", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "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" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-resolve-dependencies/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/jest-resolve-dependencies/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/jest-resolve-dependencies/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/jest-resolve-dependencies/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/jest-resolve-dependencies/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/jest-resolve-dependencies/node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve-dependencies/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/jest-resolve/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, + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-resolve/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, + "optional": true, + "peer": 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/jest-resolve/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, + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-resolve/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, + "optional": true, + "peer": true + }, + "node_modules/jest-resolve/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, + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-resolve/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, + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "dev": true, + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-leak-detector": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runner/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "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" + } + }, + "node_modules/jest-runner/node_modules/@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-runner/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/jest-runner/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-runner/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/jest-runner/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/jest-runner/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/jest-runner/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/jest-runner/node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-runner/node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runner/node_modules/jest-resolve": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runner/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runner/node_modules/jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runner/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-runner/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jest-runner/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/jest-runtime": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runtime/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "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" + } + }, + "node_modules/jest-runtime/node_modules/@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-runtime/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/jest-runtime/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-runtime/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/jest-runtime/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/jest-runtime/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/jest-runtime/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/jest-runtime/node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-runtime/node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runtime/node_modules/jest-resolve": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runtime/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runtime/node_modules/jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runtime/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-runtime/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jest-runtime/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/jest-serializer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", + "dev": true, + "dependencies": { + "@types/node": "*", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^27.5.1", + "semver": "^7.3.2" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "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" + } + }, + "node_modules/jest-snapshot/node_modules/@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-snapshot/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/jest-snapshot/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/jest-snapshot/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/jest-snapshot/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/jest-snapshot/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/jest-snapshot/node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-snapshot/node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-snapshot/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-snapshot/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/jest-snapshot/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/jest-util": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.6.1.tgz", + "integrity": "sha512-NRFCcjc+/uO3ijUVyNOQJluf8PtGCe/W6cix36+M3cTFgiYqFOOW5MgN4JOOcvbUhcKTYVd1CvHz/LWi8d16Mg==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util/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, + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-util/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, + "optional": true, + "peer": 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/jest-util/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, + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-util/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, + "optional": true, + "peer": true + }, + "node_modules/jest-util/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, + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/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, + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.6.1.tgz", + "integrity": "sha512-r3Ds69/0KCN4vx4sYAbGL1EVpZ7MSS0vLmd3gV78O+NAx3PDQQukRU5hNHPXlyqCgFY8XUk7EuTMLugh0KzahA==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.4.3", + "leven": "^3.1.0", + "pretty-format": "^29.6.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/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, + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-validate/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, + "optional": true, + "peer": 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/jest-validate/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, + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-validate/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, + "optional": true, + "peer": true + }, + "node_modules/jest-validate/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, + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate/node_modules/jest-get-type": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", + "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/pretty-format": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.1.tgz", + "integrity": "sha512-7jRj+yXO0W7e4/tSJKoR7HRIHLPPjtNaUGG2xxKQnGvPNRkgWcQ0AZX6P4KBRJN4FcTBWb3sa7DVUJmocYuoog==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@jest/schemas": "^29.6.0", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/jest-validate/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, + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "dev": true, + "dependencies": { + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.5.1", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-watcher/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "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" + } + }, + "node_modules/jest-watcher/node_modules/@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-watcher/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/jest-watcher/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/jest-watcher/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/jest-watcher/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/jest-watcher/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/jest-watcher/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-watcher/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/jest-worker": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.1.tgz", + "integrity": "sha512-U+Wrbca7S8ZAxAe9L6nb6g8kPdia5hj32Puu5iOqBCMTMWFHXuK6dOV2IFrpedbTV8fjMFLdWNttQTBL6u2MRA==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.6.1", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/joi": { + "version": "17.9.2", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.9.2.tgz", + "integrity": "sha512-Itk/r+V4Dx0V3c7RLFdRh12IOjySm2/WGPMubBT92cQvRfYZhPM2W0hZlctjj72iES8jsRCwp7S/cRmWBnJ4nw==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + } + }, + "node_modules/jpeg-js": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", + "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==", + "dev": true + }, + "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==", + "dev": true + }, + "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/jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, + "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 + } + } + }, + "node_modules/jsdom/node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/jsdom/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "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-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "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": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/just-debounce-it": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/just-debounce-it/-/just-debounce-it-3.2.0.tgz", + "integrity": "sha512-WXzwLL0745uNuedrCsCs3rpmfD6DBaf7uuVwaq98/8dafURfgQaBsSpjiPp5+CW6Vjltwy9cOGI6qE71b3T8iQ==", + "dev": true + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/launch-editor": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz", + "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.7.3" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "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/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "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/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.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "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.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "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-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/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dev": true, + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, + "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/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nwsapi": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz", + "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==", + "dev": true + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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/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/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-retry/node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "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/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": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/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/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "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-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "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/playwright": { + "version": "1.36.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.36.1.tgz", + "integrity": "sha512-2ZqHpD0U0COKR8bqR3W5IkyIAAM0mT9FgGJB9xWCI1qAUkqLxJskA1ueeQOTH2Qfz3+oxdwwf2EzdOX+RkZmmQ==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "playwright-core": "1.36.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/playwright-chromium": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/playwright-chromium/-/playwright-chromium-1.17.1.tgz", + "integrity": "sha512-EnCtsP/QTWWoQV/cFYpt2wgKwcOdoa2iHBlBaldHB8gobtynMKwk96rzldaRS4YimFibIzREFkWCNMrrb3LRMQ==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "playwright-core": "=1.17.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/playwright-core": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.17.1.tgz", + "integrity": "sha512-C3c8RpPiC3qr15fRDN6dx6WnUkPLFmST37gms2aoHPDRvp7EaGDPMMZPpqIm/QWB5J40xDrQCD4YYHz2nBTojQ==", + "dev": true, + "dependencies": { + "commander": "^8.2.0", + "debug": "^4.1.1", + "extract-zip": "^2.0.1", + "https-proxy-agent": "^5.0.0", + "jpeg-js": "^0.4.2", + "mime": "^2.4.6", + "pngjs": "^5.0.0", + "progress": "^2.0.3", + "proper-lockfile": "^4.1.1", + "proxy-from-env": "^1.1.0", + "rimraf": "^3.0.2", + "socks-proxy-agent": "^6.1.0", + "stack-utils": "^2.0.3", + "ws": "^7.4.6", + "yauzl": "^2.10.0", + "yazl": "^2.5.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/playwright-core/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/playwright/node_modules/playwright-core": { + "version": "1.36.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.36.1.tgz", + "integrity": "sha512-7+tmPuMcEW4xeCL9cp9KxmYpQYHKkyjwoXRnoeTowaeNat8PoBMk/HwCYhqkH2fRkshfKEOiVus/IhID2Pg8kg==", + "dev": true, + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "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.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "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/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/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/proper-lockfile": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", + "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/puppeteer": { + "version": "17.1.3", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-17.1.3.tgz", + "integrity": "sha512-tVtvNSOOqlq75rUgwLeDAEQoLIiBqmRg0/zedpI6fuqIocIkuxG23A7FIl1oVSkuSMMLgcOP5kVhNETmsmjvPw==", + "deprecated": "< 19.4.0 is no longer supported", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "cross-fetch": "3.1.5", + "debug": "4.3.4", + "devtools-protocol": "0.0.1036444", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.1", + "progress": "2.0.3", + "proxy-from-env": "1.1.0", + "rimraf": "3.0.2", + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "ws": "8.8.1" + }, + "engines": { + "node": ">=14.1.0" + } + }, + "node_modules/puppeteer-core": { + "version": "17.1.3", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-17.1.3.tgz", + "integrity": "sha512-gm3d5fTVEc+h7jVtT3Y1k8OL1awaOzln44UfsJhUJKH/tyO/wn/zOxyAHTQt9aX/yo37IS0dfisU3i3P8qvZnw==", + "dev": true, + "dependencies": { + "cross-fetch": "3.1.5", + "debug": "4.3.4", + "devtools-protocol": "0.0.1036444", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.1", + "progress": "2.0.3", + "proxy-from-env": "1.1.0", + "rimraf": "3.0.2", + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "ws": "8.8.1" + }, + "engines": { + "node": ">=14.1.0" + } + }, + "node_modules/puppeteer-core/node_modules/ws": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", + "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/puppeteer/node_modules/ws": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", + "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystring": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz", + "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "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/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "dependencies": { + "resolve": "^1.9.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "dev": true + }, + "node_modules/regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "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/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "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/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "dev": true, + "dependencies": { + "is-core-module": "^2.11.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/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/resolve-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", + "integrity": "sha512-QxMPqI6le2u0dCLyiGzgy92kjkkL6zO0XyvHzjdTNH3zM6e5Hz3BwG6+aEyNgiQ5Xz6PwTwgQEj3U50dByPKIA==", + "dev": true, + "dependencies": { + "expand-tilde": "^1.2.2", + "global-modules": "^0.2.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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/resolve.exports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", + "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "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/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "node_modules/selfsigned": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "dev": true, + "dependencies": { + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "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/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "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.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "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/slice-ansi/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/slice-ansi/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/slice-ansi/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/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dev": true, + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", + "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "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/spawnd": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/spawnd/-/spawnd-6.2.0.tgz", + "integrity": "sha512-qX/I4lQy4KgVEcNle0kuc4FxFWHISzBhZW1YemPfwmrmQjyZmfTK/OhBKkhrD2ooAaFZEm1maEBLE6/6enwt+g==", + "dev": true, + "dependencies": { + "exit": "^0.1.2", + "signal-exit": "^3.0.7", + "tree-kill": "^1.2.2" + } + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "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-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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/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/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/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/supports-hyperlinks/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/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "node_modules/table": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "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": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dev": true, + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.19.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz", + "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/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/terser-webpack-plugin/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/terser-webpack-plugin/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/terser/node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "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": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/throat": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", + "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", + "dev": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "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": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "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==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/ts-jest": { + "version": "27.0.7", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.0.7.tgz", + "integrity": "sha512-O41shibMqzdafpuP+CkrOL7ykbmLh+FqQrXEmV9CydQ5JBk0Sj0uAEF5TNNe94fZWKm3yYvWa/IbyV4Yg1zK2Q==", + "dev": true, + "dependencies": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^27.0.0", + "json5": "2.x", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "20.x" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@types/jest": "^27.0.0", + "babel-jest": ">=27.0.0 <28", + "jest": "^27.0.0", + "typescript": ">=3.8 <5.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@types/jest": { + "optional": true + }, + "babel-jest": { + "optional": true + } + } + }, + "node_modules/ts-jest/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "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" + } + }, + "node_modules/ts-jest/node_modules/@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/ts-jest/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/ts-jest/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/ts-jest/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/ts-jest/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/ts-jest/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/ts-jest/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/ts-jest/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-jest/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-jest/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/ts-jest/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/ts-node": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.4.0.tgz", + "integrity": "sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "0.7.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ts-node/node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/tslib": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", + "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==", + "dev": true + }, + "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.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.4.tgz", + "integrity": "sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dev": true, + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "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/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/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/v8-to-istanbul": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", + "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", + "dev": true, + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/wait-on": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-6.0.1.tgz", + "integrity": "sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==", + "dev": true, + "dependencies": { + "axios": "^0.25.0", + "joi": "^17.6.0", + "lodash": "^4.17.21", + "minimist": "^1.2.5", + "rxjs": "^7.5.4" + }, + "bin": { + "wait-on": "bin/wait-on" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true, + "engines": { + "node": ">=10.4" + } + }, + "node_modules/webpack": { + "version": "5.88.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.1.tgz", + "integrity": "sha512-JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.1.0", + "@webpack-cli/info": "^1.4.0", + "@webpack-cli/serve": "^1.6.0", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "@webpack-cli/migrate": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.1.1.tgz", + "integrity": "sha512-y51HrHaFeeWir0YO4f0g+9GwZawuigzcAdRNon6jErXy/SqV/+O6eaVAzDqE6t3e3NpGeR5CS+cCDaTC+V3yEQ==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.12", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "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/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "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/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server/node_modules/webpack-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-hot-middleware": { + "version": "2.25.1", + "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.25.1.tgz", + "integrity": "sha512-Koh0KyU/RPYwel/khxbsDz9ibDivmUbrRuKSSQvW42KSDdO4w23WI3SkHpSUKHE76LrFnnM/L7JCrpBwu8AXYw==", + "dev": true, + "dependencies": { + "ansi-html-community": "0.0.8", + "html-entities": "^2.1.0", + "querystring": "^0.2.0", + "strip-ansi": "^6.0.0" + } + }, + "node_modules/webpack-merge": { + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz", + "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/webpack/node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "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/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "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/wrap-ansi/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/wrap-ansi/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/wrap-ansi/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/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "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/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", + "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==", + "dev": true + }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "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": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "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.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yazl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", + "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3" + } + }, + "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" + } + } + }, + "dependencies": { + "@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true + }, + "@babel/code-frame": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", + "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", + "dev": true, + "requires": { + "@babel/highlight": "^7.22.5" + } + }, + "@babel/compat-data": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", + "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", + "dev": true + }, + "@babel/core": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.5.tgz", + "integrity": "sha512-wUcenlLzuWMZ9Zt8S0KmFwGlH6QKRh3vsm/dhDA3CHkiTA45YuG1XkHRcNRl73EFPXDp/d5kVOU0/y7x2w6OaQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.5", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-module-transforms": "^7.16.5", + "@babel/helpers": "^7.16.5", + "@babel/parser": "^7.16.5", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.5", + "@babel/types": "^7.16.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + } + }, + "@babel/generator": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.9.tgz", + "integrity": "sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.5.tgz", + "integrity": "sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz", + "integrity": "sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.5", + "browserslist": "^4.21.9", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.9.tgz", + "integrity": "sha512-Pwyi89uO4YrGKxL/eNJ8lfEH55DnRloGPOseaA8NFNL6jAUnn+KccaISiFazCj5IolPPDjGSdzQzXVzODVRqUQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz", + "integrity": "sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", + "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", + "dev": true + }, + "@babel/helper-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", + "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "dev": true, + "requires": { + "@babel/template": "^7.22.5", + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz", + "integrity": "sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-module-imports": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", + "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-module-transforms": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", + "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.5" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz", + "integrity": "sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-wrap-function": "^7.22.9" + } + }, + "@babel/helper-replace-supers": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz", + "integrity": "sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5" + } + }, + "@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-string-parser": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", + "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", + "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.9.tgz", + "integrity": "sha512-sZ+QzfauuUEfxSEjKFmi3qDSHgLsTPK/pEpoD/qonZKOtTPTLbf59oabPQ4rKekt9lFcj/hTZaOhWwFYrgjk+Q==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/types": "^7.22.5" + } + }, + "@babel/helpers": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz", + "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==", + "dev": true, + "requires": { + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.6", + "@babel/types": "^7.22.5" + } + }, + "@babel/highlight": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", + "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.22.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.22.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz", + "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==", + "dev": true + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz", + "integrity": "sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz", + "integrity": "sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.5" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", + "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.5.tgz", + "integrity": "sha512-pJD3HjgRv83s5dv1sTnDbZOaTjghKEz8KUn1Kbh2eAIRhGuyQ1XSeI4xVXU3UlIEVA3DAyIdxqT1eRn7Wcn55A==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.5" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz", + "integrity": "sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", + "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.7" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", + "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz", + "integrity": "sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", + "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", + "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", + "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", + "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.5" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", + "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.5.tgz", + "integrity": "sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz", + "integrity": "sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", + "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.5" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.5.tgz", + "integrity": "sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", + "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", + "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", + "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz", + "integrity": "sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", + "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", + "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", + "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz", + "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz", + "integrity": "sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz", + "integrity": "sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", + "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", + "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", + "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5" + } + }, + "@babel/plugin-transform-optional-chaining": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.6.tgz", + "integrity": "sha512-Vd5HiWml0mDVtcLHIoEU5sw6HOUW/Zk0acLs/SAeuLzkGNOPc9DB4nkUajemhCmTIz3eiaKREZn2hQQqF79YTg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz", + "integrity": "sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", + "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz", + "integrity": "sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.5.tgz", + "integrity": "sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.22.5", + "@babel/types": "^7.22.5" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", + "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", + "dev": true, + "requires": { + "@babel/plugin-transform-react-jsx": "^7.22.5" + } + }, + "@babel/plugin-transform-react-pure-annotations": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz", + "integrity": "sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.5.tgz", + "integrity": "sha512-2z+it2eVWU8TtQQRauvGUqZwLy4+7rTfo6wO4npr+fvvN1SW30ZF3O/ZRCNmTuu4F5MIP8OJhXAhRV5QMJOuYg==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", + "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.5.tgz", + "integrity": "sha512-gxpfS8XQWDbQ8oP5NcmpXxtEgCJkbO+W9VhZlOhr0xPyVaRjAQPOv7ZDj9fg0d5s9+NiVvMCE6gbkEkcsxwGRw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.16.5", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "semver": "^6.3.0" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", + "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", + "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", + "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", + "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", + "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.9.tgz", + "integrity": "sha512-BnVR1CpKiuD0iobHPaM1iLvcwPYN2uVFAqoLVSpEDKWuOikoCv5HbKLxclhKYUXlWkX86DoZGtqI4XhbOsyrMg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.9", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-typescript": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.5.tgz", + "integrity": "sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", + "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/preset-env": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.5.tgz", + "integrity": "sha512-MiJJW5pwsktG61NDxpZ4oJ1CKxM1ncam9bzRtx9g40/WkLRkxFP6mhpkYV0/DxcciqoiHicx291+eUQrXb/SfQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.5", + "@babel/plugin-proposal-class-properties": "^7.16.5", + "@babel/plugin-proposal-class-static-block": "^7.16.5", + "@babel/plugin-proposal-dynamic-import": "^7.16.5", + "@babel/plugin-proposal-export-namespace-from": "^7.16.5", + "@babel/plugin-proposal-json-strings": "^7.16.5", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.5", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.5", + "@babel/plugin-proposal-numeric-separator": "^7.16.5", + "@babel/plugin-proposal-object-rest-spread": "^7.16.5", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.5", + "@babel/plugin-proposal-optional-chaining": "^7.16.5", + "@babel/plugin-proposal-private-methods": "^7.16.5", + "@babel/plugin-proposal-private-property-in-object": "^7.16.5", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.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.16.5", + "@babel/plugin-transform-async-to-generator": "^7.16.5", + "@babel/plugin-transform-block-scoped-functions": "^7.16.5", + "@babel/plugin-transform-block-scoping": "^7.16.5", + "@babel/plugin-transform-classes": "^7.16.5", + "@babel/plugin-transform-computed-properties": "^7.16.5", + "@babel/plugin-transform-destructuring": "^7.16.5", + "@babel/plugin-transform-dotall-regex": "^7.16.5", + "@babel/plugin-transform-duplicate-keys": "^7.16.5", + "@babel/plugin-transform-exponentiation-operator": "^7.16.5", + "@babel/plugin-transform-for-of": "^7.16.5", + "@babel/plugin-transform-function-name": "^7.16.5", + "@babel/plugin-transform-literals": "^7.16.5", + "@babel/plugin-transform-member-expression-literals": "^7.16.5", + "@babel/plugin-transform-modules-amd": "^7.16.5", + "@babel/plugin-transform-modules-commonjs": "^7.16.5", + "@babel/plugin-transform-modules-systemjs": "^7.16.5", + "@babel/plugin-transform-modules-umd": "^7.16.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.5", + "@babel/plugin-transform-new-target": "^7.16.5", + "@babel/plugin-transform-object-super": "^7.16.5", + "@babel/plugin-transform-parameters": "^7.16.5", + "@babel/plugin-transform-property-literals": "^7.16.5", + "@babel/plugin-transform-regenerator": "^7.16.5", + "@babel/plugin-transform-reserved-words": "^7.16.5", + "@babel/plugin-transform-shorthand-properties": "^7.16.5", + "@babel/plugin-transform-spread": "^7.16.5", + "@babel/plugin-transform-sticky-regex": "^7.16.5", + "@babel/plugin-transform-template-literals": "^7.16.5", + "@babel/plugin-transform-typeof-symbol": "^7.16.5", + "@babel/plugin-transform-unicode-escapes": "^7.16.5", + "@babel/plugin-transform-unicode-regex": "^7.16.5", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.19.1", + "semver": "^6.3.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6.tgz", + "integrity": "sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg==", + "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.16.5", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.5.tgz", + "integrity": "sha512-3kzUOQeaxY/2vhPDS7CX/KGEGu/1bOYGvdRDJ2U5yjEz5o5jmIeTPLoiQBPGjfhPascLuW5OlMiPzwOOuB6txg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-transform-react-display-name": "^7.16.5", + "@babel/plugin-transform-react-jsx": "^7.16.5", + "@babel/plugin-transform-react-jsx-development": "^7.16.5", + "@babel/plugin-transform-react-pure-annotations": "^7.16.5" + } + }, + "@babel/preset-typescript": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.5.tgz", + "integrity": "sha512-lmAWRoJ9iOSvs3DqOndQpj8XqXkzaiQs50VG/zESiI9D3eoZhGriU675xNCr0UwvsuXrhMAGvyk1w+EVWF3u8Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-transform-typescript": "^7.16.1" + } + }, + "@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, + "@babel/runtime": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.5.tgz", + "integrity": "sha512-TXWihFIS3Pyv5hzR7j6ihmeLkZfrXGxAr5UfSl8CHf+6q/wpiYDkUau0czckpYG8QmnCIuPpdLtuA9VmuGGyMA==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", + "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/types": "^7.22.5" + } + }, + "@babel/traverse": { + "version": "7.22.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.8.tgz", + "integrity": "sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.7", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.22.7", + "@babel/types": "^7.22.5", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", + "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5", + "to-fast-properties": "^2.0.0" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "@cspotcode/source-map-consumer": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", + "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", + "dev": true + }, + "@cspotcode/source-map-support": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", + "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", + "dev": true, + "requires": { + "@cspotcode/source-map-consumer": "0.8.0" + } + }, + "@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true + }, + "@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" + }, + "dependencies": { + "globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "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 + } + } + }, + "@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "dev": true + }, + "@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dev": true, + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@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.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "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": { + "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 + }, + "@jest/console": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "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" + } + }, + "@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "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" + } + } + } + }, + "@jest/core": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "dev": true, + "requires": { + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", + "micromatch": "^4.0.4", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "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" + } + }, + "@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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" + } + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "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" + } + }, + "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 + }, + "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 + }, + "jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + } + }, + "jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true + }, + "jest-resolve": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + } + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + } + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "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" + } + } + } + }, + "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" + } + } + } + }, + "@jest/environment": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "dev": true, + "requires": { + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "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" + } + }, + "@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "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" + } + } + } + }, + "@jest/fake-timers": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "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" + } + }, + "@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "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" + } + } + } + }, + "@jest/globals": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "dev": true, + "requires": { + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "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" + } + }, + "@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "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" + } + } + } + }, + "@jest/reporters": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.1.0" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "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" + } + }, + "@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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" + } + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "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" + } + }, + "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 + }, + "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 + }, + "jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + } + }, + "jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true + }, + "jest-resolve": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + } + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + } + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "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" + } + } + } + }, + "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 + }, + "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" + } + } + } + }, + "@jest/schemas": { + "version": "29.6.0", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.0.tgz", + "integrity": "sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "@sinclair/typebox": "^0.27.8" + } + }, + "@jest/source-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9", + "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 + } + } + }, + "@jest/test-result": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "dev": true, + "requires": { + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "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" + } + }, + "@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "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" + } + } + } + }, + "@jest/test-sequencer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "dev": true, + "requires": { + "@jest/test-result": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "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" + } + }, + "@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + } + }, + "jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "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" + } + } + } + }, + "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" + } + } + } + }, + "@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "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" + } + }, + "@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + } + }, + "jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "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" + } + } + } + }, + "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 + }, + "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" + } + } + } + }, + "@jest/types": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.1.tgz", + "integrity": "sha512-tPKQNMPuXgvdOn2/Lg9HNfUvjYVGolt04Hp03f5hAk878uwOLikN+JzeLY0HcVgKgFl9Hs3EIqpu3WX27XNhnw==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "@jest/schemas": "^29.6.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "dependencies": { + "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, + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "optional": true, + "peer": 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, + "optional": true, + "peer": 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, + "optional": true, + "peer": true + }, + "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, + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + }, + "dependencies": { + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + } + } + }, + "@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true + }, + "@playwright/test": { + "version": "1.36.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.36.1.tgz", + "integrity": "sha512-YK7yGWK0N3C2QInPU6iaf/L3N95dlGdbsezLya4n0ZCh3IL7VgPGxC6Gnznh9ApWdOmkJeleT2kMTcWPRZvzqg==", + "dev": true, + "requires": { + "@types/node": "*", + "fsevents": "2.3.2", + "playwright-core": "1.36.1" + }, + "dependencies": { + "playwright-core": { + "version": "1.36.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.36.1.tgz", + "integrity": "sha512-7+tmPuMcEW4xeCL9cp9KxmYpQYHKkyjwoXRnoeTowaeNat8PoBMk/HwCYhqkH2fRkshfKEOiVus/IhID2Pg8kg==", + "dev": true + } + } + }, + "@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "dev": true, + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", + "dev": true + }, + "@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true + }, + "@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true, + "optional": true, + "peer": true + }, + "@sinonjs/commons": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.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 + }, + "@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, + "@types/babel__core": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz", + "integrity": "sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==", + "dev": true, + "requires": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.1.tgz", + "integrity": "sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==", + "dev": true, + "requires": { + "@babel/types": "^7.20.7" + } + }, + "@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/chroma-js": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@types/chroma-js/-/chroma-js-2.1.3.tgz", + "integrity": "sha512-1xGPhoSGY1CPmXLCBcjVZSQinFjL26vlR8ZqprsBWiFyED4JacJJ9zHhh5aaUXqbY9B37mKQ73nlydVAXmr1+g==", + "dev": true + }, + "@types/chrome": { + "version": "0.0.171", + "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.171.tgz", + "integrity": "sha512-CnCwFKI3COygib3DNJrCjePeoU2OCDGGbUcmftXtQ3loMABsLgwpG8z+LxV4kjQJFzmJDqOyhCSsbY9yyEfapQ==", + "dev": true, + "requires": { + "@types/filesystem": "*", + "@types/har-format": "*" + } + }, + "@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig==", + "dev": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "@types/eslint": { + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.0.tgz", + "integrity": "sha512-gsF+c/0XOguWgaOgvFs+xnnRqt9GwgTvIks36WpE6ueeI4KCEHHd8K/CKHqhOqrJKsYH8m27kRzQEvWXAwXUTw==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "dev": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", + "dev": true + }, + "@types/express": { + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.35", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz", + "integrity": "sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==", + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "@types/filesystem": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/filesystem/-/filesystem-0.0.32.tgz", + "integrity": "sha512-Yuf4jR5YYMR2DVgwuCiP11s0xuVRyPKmz8vo6HBY3CGdeMj8af93CFZX+T82+VD1+UqHOxTq31lO7MI7lepBtQ==", + "dev": true, + "requires": { + "@types/filewriter": "*" + } + }, + "@types/filewriter": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/filewriter/-/filewriter-0.0.29.tgz", + "integrity": "sha512-BsPXH/irW0ht0Ji6iw/jJaK8Lj3FJemon2gvEqHKpCdDCeemHa+rI3WBGq5z7cDMZgoLjY40oninGxqk+8NzNQ==", + "dev": true + }, + "@types/graceful-fs": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", + "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/har-format": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/@types/har-format/-/har-format-1.2.11.tgz", + "integrity": "sha512-T232/TneofqK30AD1LRrrf8KnjLvzrjWDp7eWST5KoiSzrBfRsLrWDPk4STQPW4NZG6v2MltnduBVmakbZOBIQ==", + "dev": true + }, + "@types/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==" + }, + "@types/http-proxy": { + "version": "1.17.11", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz", + "integrity": "sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "27.0.3", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.0.3.tgz", + "integrity": "sha512-cmmwv9t7gBYt7hNKH5Spu7Kuu/DotGa+Ff+JGRKZ4db5eh8PnKS4LuebJ3YLUoyOyIHraTGyULn23YtEAm0VSg==", + "dev": true, + "requires": { + "jest-diff": "^27.0.0", + "pretty-format": "^27.0.0" + } + }, + "@types/jest-dev-server": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/jest-dev-server/-/jest-dev-server-5.0.0.tgz", + "integrity": "sha512-2o5mY2c/WTXO0j+FrtWMxDt0NBi0o6R6aNx4xaym/OfVP8owAeZa582eFxQEqZ7KzHDqvkEEJ9YZ9O3Zw/MpPw==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/wait-on": "*" + } + }, + "@types/jsdom": { + "version": "16.2.14", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-16.2.14.tgz", + "integrity": "sha512-6BAy1xXEmMuHeAJ4Fv4yXKwBDTGTOseExKE3OaHiNycdHdZw59KfYzrt0DkDluvwmik1HRt6QS7bImxUmpSy+w==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/parse5": "*", + "@types/tough-cookie": "*" + } + }, + "@types/json-schema": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "dev": true + }, + "@types/just-debounce-it": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@types/just-debounce-it/-/just-debounce-it-1.5.0.tgz", + "integrity": "sha512-X0idscP49ASBe/yI29yLpBG1p/bae72yDMWsBGzxS1aaKinUl0Q2FkYVBMs+BXlVi3yPm4boWsiuFTQ0Dzw3dw==", + "dev": true, + "requires": { + "just-debounce-it": "*" + } + }, + "@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" + }, + "@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" + }, + "@types/parse5": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-7.0.0.tgz", + "integrity": "sha512-f2SeAxumolBmhuR62vNGTsSAvdz/Oj0k682xNrcKJ4dmRnTPODB74j6CPoNPzBPTHsu7Y7W7u93Mgp8Ovo8vWw==", + "dev": true, + "requires": { + "parse5": "*" + } + }, + "@types/prettier": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", + "dev": true + }, + "@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" + }, + "@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" + }, + "@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "@types/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", + "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "requires": { + "@types/express": "*" + } + }, + "@types/serve-static": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz", + "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==", + "requires": { + "@types/http-errors": "*", + "@types/mime": "*", + "@types/node": "*" + } + }, + "@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "@types/tough-cookie": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.2.tgz", + "integrity": "sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==", + "dev": true + }, + "@types/wait-on": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@types/wait-on/-/wait-on-5.3.1.tgz", + "integrity": "sha512-2FFOKCF/YydrMUaqg+fkk49qf0e5rDgwt6aQsMzFQzbS419h2gNOXyiwp/o2yYy27bi/C1z+HgfncryjGzlvgQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/webpack": { + "version": "5.28.0", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-5.28.0.tgz", + "integrity": "sha512-8cP0CzcxUiFuA9xGJkfeVpqmWTk9nx6CWwamRGCj95ph1SmlRRk9KlCZ6avhCbZd4L68LvYT6l1kpdEnQXrF8w==", + "dev": true, + "requires": { + "@types/node": "*", + "tapable": "^2.2.0", + "webpack": "^5" + } + }, + "@types/webpack-dev-middleware": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@types/webpack-dev-middleware/-/webpack-dev-middleware-5.3.0.tgz", + "integrity": "sha512-SklLlklFBfTyIXo1iWXxzeytjlysWfj5QfIcRJrCc7MgzuCjnZOHXviQwe81iFGq9ZkCUXAg2fpbZdHhj5lSWA==", + "dev": true, + "requires": { + "webpack-dev-middleware": "*" + } + }, + "@types/webpack-dev-server": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@types/webpack-dev-server/-/webpack-dev-server-4.5.0.tgz", + "integrity": "sha512-HMb6pZPANObue3LwbdpQLWzQyF9O0wntiPyXj4vGutlAbNKTXH4hDCHaZyfvfZDmFn+5HprrWHm1TGt3awNr/A==", + "dev": true, + "requires": { + "@types/bonjour": "*", + "@types/connect-history-api-fallback": "*", + "@types/express": "*", + "@types/serve-index": "*", + "@types/serve-static": "*", + "@types/webpack-dev-middleware": "*", + "chokidar": "^3.5.1", + "http-proxy-middleware": "^2.0.0", + "webpack": "*" + } + }, + "@types/ws": { + "version": "8.5.5", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", + "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "dev": true, + "optional": true, + "requires": { + "@types/node": "*" + } + }, + "@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "dev": true, + "requires": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", + "dev": true + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "@webpack-cli/configtest": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", + "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", + "dev": true, + "requires": {} + }, + "@webpack-cli/info": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", + "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", + "dev": true, + "requires": { + "envinfo": "^7.7.3" + } + }, + "@webpack-cli/serve": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", + "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", + "dev": true, + "requires": {} + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "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": {} + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true + }, + "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" + } + }, + "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" + } + }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "requires": { + "ajv": "^8.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "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 + } + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} + }, + "ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "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": "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" + } + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "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" + } + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "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 + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "axios": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", + "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", + "dev": true, + "requires": { + "follow-redirects": "^1.14.7" + } + }, + "babel-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "dev": true, + "requires": { + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "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" + } + }, + "@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "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" + } + } + } + }, + "babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "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": "^5.0.4", + "test-exclude": "^6.0.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "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-polyfill-corejs2": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", + "semver": "^6.1.1" + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", + "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.18.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.1" + } + }, + "babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "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": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^27.5.1", + "babel-preset-current-node-syntax": "^1.0.0" + } + }, + "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 + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "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==", + "dev": true + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "bonjour-service": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz", + "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==", + "dev": true, + "requires": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "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==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "browserslist": { + "version": "4.21.9", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", + "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001503", + "electron-to-chromium": "^1.4.431", + "node-releases": "^2.0.12", + "update-browserslist-db": "^1.0.11" + } + }, + "bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true + }, + "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 + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true + }, + "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.30001517", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz", + "integrity": "sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==", + "dev": true + }, + "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" + } + }, + "char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "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": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true + }, + "ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "dev": true + }, + "cjs-module-lexer": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", + "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" + } + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true + }, + "collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true + }, + "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": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "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", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "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 + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "requires": { + "safe-buffer": "5.2.1" + } + }, + "content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" + }, + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "core-js-compat": { + "version": "3.31.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.31.1.tgz", + "integrity": "sha512-wIDWd2s5/5aJSdpOJHfSibxNODxoGoWOBHt8JSPB41NOE94M7kuTPZCYLOlTtuoXTsBPKobpJ6T+y0SSy5L9SA==", + "dev": true, + "requires": { + "browserslist": "^4.21.9" + } + }, + "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 + }, + "cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "dev": true, + "requires": { + "node-fetch": "2.6.7" + } + }, + "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" + } + }, + "cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } + } + }, + "cwd": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/cwd/-/cwd-0.10.0.tgz", + "integrity": "sha512-YGZxdTTL9lmLkCUTpg4j0zQ7IhRB5ZmqNBbGCl3Tg6MP/d5/6sY7L5mmTjzbc6JKgVZYiqTQTNhPFsbXNGlRaA==", + "dev": true, + "requires": { + "find-pkg": "^0.1.2", + "fs-exists-sync": "^0.1.0" + } + }, + "data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "requires": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true + }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true + }, + "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 + }, + "deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true + }, + "default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "requires": { + "execa": "^5.0.0" + } + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" + }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true + }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "devtools-protocol": { + "version": "0.0.1036444", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1036444.tgz", + "integrity": "sha512-0y4f/T8H9lsESV9kKP1HDUXgHxCdniFeJh6Erq+FbdOEvp/Ydp9t8kcAAM5gOd17pMrTDlFWntoHtzzeTUWKNw==", + "dev": true + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, + "diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "dev": true + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", + "dev": true + }, + "dns-packet": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.0.tgz", + "integrity": "sha512-rza3UH1LwdHh9qyPXp8lkwpjSNk/AMD3dPytUoRoqnypDUhY0xvbdmVhWOfxO68frEfV9BU8V12Ez7ZsHGZpCQ==", + "dev": true, + "requires": { + "@leichtgewicht/ip-codec": "^2.0.1" + } + }, + "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" + } + }, + "domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, + "requires": { + "webidl-conversions": "^5.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true + } + } + }, + "dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "dev": true + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "electron-to-chromium": { + "version": "1.4.468", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.468.tgz", + "integrity": "sha512-6M1qyhaJOt7rQtNti1lBA0GwclPH+oKCmsra/hkcWs5INLxfXXD/dtdnaKUYQu/pjOBP/8Osoe4mAcNvvzoFag==", + "dev": true + }, + "emittery": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "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 + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.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" + } + }, + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true + }, + "envinfo": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz", + "integrity": "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==", + "dev": true + }, + "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-module-lexer": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", + "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==", + "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-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "source-map": "~0.6.1" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "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": { + "@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" + } + }, + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "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 + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "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" + } + }, + "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 + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "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": "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-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.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "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.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "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 + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "dependencies": { + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + } + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true + }, + "expand-tilde": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", + "integrity": "sha512-rtmc+cjLZqnu9dSYosX9EWmSJhTwpACgJQTfj4hgg2JjOD/6SIQalZrt4a3aQeh++oNxkazcaxrhPUj6+g5G/Q==", + "dev": true, + "requires": { + "os-homedir": "^1.0.1" + } + }, + "expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "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" + } + }, + "@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "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" + } + } + } + }, + "express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "requires": { + "@types/yauzl": "^2.9.1", + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + } + }, + "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-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": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "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==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "find-file-up": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/find-file-up/-/find-file-up-0.1.3.tgz", + "integrity": "sha512-mBxmNbVyjg1LQIIpgO8hN+ybWBgDQK8qjht+EbrTCGmmPV/sc7RF1i9stPTD6bpvXZywBdrwRYxhSdJv867L6A==", + "dev": true, + "requires": { + "fs-exists-sync": "^0.1.0", + "resolve-dir": "^0.1.0" + } + }, + "find-pkg": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/find-pkg/-/find-pkg-0.1.2.tgz", + "integrity": "sha512-0rnQWcFwZr7eO0513HahrWafsc3CTFioEB7DRiEYCUM/70QXSY8f3mCST17HXLcPvEhzH/Ty/Bxd72ZZsr/yvw==", + "dev": true, + "requires": { + "find-file-up": "^0.1.2" + } + }, + "find-process": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/find-process/-/find-process-1.4.7.tgz", + "integrity": "sha512-/U4CYp1214Xrp3u3Fqr9yNynUrr5Le4y0SsJh2lMDDSbpwYSz3M2SMWQC+wqcx79cN8PQtHQIL8KnuY9M66fdg==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "commander": "^5.1.0", + "debug": "^4.1.1" + }, + "dependencies": { + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "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" + } + } + } + }, + "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" + } + }, + "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.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true + }, + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "fs-exists-sync": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", + "integrity": "sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg==", + "dev": true + }, + "fs-monkey": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.4.tgz", + "integrity": "sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "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": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "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-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + } + }, + "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-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "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==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "global-modules": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", + "integrity": "sha512-JeXuCbvYzYXcwE6acL9V2bAOeSIGl4dD+iwLY9iUx2VBJJ80R18HCn+JCwHM9Oegdfya3lEkGCdaRkSyc10hDA==", + "dev": true, + "requires": { + "global-prefix": "^0.1.4", + "is-windows": "^0.2.0" + } + }, + "global-prefix": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", + "integrity": "sha512-gOPiyxcD9dJGCEArAhF4Hd0BAqvAe/JzERP7tYumE4yIkmIedPUVXcJFWbV3/p/ovIIvKjkrTk+f1UVkq7vvbw==", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.0", + "ini": "^1.3.4", + "is-windows": "^0.2.0", + "which": "^1.2.12" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "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 + }, + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "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-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "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" + } + }, + "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 + }, + "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" + } + } + } + }, + "html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.5" + } + }, + "html-entities": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", + "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==", + "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-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "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" + } + }, + "http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "requires": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "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 + }, + "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" + } + }, + "import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "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==" + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true + }, + "ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true + }, + "ipaddr.js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", + "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "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-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "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-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "is-windows": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", + "integrity": "sha512-n67eJYmXbniZB7RF4I/FTjK1s6RPOCTxhYrVYLRaCt3lF0mpWZPKr3T2LSZAqyjQsxR2qMmGYXXzK0YWwcPM1Q==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + } + }, + "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" + }, + "dependencies": { + "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 + }, + "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" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "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.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "dev": true, + "requires": { + "@jest/core": "^27.5.1", + "import-local": "^3.0.2", + "jest-cli": "^27.5.1" + } + }, + "jest-changed-files": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "execa": "^5.0.0", + "throat": "^6.0.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "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" + } + }, + "@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "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" + } + } + } + }, + "jest-chrome": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/jest-chrome/-/jest-chrome-0.7.2.tgz", + "integrity": "sha512-RSRDi8qNX54Q3ltSC2rW25+47nwY4DoruHOjHR0JZxijITS2PZrQ3j0jZPP3ywC0GuX0JNNwsKD3+iaKzOJEAA==", + "dev": true, + "requires": { + "@types/chrome": "^0.0.114" + }, + "dependencies": { + "@types/chrome": { + "version": "0.0.114", + "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.114.tgz", + "integrity": "sha512-i7qRr74IrxHtbnrZSKUuP5Uvd5EOKwlwJq/yp7+yTPihOXnPhNQO4Z5bqb1XTnrjdbUKEJicaVVbhcgtRijmLA==", + "dev": true, + "requires": { + "@types/filesystem": "*", + "@types/har-format": "*" + } + } + } + }, + "jest-circus": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.3.1.tgz", + "integrity": "sha512-v1dsM9II6gvXokgqq6Yh2jHCpfg7ZqV4jWY66u7npz24JnhP3NHxI0sKT7+ZMQ7IrOWHYAaeEllOySbDbWsiXw==", + "dev": true, + "requires": { + "@jest/environment": "^27.3.1", + "@jest/test-result": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.3.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.3.1", + "jest-matcher-utils": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-runtime": "^27.3.1", + "jest-snapshot": "^27.3.1", + "jest-util": "^27.3.1", + "pretty-format": "^27.3.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "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" + } + }, + "@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "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" + } + } + } + }, + "jest-cli": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "dev": true, + "requires": { + "@jest/core": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "prompts": "^2.0.1", + "yargs": "^16.2.0" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "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" + } + }, + "@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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" + } + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "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" + } + }, + "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 + }, + "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 + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + } + }, + "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" + } + } + } + }, + "jest-config": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "dev": true, + "requires": { + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "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" + } + }, + "@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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" + } + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "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" + } + }, + "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 + }, + "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 + }, + "jest-circus": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "dev": true, + "requires": { + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + } + }, + "jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + } + }, + "jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true + }, + "jest-resolve": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + } + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + } + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "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" + } + } + } + }, + "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" + } + } + } + }, + "jest-dev-server": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/jest-dev-server/-/jest-dev-server-6.0.0.tgz", + "integrity": "sha512-6X8+/gtFeZBfX7fX3BTAnZzPbdDYcWUdhsvcbJI5PsDXdJ06VNMPqwcPP7ZR5hUeXyvww6CX6ro+oIiARHo5Sg==", + "dev": true, + "requires": { + "chalk": "^4.1.2", + "cwd": "^0.10.0", + "find-process": "^1.4.5", + "prompts": "^2.4.1", + "spawnd": "^6.0.0", + "tree-kill": "^1.2.2", + "wait-on": "^6.0.0" + }, + "dependencies": { + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "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" + } + } + } + }, + "jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "dependencies": { + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "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" + } + } + } + }, + "jest-docblock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "dev": true, + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "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" + } + }, + "@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "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" + } + } + } + }, + "jest-environment-jsdom": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", + "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", + "dev": true, + "requires": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", + "jsdom": "^16.6.0" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "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" + } + }, + "@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "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" + } + } + } + }, + "jest-environment-node": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "dev": true, + "requires": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "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" + } + }, + "@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "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" + } + } + } + }, + "jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true + }, + "jest-haste-map": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.6.1.tgz", + "integrity": "sha512-0m7f9PZXxOCk1gRACiVgX85knUKPKLPg4oRCjLoqIm9brTHXaorMA0JpmtmVkQiT8nmXyIVoZd/nnH1cfC33ig==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.1", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.6.1", + "jest-worker": "^29.6.1", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + } + }, + "jest-jasmine2": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", + "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", + "dev": true, + "requires": { + "@jest/environment": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "throat": "^6.0.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "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" + } + }, + "@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "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" + } + } + } + }, + "jest-junit": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-13.0.0.tgz", + "integrity": "sha512-JSHR+Dhb32FGJaiKkqsB7AR3OqWKtldLd6ZH2+FJ8D4tsweb8Id8zEVReU4+OlrRO1ZluqJLQEETm+Q6/KilBg==", + "dev": true, + "requires": { + "mkdirp": "^1.0.4", + "strip-ansi": "^6.0.1", + "uuid": "^8.3.2", + "xml": "^1.0.1" + } + }, + "jest-leak-detector": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", + "dev": true, + "requires": { + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + } + }, + "jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "dependencies": { + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "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" + } + } + } + }, + "jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "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" + } + }, + "@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "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" + } + } + } + }, + "jest-mock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "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" + } + }, + "@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "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" + } + } + } + }, + "jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "requires": {} + }, + "jest-regex-util": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz", + "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==", + "dev": true, + "optional": true, + "peer": true + }, + "jest-resolve": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.6.1.tgz", + "integrity": "sha512-AeRkyS8g37UyJiP9w3mmI/VXU/q8l/IH52vj/cDAyScDcemRbSBhfX/NMYIGilQgSVwsjxrCHf3XJu4f+lxCMg==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.6.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.6.1", + "jest-validate": "^29.6.1", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "dependencies": { + "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, + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "optional": true, + "peer": 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, + "optional": true, + "peer": 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, + "optional": true, + "peer": true + }, + "resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, + "optional": true, + "peer": true + }, + "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, + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-resolve-dependencies": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "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" + } + }, + "@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true + }, + "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" + } + } + } + }, + "jest-runner": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "dev": true, + "requires": { + "@jest/console": "^27.5.1", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-leak-detector": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "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" + } + }, + "@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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" + } + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "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" + } + }, + "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 + }, + "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 + }, + "jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + } + }, + "jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true + }, + "jest-resolve": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + } + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + } + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "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" + } + } + } + }, + "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" + } + } + } + }, + "jest-runtime": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "dev": true, + "requires": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "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" + } + }, + "@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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" + } + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "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" + } + }, + "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 + }, + "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 + }, + "jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + } + }, + "jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true + }, + "jest-resolve": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + } + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + } + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "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" + } + } + } + }, + "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" + } + } + } + }, + "jest-serializer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", + "dev": true, + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.9" + } + }, + "jest-snapshot": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "dev": true, + "requires": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^27.5.1", + "semver": "^7.3.2" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "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" + } + }, + "@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + } + }, + "jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "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" + } + } + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "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" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "jest-util": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.6.1.tgz", + "integrity": "sha512-NRFCcjc+/uO3ijUVyNOQJluf8PtGCe/W6cix36+M3cTFgiYqFOOW5MgN4JOOcvbUhcKTYVd1CvHz/LWi8d16Mg==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "dependencies": { + "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, + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "optional": true, + "peer": 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, + "optional": true, + "peer": 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, + "optional": true, + "peer": true + }, + "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, + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-validate": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.6.1.tgz", + "integrity": "sha512-r3Ds69/0KCN4vx4sYAbGL1EVpZ7MSS0vLmd3gV78O+NAx3PDQQukRU5hNHPXlyqCgFY8XUk7EuTMLugh0KzahA==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.4.3", + "leven": "^3.1.0", + "pretty-format": "^29.6.1" + }, + "dependencies": { + "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, + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "optional": true, + "peer": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "optional": true, + "peer": 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, + "optional": true, + "peer": 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, + "optional": true, + "peer": true + }, + "jest-get-type": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", + "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", + "dev": true, + "optional": true, + "peer": true + }, + "pretty-format": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.1.tgz", + "integrity": "sha512-7jRj+yXO0W7e4/tSJKoR7HRIHLPPjtNaUGG2xxKQnGvPNRkgWcQ0AZX6P4KBRJN4FcTBWb3sa7DVUJmocYuoog==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "@jest/schemas": "^29.6.0", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "optional": true, + "peer": true + } + } + }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true, + "optional": true, + "peer": true + }, + "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, + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-watcher": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "dev": true, + "requires": { + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.5.1", + "string-length": "^4.0.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "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" + } + }, + "@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "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" + } + } + } + }, + "jest-worker": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.1.tgz", + "integrity": "sha512-U+Wrbca7S8ZAxAe9L6nb6g8kPdia5hj32Puu5iOqBCMTMWFHXuK6dOV2IFrpedbTV8fjMFLdWNttQTBL6u2MRA==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "@types/node": "*", + "jest-util": "^29.6.1", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "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, + "optional": true, + "peer": 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, + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "joi": { + "version": "17.9.2", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.9.2.tgz", + "integrity": "sha512-Itk/r+V4Dx0V3c7RLFdRh12IOjySm2/WGPMubBT92cQvRfYZhPM2W0hZlctjj72iES8jsRCwp7S/cRmWBnJ4nw==", + "dev": true, + "requires": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + } + }, + "jpeg-js": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", + "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "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" + } + }, + "jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "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.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + } + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "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": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true + }, + "just-debounce-it": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/just-debounce-it/-/just-debounce-it-3.2.0.tgz", + "integrity": "sha512-WXzwLL0745uNuedrCsCs3rpmfD6DBaf7uuVwaq98/8dafURfgQaBsSpjiPp5+CW6Vjltwy9cOGI6qE71b3T8iQ==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, + "launch-editor": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz", + "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==", + "dev": true, + "requires": { + "picocolors": "^1.0.0", + "shell-quote": "^1.7.3" + } + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "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" + } + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true + }, + "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" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "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.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "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" + } + }, + "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 + }, + "makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "requires": { + "tmpl": "1.0.5" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" + }, + "memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dev": true, + "requires": { + "fs-monkey": "^1.0.4" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, + "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 + }, + "multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, + "requires": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "requires": { + "whatwg-url": "^5.0.0" + }, + "dependencies": { + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } + } + }, + "node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "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==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "nwsapi": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz", + "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==", + "dev": true + }, + "object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "requires": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", + "dev": true + }, + "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-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "requires": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "dependencies": { + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true + } + } + }, + "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 + }, + "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": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "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-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "dev": true + }, + "parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "requires": { + "entities": "^4.4.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "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 + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "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-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "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" + } + }, + "playwright": { + "version": "1.36.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.36.1.tgz", + "integrity": "sha512-2ZqHpD0U0COKR8bqR3W5IkyIAAM0mT9FgGJB9xWCI1qAUkqLxJskA1ueeQOTH2Qfz3+oxdwwf2EzdOX+RkZmmQ==", + "dev": true, + "requires": { + "playwright-core": "1.36.1" + }, + "dependencies": { + "playwright-core": { + "version": "1.36.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.36.1.tgz", + "integrity": "sha512-7+tmPuMcEW4xeCL9cp9KxmYpQYHKkyjwoXRnoeTowaeNat8PoBMk/HwCYhqkH2fRkshfKEOiVus/IhID2Pg8kg==", + "dev": true + } + } + }, + "playwright-chromium": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/playwright-chromium/-/playwright-chromium-1.17.1.tgz", + "integrity": "sha512-EnCtsP/QTWWoQV/cFYpt2wgKwcOdoa2iHBlBaldHB8gobtynMKwk96rzldaRS4YimFibIzREFkWCNMrrb3LRMQ==", + "dev": true, + "requires": { + "playwright-core": "=1.17.1" + } + }, + "playwright-core": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.17.1.tgz", + "integrity": "sha512-C3c8RpPiC3qr15fRDN6dx6WnUkPLFmST37gms2aoHPDRvp7EaGDPMMZPpqIm/QWB5J40xDrQCD4YYHz2nBTojQ==", + "dev": true, + "requires": { + "commander": "^8.2.0", + "debug": "^4.1.1", + "extract-zip": "^2.0.1", + "https-proxy-agent": "^5.0.0", + "jpeg-js": "^0.4.2", + "mime": "^2.4.6", + "pngjs": "^5.0.0", + "progress": "^2.0.3", + "proper-lockfile": "^4.1.1", + "proxy-from-env": "^1.1.0", + "rimraf": "^3.0.2", + "socks-proxy-agent": "^6.1.0", + "stack-utils": "^2.0.3", + "ws": "^7.4.6", + "yauzl": "^2.10.0", + "yazl": "^2.5.1" + }, + "dependencies": { + "commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true + } + } + }, + "pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", + "dev": true + }, + "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.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "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 + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "proper-lockfile": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", + "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" + } + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "dependencies": { + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + } + } + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true + }, + "puppeteer": { + "version": "17.1.3", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-17.1.3.tgz", + "integrity": "sha512-tVtvNSOOqlq75rUgwLeDAEQoLIiBqmRg0/zedpI6fuqIocIkuxG23A7FIl1oVSkuSMMLgcOP5kVhNETmsmjvPw==", + "dev": true, + "requires": { + "cross-fetch": "3.1.5", + "debug": "4.3.4", + "devtools-protocol": "0.0.1036444", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.1", + "progress": "2.0.3", + "proxy-from-env": "1.1.0", + "rimraf": "3.0.2", + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "ws": "8.8.1" + }, + "dependencies": { + "ws": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", + "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", + "dev": true, + "requires": {} + } + } + }, + "puppeteer-core": { + "version": "17.1.3", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-17.1.3.tgz", + "integrity": "sha512-gm3d5fTVEc+h7jVtT3Y1k8OL1awaOzln44UfsJhUJKH/tyO/wn/zOxyAHTQt9aX/yo37IS0dfisU3i3P8qvZnw==", + "dev": true, + "requires": { + "cross-fetch": "3.1.5", + "debug": "4.3.4", + "devtools-protocol": "0.0.1036444", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.1", + "progress": "2.0.3", + "proxy-from-env": "1.1.0", + "rimraf": "3.0.2", + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "ws": "8.8.1" + }, + "dependencies": { + "ws": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", + "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", + "dev": true, + "requires": {} + } + } + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "requires": { + "side-channel": "^1.0.4" + } + }, + "querystring": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz", + "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==", + "dev": true + }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "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" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + } + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "requires": { + "resolve": "^1.9.0" + } + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "dev": true + }, + "regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "requires": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + } + }, + "regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "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 + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "resolve": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "dev": true, + "requires": { + "is-core-module": "^2.11.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + }, + "dependencies": { + "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 + } + } + }, + "resolve-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", + "integrity": "sha512-QxMPqI6le2u0dCLyiGzgy92kjkkL6zO0XyvHzjdTNH3zM6e5Hz3BwG6+aEyNgiQ5Xz6PwTwgQEj3U50dByPKIA==", + "dev": true, + "requires": { + "expand-tilde": "^1.2.2", + "global-modules": "^0.2.3" + } + }, + "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 + }, + "resolve.exports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", + "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", + "dev": true + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "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" + } + }, + "rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "requires": { + "tslib": "^2.1.0" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "requires": { + "xmlchars": "^2.2.0" + } + }, + "schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "selfsigned": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "dev": true, + "requires": { + "node-forge": "^1" + } + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "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", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "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", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "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 + }, + "shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "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==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "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" + }, + "dependencies": { + "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" + } + }, + "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 + } + } + }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true + }, + "sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "requires": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dev": true, + "requires": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + } + }, + "socks-proxy-agent": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", + "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", + "dev": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "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 + } + } + }, + "spawnd": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/spawnd/-/spawnd-6.2.0.tgz", + "integrity": "sha512-qX/I4lQy4KgVEcNle0kuc4FxFWHISzBhZW1YemPfwmrmQjyZmfTK/OhBKkhrD2ooAaFZEm1maEBLE6/6enwt+g==", + "dev": true, + "requires": { + "exit": "^0.1.2", + "signal-exit": "^3.0.7", + "tree-kill": "^1.2.2" + } + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "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", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "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" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + } + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "requires": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "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-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "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 + }, + "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" + } + }, + "supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "dev": true, + "requires": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "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 + }, + "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" + } + } + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "table": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "dev": true, + "requires": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "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": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + }, + "tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dev": true, + "requires": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + } + }, + "terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + } + }, + "terser": { + "version": "5.19.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz", + "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==", + "dev": true, + "requires": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" + }, + "dependencies": { + "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 + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + } + }, + "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" + } + } + } + }, + "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": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "throat": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", + "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "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": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "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==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + }, + "tough-cookie": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "dev": true, + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + } + }, + "tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, + "tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true + }, + "ts-jest": { + "version": "27.0.7", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.0.7.tgz", + "integrity": "sha512-O41shibMqzdafpuP+CkrOL7ykbmLh+FqQrXEmV9CydQ5JBk0Sj0uAEF5TNNe94fZWKm3yYvWa/IbyV4Yg1zK2Q==", + "dev": true, + "requires": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^27.0.0", + "json5": "2.x", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "20.x" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "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" + } + }, + "@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "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" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "ts-node": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.4.0.tgz", + "integrity": "sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A==", + "dev": true, + "requires": { + "@cspotcode/source-map-support": "0.7.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "yn": "3.1.1" + }, + "dependencies": { + "acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true + }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true + } + } + }, + "tslib": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", + "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==", + "dev": true + }, + "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.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "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.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.4.tgz", + "integrity": "sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==", + "dev": true + }, + "unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dev": true, + "requires": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "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.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true + }, + "universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" + }, + "update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "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" + } + }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" + }, + "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 + }, + "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 + }, + "v8-to-istanbul": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", + "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "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.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true + } + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" + }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "requires": { + "xml-name-validator": "^3.0.0" + } + }, + "wait-on": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-6.0.1.tgz", + "integrity": "sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==", + "dev": true, + "requires": { + "axios": "^0.25.0", + "joi": "^17.6.0", + "lodash": "^4.17.21", + "minimist": "^1.2.5", + "rxjs": "^7.5.4" + } + }, + "walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "requires": { + "makeerror": "1.0.12" + } + }, + "watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true + }, + "webpack": { + "version": "5.88.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "dependencies": { + "acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true + }, + "acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, + "requires": {} + } + } + }, + "webpack-cli": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.1.tgz", + "integrity": "sha512-JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.1.0", + "@webpack-cli/info": "^1.4.0", + "@webpack-cli/serve": "^1.6.0", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + } + } + }, + "webpack-dev-middleware": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.1.1.tgz", + "integrity": "sha512-y51HrHaFeeWir0YO4f0g+9GwZawuigzcAdRNon6jErXy/SqV/+O6eaVAzDqE6t3e3NpGeR5CS+cCDaTC+V3yEQ==", + "dev": true, + "requires": { + "colorette": "^2.0.10", + "memfs": "^3.4.12", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "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" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "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 + }, + "schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + } + } + } + }, + "webpack-dev-server": { + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", + "dev": true, + "requires": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.13.0" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "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" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "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 + }, + "schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + } + }, + "webpack-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "dev": true, + "requires": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + } + }, + "ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "dev": true, + "requires": {} + } + } + }, + "webpack-hot-middleware": { + "version": "2.25.1", + "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.25.1.tgz", + "integrity": "sha512-Koh0KyU/RPYwel/khxbsDz9ibDivmUbrRuKSSQvW42KSDdO4w23WI3SkHpSUKHE76LrFnnM/L7JCrpBwu8AXYw==", + "dev": true, + "requires": { + "ansi-html-community": "0.0.8", + "html-entities": "^2.1.0", + "querystring": "^0.2.0", + "strip-ansi": "^6.0.0" + } + }, + "webpack-merge": { + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz", + "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + } + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "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", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "requires": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + } + }, + "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" + } + }, + "wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "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" + }, + "dependencies": { + "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" + } + }, + "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 + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "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" + } + }, + "ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "requires": {} + }, + "xml": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", + "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==", + "dev": true + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "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": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "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.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "yazl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", + "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3" + } + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + } + } +} diff --git a/tests/integration-tests/package.json b/tests/integration-tests/package.json new file mode 100644 index 000000000..deb2189a3 --- /dev/null +++ b/tests/integration-tests/package.json @@ -0,0 +1,54 @@ +{ + "name": "chainhook-playwright", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "predicates": "./node_modules/jest/bin/jest.js --runInBand --testPathPattern=./tests/stacks-predicates/contract-call/*" + }, + "author": "", + "license": "MIT", + "devDependencies": { + "@babel/core": "7.16.5", + "@babel/plugin-proposal-class-properties": "7.16.5", + "@babel/plugin-transform-regenerator": "7.16.5", + "@babel/plugin-transform-runtime": "7.16.5", + "@babel/preset-env": "7.16.5", + "@babel/preset-react": "7.16.5", + "@babel/preset-typescript": "7.16.5", + "@babel/runtime": "7.16.5", + "@playwright/test": "^1.25.1", + "@types/chroma-js": "2.1.3", + "@types/chrome": "0.0.171", + "@types/jest": "27.0.3", + "@types/jest-dev-server": "5.0.0", + "@types/jsdom": "16.2.14", + "@types/just-debounce-it": "1.5.0", + "@types/node": "^17.0.45", + "@types/webpack": "5.28.0", + "@types/webpack-dev-server": "4.5.0", + "dotenv": "10.0.0", + "eslint": "7.32.0", + "jest": "^27.0.7", + "jest-chrome": "0.7.2", + "jest-circus": "27.3.1", + "jest-dev-server": "6.0.0", + "jest-junit": "13.0.0", + "playwright": "^1.25.1", + "playwright-chromium": "1.17.1", + "playwright-core": "1.17.1", + "prettier": "^2.7.1", + "puppeteer": "^17.0.0", + "puppeteer-core": "^17.0.0", + "ts-jest": "27.0.7", + "ts-node": "10.4", + "typescript": "4.5.4", + "webpack-cli": "4.9.1", + "webpack-dev-server": "^4.10.1", + "webpack-hot-middleware": "2.25.1" + }, + "dependencies": { + "@types/express": "^4.17.17", + "express": "^4.18.2" + } +} diff --git a/tests/integration-tests/playwright.config.js b/tests/integration-tests/playwright.config.js new file mode 100644 index 000000000..ffd535511 --- /dev/null +++ b/tests/integration-tests/playwright.config.js @@ -0,0 +1,6 @@ +// playwright.config.ts +const config = { + testDir: "./tests", +}; + +module.exports = config; diff --git a/tests/integration-tests/readme.md b/tests/integration-tests/readme.md new file mode 100644 index 000000000..b4233b1af --- /dev/null +++ b/tests/integration-tests/readme.md @@ -0,0 +1,53 @@ +# automate-chainhooks +automate-chainhooks is a npm script for automation testing of [chainhook](https://github.com/hirosystems/chainhook/blob/5791379655fba786abf6e265311c0d789a8722e5/docs/getting-started.md) + +### Prerequisites +- npm installed and Node v16.* +- [ngrok](https://dev.to/ibrarturi/how-to-test-webhooks-on-your-localhost-3b4f) +- [chainhook](https://github.com/hirosystems/chainhook/blob/5791379655fba786abf6e265311c0d789a8722e5/docs/getting-started.md) +- [zeromq] (https://zeromq.org/download/) + + +### Run script +1. Go to the root of the project and do `npm install`. Make sure you have satisfied the above Prerequisites. +2. Start ngrok using the command `ngrok http 3006`. Once it starts, copy the ngrok URL into the `.env` file for `DOMAIN_URL`. This is required to post the result for the http predicates example of the ngrok URL https://1f67-37-19-198-81.ngrok.io/. You can check the ngrok requests at `localhost:4040` +3. Run all the predicates: + ```sh + $ npm run predicates +4. Run all the file result predicates: + ```sh + $ npm run file-predicates +5. Run all the POST URL predicates: + ```sh + $ npm run post-predicates +6. Clear all the result files: + ```sh + $ npm run clear-result-files +7. Run transaction predicate for file append and POST + ```sh + $ predicate=transaction npm run predicates +8. Run print-event predicate for file append and POST + ```sh + $ predicate=print-event npm run predicates +9. Run nft-event predicate for file append and POST + ```sh + $ predicate=nft-event npm run predicates +10. Run ft-event predicate for file append and POST + ```sh + $ predicate=ft-event npm run predicates +11. Run contract-deployment predicate for file append and POST + ```sh + $ predicate=contract-deployment npm run predicates +12. Run contract-call predicate for file append and POST + ```sh + $ predicate=contract-call npm run predicates +13. Run block-height predicate for file append and POST + ```sh + $ predicate=block-height npm run predicates +14. Run stx-event predicate for file append and POST + ```sh + $ predicate=stx-event npm run predicates + + +### Bitcoin +Run the bitcoind with `./bitcoind -rpcuser=root -rpcpassword=root`. Set this user and root in `Chainhook.toml` file and run the command as `chainhook predicates scan /home/user/tests/stacks-predicates/transaction/transaction-bitcoin-file.json --config-path=./Chainhook.toml` diff --git a/tests/integration-tests/tests/bitcoin-predicates/transaction/transaction-post.json b/tests/integration-tests/tests/bitcoin-predicates/transaction/transaction-post.json new file mode 100644 index 000000000..0851f3e34 --- /dev/null +++ b/tests/integration-tests/tests/bitcoin-predicates/transaction/transaction-post.json @@ -0,0 +1,22 @@ +{ + "uuid": "1", + "name": "Hello Ordinals", + "chain": "bitcoin", + "version": 1, + "networks": { + "testnet": { + "start_block": 800497, + "end_block": 800500, + "if_this": { + "scope": "txid", + "equals": "c8231a9b232e26692a41cba9b6df34c421745fb49a84c495d960bf7ce940bc7d" + }, + "then_that": { + "http_post": { + "url": "https://webhook.site/6068d324-bb7f-4c91-b619-560832b91d4c", + "authorization_header": "" + } + } + } + } +} \ No newline at end of file diff --git a/tests/integration-tests/tests/bitcoin-predicates/transaction/transaction.spec.ts b/tests/integration-tests/tests/bitcoin-predicates/transaction/transaction.spec.ts new file mode 100644 index 000000000..b818fb6de --- /dev/null +++ b/tests/integration-tests/tests/bitcoin-predicates/transaction/transaction.spec.ts @@ -0,0 +1,51 @@ +import { getPOSTPage } from "../../utility/browser-instance"; +import predicateCommands from "../../stacks-predicates/predicate-commands.json"; +import { wait } from "../../utility/utils"; +import { PostPageInstance } from "../../utility/post-page-instance"; + +import * as util from "util"; +import * as fs from "fs"; +import * as child_process from "child_process"; +const exec = util.promisify(child_process.exec); +const expectedTxId = "0x411e78f4b727fc0a78b86c3fd56da0c741c71339713be81d7528c4015665267b"; + +jest.setTimeout(45 * 60 * 1000); // 45 mins + +describe("Transaction:", () => { + it("file-append test", async () => { + console.log("EXECUTING file-append predicate for transaction"); + await transactionFilePredicate(); + console.log("COMPLETED file-append predicate for transaction"); + const result = await transactionFileResult(); + const actualTxId = result.apply[0]?.transactions[0]?.transaction_identifier.hash; + expect(actualTxId).toEqual(expectedTxId); + }); + + // it("post test", async () => { + // console.log("EXECUTING post predicate for transaction"); + // const { stdout, stderr } = await exec(predicateCommands.transaction_post); + // console.log(stderr); + // console.log("COMPLETED post predicate for transaction"); + // // get the POST page from the browser + // const postPage: PostPageInstance = await getPOSTPage(); + // const result = await postPage.getPOSTResult(); + // const actualTxId = result.apply[0]?.transactions[0]?.transaction_identifier.hash; + // expect(actualTxId).toEqual(expectedTxId); + // await postPage.closeBrowser(); + // }); +}); + +const transactionFilePredicate = async (): Promise => { + fs.writeFileSync(predicateCommands.transaction_file.result_file, ""); + const { stdout, stderr } = await exec( + predicateCommands.transaction_file.command + ); + console.log(stderr); +}; + +const transactionFileResult = async (): Promise => { + const fileContent = JSON.parse( + fs.readFileSync(predicateCommands.transaction_file.result_file, "utf8") + ); + return fileContent; +}; diff --git a/tests/integration-tests/tests/mocks/index.ts b/tests/integration-tests/tests/mocks/index.ts new file mode 100644 index 000000000..aa2dc7fed --- /dev/null +++ b/tests/integration-tests/tests/mocks/index.ts @@ -0,0 +1 @@ +export const NGROK_DASHBOARD: string = "localhost:4040"; \ No newline at end of file diff --git a/tests/integration-tests/tests/selectors/postPage.selectors.ts b/tests/integration-tests/tests/selectors/postPage.selectors.ts new file mode 100644 index 000000000..de8dd7582 --- /dev/null +++ b/tests/integration-tests/tests/selectors/postPage.selectors.ts @@ -0,0 +1,6 @@ +export enum PostPageSelectors { + Request = "request", + RequestTab2 = "request-tab-2", + RequestPane2 = "request-pane-2", + ClearRequest = "Clear Requests" +} diff --git a/tests/integration-tests/tests/setup-tests.ts b/tests/integration-tests/tests/setup-tests.ts new file mode 100644 index 000000000..61e4276b5 --- /dev/null +++ b/tests/integration-tests/tests/setup-tests.ts @@ -0,0 +1,53 @@ +import * as dotenv from 'dotenv'; +import * as fs from "fs"; +import express from 'express'; + +const app: express.Application = express(); +const port: number = 3006; + +dotenv.config({ path: '.env' }); + +const stacksPostFile = [ + "transaction/transaction", + "block-height/block-height", + "ft-event/ft-event", + "nft-event/nft-event", + "stx-event/stx-event", + "print-event/print-event", + "contract-call/contract-call", + "contract-deployment/contract-deployment" +]; + +const initTestnetStacksPOSTURL = () => { + const domainURL = process.env.DOMAIN_URL; + if (!domainURL) { + console.log("Please set the domain url for POST predicates"); + process.exit(1); + } + + stacksPostFile.map((postFile) => { + const fileContent = JSON.parse( + fs.readFileSync(`tests/stacks-predicates/${postFile}-post.json`, "utf8") + ); + fileContent.networks.testnet.then_that.http_post.url = domainURL; + fs.writeFileSync(`tests/stacks-predicates/${postFile}-post.json`, JSON.stringify(fileContent)); + }); +}; + +initTestnetStacksPOSTURL(); + +// register routes for POST predicate and start server +app.get('*', (_req, _res) => { + console.log(`Invoked GET at http://localhost:${port}/`); + _res.status(200).send('acknowledge'); +}); + +app.post('*', (_req, _res) => { + console.log(`Invoked POST at http://localhost:${port}/`); + _res.status(200).send('acknowledge'); +}); + +// Server setup +app.listen(port, () => { + console.log(`Listening at http://localhost:${port}/`); +}); \ No newline at end of file diff --git a/tests/integration-tests/tests/stacks-predicates/block-height/block-height-file-result.json b/tests/integration-tests/tests/stacks-predicates/block-height/block-height-file-result.json new file mode 100644 index 000000000..e69de29bb diff --git a/tests/integration-tests/tests/stacks-predicates/block-height/block-height-file.json b/tests/integration-tests/tests/stacks-predicates/block-height/block-height-file.json new file mode 100644 index 000000000..87a406bde --- /dev/null +++ b/tests/integration-tests/tests/stacks-predicates/block-height/block-height-file.json @@ -0,0 +1,21 @@ +{ + "chain": "stacks", + "uuid": "5128f99a-eac7-484f-8228-6e643bd19cf7", + "name": "Block Height File", + "version": 1, + "networks": { + "testnet": { + "start_block": 114259, + "end_block": 114261, + "if_this": { + "scope": "block_height", + "equals": 114260 + }, + "then_that": { + "file_append": { + "path": "tests/stacks-predicates/block-height/block-height-file-result.json" + } + } + } + } +} \ No newline at end of file diff --git a/tests/integration-tests/tests/stacks-predicates/block-height/block-height-post.json b/tests/integration-tests/tests/stacks-predicates/block-height/block-height-post.json new file mode 100644 index 000000000..7d87910c3 --- /dev/null +++ b/tests/integration-tests/tests/stacks-predicates/block-height/block-height-post.json @@ -0,0 +1 @@ +{"chain":"stacks","uuid":"fa95ed2c-6d0b-49eb-90cd-71875122f71d","name":"Block Height Post","version":1,"networks":{"testnet":{"start_block":111785,"end_block":111795,"if_this":{"scope":"block_height","equals":111790},"then_that":{"http_post":{"url":"https://8ad2-2405-201-200a-3191-75fe-9dba-108b-42b9.ngrok.io","authorization_header":""}}}}} \ No newline at end of file diff --git a/tests/integration-tests/tests/stacks-predicates/block-height/block-height.spec.ts b/tests/integration-tests/tests/stacks-predicates/block-height/block-height.spec.ts new file mode 100644 index 000000000..558a4b5ec --- /dev/null +++ b/tests/integration-tests/tests/stacks-predicates/block-height/block-height.spec.ts @@ -0,0 +1,37 @@ +import * as util from "util"; +import * as fs from "fs"; +import * as child_process from "child_process"; +const exec = util.promisify(child_process.exec); +import predicateCommands from "../../stacks-predicates/predicate-commands.json"; + +jest.setTimeout(45 * 60 * 1000); // 45 mins + +// TODO: Ask that this this block height: 114260 brings all the data which is very huge +describe("block-height:", () => { + it("file-append test", async () => { + console.log("EXECUTING file-append predicate for Block Height"); + await blockHeightFilePredicate(); + console.log("COMPLETED file-append predicate for Block Height"); + const result = await blockHeightFileResult(); + expect(0).toEqual(1); + }); +}); + +const blockHeightFilePredicate = async (): Promise => { + fs.writeFileSync(predicateCommands.block_height_file.result_file, ""); + const { stdout, stderr } = await exec( + predicateCommands.block_height_file.command + ); + console.log(stderr); +}; + +const blockHeightFileResult = async (): Promise => { + let fileContent = fs.readFileSync( + predicateCommands.block_height_file.result_file, + "utf8" + ); + if (fileContent) { + fileContent = JSON.parse(fileContent); + } + return fileContent; +}; diff --git a/tests/integration-tests/tests/stacks-predicates/contract-call/contract-call-file-result.json b/tests/integration-tests/tests/stacks-predicates/contract-call/contract-call-file-result.json new file mode 100644 index 000000000..e69de29bb diff --git a/tests/integration-tests/tests/stacks-predicates/contract-call/contract-call-file.json b/tests/integration-tests/tests/stacks-predicates/contract-call/contract-call-file.json new file mode 100644 index 000000000..d35d0d8c1 --- /dev/null +++ b/tests/integration-tests/tests/stacks-predicates/contract-call/contract-call-file.json @@ -0,0 +1,23 @@ +{ + "chain": "stacks", + "uuid": "0dcfe481-ef9e-40f7-ad7b-1a9a39895516", + "name": "Contract Call File", + "version": 1, + "networks": { + "testnet": { + "start_block": 113505, + "end_block": 113509, + "expire_after_occurrence": 1, + "if_this": { + "scope": "contract_call", + "contract_identifier": "ST000000000000000000002AMW42H.bns", + "method": "name-revoke" + }, + "then_that": { + "file_append": { + "path": "tests/stacks-predicates/contract-call/contract-call-file-result.json" + } + } + } + } +} \ No newline at end of file diff --git a/tests/integration-tests/tests/stacks-predicates/contract-call/contract-call-post.json b/tests/integration-tests/tests/stacks-predicates/contract-call/contract-call-post.json new file mode 100644 index 000000000..dcf65e5da --- /dev/null +++ b/tests/integration-tests/tests/stacks-predicates/contract-call/contract-call-post.json @@ -0,0 +1 @@ +{"chain":"stacks","uuid":"35ed0323-7549-41ee-a546-ab00d453a681","name":"Contract Call Post","version":1,"networks":{"testnet":{"start_block":113505,"end_block":113509,"expire_after_occurrence":1,"if_this":{"scope":"contract_call","contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"then_that":{"http_post":{"url":"https://a738-2405-201-200a-3191-40d5-db02-efa-357.ngrok.io","authorization_header":""}}}}} diff --git a/tests/integration-tests/tests/stacks-predicates/contract-call/contract-call.spec.ts b/tests/integration-tests/tests/stacks-predicates/contract-call/contract-call.spec.ts new file mode 100644 index 000000000..e5ff1e46d --- /dev/null +++ b/tests/integration-tests/tests/stacks-predicates/contract-call/contract-call.spec.ts @@ -0,0 +1,57 @@ +import * as util from "util"; +import * as fs from "fs"; +import * as child_process from "child_process"; +const exec = util.promisify(child_process.exec); +import { getPOSTPage } from "../../utility/browser-instance"; +import predicateCommands from "../../stacks-predicates/predicate-commands.json"; +import { PostPageInstance } from "../../utility/post-page-instance"; +const expectedIdentifier = "ST000000000000000000002AMW42H.bns"; + +jest.setTimeout(45 * 60 * 1000); // 45 mins + +describe("contract-call:", () => { + it("file-append test", async () => { + console.log("EXECUTING file-append predicate for Contract Call"); + await contractCallFilePredicate(); + console.log("COMPLETED file-append predicate for Contract Call"); + const result = await contractCallFileResult(); + const actualIdentifier = result.apply[0]?.transactions[0]?.metadata?.kind?.data?.contract_identifier; + const actualType = result.apply[0]?.transactions[0]?.metadata?.kind?.type; + expect(actualIdentifier).toEqual(expectedIdentifier); + expect(actualType).toEqual("ContractCall"); + }); + + it("post test", async () => { + console.log("EXECUTING post predicate for Contract Call"); + const { stdout, stderr } = await exec(predicateCommands.transaction_post); + console.log(stderr); + console.log("COMPLETED post predicate for Contract Call"); + // get the POST page from the browser + const postPage: PostPageInstance = await getPOSTPage(); + const result = await postPage.getPOSTResult(); + const actualIdentifier = result.apply[0]?.transactions[0]?.metadata?.kind?.data?.contract_identifier; + const actualType = result.apply[0]?.transactions[0]?.metadata?.kind?.type; + expect(actualIdentifier).toEqual(expectedIdentifier); + expect(actualType).toEqual("ContractCall"); + }); + +}); + +const contractCallFilePredicate = async (): Promise => { + fs.writeFileSync(predicateCommands.contract_call_file.result_file, ""); + const { stdout, stderr } = await exec( + predicateCommands.contract_call_file.command + ); + console.log(stderr); +}; + +const contractCallFileResult = async (): Promise => { + let fileContent = fs.readFileSync( + predicateCommands.contract_call_file.result_file, + "utf8" + ); + if (fileContent) { + fileContent = JSON.parse(fileContent); + } + return fileContent; +}; diff --git a/tests/integration-tests/tests/stacks-predicates/contract-deployment/contract-deployment-file-result.json b/tests/integration-tests/tests/stacks-predicates/contract-deployment/contract-deployment-file-result.json new file mode 100644 index 000000000..e69de29bb diff --git a/tests/integration-tests/tests/stacks-predicates/contract-deployment/contract-deployment-file.json b/tests/integration-tests/tests/stacks-predicates/contract-deployment/contract-deployment-file.json new file mode 100644 index 000000000..d46d9527e --- /dev/null +++ b/tests/integration-tests/tests/stacks-predicates/contract-deployment/contract-deployment-file.json @@ -0,0 +1,22 @@ +{ + "chain": "stacks", + "uuid": "6cdd033e-3d89-43eb-99eb-97d233afab6b", + "name": "Contract Deployment file", + "version": 1, + "networks": { + "testnet": { + "start_block": 113580, + "end_block": 113585, + "expire_after_occurrence": 1, + "if_this": { + "scope": "contract_deployment", + "deployer": "ST20X3DC5R091J8B6YPQT638J8NR1W83KN6JQ4P6F" + }, + "then_that": { + "file_append": { + "path": "tests/stacks-predicates/contract-deployment/contract-deployment-file-result.json" + } + } + } + } +} \ No newline at end of file diff --git a/tests/integration-tests/tests/stacks-predicates/contract-deployment/contract-deployment-post.json b/tests/integration-tests/tests/stacks-predicates/contract-deployment/contract-deployment-post.json new file mode 100644 index 000000000..15688aead --- /dev/null +++ b/tests/integration-tests/tests/stacks-predicates/contract-deployment/contract-deployment-post.json @@ -0,0 +1 @@ +{"chain":"stacks","uuid":"8625d9df-a41d-49e9-aece-44280428cc78","name":"Contract Deployment post","version":1,"networks":{"testnet":{"start_block":113580,"end_block":113585,"expire_after_occurrence":1,"if_this":{"scope":"contract_deployment","deployer":"ST20X3DC5R091J8B6YPQT638J8NR1W83KN6JQ4P6F"},"then_that":{"http_post":{"url":"https://a738-2405-201-200a-3191-40d5-db02-efa-357.ngrok.io","authorization_header":""}}}}} \ No newline at end of file diff --git a/tests/integration-tests/tests/stacks-predicates/contract-deployment/contract-deployment.spec.ts b/tests/integration-tests/tests/stacks-predicates/contract-deployment/contract-deployment.spec.ts new file mode 100644 index 000000000..abdac660d --- /dev/null +++ b/tests/integration-tests/tests/stacks-predicates/contract-deployment/contract-deployment.spec.ts @@ -0,0 +1,59 @@ +import * as util from "util"; +import * as fs from "fs"; +import * as child_process from "child_process"; +const exec = util.promisify(child_process.exec); +import { getPOSTPage } from "../../utility/browser-instance"; +import predicateCommands from "../../stacks-predicates/predicate-commands.json"; +import { PostPageInstance } from "../../utility/post-page-instance"; +const expectedIdentifier = "ST20X3DC5R091J8B6YPQT638J8NR1W83KN6JQ4P6F"; + +jest.setTimeout(45 * 60 * 1000); // 45 mins + +describe("contract-deployment:", () => { + it("file-append test", async () => { + console.log("EXECUTING file-append predicate for Contract Deployment"); + await contractDeploymentFilePredicate(); + console.log("COMPLETED file-append predicate for Contract Deployment"); + const result = await contractDeploymentFileResult(); + const actualIdentifier = result.apply[0]?.transactions[0]?.metadata?.kind?.data?.contract_identifier; + const actualType = result.apply[0]?.transactions[0]?.metadata?.kind?.type; + expect(actualIdentifier).toContain(expectedIdentifier); + expect(actualType).toEqual("ContractDeployment"); + }); + + it("post test", async () => { + console.log("EXECUTING post predicate for Contract Deployment"); + const { stdout, stderr } = await exec(predicateCommands.transaction_post); + console.log(stderr); + console.log("COMPLETED post predicate for Contract Deployment"); + // get the POST page from the browser + const postPage: PostPageInstance = await getPOSTPage(); + const result = await postPage.getPOSTResult(); + + const actualIdentifier = result.apply[0]?.transactions[0]?.metadata?.kind?.data?.contract_identifier; + const actualType = result.apply[0]?.transactions[0]?.metadata?.kind?.type; + expect(actualIdentifier).toContain(expectedIdentifier); + expect(actualType).toEqual("ContractDeployment"); + }); +}); + + + +const contractDeploymentFilePredicate = async (): Promise => { + fs.writeFileSync(predicateCommands.contract_deployment_file.result_file, ""); + const { stdout, stderr } = await exec( + predicateCommands.contract_deployment_file.command + ); + console.log(stderr); +}; + +const contractDeploymentFileResult = async (): Promise => { + let fileContent = fs.readFileSync( + predicateCommands.contract_deployment_file.result_file, + "utf8" + ); + if (fileContent) { + fileContent = JSON.parse(fileContent); + } + return fileContent; +}; diff --git a/tests/integration-tests/tests/stacks-predicates/ft-event/ft-event-file-result.json b/tests/integration-tests/tests/stacks-predicates/ft-event/ft-event-file-result.json new file mode 100644 index 000000000..e69de29bb diff --git a/tests/integration-tests/tests/stacks-predicates/ft-event/ft-event-file.json b/tests/integration-tests/tests/stacks-predicates/ft-event/ft-event-file.json new file mode 100644 index 000000000..a8e6cc2c2 --- /dev/null +++ b/tests/integration-tests/tests/stacks-predicates/ft-event/ft-event-file.json @@ -0,0 +1,23 @@ +{ + "chain": "stacks", + "uuid": "a2b55836-5fbe-441b-9de8-c24c3cda286c", + "name": "FT Event File", + "version": 1, + "networks": { + "testnet": { + "start_block": 111779, + "end_block": 111781, + "expire_after_occurrence": 1, + "if_this": { + "scope": "ft_event", + "asset_identifier": "ST113MYNN52BC76GWP8P9PYFEP7XWJP6S5YFQM4ZE.shitty-coin::shitty", + "actions": ["transfer"] + }, + "then_that": { + "file_append": { + "path": "tests/stacks-predicates/ft-event/ft-event-file-result.json" + } + } + } + } +} \ No newline at end of file diff --git a/tests/integration-tests/tests/stacks-predicates/ft-event/ft-event-post.json b/tests/integration-tests/tests/stacks-predicates/ft-event/ft-event-post.json new file mode 100644 index 000000000..e984772df --- /dev/null +++ b/tests/integration-tests/tests/stacks-predicates/ft-event/ft-event-post.json @@ -0,0 +1 @@ +{"chain":"stacks","uuid":"1cf16403-be82-4c69-99d7-7083b5a36434","name":"FT Event POST","version":1,"networks":{"testnet":{"start_block":26000,"end_block":26050,"if_this":{"scope":"ft_event","asset_identifier":"ST113MYNN52BC76GWP8P9PYFEP7XWJP6S5YFQM4ZE.shitty-coin::shitty","actions":["transfer"]},"then_that":{"http_post":{"url":"https://8ad2-2405-201-200a-3191-75fe-9dba-108b-42b9.ngrok.io","authorization_header":""}}}}} \ No newline at end of file diff --git a/tests/integration-tests/tests/stacks-predicates/ft-event/ft-event.spec.ts b/tests/integration-tests/tests/stacks-predicates/ft-event/ft-event.spec.ts new file mode 100644 index 000000000..f5a4e6e87 --- /dev/null +++ b/tests/integration-tests/tests/stacks-predicates/ft-event/ft-event.spec.ts @@ -0,0 +1,37 @@ +import * as util from "util"; +import * as fs from "fs"; +import * as child_process from "child_process"; +const exec = util.promisify(child_process.exec); +import predicateCommands from "../../stacks-predicates/predicate-commands.json"; + +jest.setTimeout(30 * 60 * 1000); // 30 mins + +// TODO: Ask that this asset_identifier: ST113MYNN52BC76GWP8P9PYFEP7XWJP6S5YFQM4ZE.shitty-coin::shitty brings all the blocks +describe("ft-event:", () => { + it("file-append test", async () => { + console.log("EXECUTING file-append predicate for FT Event"); + await FTEventFilePredicate(); + console.log("COMPLETED file-append predicate for FT Event"); + const result = await FTEventFileResult(); + expect(0).toEqual(1); + }); +}); + +const FTEventFilePredicate = async (): Promise => { + fs.writeFileSync(predicateCommands.ft_event_file.result_file, ""); + const { stdout, stderr } = await exec( + predicateCommands.ft_event_file.command + ); + console.log(stderr); +}; + +const FTEventFileResult = async (): Promise => { + let fileContent = fs.readFileSync( + predicateCommands.ft_event_file.result_file, + "utf8" + ); + if (fileContent) { + fileContent = JSON.parse(fileContent); + } + return fileContent; +}; diff --git a/tests/integration-tests/tests/stacks-predicates/nft-event/nft-event-file-result.json b/tests/integration-tests/tests/stacks-predicates/nft-event/nft-event-file-result.json new file mode 100644 index 000000000..e69de29bb diff --git a/tests/integration-tests/tests/stacks-predicates/nft-event/nft-event-file.json b/tests/integration-tests/tests/stacks-predicates/nft-event/nft-event-file.json new file mode 100644 index 000000000..257cf94f1 --- /dev/null +++ b/tests/integration-tests/tests/stacks-predicates/nft-event/nft-event-file.json @@ -0,0 +1,22 @@ +{ + "chain": "stacks", + "uuid": "c3c3bf08-2035-40bf-a5eb-0e4295911f8a", + "name": "nft event file", + "version": 1, + "networks": { + "testnet": { + "start_block": 60150, + "end_block": 60153, + "if_this": { + "scope": "nft_event", + "asset_identifier": "ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM.punker-nft3", + "actions": ["claim"] + }, + "then_that": { + "file_append": { + "path": "tests/stacks-predicates/nft-event/nft-event-file-result.json" + } + } + } + } +} \ No newline at end of file diff --git a/tests/integration-tests/tests/stacks-predicates/nft-event/nft-event-post.json b/tests/integration-tests/tests/stacks-predicates/nft-event/nft-event-post.json new file mode 100644 index 000000000..b724956fd --- /dev/null +++ b/tests/integration-tests/tests/stacks-predicates/nft-event/nft-event-post.json @@ -0,0 +1 @@ +{"chain":"stacks","uuid":"fc0eb094-be0f-42b5-b7a6-6100d9c512cb","name":"nft event post","version":1,"networks":{"testnet":{"start_block":0,"end_block":411850,"if_this":{"scope":"nft_event","asset_identifier":"ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM.punker-nft3","actions":["claim"]},"then_that":{"http_post":{"url":"https://8ad2-2405-201-200a-3191-75fe-9dba-108b-42b9.ngrok.io","authorization_header":""}}}}} \ No newline at end of file diff --git a/tests/integration-tests/tests/stacks-predicates/nft-event/nft-event.spec.ts b/tests/integration-tests/tests/stacks-predicates/nft-event/nft-event.spec.ts new file mode 100644 index 000000000..153fca1cc --- /dev/null +++ b/tests/integration-tests/tests/stacks-predicates/nft-event/nft-event.spec.ts @@ -0,0 +1,37 @@ +import * as util from "util"; +import * as fs from "fs"; +import * as child_process from "child_process"; +const exec = util.promisify(child_process.exec); +import predicateCommands from "../../stacks-predicates/predicate-commands.json"; + +jest.setTimeout(30 * 60 * 1000); // 30 mins + +// TODO: Ask that this asset_identifier: ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM.punker-nft3 does not have any match +describe("nft-event:", () => { + it("file-append test", async () => { + console.log("EXECUTING file-append predicate for NFT Event"); + await NFTEventFilePredicate(); + console.log("COMPLETED file-append predicate for NFT Event"); + const result = await NFTEventFileResult(); + expect(0).toEqual(1); + }); +}); + +const NFTEventFilePredicate = async (): Promise => { + fs.writeFileSync(predicateCommands.nft_event_file.result_file, ""); + const { stdout, stderr } = await exec( + predicateCommands.nft_event_file.command + ); + console.log(stderr); +}; + +const NFTEventFileResult = async (): Promise => { + let fileContent = fs.readFileSync( + predicateCommands.nft_event_file.result_file, + "utf8" + ); + if (fileContent) { + fileContent = JSON.parse(fileContent); + } + return fileContent; +}; \ No newline at end of file diff --git a/tests/integration-tests/tests/stacks-predicates/predicate-commands.json b/tests/integration-tests/tests/stacks-predicates/predicate-commands.json new file mode 100644 index 000000000..4925a471f --- /dev/null +++ b/tests/integration-tests/tests/stacks-predicates/predicate-commands.json @@ -0,0 +1,42 @@ +{ + "transaction_file": { + "command": "chainhook predicates scan tests/stacks-predicates/transaction/transaction-file.json --testnet", + "result_file": "tests/stacks-predicates/transaction/transaction-file-result.json" + }, + "transaction_post": "chainhook predicates scan tests/stacks-predicates/transaction/transaction-post.json --testnet", + "block_height_file": { + "command": "chainhook predicates scan tests/stacks-predicates/block-height/block-height-file.json --testnet", + "result_file": "tests/stacks-predicates/block-height/block-height-file-result.json" + }, + "block_height_post": "chainhook predicates scan tests/stacks-predicates/block-height/block-height-post.json --testnet", + "ft_event_file": { + "command": "chainhook predicates scan tests/stacks-predicates/ft-event/ft-event-file.json --testnet", + "result_file": "tests/stacks-predicates/ft-event/ft-event-file-result.json" + }, + "ft_event_post": "chainhook predicates scan tests/stacks-predicates/ft-event/ft-event-post.json --testnet", + "nft_event_file": { + "command": "chainhook predicates scan tests/stacks-predicates/nft-event/nft-event-file.json --testnet", + "result_file": "tests/stacks-predicates/nft-event/nft-event-file-result.json" + }, + "nft_event_post": "chainhook predicates scan tests/stacks-predicates/nft-event/nft-event-post.json --testnet", + "stx_event_file": { + "command": "chainhook predicates scan tests/stacks-predicates/stx-event/stx-event-file.json --testnet", + "result_file": "tests/stacks-predicates/stx-event/stx-event-file-result.json" + }, + "stx_event_post": "chainhook predicates scan tests/stacks-predicates/stx-event/stx-event-post.json --testnet", + "print_event_file": { + "command": "chainhook predicates scan tests/stacks-predicates/print-event/print-event-file.json --testnet", + "result_file": "tests/stacks-predicates/print-event/print-event-file-result.json" + }, + "print_event_post": "chainhook predicates scan tests/stacks-predicates/print-event/print-event-post.json --testnet", + "contract_call_file": { + "command": "chainhook predicates scan tests/stacks-predicates/contract-call/contract-call-file.json --testnet", + "result_file": "tests/stacks-predicates/contract-call/contract-call-file-result.json" + }, + "contract_call_post": "chainhook predicates scan tests/stacks-predicates/contract-call/contract-call-post.json --testnet", + "contract_deployment_file": { + "command": "chainhook predicates scan tests/stacks-predicates/contract-deployment/contract-deployment-file.json --testnet", + "result_file": "tests/stacks-predicates/contract-deployment/contract-deployment-file-result.json" + }, + "contract_deployment_post": "chainhook predicates scan tests/stacks-predicates/contract-deployment/contract-deployment-post.json --testnet" +} diff --git a/tests/integration-tests/tests/stacks-predicates/print-event/print-event-file-result.json b/tests/integration-tests/tests/stacks-predicates/print-event/print-event-file-result.json new file mode 100644 index 000000000..e69de29bb diff --git a/tests/integration-tests/tests/stacks-predicates/print-event/print-event-file.json b/tests/integration-tests/tests/stacks-predicates/print-event/print-event-file.json new file mode 100644 index 000000000..cc404a79f --- /dev/null +++ b/tests/integration-tests/tests/stacks-predicates/print-event/print-event-file.json @@ -0,0 +1,22 @@ +{ + "chain": "stacks", + "uuid": "375d8569-5342-4e80-9ee9-e6e9bb4bf2a5", + "name": "print event file", + "version": 1, + "networks": { + "testnet": { + "start_block": 1000, + "expire_after_occurrence": 1, + "if_this": { + "scope": "print_event", + "contract_identifier": "ST113MYNN52BC76GWP8P9PYFEP7XWJP6S5YFQM4ZE.shitty-coin", + "contains": "balance-of" + }, + "then_that": { + "file_append": { + "path": "tests/stacks-predicates/print-event/print-event-file-result.json" + } + } + } + } +} \ No newline at end of file diff --git a/tests/integration-tests/tests/stacks-predicates/print-event/print-event-post.json b/tests/integration-tests/tests/stacks-predicates/print-event/print-event-post.json new file mode 100644 index 000000000..d2113a897 --- /dev/null +++ b/tests/integration-tests/tests/stacks-predicates/print-event/print-event-post.json @@ -0,0 +1 @@ +{"chain":"stacks","uuid":"220b8661-6b64-44ea-93e5-db0657212b60","name":"print event post","version":1,"networks":{"testnet":{"start_block":0,"end_block":511800,"if_this":{"scope":"print_event","contract_identifier":"ST113MYNN52BC76GWP8P9PYFEP7XWJP6S5YFQM4ZE.shitty-coin","contains":"balance-of"},"then_that":{"http_post":{"url":"https://8ad2-2405-201-200a-3191-75fe-9dba-108b-42b9.ngrok.io","authorization_header":""}}}}} \ No newline at end of file diff --git a/tests/integration-tests/tests/stacks-predicates/print-event/print-event.spec.ts b/tests/integration-tests/tests/stacks-predicates/print-event/print-event.spec.ts new file mode 100644 index 000000000..98a96e518 --- /dev/null +++ b/tests/integration-tests/tests/stacks-predicates/print-event/print-event.spec.ts @@ -0,0 +1,37 @@ +import * as util from "util"; +import * as fs from "fs"; +import * as child_process from "child_process"; +const exec = util.promisify(child_process.exec); +import predicateCommands from "../../stacks-predicates/predicate-commands.json"; + +jest.setTimeout(30 * 60 * 1000); // 30 mins + +// TODO: Ask that this contract_identifier: ST113MYNN52BC76GWP8P9PYFEP7XWJP6S5YFQM4ZE.shitty-coin does not have any match +describe("print-event:", () => { + it("file-append test", async () => { + console.log("EXECUTING file-append predicate for print Event"); + await printEventFilePredicate(); + console.log("COMPLETED file-append predicate for print Event"); + const result = await printEventFileResult(); + expect(0).toEqual(1); + }); +}); + +const printEventFilePredicate = async (): Promise => { + fs.writeFileSync(predicateCommands.print_event_file.result_file, ""); + const { stdout, stderr } = await exec( + predicateCommands.print_event_file.command + ); + console.log(stderr); +}; + +const printEventFileResult = async (): Promise => { + let fileContent = fs.readFileSync( + predicateCommands.print_event_file.result_file, + "utf8" + ); + if (fileContent) { + fileContent = JSON.parse(fileContent); + } + return fileContent; +}; diff --git a/tests/integration-tests/tests/stacks-predicates/stx-event/stx-event-file-result.json b/tests/integration-tests/tests/stacks-predicates/stx-event/stx-event-file-result.json new file mode 100644 index 000000000..e69de29bb diff --git a/tests/integration-tests/tests/stacks-predicates/stx-event/stx-event-file.json b/tests/integration-tests/tests/stacks-predicates/stx-event/stx-event-file.json new file mode 100644 index 000000000..9ca518f06 --- /dev/null +++ b/tests/integration-tests/tests/stacks-predicates/stx-event/stx-event-file.json @@ -0,0 +1,22 @@ +{ + "chain": "stacks", + "uuid": "1950fbed-85b5-467f-b4ac-fc464e18e021", + "name": "Stx event file", + "version": 1, + "networks": { + "testnet": { + "if_this": { + "scope": "stx_event", + "actions": ["transfer", "lock"] + }, + "then_that": { + "file_append": { + "path": "tests/stacks-predicates/stx-event/stx-event-file-result.json" + } + }, + "start_block": 113310, + "end_block": 113315, + "expire_after_occurrence": 5 + } + } +} \ No newline at end of file diff --git a/tests/integration-tests/tests/stacks-predicates/stx-event/stx-event-post.json b/tests/integration-tests/tests/stacks-predicates/stx-event/stx-event-post.json new file mode 100644 index 000000000..f7757a486 --- /dev/null +++ b/tests/integration-tests/tests/stacks-predicates/stx-event/stx-event-post.json @@ -0,0 +1 @@ +{"chain":"stacks","uuid":"0cc86353-7883-4fde-a1e6-42df78f0f6d6","name":"Stx event post","version":1,"networks":{"testnet":{"start_block":111750,"end_block":211800,"if_this":{"scope":"stx_event","actions":["transfer","lock"]},"then_that":{"http_post":{"url":"https://8ad2-2405-201-200a-3191-75fe-9dba-108b-42b9.ngrok.io","authorization_header":""}}}}} \ No newline at end of file diff --git a/tests/integration-tests/tests/stacks-predicates/stx-event/stx-event.spec.ts b/tests/integration-tests/tests/stacks-predicates/stx-event/stx-event.spec.ts new file mode 100644 index 000000000..c3911e696 --- /dev/null +++ b/tests/integration-tests/tests/stacks-predicates/stx-event/stx-event.spec.ts @@ -0,0 +1,37 @@ +import * as util from "util"; +import * as fs from "fs"; +import * as child_process from "child_process"; +const exec = util.promisify(child_process.exec); +import predicateCommands from "../../stacks-predicates/predicate-commands.json"; + +jest.setTimeout(30 * 60 * 1000); // 30 mins + +// TODO: Ask that the expire_after_occurrence: 1 does not work but in readme it says it work +describe("stx-event:", () => { + it("file-append test", async () => { + console.log("EXECUTING file-append predicate for STX Event"); + await stxEventFilePredicate(); + console.log("COMPLETED file-append predicate for STX Event"); + const result = await stxEventFileResult(); + expect(0).toEqual(1); + }); +}); + +const stxEventFilePredicate = async (): Promise => { + fs.writeFileSync(predicateCommands.stx_event_file.result_file, ""); + const { stdout, stderr } = await exec( + predicateCommands.stx_event_file.command + ); + console.log(stderr); +}; + +const stxEventFileResult = async (): Promise => { + let fileContent = fs.readFileSync( + predicateCommands.stx_event_file.result_file, + "utf8" + ); + if (fileContent) { + fileContent = JSON.parse(fileContent); + } + return fileContent; +}; diff --git a/tests/integration-tests/tests/stacks-predicates/transaction/transaction-file-result.json b/tests/integration-tests/tests/stacks-predicates/transaction/transaction-file-result.json new file mode 100644 index 000000000..e69de29bb diff --git a/tests/integration-tests/tests/stacks-predicates/transaction/transaction-file.json b/tests/integration-tests/tests/stacks-predicates/transaction/transaction-file.json new file mode 100644 index 000000000..60dfefb2a --- /dev/null +++ b/tests/integration-tests/tests/stacks-predicates/transaction/transaction-file.json @@ -0,0 +1,21 @@ +{ + "chain": "stacks", + "uuid": "dad71268-d3c1-4cd9-bb99-16a4bd4155c4", + "name": "transactions file", + "version": 1, + "networks": { + "testnet": { + "start_block": 111779, + "end_block": 111781, + "if_this": { + "scope": "txid", + "equals": "0x411e78f4b727fc0a78b86c3fd56da0c741c71339713be81d7528c4015665267b" + }, + "then_that": { + "file_append": { + "path": "tests/stacks-predicates/transaction/transaction-file-result.json" + } + } + } + } +} \ No newline at end of file diff --git a/tests/integration-tests/tests/stacks-predicates/transaction/transaction-post.json b/tests/integration-tests/tests/stacks-predicates/transaction/transaction-post.json new file mode 100644 index 000000000..a28ef2d5f --- /dev/null +++ b/tests/integration-tests/tests/stacks-predicates/transaction/transaction-post.json @@ -0,0 +1 @@ +{"chain":"stacks","uuid":"633ea892-e1e0-4f5a-bba2-63e18a4fc9b9","name":"transactions post","version":1,"networks":{"testnet":{"start_block":111750,"end_block":111850,"if_this":{"scope":"txid","equals":"0x411e78f4b727fc0a78b86c3fd56da0c741c71339713be81d7528c4015665267b"},"then_that":{"http_post":{"url":"https://8ad2-2405-201-200a-3191-75fe-9dba-108b-42b9.ngrok.io","authorization_header":""}}}}} \ No newline at end of file diff --git a/tests/integration-tests/tests/stacks-predicates/transaction/transaction.spec.ts b/tests/integration-tests/tests/stacks-predicates/transaction/transaction.spec.ts new file mode 100644 index 000000000..599697a43 --- /dev/null +++ b/tests/integration-tests/tests/stacks-predicates/transaction/transaction.spec.ts @@ -0,0 +1,50 @@ +import { getPOSTPage } from "../../utility/browser-instance"; +import predicateCommands from "../../stacks-predicates/predicate-commands.json"; +import { PostPageInstance } from "../../utility/post-page-instance"; + +import * as util from "util"; +import * as fs from "fs"; +import * as child_process from "child_process"; +const exec = util.promisify(child_process.exec); +const expectedTxId = "0x411e78f4b727fc0a78b86c3fd56da0c741c71339713be81d7528c4015665267b"; + +jest.setTimeout(45 * 60 * 1000); // 45 mins + +describe("Transaction:", () => { + it("file-append test", async () => { + console.log("EXECUTING file-append predicate for transaction"); + await transactionFilePredicate(); + console.log("COMPLETED file-append predicate for transaction"); + const result = await transactionFileResult(); + const actualTxId = result.apply[0]?.transactions[0]?.transaction_identifier.hash; + expect(actualTxId).toEqual(expectedTxId); + }); + + it("post test", async () => { + console.log("EXECUTING post predicate for transaction"); + const { stdout, stderr } = await exec(predicateCommands.transaction_post); + console.log(stderr); + console.log("COMPLETED post predicate for transaction"); + // get the POST page from the browser + const postPage: PostPageInstance = await getPOSTPage(); + const result = await postPage.getPOSTResult(); + const actualTxId = result.apply[0]?.transactions[0]?.transaction_identifier.hash; + expect(actualTxId).toEqual(expectedTxId); + await postPage.closeBrowser(); + }); +}); + +const transactionFilePredicate = async (): Promise => { + fs.writeFileSync(predicateCommands.transaction_file.result_file, ""); + const { stdout, stderr } = await exec( + predicateCommands.transaction_file.command + ); + console.log(stderr); +}; + +const transactionFileResult = async (): Promise => { + const fileContent = JSON.parse( + fs.readFileSync(predicateCommands.transaction_file.result_file, "utf8") + ); + return fileContent; +}; diff --git a/tests/integration-tests/tests/tsconfig.json b/tests/integration-tests/tests/tsconfig.json new file mode 100644 index 000000000..acae555ba --- /dev/null +++ b/tests/integration-tests/tests/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "target": "ES2019", + "noEmit": true, + "rootDir": "../", + "esModuleInterop": true + }, + "include": [ + "./**/*", + "../node_modules/@types/node/globals.d.ts" + ] +} diff --git a/tests/integration-tests/tests/utility/browser-instance.ts b/tests/integration-tests/tests/utility/browser-instance.ts new file mode 100644 index 000000000..d85d23ab9 --- /dev/null +++ b/tests/integration-tests/tests/utility/browser-instance.ts @@ -0,0 +1,40 @@ +import { chromium, ChromiumBrowserContext } from "playwright"; +import { PostPageInstance } from "../utility/post-page-instance"; +import { promisify } from "util"; +import { mkdtemp } from "fs"; +import { join } from "path"; +import { tmpdir } from "os"; +import { wait } from "../utility/utils"; +import { NGROK_DASHBOARD } from "../mocks"; + +const makeTmpDir = promisify(mkdtemp); + +export async function setupBrowser() { + const launchArgs: string[] = [ + `--no-sandbox`, + ]; + + const tmpDir = await makeTmpDir(join(tmpdir(), "ext-data-")); + const context = (await chromium.launchPersistentContext(tmpDir, { + args: launchArgs, + headless: false, + slowMo: 100, + })) as ChromiumBrowserContext; + await context.grantPermissions(["clipboard-read"]); + return { + context, + }; +} +type Await = T extends PromiseLike ? U : T; + +export type BrowserDriver = Await>; + +export async function getPOSTPage() { + // First initialize a chromium browser where we can load our pages + let browser = await setupBrowser(); + // Added some random wait time to make sure the browser is loaded fully + await wait(3000); + // once we have loaded browser then load the post URL + const postPage: PostPageInstance = await PostPageInstance.setupPage(browser, NGROK_DASHBOARD); + return postPage; +} \ No newline at end of file diff --git a/tests/integration-tests/tests/utility/post-page-instance.ts b/tests/integration-tests/tests/utility/post-page-instance.ts new file mode 100644 index 000000000..d4b9cb0a4 --- /dev/null +++ b/tests/integration-tests/tests/utility/post-page-instance.ts @@ -0,0 +1,57 @@ +import { Page } from "playwright-core"; +import { BrowserDriver } from "./browser-instance"; +import { + idSelector, + textSelector, +} from "./utils"; +import { PostPageSelectors } from "../selectors/postPage.selectors"; + +const selectors = { + $request: idSelector(PostPageSelectors.Request), + $requestTab2: idSelector(PostPageSelectors.RequestTab2), + $requestPane2: idSelector(PostPageSelectors.RequestPane2), + $clearRequest: textSelector(PostPageSelectors.ClearRequest), +} + +export class PostPageInstance { + page: Page; + browser: BrowserDriver; + + constructor(page: Page, browser: BrowserDriver) { + this.page = page; + this.browser = browser; + } + + static async setupPage(browser: BrowserDriver, url: string) { + const page: any = await browser.context.newPage(); + await page.goto(url); + page.on("pageerror", (event: { message: any }) => { + console.log("Error in loading page:", event.message); + }); + return new this(page, browser); + } + + async closeBrowser() { + await this.browser.context.close(); + } + + async clearPOSTResult() { + await this.page.click(selectors.$clearRequest); + } + + async getPOSTResult(): Promise { + await this.page.waitForSelector(selectors.$request); + await this.page.click(selectors.$requestTab2); + const content = await this.page.innerText(selectors.$requestPane2); + let parsedContent = {}; + if (content) { + try { + parsedContent = JSON.parse(content.split("Accept-Encoding: gzip")[1]); + } catch (e) { + console.log('Error parsing the response for POST result', e); + } + } + await this.clearPOSTResult(); + return parsedContent; + } +} diff --git a/tests/integration-tests/tests/utility/utils.ts b/tests/integration-tests/tests/utility/utils.ts new file mode 100644 index 000000000..77fc3a4b7 --- /dev/null +++ b/tests/integration-tests/tests/utility/utils.ts @@ -0,0 +1,23 @@ +export const wait = async (ms: number) => { + return new Promise((resolve) => { + setTimeout(() => { + resolve(true); + }, ms); + }); +}; + +export function classSelector(name: T): string { + return `.${name}`; +} + +export function multiClassSelector(name: T): string { + return `.${name.split(' ').join('.')}`; +} + +export function idSelector(name: T): string { + return `[id="${name}"]`; +} + +export function textSelector(name: T): string { + return `text="${name}"`; +} \ No newline at end of file diff --git a/tests/integration-tests/tsconfig.json b/tests/integration-tests/tsconfig.json new file mode 100755 index 000000000..f5ba5c3e5 --- /dev/null +++ b/tests/integration-tests/tsconfig.json @@ -0,0 +1,33 @@ +{ + "compilerOptions": { + "target": "esnext", + "module": "commonjs", + "lib": ["dom", "dom.iterable", "esnext"], + "sourceMap": true, + "removeComments": true, + "noEmit": false, + "importHelpers": true, + "downlevelIteration": true, + "strict": true, + "noImplicitAny": true, + "noImplicitThis": true, + "alwaysStrict": true, + "skipLibCheck": true, + "noUnusedLocals": false, + "noUnusedParameters": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "moduleResolution": "node", + "resolveJsonModule": true, + "baseUrl": "src", + "paths": { + "@tests/*": ["../tests/*"], + "@tests": ["../tests"] + }, + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + "types": ["jest", "chrome"] + }, + "include": ["./tests/**/*"], + "exclude": [""] +} diff --git a/tests/stacks-predicates/contract-call/contract-call-file-result.json b/tests/stacks-predicates/contract-call/contract-call-file-result.json new file mode 100644 index 000000000..2abea5d5c --- /dev/null +++ b/tests/stacks-predicates/contract-call/contract-call-file-result.json @@ -0,0 +1,464 @@ +{"apply":[{"block_identifier":{"hash":"0x9ceef75bceecdd434f07c598dbd8d9e809bb90b3ce9cf74e98b37e49b92ae54c","index":6743},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000025e9a118aa33c36a4e269ce8b669ad3fd43c4a3f29716dd70","index":2066214},"confirm_microblock_identifier":{"hash":"0x69440ef772fbe760a09a20fd3c179e4c521eb91b5db1d0e9fecf907a9c864739","index":5},"pox_cycle_index":63,"pox_cycle_length":1050,"pox_cycle_position":63,"stacks_block_hash":"0xb32bca4cae1caeb50fc186e866c9a2a02606e2f572700e7e5066db08daa55555"},"parent_block_identifier":{"hash":"0xc498f25ced5ee2a7eb1e16f926bb71d5916449e174d604b9ace5c288d78935f3","index":6742},"timestamp":1629969189,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x796179616d61)","execution_cost":{"read_count":16,"read_length":45611,"runtime":61238000,"write_count":2,"write_length":334},"fee":176,"kind":{"data":{"args":["0x627463","0x796179616d61"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400fcfd305a42b985d50fafac05a1c413d25267d9a8000000000000000000000000000000b000007ea7ad624bb19308775f487f6371678ca6fe5736ccb58c5180236ac673f2e0ff28cebea37d82b1ae12e23091a05a825c9b0b570eed1891b24d649f3a9c8bb2db030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006796179616d61","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000005f04686173680200000000086d657461646174610c00000004046e616d650200000006796179616d61096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051afcfd305a42b985d50fafac05a1c413d25267d9a8","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3YFTC2T8AWRBN8FNYP0B8E42F954SYSN3MCCNW5","success":true},"operations":[],"transaction_identifier":{"hash":"0x2859f6b9508d08ec49cdda8ca451cae9d7439391564e51f88f891b3bf2eee48c"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x796179616d61)","execution_cost":{"read_count":12,"read_length":45592,"runtime":55512000,"write_count":0,"write_length":0},"fee":176,"kind":{"data":{"args":["0x627463","0x796179616d61"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":1,"position":{"index":4},"proof":null,"raw_tx":"0x80800000000400fcfd305a42b985d50fafac05a1c413d25267d9a8000000000000000100000000000000b00001c8f391cfc06f1a3511b7dd7bef3b91bbf8a53df86771af9f72ac9828aaee9f564f40692f7c8067c96cc71e21275361d06c81fd79e2de306538116f982a6ff37c030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006796179616d61","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST3YFTC2T8AWRBN8FNYP0B8E42F954SYSN3MCCNW5","success":false},"operations":[],"transaction_identifier":{"hash":"0x1d56d6ec7a9b4921f1ed9c923710aa969f4632a8f13e6a37edf88970bc33f3a0"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x796179616d61)","execution_cost":{"read_count":12,"read_length":45592,"runtime":55512000,"write_count":0,"write_length":0},"fee":176,"kind":{"data":{"args":["0x627463","0x796179616d61"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":5},"proof":null,"raw_tx":"0x80800000000400fcfd305a42b985d50fafac05a1c413d25267d9a8000000000000000200000000000000b00001acb09ad7a7bf081448a7682e6b270e7f634675a13ac0f75c7f9ef6bdddbd74a60449e311aed756bfe9d9c82a67dc2fad4b11e195fd24b67ab8f7927e58ae7714030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006796179616d61","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST3YFTC2T8AWRBN8FNYP0B8E42F954SYSN3MCCNW5","success":false},"operations":[],"transaction_identifier":{"hash":"0x7ebd689ccdc540fddf8f03b52d3dfd7816c17e047d2feb6a538b9310faad3f4c"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x796179616d61)","execution_cost":{"read_count":12,"read_length":45592,"runtime":55512000,"write_count":0,"write_length":0},"fee":176,"kind":{"data":{"args":["0x627463","0x796179616d61"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":6},"proof":null,"raw_tx":"0x80800000000400fcfd305a42b985d50fafac05a1c413d25267d9a8000000000000000300000000000000b000000f8d911ee6ff8145a75aef4122ab759ad798d01f556d5da7bc8d1cb3448d1a8d50cf27f6f33acd0dd5820e482a84e97813677037992b58bfa870a2d8ea1ab83f030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006796179616d61","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST3YFTC2T8AWRBN8FNYP0B8E42F954SYSN3MCCNW5","success":false},"operations":[],"transaction_identifier":{"hash":"0xbf359afb1ee14dff0a22b5f70b60f536941a0c2230c7f477497b4fe353310847"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x796179616d61)","execution_cost":{"read_count":12,"read_length":45592,"runtime":55512000,"write_count":0,"write_length":0},"fee":176,"kind":{"data":{"args":["0x627463","0x796179616d61"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":8},"proof":null,"raw_tx":"0x80800000000400fcfd305a42b985d50fafac05a1c413d25267d9a8000000000000000400000000000000b00001313d587620a0d09bd83fb9284cb9caef5552a0303d7c3c9f76fa11f4eeeb067e7d3219602db95833d71aad5b938d2f8aa531f787760d56d78f6d777ec8212ef4030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006796179616d61","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST3YFTC2T8AWRBN8FNYP0B8E42F954SYSN3MCCNW5","success":false},"operations":[],"transaction_identifier":{"hash":"0xbdcd25c5670dd8f02eebcd04fa641db98e797e6095fc4980d99849f112e78f3b"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6c6f6c6f6c)","execution_cost":{"read_count":16,"read_length":45611,"runtime":61227000,"write_count":2,"write_length":334},"fee":175,"kind":{"data":{"args":["0x627463","0x6c6f6c6f6c"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":9},"proof":null,"raw_tx":"0x80800000000400d4a40185a933603095d3e6e269b5064d786d2a0e000000000000000400000000000000af00008b5b2aa19076f790067ee182a87260c4552d72a5c191edeafb403a8d31aa780d309725d492aa88251edca33da3674a1701ee7155ebd17cc335ad1f7f4caf96df030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000056c6f6c6f6c","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000006004686173680200000000086d657461646174610c00000004046e616d6502000000056c6f6c6f6c096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ad4a40185a933603095d3e6e269b5064d786d2a0e","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3AA80C5N4SP0C4NTFKE4TDN0S6QGV9A1S7GP9CG","success":true},"operations":[],"transaction_identifier":{"hash":"0x7e330b92c81a3cdff7f2588a04925603f29f9b16420aec8ee6a9fef76604624e"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x09035970c01fa44ab898780a2f892569a344f3393b95c8a42e1de90bd637425b","index":6744},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000001cec1594b9e52a3a6e10b60b9542ae71f4140385cc0e83a3c3","index":2066215},"confirm_microblock_identifier":{"hash":"0x256d3ad83ad4b8a0e894351e151b5b25f8c18f0788c0732dc4d1d780691b3a3f","index":1},"pox_cycle_index":63,"pox_cycle_length":1050,"pox_cycle_position":64,"stacks_block_hash":"0x2eb207998998ec7d741dea021e6a5bef84db588bbd446f80f51cb95ffdd38ac4"},"parent_block_identifier":{"hash":"0x9ceef75bceecdd434f07c598dbd8d9e809bb90b3ce9cf74e98b37e49b92ae54c","index":6743},"timestamp":1629969720,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6c6f6c6f6c)","execution_cost":{"read_count":12,"read_length":45592,"runtime":55505000,"write_count":0,"write_length":0},"fee":175,"kind":{"data":{"args":["0x627463","0x6c6f6c6f6c"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":5,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400d4a40185a933603095d3e6e269b5064d786d2a0e000000000000000500000000000000af00006c5df7da10a196db8a20c4dbe2dbc6b6bd3a6c797eda1cf371002c3d140ebda500dd8abe486abbc7998f0e81b0b92fcacb287a94b832b2f6fb3530607fe65b92030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000056c6f6c6f6c","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST3AA80C5N4SP0C4NTFKE4TDN0S6QGV9A1S7GP9CG","success":false},"operations":[],"transaction_identifier":{"hash":"0xafa33f5bf90eb348c43c2cb061ffae4d90f6cadbb077d5f7b6141614e79b3f86"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x4b5334193a6bc8da164230bbe56974ea4e09afff5e66e4f4499fb31240a17c88","index":6746},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000077ef61264a549a120ac91e1497a767e6785fa5e5a2dcaca97b8f0f08","index":2066217},"confirm_microblock_identifier":null,"pox_cycle_index":63,"pox_cycle_length":1050,"pox_cycle_position":66,"stacks_block_hash":"0x6b48537008a0740c6a14cce9744de5d082aa6ede048936e93e40ec84d93d3a6f"},"parent_block_identifier":{"hash":"0x775647db656a8662c59adb9cbcf5782cc19a90c840fb3625e6294f09fa446150","index":6745},"timestamp":1629970312,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x756d65727361)","execution_cost":{"read_count":16,"read_length":45611,"runtime":61238000,"write_count":2,"write_length":334},"fee":176,"kind":{"data":{"args":["0x627463","0x756d65727361"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400794c00db9b4ccdc0f4fce2020a9c634b3667b453000000000000000400000000000000b0000141c51df44b0309657296105dc0d0dd5f41e6a834b3339d810a01a499c0391003482781efdf0e86d94db3cfccec5fcfb8332f0b2e83004de0692968ce9562d9fc030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006756d65727361","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000006104686173680200000000086d657461646174610c00000004046e616d650200000006756d65727361096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a794c00db9b4ccdc0f4fce2020a9c634b3667b453","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1WMR06VKD6CVG7MZKH042MWCD5KCSXMAFW99KSE","success":true},"operations":[],"transaction_identifier":{"hash":"0xed0eb846c4f2fe11b605c7b1484290af0035ee3d1f8f24d365c83a9ed2d79435"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x756d65727361)","execution_cost":{"read_count":12,"read_length":45592,"runtime":55512000,"write_count":0,"write_length":0},"fee":176,"kind":{"data":{"args":["0x627463","0x756d65727361"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":5,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400794c00db9b4ccdc0f4fce2020a9c634b3667b453000000000000000500000000000000b0000064c6f6a17af45f062ff5fb13cf87cf2c34effc5ad333cb3d12361603ca91e4a0556b71f7623daf74fce05e1321a81e1c1d7e44de5c0adda4ee9c89ace5ac4ae2030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006756d65727361","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST1WMR06VKD6CVG7MZKH042MWCD5KCSXMAFW99KSE","success":false},"operations":[],"transaction_identifier":{"hash":"0x62a704fa4d720362dc23ef4fff4b6474699a7239c00e624149c9d21daf67025a"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x756d6572)","execution_cost":{"read_count":16,"read_length":45611,"runtime":61216000,"write_count":2,"write_length":334},"fee":174,"kind":{"data":{"args":["0x627463","0x756d6572"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":7,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400d23ce003a20b782bb05fc86f722cfebc41c5930c000000000000000700000000000000ae000126676b8599bc604478fffbe16fa87aacab11935f3ca45974087ef5d1c1e39cf438be138426944ccbea8ca64a126025b76e700803302c14057ea5d6254a6752e6030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000004756d6572","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000006204686173680200000000086d657461646174610c00000004046e616d650200000004756d6572096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ad23ce003a20b782bb05fc86f722cfebc41c5930c","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST393SR03M85QGAXGBZ46YWHCZTY43HCK1GQA2N7N","success":true},"operations":[],"transaction_identifier":{"hash":"0x1d76c385ae3b05051c5414ae0eee22ed6303e095691f05614e19632d6e783388"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x220e598897ba746f3dc8cab791f06661e0afb68c90696396b51630d497c14b3e","index":6762},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000ac2cb64e9bba6136f10432e68b58d14f5765a5c9ffc5e66bd54c89","index":2066233},"confirm_microblock_identifier":{"hash":"0x09736f66c4de6f1cfdc8888bc42f61fc1cee60d308952720ac28899596f595b0","index":3},"pox_cycle_index":63,"pox_cycle_length":1050,"pox_cycle_position":82,"stacks_block_hash":"0xd6dc53c660641502e593e4cdd66292b61ad26cf5942ea46840eb8e97331544e4"},"parent_block_identifier":{"hash":"0x8e668ae2ef562d87c1c64863d4de604bf3b19bca07963f9361fdf761b7d049f3","index":6761},"timestamp":1629983298,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x686968656c6c6f6869)","execution_cost":{"read_count":16,"read_length":45611,"runtime":61271000,"write_count":2,"write_length":334},"fee":179,"kind":{"data":{"args":["0x627463","0x686968656c6c6f6869"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":7,"position":{"index":4},"proof":null,"raw_tx":"0x80800000000400501405c7129ee924fe05719bcf6ceb849a3dc2ff000000000000000700000000000000b3000067fcd0a682410e28aaf8c0c9c6e4a554368367f372c2b2040a69256a10dbd0114d8bfc56b5007362736874d680b628ebf64907da5dd2a471f552e547d90062de030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000009686968656c6c6f6869","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000006404686173680200000000086d657461646174610c00000004046e616d650200000009686968656c6c6f6869096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a501405c7129ee924fe05719bcf6ceb849a3dc2ff","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST18181E72AFEJ97Y0NRSQKVCXE29MFE2ZYV8Q89B","success":true},"operations":[],"transaction_identifier":{"hash":"0x82bb0ed200034ab1d7d62f047148aab5d084c5012b7a68eb84d4dc9a6e5b6220"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xf1d19fe7bd87b212196bc4acbe31aa8b3342ce88bef2d60c5bab9490a8a30723","index":6763},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000001fb77bc5837f212f8a18db1978525f69507df834b752ca93a8","index":2066234},"confirm_microblock_identifier":{"hash":"0xebe6095aaa6dabd3e31d0aacba16fe6052ec3b8fd2a3a2ee23435ca179869e62","index":0},"pox_cycle_index":63,"pox_cycle_length":1050,"pox_cycle_position":83,"stacks_block_hash":"0xc25dcfc3384910e91f2fb9e5bb6e55fda3c3e22dca30eb45888e94b3ec1c5870"},"parent_block_identifier":{"hash":"0x220e598897ba746f3dc8cab791f06661e0afb68c90696396b51630d497c14b3e","index":6762},"timestamp":1629984504,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x686968656c6c6f6869)","execution_cost":{"read_count":12,"read_length":45592,"runtime":55533000,"write_count":0,"write_length":0},"fee":179,"kind":{"data":{"args":["0x627463","0x686968656c6c6f6869"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":8,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400501405c7129ee924fe05719bcf6ceb849a3dc2ff000000000000000800000000000000b300007d1616507aa8de677d35c85f1a80b1a0d8b18ed9ed6d5880ece272620be89ded21b808b1583f17193ce3cba18eba09b294e137af3072c89315d99234fc55fcac030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000009686968656c6c6f6869","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST18181E72AFEJ97Y0NRSQKVCXE29MFE2ZYV8Q89B","success":false},"operations":[],"transaction_identifier":{"hash":"0xa3c6e71bf9f660a01121e63989081f336119aac0fbc85161a9b3752c87d18aa1"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xc4f58bf5bccada0433f1002f044307a03308c3945db7a63e60b8b224347be2e5","index":6767},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000079cb3d9d2c887e863cde1a1975014851ff1814b711e633337b653acd","index":2066238},"confirm_microblock_identifier":{"hash":"0x3f7a6b276357b6b7287577e5427706c586810a05973f71dc070f98f4db6c1fe0","index":2},"pox_cycle_index":63,"pox_cycle_length":1050,"pox_cycle_position":87,"stacks_block_hash":"0x7bbee432fbc27b26e7f9856f0196ba7aeae52e7b17020ae6afd0144685dfc91b"},"parent_block_identifier":{"hash":"0x011739eb2fd1c862dc1921e50a7d583c9d53a08e13227f8de79e747d139ef785","index":6766},"timestamp":1629985391,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x756d657231)","execution_cost":{"read_count":16,"read_length":45611,"runtime":61227000,"write_count":2,"write_length":334},"fee":175,"kind":{"data":{"args":["0x627463","0x756d657231"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400888d39c2fa6716db5f5aeef61d790d94b726322f000000000000000200000000000000af000103d5f8d6b25a64b366f7a97b722f470f3a084edfdfb29d678c17b3101f1eac5f57bac7769b0685f9e57ea153eb358f02a5e0b8b4eaf7aab0ccc70506883a89b3030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000005756d657231","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000006504686173680200000000086d657461646174610c00000004046e616d650200000005756d657231096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a888d39c2fa6716db5f5aeef61d790d94b726322f","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST248TEE2Z9KHDPTZBBQFC7BS1PABE9HJ5WEQVMNB","success":true},"operations":[],"transaction_identifier":{"hash":"0xb0e835df8fe800e1e30877ed916309054432450b8b11586bd7e054e99684b24e"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x756d657231)","execution_cost":{"read_count":12,"read_length":45592,"runtime":55505000,"write_count":0,"write_length":0},"fee":175,"kind":{"data":{"args":["0x627463","0x756d657231"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400888d39c2fa6716db5f5aeef61d790d94b726322f000000000000000300000000000000af0001c36111233999adc0d6b0bf21f0d582f67da1fc8f881f3470b3e5b8495a7702a203a13d53cb237c97346f5bf2b554c4f1df216b0c08c24b648cf267c8918ee650030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000005756d657231","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST248TEE2Z9KHDPTZBBQFC7BS1PABE9HJ5WEQVMNB","success":false},"operations":[],"transaction_identifier":{"hash":"0xe2a9ecd2b072c61dd2cadf12291a01c1a95a94ffff462fd27ee4bfac92597fa7"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x756d657273616c65656d31)","execution_cost":{"read_count":16,"read_length":45611,"runtime":61293000,"write_count":2,"write_length":334},"fee":181,"kind":{"data":{"args":["0x627463","0x756d657273616c65656d31"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400200c0db082f7a7c47709ad0d0c867e8a3cba15a7000000000000000200000000000000b50001b02ca3e496ee230e991ddcc8d5fb5080b08ed8a62ca51acd750a8e59debecdf843147fb9c29b0bc1b68bee5633828685cc978e620b2538b2cab8b9ffedaeb007030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b756d657273616c65656d31","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000006604686173680200000000086d657461646174610c00000004046e616d65020000000b756d657273616c65656d31096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a200c0db082f7a7c47709ad0d0c867e8a3cba15a7","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STG0R3DGGBVTFH3Q16PGT346FT53SEGNMX5KWDNN","success":true},"operations":[],"transaction_identifier":{"hash":"0xcacbe6ab83c6596905f272f92ba6080243f66c53dab42648cd12b0ff3546295a"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x36e3ec97e3df62d046e1c3fb21f79ed770a5f2a2d4520075a8fe8384d493a17a","index":9473},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000296f86ca405880eb0d00de0779314000eeb00d64c68ff806b7","index":2091994},"confirm_microblock_identifier":{"hash":"0x53999854a1c494fd8db2f42caa7e958f889b16a990dd0ae9769e3d9ad9c859a1","index":4},"pox_cycle_index":87,"pox_cycle_length":1050,"pox_cycle_position":643,"stacks_block_hash":"0xca6d7e1d11b076c4760060837521497736fb1728f01d22450ba1659516be8ca8"},"parent_block_identifier":{"hash":"0xd2ed20ba1955674939befdfb1b827de757fbb26e2620115b7dd40e3e567f6927","index":9472},"timestamp":1630948432,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x756d65723133)","execution_cost":{"read_count":16,"read_length":45611,"runtime":61238000,"write_count":2,"write_length":334},"fee":70400,"kind":{"data":{"args":["0x627463","0x756d65723133"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":16,"position":{"index":5},"proof":null,"raw_tx":"0x80800000000400d23ce003a20b782bb05fc86f722cfebc41c5930c000000000000001000000000000113000000c9e2e450e15e22d42a0b7582a7947a211b7d0e94b0f1e91915ab7bd0a251fe4535537b27702979d6e078738535cfe53b13e981b0cb28e741bf32225c5c163565030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006756d65723133","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000009a04686173680200000000086d657461646174610c00000004046e616d650200000006756d65723133096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ad23ce003a20b782bb05fc86f722cfebc41c5930c","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST393SR03M85QGAXGBZ46YWHCZTY43HCK1GQA2N7N","success":true},"operations":[],"transaction_identifier":{"hash":"0x7d407cb3ab95370528ec711f6d9eb368952f57a477131c8a4aea013b42e1c96f"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xe4a9ded5de3992dab21a406dadf999a5a1a02656707a01501110aac28ed6bed6","index":9474},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000036acd05a67df377361204d216b272088444118e54162583605","index":2091995},"confirm_microblock_identifier":null,"pox_cycle_index":87,"pox_cycle_length":1050,"pox_cycle_position":644,"stacks_block_hash":"0xcd7d4ce72b5fcd3a35e5d70109bb2be3bd785b4ac4087cd193b9f62eedcebd83"},"parent_block_identifier":{"hash":"0x36e3ec97e3df62d046e1c3fb21f79ed770a5f2a2d4520075a8fe8384d493a17a","index":9473},"timestamp":1630949090,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x756d65723133)","execution_cost":{"read_count":12,"read_length":45592,"runtime":55512000,"write_count":0,"write_length":0},"fee":70400,"kind":{"data":{"args":["0x627463","0x756d65723133"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":17,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400d23ce003a20b782bb05fc86f722cfebc41c5930c0000000000000011000000000001130000006b78a7df221881ba73eeb64ecb885c2f1adcfd7d97ac27acfc4481771437ca0d363d34aee6acf5841b7941efe4f3a8fbb6d5e8a87075df8ffccf3abcab757c09030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006756d65723133","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST393SR03M85QGAXGBZ46YWHCZTY43HCK1GQA2N7N","success":false},"operations":[],"transaction_identifier":{"hash":"0x36eb89719c7d4f5830df1765cb2543fbdf93afe7435e9517a1365b1b9ac812f7"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xaf726b2d1b83c818b57fa0028d7a9365a5870d95326ddfd51a2ba4524f3ac369","index":9476},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000d537ad215473f48feaf8b8c6d97f1d7df1bec61fbcdad9b2dc","index":2091997},"confirm_microblock_identifier":{"hash":"0x35f2f4608dc8387967fdaa3a2a418bd6bf7571069353c97bee2a705491f066b8","index":2},"pox_cycle_index":87,"pox_cycle_length":1050,"pox_cycle_position":646,"stacks_block_hash":"0x33417939252c69cecf640d38ef95653b7623aa937d5ef6a840de62ffe7b1ea1f"},"parent_block_identifier":{"hash":"0xc971ae79763890bea2b7d8f9d3b04d81afa35ddd3ca978b481a98ec9a80da5c3","index":9475},"timestamp":1630949333,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x756d65723330)","execution_cost":{"read_count":16,"read_length":45611,"runtime":61238000,"write_count":2,"write_length":334},"fee":70400,"kind":{"data":{"args":["0x627463","0x756d65723330"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400d29d9b634827d60651420ea0071d778a0ee292190000000000000000000000000001130000011759bb81f3adb17cc713666bbd7e6f3e3c9a49b082630304aa4e07fdfc62015e11ab5cb00660f2db1e37c8e83553c2237bf179a1c5ba45ac1a3596cb99b1f618030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006756d65723330","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000009b04686173680200000000086d657461646174610c00000004046e616d650200000006756d65723330096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ad29d9b634827d60651420ea0071d778a0ee29219","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST399V6V390KXC1JH887A01RXEY50XRMJ37TZTDNZ","success":true},"operations":[],"transaction_identifier":{"hash":"0xbda6c04cbdd6171b6f6d1d340efa6dd135728c8cf20600e016e6e4bb534ecd59"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xbf79e762813dcb0ba6b9390edb1c44417869d698bf1d1a53d488ffbe4eba5a39","index":9492},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000e1d2655a192608cecacb12af3bb4800834c166d7f1131d5389","index":2092014},"confirm_microblock_identifier":{"hash":"0xf5d11a2d4559183de17eae260fd294a6846970452847f8c909a4c8122e432d08","index":2},"pox_cycle_index":87,"pox_cycle_length":1050,"pox_cycle_position":663,"stacks_block_hash":"0x6295dc5599cd51188ab7991ed325c06e59f74b1ecb01006ffb3303a0a59d4ce3"},"parent_block_identifier":{"hash":"0xae82fd269a9107007d58d4fee77eeb97fb0ef6dc74451102f05b0d5ce4c5b0e6","index":9491},"timestamp":1630955819,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x756d65723337)","execution_cost":{"read_count":16,"read_length":45611,"runtime":61238000,"write_count":2,"write_length":334},"fee":70400,"kind":{"data":{"args":["0x627463","0x756d65723337"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400a33be928b4e45b0aa54b08814312beaf9717b7b70000000000000002000000000001130000006ee8114a1d0b25c10407c03e754fcbb4d638acfc34a6987cb305e89d65385bd93f6d3953a7daab30d676b640c3a8fcf0e10acd018c2370b77b07ddc499b1e35e030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006756d65723337","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000009d04686173680200000000086d657461646174610c00000004046e616d650200000006756d65723337096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aa33be928b4e45b0aa54b08814312beaf9717b7b7","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2HKQT98PKJ5P2N59C482GRJQTQSE5XQPZJFW93W","success":true},"operations":[],"transaction_identifier":{"hash":"0xd9bac460b3e68925544e5301ecaaf33512147fe13f306c105515b352f0e3af86"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x89295a3c84da6a20da837af37360f6009ce1ffa553c8a1290ca7cb9810eb34dc","index":9510},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000008f096abd17649c597c7cf14c3c5b508e2d1fe8b43aa6fe0640f30ad1","index":2092036},"confirm_microblock_identifier":{"hash":"0x5e4f11f82b27dcbb9f34181dad822fcdb7c309b6f37fb9aad88a7326acb675ef","index":0},"pox_cycle_index":87,"pox_cycle_length":1050,"pox_cycle_position":685,"stacks_block_hash":"0x1b4d920574270ae7e83c3145e802d5e1d77c59b5095b81653efb30637b6b88ae"},"parent_block_identifier":{"hash":"0x5c0ec2f020907a13d17944681ab00794d4be886e29e41deecedd7e20f73ef08d","index":9509},"timestamp":1630962816,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x756d65726e65773337)","execution_cost":{"read_count":16,"read_length":45611,"runtime":61271000,"write_count":2,"write_length":334},"fee":71600,"kind":{"data":{"args":["0x627463","0x756d65726e65773337"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":5,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400a33be928b4e45b0aa54b08814312beaf9717b7b7000000000000000500000000000117b00000f4722c63da1ef3cf4b6f118a84c999e8ae0292627e8f8aad8b4fb5dcaf5ca2b14135b52b6a8a15084acdc493a39f86f5e708a20cde2a48021c394232afd284cc030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000009756d65726e65773337","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000009f04686173680200000000086d657461646174610c00000004046e616d650200000009756d65726e65773337096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aa33be928b4e45b0aa54b08814312beaf9717b7b7","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2HKQT98PKJ5P2N59C482GRJQTQSE5XQPZJFW93W","success":true},"operations":[],"transaction_identifier":{"hash":"0xa82014ca210596c36fce010cb0ce6fe2399a118e81a64f04a4fd7a33157599f7"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xe868de04b2d981415b269b07c8f1499721dbbffa8d1d23472c96cc14651d8270","index":9621},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000b618a0552fc91d43ec4e76c0f887bc1a2c7990a30bcb6477f3","index":2092168},"confirm_microblock_identifier":{"hash":"0xecd8c4b4df70e6f13350d5a9c67260e64c34632a6790f974a6f3d18bef73bf52","index":0},"pox_cycle_index":87,"pox_cycle_length":1050,"pox_cycle_position":817,"stacks_block_hash":"0xcb275b9a834ef8f5b3cb695b66f0b3efb67af4992a3d3a5d934a9934e10df7ed"},"parent_block_identifier":{"hash":"0x43594b6b68e9934627ab5eea4611eb7e89d04d0f6bd972b415726c24417c2346","index":9620},"timestamp":1631008478,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x756d657237)","execution_cost":{"read_count":16,"read_length":45611,"runtime":61227000,"write_count":2,"write_length":334},"fee":70000,"kind":{"data":{"args":["0x627463","0x756d657237"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400c925d99f98d8c2d8ddb673369891317980173969000000000000000200000000000111700001f43460f88135ff241ca465de3216b5640bb8663448e9a3882615ddf3f58793282018faca07729d6c5655057c7c456532af7297bb99538d98173a597cc7d40f2c030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000005756d657237","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000000a104686173680200000000086d657461646174610c00000004046e616d650200000005756d657237096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac925d99f98d8c2d8ddb673369891317980173969","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST34JBPCZK3CC5P6XPSSKD64H65WR05SSD7R7BF89","success":true},"operations":[],"transaction_identifier":{"hash":"0x46eda9a31f3c2b338f94884e12fe0c3b300a22a88296b95f83895e37743c9b68"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xa26c4b12788b7aea653ffdabfff1d8a8fd199e4e2c00cfd55555e6eff9cfc1f2","index":9623},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000d027dcb28513237867ad91a912ed161c9ad14244344605193f","index":2092171},"confirm_microblock_identifier":{"hash":"0x47d19b3a9dae787e926811d235c3e44721d8e86110bc0f50ab99d6868ebd3732","index":0},"pox_cycle_index":87,"pox_cycle_length":1050,"pox_cycle_position":820,"stacks_block_hash":"0xca8b1b0c7abb55d2f277b143e59f66147949a1ed4f94bf2586b7b2b702c58a22"},"parent_block_identifier":{"hash":"0x73180ab08886594c8e94a9cd3b2cbaddcf274f8fb4be83214e79b589c4620dc1","index":9622},"timestamp":1631009246,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x756d65723232)","execution_cost":{"read_count":16,"read_length":45611,"runtime":61238000,"write_count":2,"write_length":334},"fee":70400,"kind":{"data":{"args":["0x627463","0x756d65723232"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":6},"proof":null,"raw_tx":"0x808000000004008c146292b43210c423e91fc4b85652f2f6a096e2000000000000000200000000000113000001cdebf58a8559c684d780d336cafb358927a1e820a40ad9248d000578614e82b02d9cd933f65be6db0afe0d9a77b3e89e8c26546536bfcdf1679dbe829a67d0b0030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006756d65723232","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000000a204686173680200000000086d657461646174610c00000004046e616d650200000006756d65723232096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a8c146292b43210c423e91fc4b85652f2f6a096e2","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2618RMJPGS11H13X4FW9E2PABSFD84PWADM6D5F","success":true},"operations":[],"transaction_identifier":{"hash":"0x362528c5f23728a3b617e6d1aff7d3f3baedfcbce87d20cda388343d27492591"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x1153d91d678be2606e9e247737b0fa8bdaeb855182735386d56ac318c7ee40b0","index":9639},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000ae2c0b35ecf6833713f71bb54ed7e72c67f940244f8543fdbe","index":2092190},"confirm_microblock_identifier":{"hash":"0x6086a9089471d4d4063aba1a1e418ff52387d63ec25b77b22962be5f1eb6d0e3","index":1},"pox_cycle_index":87,"pox_cycle_length":1050,"pox_cycle_position":839,"stacks_block_hash":"0x00fa53d09e2d18e5e0c0c9e6b039b8c4b52cf8e3042b1c8e355006447f82bd27"},"parent_block_identifier":{"hash":"0xc7a6b910c8d6ba3986539c80c6ac51c0094a177233be92c5eb60e06f23511696","index":9638},"timestamp":1631017380,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x756d657273746167696e673338)","execution_cost":{"read_count":16,"read_length":45611,"runtime":61315000,"write_count":2,"write_length":334},"fee":73200,"kind":{"data":{"args":["0x627463","0x756d657273746167696e673338"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":2},"proof":null,"raw_tx":"0x8080000000040087a7defc3beea1f2fbc764b5dc7b42e15d96da2200000000000000000000000000011df00000fdc99d1def42ca61ee419bccf3d59f174e8aac916b3125d0616ba4db578d89a91255a5d6fd39c489e74aaa216dc7a6001e73684181762bf27aa0e37e00eedeb1030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000d756d657273746167696e673338","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000000a604686173680200000000086d657461646174610c00000004046e616d65020000000d756d657273746167696e673338096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a87a7defc3beea1f2fbc764b5dc7b42e15d96da22","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST23TFQQW7FQA3WQVRXJBBQ3V8BGNV5PT4A156HKS","success":true},"operations":[],"transaction_identifier":{"hash":"0xeb771d047336e114be06d95f7b2e5922ce61d4ed96f75b8be0c8386e90fe9ce6"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xee56be151942ac9b64ba059323f0bbb8d0528c523207cd78701af2a2d565ec31","index":9648},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000d16af525ef77b0a846997a85ece9c785b2e6e69c7428fcb35","index":2092199},"confirm_microblock_identifier":{"hash":"0xf3cd139a8fb68bce750fc31c47eeed9f5f365ccbb75ebcf17ee2bd64158a9dca","index":0},"pox_cycle_index":87,"pox_cycle_length":1050,"pox_cycle_position":848,"stacks_block_hash":"0x094524931a606a0ad09ed57fb2122eae006ec436a7da110436feb455e47c93fe"},"parent_block_identifier":{"hash":"0xa65c47b3dc530bef779dc978eafd59f0a13ab0ca4270fc73860ee45b5dcb7924","index":9647},"timestamp":1631021778,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x756d6572333973746167696e67)","execution_cost":{"read_count":16,"read_length":45611,"runtime":61315000,"write_count":2,"write_length":334},"fee":73200,"kind":{"data":{"args":["0x627463","0x756d6572333973746167696e67"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400df17a530d22682df4ccbb0f1b228136188fea44d00000000000000020000000000011df00001c1da3b4d068725dd297e838eaad42a6acd6bd62e13ad49362794e48130b82aff5764b234db59c650217bc3ea9227eba38da00abf4ec49133a2a23d8e4f40f3e9030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000d756d6572333973746167696e67","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000000a804686173680200000000086d657461646174610c00000004046e616d65020000000d756d6572333973746167696e67096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051adf17a530d22682df4ccbb0f1b228136188fea44d","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3FHF99GT8K85QTCSERF3CH82DGRHZN49M2X0605","success":true},"operations":[],"transaction_identifier":{"hash":"0x4bba9cb3d525ec8b6ec32f3dd379c74d13e8caab52c67b5c4286e22df03b68db"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x9c1526bd0b122124a06a94edcc93551f7effa30c931a3b28d1e89e34457635b2","index":9652},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000001d258832437821e80196a3abd4118c59c8cc80cdaa282632df","index":2092205},"confirm_microblock_identifier":{"hash":"0xfd3bd42dd1918b513fa0452556b4747fb51bb238fc7a41cb8ad78db990340b3c","index":0},"pox_cycle_index":87,"pox_cycle_length":1050,"pox_cycle_position":854,"stacks_block_hash":"0x8daa60a8829c188d0c50eb6fe46c03b55ae6458a15351dd125df77eb0c440797"},"parent_block_identifier":{"hash":"0xa716b2b60e9318a325af572908904959d3b0eec0b722be59ead747de9ef3ddb5","index":9651},"timestamp":1631025402,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x756d657273746167696e673430)","execution_cost":{"read_count":16,"read_length":45611,"runtime":61315000,"write_count":2,"write_length":334},"fee":73200,"kind":{"data":{"args":["0x627463","0x756d657273746167696e673430"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400bbc0a4da06f7b02f033da5a893ba81e492aac05a00000000000000000000000000011df000005b75e913e715e73327e87918dd98f60076ef8e40c06aa2d5695cbeda2c23af433de557e92edc1319e7bc34094d38c3be7147f1b3fb13e57e61dd63e3bbf80bf4030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000d756d657273746167696e673430","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000000ab04686173680200000000086d657461646174610c00000004046e616d65020000000d756d657273746167696e673430096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051abbc0a4da06f7b02f033da5a893ba81e492aac05a","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2XW196T0VVV0BR37PJTH4XTG7J95AP0B9X0DSYQ","success":true},"operations":[],"transaction_identifier":{"hash":"0x37900fb569ecacc320d98a7f7a0a049a9c53c42096cfbbaffe7afbd335605b45"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x1cdff9d1e0c65c2eb0cb2875d54d988088df5b510a2d29f184df6f5d9e326fbc","index":9659},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000863cfb27b07aeb9dcb26a9fc0e4a436beb2f5b6d4868d2aeff","index":2092215},"confirm_microblock_identifier":{"hash":"0xa42c7acf5e1268bd2901cb120d4d757ac8867af737c2fdf79439198963048e64","index":4},"pox_cycle_index":87,"pox_cycle_length":1050,"pox_cycle_position":864,"stacks_block_hash":"0x8ec0a4743fa5414348ce89cf3f416b9620d4fc0217be6ab6e7550e57b0f593be"},"parent_block_identifier":{"hash":"0x2b7dadb619a3c69611c0a2b2e6c6d3203cdda14c338574925079e79f5e4d1bbe","index":9658},"timestamp":1631027863,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6e6577646f6d61696e)","execution_cost":{"read_count":16,"read_length":45611,"runtime":61271000,"write_count":2,"write_length":334},"fee":71600,"kind":{"data":{"args":["0x627463","0x6e6577646f6d61696e"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":5},"proof":null,"raw_tx":"0x808000000004002b30f2bdaedc01c755b6665d61ad1fa521dbac55000000000000000200000000000117b000004221914dc777cf24ef3beca916e093f7bd6fdfcc1d90dbc31c02cab7ce47a8655fd707a7cd73c59d99b7fc36c2ce4a45191d4dd51cd643bb464b01dd72768e94030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000096e6577646f6d61696e","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000000ae04686173680200000000086d657461646174610c00000004046e616d6502000000096e6577646f6d61696e096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a2b30f2bdaedc01c755b6665d61ad1fa521dbac55","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STNK1WNXNVE03HTNPSK5TRDD3YJJ3PXCANYG1739","success":true},"operations":[],"transaction_identifier":{"hash":"0x0c494efc96ebd246c7b4968cc7ce86832491c2d37ea62740a60bbd99172a5530"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xb468bf55a073c90e962dc6965937f92b0b1279330796e0b3ab9d93ba2698c7f1","index":9660},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000006178d2678d0e8a064203a55f12bf5a679b4029c187c215a17","index":2092216},"confirm_microblock_identifier":{"hash":"0xd04e729534ba2d3dff8a67bf6c4f4c05b36fc012cf7973eb134f82c67ddffd40","index":2},"pox_cycle_index":87,"pox_cycle_length":1050,"pox_cycle_position":865,"stacks_block_hash":"0x7de2121a8c994d7cdc1e4f3d5ed6dc3f7847dff008614608d81b2f64ed24d97c"},"parent_block_identifier":{"hash":"0x1cdff9d1e0c65c2eb0cb2875d54d988088df5b510a2d29f184df6f5d9e326fbc","index":9659},"timestamp":1631028947,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x756d657273746167696e673432)","execution_cost":{"read_count":16,"read_length":45611,"runtime":61315000,"write_count":2,"write_length":334},"fee":73200,"kind":{"data":{"args":["0x627463","0x756d657273746167696e673432"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":3},"proof":null,"raw_tx":"0x808000000004009514db180fdc3c6fb83d7dce1b1a23db81f70fbe00000000000000000000000000011df00001f3f318c96794e09f7fcf5d495f821fd1f4141485010393d11fffe93b506ca5b25a62fbc0d7b940841a9471d149e284513814d4cbf4d132027f5a2f6a3216a364030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000d756d657273746167696e673432","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000000b004686173680200000000086d657461646174610c00000004046e616d65020000000d756d657273746167696e673432096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a9514db180fdc3c6fb83d7dce1b1a23db81f70fbe","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2AH9PRR1ZE3RVXR7NYWW6RT4FDR3XRFQT4QTY0J","success":true},"operations":[],"transaction_identifier":{"hash":"0xcdf2011aff6659a255f03293a1ce7e7b49d715809ec0e077807b13dbd5f80535"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xaea556ac72a3d97aab9af56ff03e3cec18390c34fcb53e084add13ec1e9c9304","index":9663},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000690aba778eef300ee0e3af7bbd218e7963b7a1c0c1b7d0256","index":2092219},"confirm_microblock_identifier":{"hash":"0xa764961d28041e4c4e42b8ccc5fa3d9a86c22a6821460f3df5dcc8d3fa76139d","index":1},"pox_cycle_index":87,"pox_cycle_length":1050,"pox_cycle_position":868,"stacks_block_hash":"0x69df5cb2be3dfe273849c7a55eed352e876a34f7753e14eb5c819ffb8abe3491"},"parent_block_identifier":{"hash":"0x9f66311a813cfbdab6a875cced06a7ccfad5bed1b03df2a360bcb1b679f1fbcc","index":9662},"timestamp":1631030579,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x64656d6f646f6d61696e)","execution_cost":{"read_count":16,"read_length":45611,"runtime":61282000,"write_count":2,"write_length":334},"fee":72000,"kind":{"data":{"args":["0x627463","0x64656d6f646f6d61696e"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400ab539d3f9b8831a5780a092ecb49d6d301484efd000000000000000200000000000119400001f26f0971bd02d8b257ea62318b6627cbdef607ea5f615dfd509359adf7b778ce1c6b51860e8308929f0cd0d5142ee85c77c36a49271c7da0615a66cd6db579ec030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000a64656d6f646f6d61696e","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000000b304686173680200000000086d657461646174610c00000004046e616d65020000000a64656d6f646f6d61696e096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aab539d3f9b8831a5780a092ecb49d6d301484efd","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2NN779ZKE4339BR184JXJT9TV9G2J2EZPZAEWB6","success":true},"operations":[],"transaction_identifier":{"hash":"0x8445a2e0e467bbe65caaea876c7eb34b983fe48d0f44b75c022fb4de3e725060"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x47d0020f4a41976576649b05cd538bdc2fcbc7f75574753144bf3917473aa437","index":9674},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000038d71f2bfc04c0dcf3f5d30cf36c9f0813b479dcef9bcd55","index":2092230},"confirm_microblock_identifier":{"hash":"0x9dd7c2e3276fd858b1b8086dd720c258d63f2672d0c58b1ebf1278a7c5c2ff47","index":3},"pox_cycle_index":87,"pox_cycle_length":1050,"pox_cycle_position":879,"stacks_block_hash":"0x83f81ea35f6836c58ba749fc63a0975baefaf6200d63b3ac3dd3920ac372d131"},"parent_block_identifier":{"hash":"0x32ff82d1e560941799aaf27f39c216ad077ea49cffb826a18e493c22205fef68","index":9673},"timestamp":1631036044,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7374726970657465737431)","execution_cost":{"read_count":16,"read_length":45611,"runtime":61293000,"write_count":2,"write_length":334},"fee":72400,"kind":{"data":{"args":["0x627463","0x7374726970657465737431"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":3},"proof":null,"raw_tx":"0x8080000000040080e8e6bdf352a9128b9bfaa7be616216885a1c9000000000000000000000000000011ad000007d6c26302cfcc5f036b4212e8dfee8db0d2e04e79f6b97ce85a7115badc88cf6032619bf1659bd0c359f5f87015f932400130ad2f5d5af16cc3f6dd994ceb543030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b7374726970657465737431","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000000b404686173680200000000086d657461646174610c00000004046e616d65020000000b7374726970657465737431096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a80e8e6bdf352a9128b9bfaa7be616216885a1c90","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST20EHSNXYD9AJ4MBKFXAFFK1C8B8GPGWJ3MYT03G","success":true},"operations":[],"transaction_identifier":{"hash":"0x714b5ac2b63d0680760e5218a9db335bc6bfa14f75daa096b628ebda52441982"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xff6f0b4bfefee409ca12f2f176fc139f1aba750208ae057553d302c810af06db","index":9784},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000009323f7e573c99d6eeedb2159d9c85b659dc4b3abaed3f379de","index":2092349},"confirm_microblock_identifier":{"hash":"0x577ce4fda9264713f9f833e91967317ec15aa97f874d4a7d62254202ebbf1cd5","index":0},"pox_cycle_index":87,"pox_cycle_length":1050,"pox_cycle_position":998,"stacks_block_hash":"0xdc46952e0c3aa1f9e6893405c4814e45a5aa4d9e18365a0b2ac63e9a187648ec"},"parent_block_identifier":{"hash":"0xf500ac77b4ec668706b352950b433bb02e64af6f195d295862572772c4712111","index":9783},"timestamp":1631090818,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x756d657273746167696e673434)","execution_cost":{"read_count":16,"read_length":45611,"runtime":61315000,"write_count":2,"write_length":334},"fee":73200,"kind":{"data":{"args":["0x627463","0x756d657273746167696e673434"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400bb99f46e4fbdd85cda86cb77e0884df00bf5246c00000000000000000000000000011df0000115005bafcb1c8a2ff6273f777d5f181ebb558a1e0280a603e34c26c3db4480d53081608fd4569528ad212983aaf767f128187bdaa2fa2b3e719817848980d7da030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000d756d657273746167696e673434","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000000b904686173680200000000086d657461646174610c00000004046e616d65020000000d756d657273746167696e673434096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051abb99f46e4fbdd85cda86cb77e0884df00bf5246c","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2XSKX3E9YYXGQ6TGV5QFR489QR0QX94DJH1EWP7","success":true},"operations":[],"transaction_identifier":{"hash":"0x52aff757cebe2914b30a2df4965287cabf968d40fe819a96ef91d0cf3c94499b"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x3850d149a362a9778e7f1c03d61bc2084cee0b1d09ed1dbbfe914704a14ea109","index":9804},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000090e2250c1e570fe24760ba3118dfd9af25f25c6b3c758fe496","index":2092372},"confirm_microblock_identifier":{"hash":"0xa7a30a17b470a115cae66d369a706f0a4e9a1555883fbb58aaf3d902740ffc9a","index":1},"pox_cycle_index":87,"pox_cycle_length":1050,"pox_cycle_position":1021,"stacks_block_hash":"0xe81c73e6912f09075db6106a6782747ffd9afdaa1e6ca523fda5759328f09c08"},"parent_block_identifier":{"hash":"0xe551c292dfea6eb683a6920b4d7a5064a2170be95829895a98c96344ccb3af47","index":9803},"timestamp":1631099611,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x636f696e62617365726574657374)","execution_cost":{"read_count":16,"read_length":45611,"runtime":61326000,"write_count":2,"write_length":334},"fee":73600,"kind":{"data":{"args":["0x627463","0x636f696e62617365726574657374"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":2},"proof":null,"raw_tx":"0x8080000000040048262f38bd1c955e073b88cb6f8f29d24d568dab00000000000000000000000000011f8000008bdbf49724573e6f8008e8e88cfec57cb10ad9a637d30d8737391810d66e00ac70c5a8925cdc4fd9163baf89cba4bf447925f9cf0c8f29b1a6b81c000750a6c6030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000e636f696e62617365726574657374","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000000c404686173680200000000086d657461646174610c00000004046e616d65020000000e636f696e62617365726574657374096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a48262f38bd1c955e073b88cb6f8f29d24d568dab","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST142CBSRQME9AQG77E4CPVWF5794TNMDNDRJ4SY3","success":true},"operations":[],"transaction_identifier":{"hash":"0x7477958ab5b8e0d5a7d6e725f411cc2647fb91c702759a4a9858cf5974febfa3"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x7e8b4bd15e927fd0f33146f744f7281fe5e728d56b43b5f2c0fb6fde2c49d93b","index":9814},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000aa550a1ce7d8fc3d99818c794b02bb4d6f3e18e38682d934b2","index":2092384},"confirm_microblock_identifier":{"hash":"0xb410fa9c7b001183771381408dfda316c3665c714207388602880deea272eb3f","index":3},"pox_cycle_index":87,"pox_cycle_length":1050,"pox_cycle_position":1033,"stacks_block_hash":"0x78f371fbb6a52042a788ff56cc1f1754bf783ad44009513c3cfed6d391c1a787"},"parent_block_identifier":{"hash":"0xfa350d44d339983060869c8eebf3cde23991aa74a5b37e048fa870929dcd8a3a","index":9813},"timestamp":1631103192,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x756d657273746167696e673437)","execution_cost":{"read_count":16,"read_length":45611,"runtime":61315000,"write_count":2,"write_length":334},"fee":73200,"kind":{"data":{"args":["0x627463","0x756d657273746167696e673437"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":6},"proof":null,"raw_tx":"0x80800000000400d64d236c64e03ace122efedd6f844f7f5175243e00000000000000000000000000011df00000cbbb3130bfd831f3ca7f8df4e0e1cf1615b5ce5d638b4d0a057c42643314f67a3b5c1642c196850a4d6f756133944abf65dd5a1294de54086e536cdf06ec5798030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000d756d657273746167696e673437","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000000c704686173680200000000086d657461646174610c00000004046e616d65020000000d756d657273746167696e673437096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ad64d236c64e03ace122efedd6f844f7f5175243e","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3B4T8VCCKG3NKGJ5VZDTVW49XZN2X947VP2YW3Y","success":true},"operations":[],"transaction_identifier":{"hash":"0xdde0d7f8bb614535566c5c4e2f04b86d135ceec3bc53d2be3625494cd798c16a"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x55fbdb91d7d750c3bde2df27d4329931aa601ca2ae660eab3094bec63e4c21b0","index":9826},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000b4a3528db0f1c4faefec973891bbe35f6d36a8625248e810fe","index":2092397},"confirm_microblock_identifier":{"hash":"0x468829ebfb899d5cea565a6ad520571b706187328f189ea347d1265a575d5cbb","index":3},"pox_cycle_index":87,"pox_cycle_length":1050,"pox_cycle_position":1046,"stacks_block_hash":"0xa882c66d2da0e75b9a1dc433c875d393f239386fab2b7f81e1987323af6a7825"},"parent_block_identifier":{"hash":"0xa500133223dc836d524673bf95b9fb5dcba7b4234656ce9608dc25ae4358b5c1","index":9825},"timestamp":1631108844,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x636f696e6261736574657374)","execution_cost":{"read_count":16,"read_length":45611,"runtime":61304000,"write_count":2,"write_length":334},"fee":72800,"kind":{"data":{"args":["0x627463","0x636f696e6261736574657374"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400ea321df3299242b261f285a8e120e5b3bb4dc11e00000000000000000000000000011c6000010aa3f1e9ef49b59355817979ba1f4d58afd87b84590e673e23faf9f8c4c04acb64127e9b9b485935881276807dce7bd05b4bc0463c0380553bb9e18e7830ec17030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000c636f696e6261736574657374","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000000cd04686173680200000000086d657461646174610c00000004046e616d65020000000c636f696e6261736574657374096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aea321df3299242b261f285a8e120e5b3bb4dc11e","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3N347FK56945CK1YA2THR90WPSVPKE13R7WEJKE","success":true},"operations":[],"transaction_identifier":{"hash":"0x87325cf88d4388bb8d5e4a990000b55ca72562bd4d6d1f02a0c1c1ee5f858710"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xb891c2eb2515c92cda801292b021fbf14975a8e27c1d0d0e2bbb740358b28f74","index":9969},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000d4790555e9ad3dd8c1984077895dcb7b015904296863cc5039","index":2092566},"confirm_microblock_identifier":{"hash":"0x88654a398cfb6981fef8fba1827148d49ba1572dc5eb536cc8ae98210b24a8cb","index":1},"pox_cycle_index":88,"pox_cycle_length":1050,"pox_cycle_position":165,"stacks_block_hash":"0xc93fb2ecf1e8b14ca28230f58d0add7eddeb3876509f84831156636d42abaf5d"},"parent_block_identifier":{"hash":"0x612b5116210b1cb36c7b1cf27237aaab60be2a288e1f373aabb5578ab1ef380a","index":9968},"timestamp":1631168394,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x756d6572636f696e62617365)","execution_cost":{"read_count":16,"read_length":45611,"runtime":61304000,"write_count":2,"write_length":334},"fee":72800,"kind":{"data":{"args":["0x627463","0x756d6572636f696e62617365"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004003853fded8fe038059bbecf67d2bcc97056d74ef900000000000000000000000000011c6000000b2920c5bf399de34c7367960d1867957e52d0138d8bf0eb13a26364a17ecaac1a84792380cc50ff42f97b615ac25ddf9cf05ee9b7af88104900a17cd17d6a9e030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000c756d6572636f696e62617365","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000000d604686173680200000000086d657461646174610c00000004046e616d65020000000c756d6572636f696e62617365096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a3853fded8fe038059bbecf67d2bcc97056d74ef9","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STW57ZFDHZG3G1CVQV7PFMNWS5R5DNTEZ7ZX32ZB","success":true},"operations":[],"transaction_identifier":{"hash":"0x947e9bda71211a6d6007abd3e31779cf6610674860dabe849192a0f7956cfc8c"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x3ca7ba635b14e22fd649ae71cc0fa0e5a0ab0039944df1c9a52bb64b9ce39641","index":10036},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000002a0a2c1ec44f2b59a89b5588ea3e84c19fcc245e4e231589ef","index":2092643},"confirm_microblock_identifier":{"hash":"0x2edbf80a951e70fd8697a5a6176b6232377cf5dfa05d03cf9fcf7e6ecead129c","index":1},"pox_cycle_index":88,"pox_cycle_length":1050,"pox_cycle_position":242,"stacks_block_hash":"0x9a60d96296fd68d0c16b38e98d99723ad1a6ed966982e0f2a66eaa4c8729ba18"},"parent_block_identifier":{"hash":"0x02f0e53899331c2a068194244fe0aacb6932b93c918a29e976d3eb0b9885965a","index":10035},"timestamp":1631185963,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x756d657273746167696e6734386e6577)","execution_cost":{"read_count":16,"read_length":45611,"runtime":61348000,"write_count":2,"write_length":334},"fee":74400,"kind":{"data":{"args":["0x627463","0x756d657273746167696e6734386e6577"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":1,"position":{"index":2},"proof":null,"raw_tx":"0x8080000000040031e3a4935779f4380a80d2356cd9cacacd435c00000000000000000100000000000122a00001c566ef459223271193e8fb39cf8894ff400238be8f99cb24e6b64d0037ee88f1455c8acb640eb91576f06936e50fcd42b703362c4b42a07663af595aeaccc153030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000010756d657273746167696e6734386e6577","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000000da04686173680200000000086d657461646174610c00000004046e616d650200000010756d657273746167696e6734386e6577096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a31e3a4935779f4380a80d2356cd9cacacd435c00","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STRY794KAXWZ8E0AG393AV6SSB5CTGTW01FEKH7A","success":true},"operations":[],"transaction_identifier":{"hash":"0x824dd84d488ff89b5e065b1cd99f5a51d4542a867d0847f62a526ad771b21920"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xff367340caf223c732652a2347b51f46d4faf9b73e38ce097f6a2a8d0258e598","index":11254},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000004ada67b882c021dbe41d8ca4893e833947c80027d40f07fc86","index":2094048},"confirm_microblock_identifier":{"hash":"0x8f324458b047684d4693191fcfe7bc026c66229c260a33c0e13dc9bafeef3c21","index":3},"pox_cycle_index":89,"pox_cycle_length":1050,"pox_cycle_position":597,"stacks_block_hash":"0x3a6066b14685ab0aac723df662fee8178f3524e14b929cf4e19fd1f42e9082f2"},"parent_block_identifier":{"hash":"0x594a25c8e96152496a26857550ff1289b5b9d35188a929ed1acec5245118c6be","index":11253},"timestamp":1631713692,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6a61736a6a73)","execution_cost":{"read_count":16,"read_length":45611,"runtime":61234025,"write_count":2,"write_length":334},"fee":70400,"kind":{"data":{"args":["0x627463","0x6a61736a6a73"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":4},"proof":null,"raw_tx":"0x808000000004002b926f4b7b725bc71c4f7f877f7f56465552158a0000000000000000000000000001130000011ac99b275a44838f511617f754aa37fe9a6056e1f9d87872f95f8156887174267d084289ac94734be4bcc62ec463e4f25a8322351f8281433c79a8dc22d6f54c030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000066a61736a6a73","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000000eb04686173680200000000086d657461646174610c00000004046e616d6502000000066a61736a6a73096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a2b926f4b7b725bc71c4f7f877f7f56465552158a","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STNS4VTBFDS5QHRW9XZREZVZAS35AMGNH8CWDRBE","success":true},"operations":[],"transaction_identifier":{"hash":"0x6aa4c2489a9a34b198078ad5db90c51034de401a510d3a71dfbf162770245e68"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xd388e233cc620dd4576c6b06d9861ea05a24b2e5f9136217a3ae20a43ccb563c","index":12313},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000002edb3c616fb02d181b90f9e520d6d0e31b455f90a874a18e0b","index":2095536},"confirm_microblock_identifier":{"hash":"0x8fdd5dad36edebb6b319b1fb103d8c721f39bc84a3cf429ac05c1abbc581e697","index":0},"pox_cycle_index":90,"pox_cycle_length":1050,"pox_cycle_position":1035,"stacks_block_hash":"0x9e60bfdc9403a17a96d3ce5c0d37dcf24e18dd37ef973482613d79234f9e0d20"},"parent_block_identifier":{"hash":"0xade76497e5234a5e71deb60e70e8a0b01c738908bee29bccab187d0ef5b5b958","index":12312},"timestamp":1632238156,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x70617061707061)","execution_cost":{"read_count":16,"read_length":45611,"runtime":61245025,"write_count":2,"write_length":334},"fee":70800,"kind":{"data":{"args":["0x627463","0x70617061707061"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":1,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040068d2d8bcd1f5caecd939517c5005d85682edf314000000000000000100000000000114900000f0e5c7d265e3d81901e8b34734e1a67618f8417adc311fdd3afe5a30e4583e8c679202371fdb2bd0ad9ce4664c827829cf603148d053778b26dbb1ac3b293983030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000770617061707061","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000010604686173680200000000086d657461646174610c00000004046e616d65020000000770617061707061096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a68d2d8bcd1f5caecd939517c5005d85682edf314","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1MD5P5WT7TWNV6S758QRM05V1B85VFK2HEMEY90","success":true},"operations":[],"transaction_identifier":{"hash":"0xa2cbad4ed03e6dd73b8dafa94ffbab1381cacedbad7d3953b9f244c0dd1489a6"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x496ef3cb9e1a66d496065d70daead08bd1df582341ce266e413a6cf1c0435679","index":16155},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000006a2c6fd2ac2459540b17edd413ad6b2d4a31fd860f4656c2f","index":2099789},"confirm_microblock_identifier":{"hash":"0x8ebfe552175a1d6d5368b9dfc3de931325834b4348248a8227b8ef2c5da271a4","index":4},"pox_cycle_index":95,"pox_cycle_length":1050,"pox_cycle_position":38,"stacks_block_hash":"0xc7593329321aedb37a4c4960c6a0111ad8dd2664725c865bfed1c8a434064fa7"},"parent_block_identifier":{"hash":"0x931f1c5065815aa2bd716bf50b0df95228611b61e8ad7779d68c6607097f6d5b","index":16154},"timestamp":1634672918,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x746573746163636f756e7433)","execution_cost":{"read_count":16,"read_length":45611,"runtime":61300025,"write_count":2,"write_length":334},"fee":72800,"kind":{"data":{"args":["0x627463","0x746573746163636f756e7433"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":5,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040029e9d758af03c3f25218cda6ef9562d7f9be12fb00000000000000050000000000011c600000040af91bfde34f06b6f2e81f2510abd03974ac668db789deb1df2fd66a8c075a51abd9ead5e8646805d333a731a44c193441ca8d66f31b385426298cfd1e8af6030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000c746573746163636f756e7433","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000015104686173680200000000086d657461646174610c00000004046e616d65020000000c746573746163636f756e7433096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a29e9d758af03c3f25218cda6ef9562d7f9be12fb","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STMYKNTRNW1W7WJJ336TDVWNCBBZKFGJZDQQ375S","success":true},"operations":[],"transaction_identifier":{"hash":"0xe6ee0aae5f23eae018f083c1fa2af0374747e08d15223db0e801ae33cb681bad"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x791b147398ad2720142e9f61c8c177dfe1d1388b36faaccd09b73e57c0a7bc70","index":16419},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000b0317dc3ddd2d5c4cbf8289934947e82689b86610b9e7fef6","index":2100077},"confirm_microblock_identifier":{"hash":"0xa9dcddddb9d977cb16e0916187d616b4e87f4ca803244de5336c76bd71a97f7a","index":0},"pox_cycle_index":95,"pox_cycle_length":1050,"pox_cycle_position":326,"stacks_block_hash":"0x2e27982c6d368423b9ece7f2fcf72adc3c713dd583c62e95784328136d06a8e5"},"parent_block_identifier":{"hash":"0xe42bc537b573e03a1a990703664b9d5a7da9efc35721ebe18baa020d2844fba1","index":16418},"timestamp":1634855376,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6865686568)","execution_cost":{"read_count":16,"read_length":45611,"runtime":61223025,"write_count":2,"write_length":334},"fee":70000,"kind":{"data":{"args":["0x627463","0x6865686568"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400236ab28a3839a202b29d790e03888dae7422ca5f0000000000000000000000000001117000017b5912bc31be12a4b23de1da5d311ffedf22aed58702df431404db1d2cfab7d925294cc6954d232eeedea7479018c1f137f8b6cbf88ff33885ea86c94e9a0811030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000056865686568","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000015704686173680200000000086d657461646174610c00000004046e616d6502000000056865686568096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a236ab28a3839a202b29d790e03888dae7422ca5f","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STHPNCMA70WT40NJKNWGW0W8HPQ788PABYWKNFE3","success":true},"operations":[],"transaction_identifier":{"hash":"0x27d59a5e013a20d39ffe75671ad3fa6cff3cde2f0e0d1811bb3fed087b57129a"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x08ebbd8517f5eb9871927c1a1696ccbed00e75a8af9e6aca5ac79060b4f9a29e","index":20040},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000002bea5d17dd640dcd13a28e64fa8b894af781ba071c98c0594b","index":2104191},"confirm_microblock_identifier":{"hash":"0x175d2ed682e9769b7c22b6b73c0c4bc651bdbffb757e045d42debe5e0e9c2ce3","index":4},"pox_cycle_index":99,"pox_cycle_length":1050,"pox_cycle_position":240,"stacks_block_hash":"0x08a74922af0921dd921a3e045c0b3a87650ddde8a8b920a42dfc15cce863fbfd"},"parent_block_identifier":{"hash":"0x528b81e292778230b221782aa6cc8cffb09b05409e8d0987152b87d98cf44d19","index":20039},"timestamp":1637074896,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x68656c6c6f)","execution_cost":{"read_count":16,"read_length":45611,"runtime":61223025,"write_count":2,"write_length":334},"fee":70000,"kind":{"data":{"args":["0x627463","0x68656c6c6f"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":7},"proof":null,"raw_tx":"0x80800000000400ec255bc2e99490d882c1a69dbd0c0b13953709ad000000000000000200000000000111700001f21ddc298942e3d2f99d24b9f0214097ea1c69cb1ebf7417843695472f45d4472db1c805b9354af939d5ffa8631d7822f819cea8bf889f54a71a88200296b880030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000568656c6c6f","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000019704686173680200000000086d657461646174610c00000004046e616d65020000000568656c6c6f096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aec255bc2e99490d882c1a69dbd0c0b13953709ad","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3P2APY2X6A91P42R6K9VF8C1C9SADR9NPFA4PDG","success":true},"operations":[],"transaction_identifier":{"hash":"0xf7d9aa7e86e9f567f602d5e33429f01723db83a6b4e0558b08de4860331cc26d"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xda0d16e7d617c89683c5125cce6075f84941e8d34fc443bb003303f6d0c3ce77","index":29985},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000383ffb1adac065b853b728713b7fc4c741436b6c677a3e7c6590","index":2138042},"confirm_microblock_identifier":{"hash":"0x55cdeaaa1363ab3b3d6bccdefe8cf07d13df29e38fb694bac8755db33a0b6660","index":3},"pox_cycle_index":131,"pox_cycle_length":1050,"pox_cycle_position":491,"stacks_block_hash":"0x21358c06b8b661ba39a896cb64c25d7a2816a3edcdf73054811eadbd86db8ec8"},"parent_block_identifier":{"hash":"0xbcd1b410afc8d6f32ff3fad4b92c30735e56d1e96d2d47b77ceaba79c7c2e1a0","index":29984},"timestamp":1643456833,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7465737462696c616c3835)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167269,"write_count":2,"write_length":162},"fee":72400,"kind":{"data":{"args":["0x627463","0x7465737462696c616c3835"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":5},"proof":null,"raw_tx":"0x80800000000400b4bdbf5fc069efbc417e0a6e9ffe0ec17c170fab00000000000000000000000000011ad00001e78e00addf5fd4b8caf61204062b7e96a9f93db6d8667a5e017f84337b661ccc2a457866f894dfe8d4d7d5bc51fda1ccaab0e36b9dbed630056062e8039a8e5f030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b7465737462696c616c3835","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000023504686173680200000000086d657461646174610c00000004046e616d65020000000b7465737462696c616c3835096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ab4bdbf5fc069efbc417e0a6e9ffe0ec17c170fab","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2TBVFTZR1MYZF21FR56X7ZY1V0QR5RFNC32HF4R","success":true},"operations":[],"transaction_identifier":{"hash":"0x04a75ca3e7cc6a67747b634a6cc59b0692dca009270598ab6b027795d1d780ec"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x6f03e793d7bb6a0fb44adc89316e5e4052065d287988abd76738fd0442f7f225","index":29986},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000b1331bcedffa21de782ab5abab7d45d50a05d6d258bf837ab4","index":2138043},"confirm_microblock_identifier":{"hash":"0x5b145600b8be531232bb838e85807c1ec8b02b8adfcb62955e9d67f0e70998e6","index":0},"pox_cycle_index":131,"pox_cycle_length":1050,"pox_cycle_position":492,"stacks_block_hash":"0x68f8ca2e012ba41467731c32e8da924de8f7c9dbb46f8afb81b3785396f8b5d6"},"parent_block_identifier":{"hash":"0xda0d16e7d617c89683c5125cce6075f84941e8d34fc443bb003303f6d0c3ce77","index":29985},"timestamp":1643458042,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x74657374696e6762696c616c3834)","execution_cost":{"read_count":16,"read_length":44022,"runtime":167386,"write_count":2,"write_length":165},"fee":73600,"kind":{"data":{"args":["0x627463","0x74657374696e6762696c616c3834"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004003b98ca271f300cd36d3aee17ff6891e2acae8e9d00000000000000000000000000011f8000006efa556c744af4af5cbd774af9c5b1faf348dc033281d849b92a30d815cfd64d40ef51b752c66303697b8088124e0c744e8d47387f5cd43eaa8f20cb79d67e68030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000e74657374696e6762696c616c3834","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000023604686173680200000000086d657461646174610c00000004046e616d65020000000e74657374696e6762696c616c3834096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a3b98ca271f300cd36d3aee17ff6891e2acae8e9d","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STXSHJH73WR0SMVD7BQ1FZV8J7HASBMEKMX0M8AE","success":true},"operations":[],"transaction_identifier":{"hash":"0x2d7666f5209fc9401d28101414d1e75fde3c9affcef90266cd0d65997217d5f8"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x7fc615cf542b958a50368a151ff9dce7179bfb4f641cab637981bf061507843f","index":30223},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000094c6bbbba9adc75cc59992a6f21b54018868001249a668cd97","index":2138290},"confirm_microblock_identifier":{"hash":"0x0b1d0487f302186fdcfc17bec6fbbd7d65d95194921def6491b6b2f3928d7b45","index":1},"pox_cycle_index":131,"pox_cycle_length":1050,"pox_cycle_position":739,"stacks_block_hash":"0x863418ea5113aacad48cac688a4fa5a64bcff3c614a007b5be9aae81a817d181"},"parent_block_identifier":{"hash":"0xf3f69957060775a664ed91a1e5484d50d1a660467c03765139311cd4b4734906","index":30222},"timestamp":1643646618,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x74657374696e6762696c616c3436)","execution_cost":{"read_count":16,"read_length":44022,"runtime":167386,"write_count":2,"write_length":165},"fee":750000,"kind":{"data":{"args":["0x627463","0x74657374696e6762696c616c3436"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004000447274a66ab6edcb358974a90be044410a67691000000000000000200000000000b71b000019949bd1c2a61735b7c96f453eaec426ebb6cde531098bc83f98c4ff6b35cad537613487d3fd3462f85f50e8f087932c01aeef44156ed0043a5c1c0d1f572a380030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000e74657374696e6762696c616c3436","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000023b04686173680200000000086d657461646174610c00000004046e616d65020000000e74657374696e6762696c616c3436096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a0447274a66ab6edcb358974a90be044410a67691","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST24E9TACTNPXQ5KB2BMN45Y0H2119KPJ4RBWQJ0","success":true},"operations":[],"transaction_identifier":{"hash":"0xc2f26f1f0bec5d030338d461fcfb72069f40564ffcb7a02171becb07f8f606ec"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x74657374696e6762696c616c3436)","execution_cost":{"read_count":12,"read_length":43993,"runtime":132016,"write_count":0,"write_length":0},"fee":750000,"kind":{"data":{"args":["0x627463","0x74657374696e6762696c616c3436"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004000447274a66ab6edcb358974a90be044410a67691000000000000000300000000000b71b00001b48d23b85318d9687490d2249659853e840bb3f0b2e57a45b391645f91796dd34708860a35d5a63ac99c8c154b342703e8806f7c75e7a3056a293b95c522bf45030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000e74657374696e6762696c616c3436","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST24E9TACTNPXQ5KB2BMN45Y0H2119KPJ4RBWQJ0","success":false},"operations":[],"transaction_identifier":{"hash":"0x91a9168b180d450d46363515764fd9070281546693e87d8df8328cb1bb27eb22"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xb7503cbdd32fdb9ecc7279f98e2faba0e8f37ce2d959ddb61570fc08643a01a7","index":30778},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000030e2da0dc40d768c2b3f6cd44531f7e8014a6035ad73ca57e4","index":2138952},"confirm_microblock_identifier":{"hash":"0x8d3dd9bb260b53b0ce232bf0e3c7c40972440a1507edd4f02596ad2109d47bf9","index":4},"pox_cycle_index":132,"pox_cycle_length":1050,"pox_cycle_position":351,"stacks_block_hash":"0x65937d5d2f86cea3f390c612c0e9d623e37b64bce2cd6461df2a24543c64e303"},"parent_block_identifier":{"hash":"0x01e7131774e3af9e0b5f7fed5b4a3865b1edfc8f933c6d96c819b67efca940fb","index":30777},"timestamp":1643900886,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7465737474786964)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":434193,"kind":{"data":{"args":["0x627463","0x7465737474786964"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400e0ded2c7651438b5cc18b977325200a1c9b427580000000000000004000000000006a0110000c1dd6d8fbf083c21a3094a31808451b13a86972e2f30cc0a9c5e102f700a0d516999147039a2c590079ccbd2eedade222a579bad0f66b7df4ecdddc1d5ed49c2030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000087465737474786964","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000024804686173680200000000086d657461646174610c00000004046e616d6502000000087465737474786964096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ae0ded2c7651438b5cc18b977325200a1c9b42758","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3GDXMP7CMA3HDEC32WQECJJ02GWKD17B2X4669E","success":true},"operations":[],"transaction_identifier":{"hash":"0x63b947ad48b4ff019bc368c3159c8a8a1ce820ac06ec51097e92853d37ab18ac"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xdd8175d35c2ad436fa55bc81d12f86176127be8573dd606de050593b8caa5c10","index":35188},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000030f6c522844d5245fb68eaf00cdb9af5557086778c02ef9651f","index":2160517},"confirm_microblock_identifier":{"hash":"0x04cec822830a93696ffb2be117fa675bc3347d447737ad6bcbfbe3d27ab3616c","index":0},"pox_cycle_index":152,"pox_cycle_length":1050,"pox_cycle_position":916,"stacks_block_hash":"0xbf0e3b66ec085b46d3495e160c18773a5142ee3531fcf779966b1171405fa578"},"parent_block_identifier":{"hash":"0x080ab285354b2f178a2f3a3b7179284fe911c99bf2be879ecfcfeaba2a94507b","index":35187},"timestamp":1645104378,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x64656c657465636865636b31)","execution_cost":{"read_count":16,"read_length":44016,"runtime":167308,"write_count":2,"write_length":163},"fee":637953,"kind":{"data":{"args":["0x627463","0x64656c657465636865636b31"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004005dc5a5dc89637785b38215da3f3e7156546ac1bc0000000000000004000000000009bc010000b1ffc0d153b70005df349d6f07c6960e997bbfc0af09d8867eaa9e32170de86f41270d89bd7aaa50a1d791ff056a89289ad6b58c95bdcbf9db6026175f12096f030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000c64656c657465636865636b31","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000026c04686173680200000000086d657461646174610c00000004046e616d65020000000c64656c657465636865636b31096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a5dc5a5dc89637785b38215da3f3e7156546ac1bc","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1EWB9EWH5HQF1DKG8AXMFSYE5B58TP1QJ4WBWP3","success":true},"operations":[],"transaction_identifier":{"hash":"0xaa04a80ec05ca38fefe9ce7470d1c697d33f2b7a3b6fae1ff44ff23023d66431"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x1cc7627a2f71a02e1b957a8c68193ff1967ae1e37e6f962e4fab70cf8221d5eb","index":36972},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000001238ff7fa5f84e32ff0dbee88a7b0d69cd87243fbac3f4a7f0","index":2163178},"confirm_microblock_identifier":{"hash":"0xc0b8d60bd29987ddb3f955fdcdb62fa43088d6d72fcd3f51844f995fa2ccef4f","index":1},"pox_cycle_index":155,"pox_cycle_length":1050,"pox_cycle_position":427,"stacks_block_hash":"0x88bc4ec3cf86d0cfff44152b2b827ae4641b4cdceab07094c662d2147619d7c6"},"parent_block_identifier":{"hash":"0x9239c1cde2694dea76a5e10f6e5b5b914a014252353813251e5fa0e6ccaf1ae3","index":36971},"timestamp":1645442425,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7465737462696c616c313139)","execution_cost":{"read_count":16,"read_length":44016,"runtime":167308,"write_count":2,"write_length":163},"fee":2000000,"kind":{"data":{"args":["0x627463","0x7465737462696c616c313139"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004003dbba8061faa6ec46bd51781220ed81384f5a5a1000000000000000000000000001e848000004aa673e11046d1ce082b577a5bdf91551ea2bd7b015e5679d98c4b64f2cbd1df647fd53a9346faed7569b9075706cdcfa96a3d301252c25bf2e5dcc7bded0973030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000c7465737462696c616c313139","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000027304686173680200000000086d657461646174610c00000004046e616d65020000000c7465737462696c616c313139096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a3dbba8061faa6ec46bd51781220ed81384f5a5a1","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STYVQA063YN6XH3BTMBR28GEV09R9XD5M645C3VQ","success":true},"operations":[],"transaction_identifier":{"hash":"0xadb6fbfb3d39eaa1baa08025c83aec2e782449714b004a8218e6a803cb23faa5"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x129558247eff0f901cb38f51b5c3c35346487250e5b2c2da8c8d68c858910144","index":36980},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000025e325313849ee2deb81204f74f718f35fd3ec908741888618e","index":2163187},"confirm_microblock_identifier":{"hash":"0x57ff2f51ed7182bf48243664dc6257d9c69e6c66f689171e54db6e0845b3de8b","index":0},"pox_cycle_index":155,"pox_cycle_length":1050,"pox_cycle_position":436,"stacks_block_hash":"0x851d9816cafb4f280ed8d258db702ceb158fb96485a2a608cb8165d8143d95d2"},"parent_block_identifier":{"hash":"0xe8944faa007208b5303a62e0d430457a5beb77e31ab3de3d956f7426de208293","index":36979},"timestamp":1645448152,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x64656c657465636865636b32)","execution_cost":{"read_count":16,"read_length":44016,"runtime":167308,"write_count":2,"write_length":163},"fee":2000000,"kind":{"data":{"args":["0x627463","0x64656c657465636865636b32"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400620083b5f90c6144bf3af7af03b0451a92ed67f7000000000000000200000000001e848000006a0a6f5bf3502c5009b0ac77d0ffab01b1ec0ee960cc7124a0f94e781115631f0f5254796f9ddb19b068041f3d85b919e0c69b35115c9e224abce5a547986381030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000c64656c657465636865636b32","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000027904686173680200000000086d657461646174610c00000004046e616d65020000000c64656c657465636865636b32096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a620083b5f90c6144bf3af7af03b0451a92ed67f7","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1H010XNZ4662H5Z7BVTY0XG8MD95VB7YW0SPDC4","success":true},"operations":[],"transaction_identifier":{"hash":"0x00178e6f8357b8334391af10b963cfaa207fdfd0d06c417a50705570ae0edd6c"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x8b3f10e62c0bdf587c7cd3709782115d27d21df11156caae2836a620473eecc0","index":37290},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000001aeed704bdef6ba2ebd75fc59f7f9fb474db5c94215f7df47ef","index":2163560},"confirm_microblock_identifier":{"hash":"0x14ec0ed4775f5478461389c8bf518629135260e51c06af79f80f20c685af5214","index":1},"pox_cycle_index":155,"pox_cycle_length":1050,"pox_cycle_position":809,"stacks_block_hash":"0xcdffc72a2629fd429940e43f3cedfa668a5b7530efca3fd166995c05d46e4065"},"parent_block_identifier":{"hash":"0x12b79c612aa39fa6b65ae0bf05a67991d2f9ca9b25849f96235e48014946f9e0","index":37289},"timestamp":1645693635,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x64656c657465636865636b36)","execution_cost":{"read_count":16,"read_length":44016,"runtime":167308,"write_count":2,"write_length":163},"fee":2000000,"kind":{"data":{"args":["0x627463","0x64656c657465636865636b36"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004002d6176c98f425b90933198f0fa9be85d2971846a000000000000000200000000001e84800000ab5bc9f5b31ae6766e624a2ad50a215966236d88403afe494ba6d8919c9f568b57a4299896f9af02790cd1302c5480fa12af15f4fb33765aa7059c5e342ac51a030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000c64656c657465636865636b36","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000028504686173680200000000086d657461646174610c00000004046e616d65020000000c64656c657465636865636b36096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a2d6176c98f425b90933198f0fa9be85d2971846a","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STPP2XP9HX15Q44K66CF1YMVX1EJJWC4DBEN6R45","success":true},"operations":[],"transaction_identifier":{"hash":"0x1fd8c0165a2d294bacd79c3e4a30f78fc07152902723504fcd91bde7d449e808"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x39393e4c31762b58506ae4af74899590220a9ef9c5db6fbfdda31845faef8e4e","index":37301},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000033904687ea8fc9efe632b6cac791503532581d1f99082a86b22","index":2163571},"confirm_microblock_identifier":{"hash":"0x6ca4ff595f49a2c829bb2efff094068d9efe91647644c49c1fe6f0c75d632540","index":0},"pox_cycle_index":155,"pox_cycle_length":1050,"pox_cycle_position":820,"stacks_block_hash":"0x3a0f4059168156a5ae5305619809954762f328bab4bb5662c2afad22ef532249"},"parent_block_identifier":{"hash":"0x3fe98b97d78841043fd476eec9c6d8e3a9dc7289f7b2a2ad384cb5c88f3ff11b","index":37300},"timestamp":1645700038,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x62696c616c7465737435)","execution_cost":{"read_count":16,"read_length":44010,"runtime":167230,"write_count":2,"write_length":161},"fee":647210,"kind":{"data":{"args":["0x627463","0x62696c616c7465737435"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040031ca990c19be7e69ad0ea4ec695f267adc528d580000000000000000000000000009e02a0000d1dcf3dda4b2e4be5ec3ef3bebb1bdef527617badad92148741293171c86590c340db48605668cfb54452f271464b61d3cee3640b033f738bf2ee0483d819da7030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000a62696c616c7465737435","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000028604686173680200000000086d657461646174610c00000004046e616d65020000000a62696c616c7465737435096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a31ca990c19be7e69ad0ea4ec695f267adc528d58","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STRWN68C36Z7WTDD1TJERTAZ4SXDRMMDB29M4VNQ","success":true},"operations":[],"transaction_identifier":{"hash":"0xe8f0645d0f44ecdb5ff89fdf05420e35872b98e075693c543434ff280c8fd452"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x0cf921dc1611da47205bcdd39bae4ece21aa74abed66da29f9cc4ec29751f214","index":37308},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000002c6db7e6665c8a656e2a22bf6476681b802c57028fb671bd8d439daa","index":2163578},"confirm_microblock_identifier":{"hash":"0xe2a978935c69d330fb85bdfef51f6f1e90c155d1c65a3107ea8848d7683a3b94","index":1},"pox_cycle_index":155,"pox_cycle_length":1050,"pox_cycle_position":827,"stacks_block_hash":"0xe8b5924829401ac25fe018b89e46f332521fee8c615457eb99d3347f7c23e454"},"parent_block_identifier":{"hash":"0xc4b083e652a3be279372c3afafb3023a2ee6b1f33e1d240e211c5e4c265b3057","index":37307},"timestamp":1645703401,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x62696c616c7465737437)","execution_cost":{"read_count":16,"read_length":44010,"runtime":167230,"write_count":2,"write_length":161},"fee":258973,"kind":{"data":{"args":["0x627463","0x62696c616c7465737437"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400796d0666b80b9ee13014d8105f218d536d6d86e80000000000000000000000000003f39d0000a6ba7047583a9309c2f54e7374ad36536439b38748723fbabb1428e225a1dc5b3fd3f56d72d8b4c0f2044cdd6054efea5a83d451cb303326218bf4d70cd205ad030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000a62696c616c7465737437","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000028a04686173680200000000086d657461646174610c00000004046e616d65020000000a62696c616c7465737437096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a796d0666b80b9ee13014d8105f218d536d6d86e8","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1WPT1K6Q05SXR9G2KC10QS1HN9PTVC6X0D4HMRM","success":true},"operations":[],"transaction_identifier":{"hash":"0x8f3aa612745142c0d533a1ae6575acbcfd41787f37036454d4851922e58de13a"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xddbdd792ee79c04b3bcb3aa89188ae56aaf5aedbfb3bdd74bc3436e6a99c8d88","index":37796},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000004577d9bce43e9f735036d5c2a430d1dc5bf419a1b51443976115","index":2164122},"confirm_microblock_identifier":{"hash":"0xb1018bce5c4169395733171c010a3cf5fa0465e23d77b112dd7ad8afbb1dc7eb","index":2},"pox_cycle_index":156,"pox_cycle_length":1050,"pox_cycle_position":321,"stacks_block_hash":"0x5516f85184d981167b84053498556ea672b1b9824f097809c26ed1f273eb5464"},"parent_block_identifier":{"hash":"0x42e9cb600030af1e7b0efda3a1c2ab9ccd22575eee955cb76419e9da54cc2d22","index":37795},"timestamp":1646031044,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7374787472616e736665727465737431)","execution_cost":{"read_count":16,"read_length":44028,"runtime":167464,"write_count":2,"write_length":167},"fee":2000000,"kind":{"data":{"args":["0x627463","0x7374787472616e736665727465737431"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":1,"position":{"index":2},"proof":null,"raw_tx":"0x8080000000040099af17b22ae4df3046aee64e7155a0b122921341000000000000000100000000001e84800001be3e5d15f50bae33a11f92f55ace773a2445da3ed3198d8578efd90bec5af8ef54060778750a6bef99de969efa1e4d9f4f1116bde3ab795587515538f15af9cc030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000107374787472616e736665727465737431","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000029604686173680200000000086d657461646174610c00000004046e616d6502000000107374787472616e736665727465737431096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a99af17b22ae4df3046aee64e7155a0b122921341","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2CTY5XJ5BJDYC26NVK4WWANM2RJ54GK8446NQ3Q","success":true},"operations":[],"transaction_identifier":{"hash":"0x9864b2faecd597f22f59c586a8ded4796ac16d10f3038469f6d92de27bf25acd"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xac1664bf59cbbe5131776da8867edf70c0ef0b8dcda01a7378bf84874161255a","index":37936},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000116972c082da7cedb2c0a3a4d434288c0f1aa4e144d3fe1064c","index":2164276},"confirm_microblock_identifier":{"hash":"0x30d64e6439507ce9b44fddecf35e81ec52d9907197633b7d66d700a0d5c04467","index":0},"pox_cycle_index":156,"pox_cycle_length":1050,"pox_cycle_position":475,"stacks_block_hash":"0xdbf4f7797379222ca573fd4be2df3788fe8b18e8df77f9366a2e450c4bf9aafb"},"parent_block_identifier":{"hash":"0xdde4ff994bd6c8b3c2d2e800d6e8f1757cc1be874c773890e530c8b4b5ed73e7","index":37935},"timestamp":1646116205,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7374726970657472616e736665727465737432)","execution_cost":{"read_count":16,"read_length":44037,"runtime":167581,"write_count":2,"write_length":170},"fee":750000,"kind":{"data":{"args":["0x627463","0x7374726970657472616e736665727465737432"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400e515d5f26f0d9cc8aa2ad82c33edbf9aea482368000000000000000300000000000b71b00000ee01ac63c4a6cafaf90c80959a47833323b6a18ad56b6e9d61dc1d412a60848f376eba3bb6ea6f4dbdd6e312b398c69c67621e067546d2c6774fdb77b053deff030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000137374726970657472616e736665727465737432","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000029d04686173680200000000086d657461646174610c00000004046e616d6502000000137374726970657472616e736665727465737432096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ae515d5f26f0d9cc8aa2ad82c33edbf9aea482368","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3JHBNFJDW6SSJ5A5BC2RCZDQYDEMJ13D2YAWCPW","success":true},"operations":[],"transaction_identifier":{"hash":"0x77928a23464d9664fcdfe6399809fb6ba9567b6b22e30aa7f320f0806dd1c1ce"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xc969723e419b7daa1fb2ebc1271cf0eed1f51194b4ec82cf99f54aa92c0df19a","index":37955},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000011961cb6474e3cea3942bf20366cc83961f36172f575761f9b0","index":2164297},"confirm_microblock_identifier":{"hash":"0x3710525e29828eebc7be2a8f07080eb5b9889cf7ff74c5f83f5a8b532213ee49","index":1},"pox_cycle_index":156,"pox_cycle_length":1050,"pox_cycle_position":496,"stacks_block_hash":"0x43e5b294c2dc5e5dcaa5eaa68825a5f1250d343dd58d51567798063be7d264d5"},"parent_block_identifier":{"hash":"0xd08dd8a8d4e5c67d32a5bb1473d56eaacb2c80ee4f1393c9846f423cc05eb4a6","index":37954},"timestamp":1646120327,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6d696e6168696c)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":747526,"kind":{"data":{"args":["0x627463","0x6d696e6168696c"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004005d39d62a20ebfa2473ae9426ad94a6dce633aaf4000000000000000200000000000b680600014b571da2dbb60f7cd6ae4e595729927636bbb506f2d950509ceea13b5847a7f34895a7d3f4579946f9c68a0c34c4b715fc44ed574bcab950736200472567c356030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000076d696e6168696c","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000029e04686173680200000000086d657461646174610c00000004046e616d6502000000076d696e6168696c096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a5d39d62a20ebfa2473ae9426ad94a6dce633aaf4","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1EKKNHA43NZM93KNTA2DBCMMVEECCXAYGSBT6V4","success":true},"operations":[],"transaction_identifier":{"hash":"0x55fa39332b08958a46cae402fd4c788f5b632367995a22dfe08eacf18d77fc15"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xa315328351d31dfafbe3a90a9eb3512f24f0c3b68cbcc0bb78135bf9860dfcc9","index":37994},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000008960cb1d1395085e3e11dbce4e2d16040688e603b92d488696","index":2164341},"confirm_microblock_identifier":{"hash":"0x9571a5f59b64ca955ce251d7de9dd48c1d5fd516dcea574e68f6d29a4d5f598e","index":0},"pox_cycle_index":156,"pox_cycle_length":1050,"pox_cycle_position":540,"stacks_block_hash":"0x02eb5a917d5be1d2d63cd832d72ee6a2c800d6a4a37a72e49a6bf464f26fd97b"},"parent_block_identifier":{"hash":"0x5ac42349b3b95c1f08210450751107f364fcfaf3a2752684e2f5936bd0d7fffd","index":37993},"timestamp":1646138342,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6c6f63616c7374787472616e736665727465737432)","execution_cost":{"read_count":16,"read_length":44043,"runtime":167659,"write_count":2,"write_length":172},"fee":2000000,"kind":{"data":{"args":["0x627463","0x6c6f63616c7374787472616e736665727465737432"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400a1c83b45a8a03671012855eb0331b30054bed648000000000000000000000000001e84800001b2f45dc31b065678f1421da4f49ccf46b78d0e5e03843bb8f18c8f3595ce0c7639462c985b36ad5b03739dbe4cee4127b63b92271c17245ab8dddf78b70988a3030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000156c6f63616c7374787472616e736665727465737432","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000002a604686173680200000000086d657461646174610c00000004046e616d6502000000156c6f63616c7374787472616e736665727465737432096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aa1c83b45a8a03671012855eb0331b30054bed648","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2GWGET5N2G3CW8151AYP0SHPC059FPP91EFX15G","success":true},"operations":[],"transaction_identifier":{"hash":"0x8f702f61576a38de612cd00cfccd3fc44384ae3ebbb3d89199c5b0825d5f3353"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xd7c77e4d6b026c6a455780cf18dabdaa34f0fb8e76189e4e7c094a63a8a21488","index":37997},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000002a949f2ff534e85bf2a9b1e3c2c9d0742cd349063cf3c2cecf2","index":2164344},"confirm_microblock_identifier":{"hash":"0x0606c525ec73801686d16f8b075b7062bcb6adc56f66adc6a7bc36d6c54a661d","index":0},"pox_cycle_index":156,"pox_cycle_length":1050,"pox_cycle_position":543,"stacks_block_hash":"0x3667a944dac2e7081dfd6fba9df8be248cc4847d183e8aaf741eceafd88efb8d"},"parent_block_identifier":{"hash":"0x6a7cc63a138db3e2ca5954d1adebe4dcdee736a1ccd226c95cdbe9e33d1407a0","index":37996},"timestamp":1646140393,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6c6f63616c73747864656c6574657465737431)","execution_cost":{"read_count":16,"read_length":44037,"runtime":167581,"write_count":2,"write_length":170},"fee":1953091,"kind":{"data":{"args":["0x627463","0x6c6f63616c73747864656c6574657465737431"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400e16c694deb07a00c878f6026a2d43da11787e45f000000000000000200000000001dcd4300016773f9b84261ff067c32b9540b663521f843e3bd19440a78c96a0d4535eed75e780c4fce7a93290d12486f0df2ca4df513ad7275ca98f9dc2916462f848e0663030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000136c6f63616c73747864656c6574657465737431","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000002a804686173680200000000086d657461646174610c00000004046e616d6502000000136c6f63616c73747864656c6574657465737431096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ae16c694deb07a00c878f6026a2d43da11787e45f","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3GPRTADXC3T0347HXG2D8PM7PGHF1Z4BWN02F0F","success":true},"operations":[],"transaction_identifier":{"hash":"0xd9bfe8cc04552f69eed9a6eee03a68cf06a44da8a3cc0999ca4b53be558b9557"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xc31801f5b3279cdacbea88986f813b773d3b3a91447791abf658bc084da33578","index":38003},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000002ebcc3b6c40e4787332f5e9c444fd2990f0ff8b1df07121a179","index":2164350},"confirm_microblock_identifier":{"hash":"0xd80ec96750ba7c7ae7ab8d29b2369a3604eb7dbedae904c3055abd09a73f0789","index":2},"pox_cycle_index":156,"pox_cycle_length":1050,"pox_cycle_position":549,"stacks_block_hash":"0xf1038bb5d6c36aa2b04684db1346b60e509fc7ff27cccd52f8733b12d8e48a62"},"parent_block_identifier":{"hash":"0x6aaf0551cfd9b0209d204c915e8c3db6a5846c957d2522a3a0503e25a242e2bd","index":38002},"timestamp":1646142831,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6c6f63616c73747864656c6574657465737432)","execution_cost":{"read_count":16,"read_length":44037,"runtime":167581,"write_count":2,"write_length":170},"fee":2000000,"kind":{"data":{"args":["0x627463","0x6c6f63616c73747864656c6574657465737432"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400b5936ca475358fa4fc493085f5b0a718d3ceff02000000000000000200000000001e84800000c2391475075268f7b7ec594393f1d121b4a56698bc8d46d8d539a9d54df7b9fc59ee8e597711e20838803ae6a8a6b41e1082f23efd8d4e2d21c4022ebf06c2bd030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000136c6f63616c73747864656c6574657465737432","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000002ab04686173680200000000086d657461646174610c00000004046e616d6502000000136c6f63616c73747864656c6574657465737432096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ab5936ca475358fa4fc493085f5b0a718d3ceff02","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2TS6V54EMTRZ97W94R8BXDGMWCD7KQZ09GAQ5DQ","success":true},"operations":[],"transaction_identifier":{"hash":"0x28be82b59c7bf9806a936c68d212633d942f802e5081fbbd6cf520deb80e44bc"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x6d0a3b6fd94b4af4fa3eda026991e6fb105411510ba211dd30586209a0a457f6","index":38140},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000353326ba2aae2ed38bf339514fdff7207f9fe74280c520407a41","index":2164494},"confirm_microblock_identifier":{"hash":"0xb6ab2970ba22b2675cc41a641f814f7c5ee8c9def9adf9026504a6fb8305bd3c","index":4},"pox_cycle_index":156,"pox_cycle_length":1050,"pox_cycle_position":693,"stacks_block_hash":"0x37f42797f0d7fe692dee63f63f03b54b083088827d5d63ceeeac54f786dbe295"},"parent_block_identifier":{"hash":"0x365c9d421c25b16e7082f94b6a731d5b689f05743fa27a2b34374e81cba4493f","index":38139},"timestamp":1646232785,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7374726970657472616e736665727465737433)","execution_cost":{"read_count":16,"read_length":44037,"runtime":167581,"write_count":2,"write_length":170},"fee":367700,"kind":{"data":{"args":["0x627463","0x7374726970657472616e736665727465737433"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":4},"proof":null,"raw_tx":"0x8080000000040073c2f85ada2f042df9bfe09d5198cbac07a6df5000000000000000000000000000059c540001938e9f21a6215215b744812519ecccdfbd03eb38c85b61a5b9c62a7edc1deb235e1a1f97e8e5ce1c491c5b2a175a8d06c5ec7e6b890b7ee1ea803f369b26c03d030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000137374726970657472616e736665727465737433","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000002b304686173680200000000086d657461646174610c00000004046e616d6502000000137374726970657472616e736665727465737433096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a73c2f85ada2f042df9bfe09d5198cbac07a6df50","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1SW5Y2TV8QG8BFSQZG9TMCRSEP0F9PZA3D23JVN","success":true},"operations":[],"transaction_identifier":{"hash":"0x45c59e3faa4ee03a24507237250816c4b42418594ed3e2b39896ec1f23f63bad"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xf8b0313bf671fdac4fa04a8f9633af8d111c77a91f2aa60544d304158b0a0c77","index":40256},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000008ee2d745ecf627ae38ffcd4da1525e94bdbd60f19e6cd8182496","index":2189759},"confirm_microblock_identifier":{"hash":"0xd703fdb45e838f1208d7c3b8044173c1815070437e77256a8813297901767d79","index":4},"pox_cycle_index":180,"pox_cycle_length":1050,"pox_cycle_position":758,"stacks_block_hash":"0xc2b2eec18aca5adc3462a8aa79ffef8fd6370c26d89b800cb371726016176b9d"},"parent_block_identifier":{"hash":"0x9c40b4d08af235be97b843dee067182c286da6e9219865857b5ee1a462d825c5","index":40255},"timestamp":1647254607,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6c6f63616c73747269706564656c6574657465737433)","execution_cost":{"read_count":16,"read_length":44046,"runtime":167698,"write_count":2,"write_length":173},"fee":1750734,"kind":{"data":{"args":["0x627463","0x6c6f63616c73747269706564656c6574657465737433"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":1,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400e6a0ee61f880917471f2586e7c4a7167e74c4b89000000000000000100000000001ab6ce0001371d656c118dde30ad3fb3f97ea6c1947b84f683126449029611f0f9f94dc7fc0019b510af002c7db5244c49d90738a216aba4e9d874751cc19dca9e09730614030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000166c6f63616c73747269706564656c6574657465737433","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000002bf04686173680200000000086d657461646174610c00000004046e616d6502000000166c6f63616c73747269706564656c6574657465737433096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ae6a0ee61f880917471f2586e7c4a7167e74c4b89","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3KA1VK1Z2092X3HY9C6WZ2AE5KYEK2BH6GKW9AH","success":true},"operations":[],"transaction_identifier":{"hash":"0x7e086afb58b448ceaf40fa9f0b2fa8cc19ebc18f72a24adc2d889c273aca6ed1"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x968689aae3da66b4e4900dea74aa3f8ec72c42392a0cd6d1671f6a856fde66de","index":40268},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000664d26798781e7ae9242092177179ca8f9597e7fcdc3e4f2359751e1","index":2189775},"confirm_microblock_identifier":{"hash":"0x34934fa98346f313d9a542e5e6d6b4a904e2b8d8b1ef5ab6065d80a975cceed9","index":4},"pox_cycle_index":180,"pox_cycle_length":1050,"pox_cycle_position":774,"stacks_block_hash":"0xc8445beb575b76a76f1e5aeee59147e2cf0756f05754bc1e0759a0578a619eea"},"parent_block_identifier":{"hash":"0xd5e7076503fc2db58c51df4fd00ca4531a54d8a89cea190d54733a708399e19b","index":40267},"timestamp":1647265494,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6c6f63616c7374726970657472616e736665727465737439)","execution_cost":{"read_count":16,"read_length":44052,"runtime":167776,"write_count":2,"write_length":175},"fee":2000000,"kind":{"data":{"args":["0x627463","0x6c6f63616c7374726970657472616e736665727465737439"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400ca06401043d2acd250e09e761c1a78b7641fc3b5000000000000000000000000001e848000004e96e54055d3e4ed23c0213c49009b5965dae641cfc90e59801707130d0cbb8a28e5fddb2e16adcbe4beaa61fdac1da874076b72f303ca37b63e47254087263b030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000186c6f63616c7374726970657472616e736665727465737439","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000002c104686173680200000000086d657461646174610c00000004046e616d6502000000186c6f63616c7374726970657472616e736665727465737439096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aca06401043d2acd250e09e761c1a78b7641fc3b5","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST350CG0G8F9ASMJGW2F7C70TF2VP87Y3PP07KYX3","success":true},"operations":[],"transaction_identifier":{"hash":"0x65476d165339ba1f6d5ab40eb4ef52bc82927a3c23688c6451c7297366435c21"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6c6f63616c7374726970657472616e736665727465737439)","execution_cost":{"read_count":12,"read_length":44023,"runtime":132276,"write_count":0,"write_length":0},"fee":2000000,"kind":{"data":{"args":["0x627463","0x6c6f63616c7374726970657472616e736665727465737439"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":1,"position":{"index":4},"proof":null,"raw_tx":"0x80800000000400ca06401043d2acd250e09e761c1a78b7641fc3b5000000000000000100000000001e8480000050210493cb8040b3bb9a2685b7a477c496240c6d4318ebb5207e016d029aab5577d6db78d6b1565558bdf259dcd13f1ee586e696f5688cb53a85c51ed85d5d6a030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000186c6f63616c7374726970657472616e736665727465737439","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST350CG0G8F9ASMJGW2F7C70TF2VP87Y3PP07KYX3","success":false},"operations":[],"transaction_identifier":{"hash":"0xbb0ab06bc4a635ba9c46f038f87480546f20b22f4c9f3153dd7b0b064babcf2c"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6c6f63616c7374726970657472616e736665727465737439)","execution_cost":{"read_count":12,"read_length":44023,"runtime":132276,"write_count":0,"write_length":0},"fee":750000,"kind":{"data":{"args":["0x627463","0x6c6f63616c7374726970657472616e736665727465737439"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":6},"proof":null,"raw_tx":"0x80800000000400ca06401043d2acd250e09e761c1a78b7641fc3b5000000000000000200000000000b71b00001b24549ebeca0de1f2169dd7c5bb3a150a814a0770cc33e7af4f947bd51713bb91a99c3a99faa6d063ec1f9a2a4319af134f3f82d499c24a0850208acee31e9e4030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000186c6f63616c7374726970657472616e736665727465737439","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST350CG0G8F9ASMJGW2F7C70TF2VP87Y3PP07KYX3","success":false},"operations":[],"transaction_identifier":{"hash":"0x431ffe01eb1f763a579b06ce008ca390b2e75938006c5f0b956f39d39f101ab5"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xe73aa5efa051a05310c9a253fec59a423664be35fbed27cc34da2127eb7de2ac","index":40269},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000002beace52c412dbcb53d05915c0ff361ddefa576b024d7ad6eb1168","index":2189776},"confirm_microblock_identifier":{"hash":"0xee0c01e94025def1aee806e1703e032458f3a39df96598a310cfd3537550c15e","index":0},"pox_cycle_index":180,"pox_cycle_length":1050,"pox_cycle_position":775,"stacks_block_hash":"0x7c625dfa21d31016f934911ee7bf3bca1df0b05cad7dc1a39e3cf362fd11760c"},"parent_block_identifier":{"hash":"0x968689aae3da66b4e4900dea74aa3f8ec72c42392a0cd6d1671f6a856fde66de","index":40268},"timestamp":1647266713,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6c6f63616c73747864656c6574657465737433)","execution_cost":{"read_count":16,"read_length":44037,"runtime":167581,"write_count":2,"write_length":170},"fee":750000,"kind":{"data":{"args":["0x627463","0x6c6f63616c73747864656c6574657465737433"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400e6a0ee61f880917471f2586e7c4a7167e74c4b89000000000000000400000000000b71b00001bc1e5b6b9cf74e8394c1ee9deb4dfedcbe0e8cf8cc0f18001ef32e03aec477257d01d7787e51fd7de6b02db66835f0b02323e9932ea9aa0b7ba5fdb77a10cdac030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000136c6f63616c73747864656c6574657465737433","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000002c204686173680200000000086d657461646174610c00000004046e616d6502000000136c6f63616c73747864656c6574657465737433096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ae6a0ee61f880917471f2586e7c4a7167e74c4b89","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3KA1VK1Z2092X3HY9C6WZ2AE5KYEK2BH6GKW9AH","success":true},"operations":[],"transaction_identifier":{"hash":"0x350c8c4defd7d8a9aced3251b78a30c7e0ce63a2c61b88095f50ed63401ad427"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xaf77348be9b7faeea1237f4493dbcb8566874db1da77fc6634f5b896949c24ab","index":40352},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000009f5a0b363a527ff1beef7782cfe97537b53afbc5327d7a315","index":2189868},"confirm_microblock_identifier":{"hash":"0xb91d07506332df50d8416b30f6c2b5cfad1eb891da9e66660c13d23720091f90","index":4},"pox_cycle_index":180,"pox_cycle_length":1050,"pox_cycle_position":867,"stacks_block_hash":"0xcbea11871712b0fb2a70849daf4f708c149ecdeecda126ce803a7a1449c32e9e"},"parent_block_identifier":{"hash":"0x64a89c88ede391678084135ee4caa72d9a1e6b43b9cbc222f91424c44d5250a5","index":40351},"timestamp":1647326106,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6c6f63616c73747864656c6574657465737434)","execution_cost":{"read_count":16,"read_length":44037,"runtime":167581,"write_count":2,"write_length":170},"fee":1780661,"kind":{"data":{"args":["0x627463","0x6c6f63616c73747864656c6574657465737434"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":7,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400e6a0ee61f880917471f2586e7c4a7167e74c4b89000000000000000700000000001b2bb500015ccdc851eb34a25f7abc1c72b12bfda0116785c73eabd68770703298306ee9c60cedd9c245ee035b7c664f02c8240e3fd90a72a4a24dd0abcced9c2448a9b6b2030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000136c6f63616c73747864656c6574657465737434","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000002c404686173680200000000086d657461646174610c00000004046e616d6502000000136c6f63616c73747864656c6574657465737434096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ae6a0ee61f880917471f2586e7c4a7167e74c4b89","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3KA1VK1Z2092X3HY9C6WZ2AE5KYEK2BH6GKW9AH","success":true},"operations":[],"transaction_identifier":{"hash":"0x4fe4808b32d8219ebc7505428496250795932e4c34e16765ec83435995bae7a4"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x93739e672ffeed02c8c4d7b6aaf1b1096a4d58dcc812ba78efa7e2340ae9833f","index":40355},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000cf3bf62859e645dab36d18f0551b3ca785ba13f9c7b002a655","index":2189871},"confirm_microblock_identifier":{"hash":"0xdbe80dd4767e7161c303e6dde1151c1bd36d19234bbb5748d174a5db0141ac0a","index":1},"pox_cycle_index":180,"pox_cycle_length":1050,"pox_cycle_position":870,"stacks_block_hash":"0x0b0126c07875869934b9d912b085367b6e418523382bf0241248ac08b1d84291"},"parent_block_identifier":{"hash":"0x5fbf40e4146b41baf9a4f538924512b36b94185c6a40cc2eedb004b9587418ab","index":40354},"timestamp":1647327683,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6c6f63616c73747864656c6574657465737435)","execution_cost":{"read_count":16,"read_length":44037,"runtime":167581,"write_count":2,"write_length":170},"fee":2000000,"kind":{"data":{"args":["0x627463","0x6c6f63616c73747864656c6574657465737435"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400228e003a74845014e9f63f11741609a862a98c24000000000000000200000000001e84800001a25487d21f0f980ceacf786265639140b375ea59ccf65301861822bab125f82523f9a4e88a7a536336bbd98cb7959c8f5630dd7a89c648be571aa09bb893e922030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000136c6f63616c73747864656c6574657465737435","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000002c604686173680200000000086d657461646174610c00000004046e616d6502000000136c6f63616c73747864656c6574657465737435096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a228e003a74845014e9f63f11741609a862a98c24","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STH8W01TEJ250579YRZH2X0P16M65ACC4KVH6DG5","success":true},"operations":[],"transaction_identifier":{"hash":"0xafce58dee5732f27d0e02090860b5cc2aa0684ce1513df78a15f88627beb0159"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x1010c35f960a2b6c5bdf326b452a7ffaad422934b6f540cdae811a75d5ca9730","index":40358},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000d57ba7d86fe528873536784db7e0f8da9c884e9492da2feecc","index":2189874},"confirm_microblock_identifier":{"hash":"0x8d44a2bd57ca109c5df0518c0fc2950fb7955879b3c5a8b164910e6d570ceab2","index":3},"pox_cycle_index":180,"pox_cycle_length":1050,"pox_cycle_position":873,"stacks_block_hash":"0x445731db127d953973e562d3800c16df505b121dbd8af689cd0faaefc60de7b6"},"parent_block_identifier":{"hash":"0x3d23e3cca7242014ad4412101d18e2632d70975d82ab3e1968572049b462ca94","index":40357},"timestamp":1647328574,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6c6f63616c73747864656c6574657465737436)","execution_cost":{"read_count":16,"read_length":44037,"runtime":167581,"write_count":2,"write_length":170},"fee":2000000,"kind":{"data":{"args":["0x627463","0x6c6f63616c73747864656c6574657465737436"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":5,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400228e003a74845014e9f63f11741609a862a98c24000000000000000500000000001e84800001332d39b932d24580e9694fca88401fb819ca9ca57568ff265761d62f3e4cf86515c38865fd0d3216909caaff6461b844295786afa07a8161a45d9df67e7de2dd030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000136c6f63616c73747864656c6574657465737436","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000002c804686173680200000000086d657461646174610c00000004046e616d6502000000136c6f63616c73747864656c6574657465737436096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a228e003a74845014e9f63f11741609a862a98c24","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STH8W01TEJ250579YRZH2X0P16M65ACC4KVH6DG5","success":true},"operations":[],"transaction_identifier":{"hash":"0xf8a8ec5f1c505608d4f50772db4dc11b83e4b6a97c4ef231aec0a814d6d8cf41"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x74817068f94d62402a4514e0257bb59817ab073a16df4f7c09b35d84479d072b","index":40363},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000048a635cf4722a85e76b8c0287123400c8ea1f1465128b045a8","index":2189880},"confirm_microblock_identifier":{"hash":"0x77e18eb64bba9b1bd117fe191a0fb94f1732692178c07b4428e42455ecdeabb3","index":1},"pox_cycle_index":180,"pox_cycle_length":1050,"pox_cycle_position":879,"stacks_block_hash":"0x0d85ce7fd3e846d25a25589cf433eb7b0d344fae415d1d0fbe0deda9761a5135"},"parent_block_identifier":{"hash":"0xc6877789f8a641f0c5a9c498bcd0cfe0f4d8585ffb1e05b1d433ecff5b5d3da8","index":40362},"timestamp":1647332162,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6c6f63616c73747864656c6574657465737437)","execution_cost":{"read_count":16,"read_length":44037,"runtime":167581,"write_count":2,"write_length":170},"fee":1742238,"kind":{"data":{"args":["0x627463","0x6c6f63616c73747864656c6574657465737437"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":8,"position":{"index":4},"proof":null,"raw_tx":"0x80800000000400228e003a74845014e9f63f11741609a862a98c24000000000000000800000000001a959e0001e1d9407474ba263d7adbdd39aa30539219f4f35aa059b7e9c1ad330e7e48ccb4182eea46e31797d4885d427b8ae06f4835e8f56a0df52376c0ee348af010eb8b030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000136c6f63616c73747864656c6574657465737437","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000002ca04686173680200000000086d657461646174610c00000004046e616d6502000000136c6f63616c73747864656c6574657465737437096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a228e003a74845014e9f63f11741609a862a98c24","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STH8W01TEJ250579YRZH2X0P16M65ACC4KVH6DG5","success":true},"operations":[],"transaction_identifier":{"hash":"0x3114b53fbe12ecc47e391a3b6b4b23d67c939e5c86ff1ad1870c2e398b56c02d"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xa70fd979df52d0f1b6e0ee794833161b92c4f511872435dda58a9da34d2565fb","index":40367},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000337707ae8e8c26b1a6c54dc4432d6c7dd2d1f70c6cb0b2754f","index":2189886},"confirm_microblock_identifier":null,"pox_cycle_index":180,"pox_cycle_length":1050,"pox_cycle_position":885,"stacks_block_hash":"0xea8607c1facd5bc68e2d8db883a7f69010548f74992da0820902cdd74a62fab3"},"parent_block_identifier":{"hash":"0x20a1aceaf6087bb1e19245da52864b722ce235019f29169fc81d6e7c3e533412","index":40366},"timestamp":1647334206,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6c6f63616c73747864656c6574657465737438)","execution_cost":{"read_count":16,"read_length":44037,"runtime":167581,"write_count":2,"write_length":170},"fee":2000000,"kind":{"data":{"args":["0x627463","0x6c6f63616c73747864656c6574657465737438"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":11,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400228e003a74845014e9f63f11741609a862a98c24000000000000000b00000000001e84800000d9b0f8e0ed7d8304e7a430e3ba0b0d0c92d9da2746f548fe3d3d3f2f72eb6e3c0f38e58ace2fbfee03244761c122beb79b2b54efd934e58e4aefd3d7fe026cf5030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000136c6f63616c73747864656c6574657465737438","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000002cc04686173680200000000086d657461646174610c00000004046e616d6502000000136c6f63616c73747864656c6574657465737438096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a228e003a74845014e9f63f11741609a862a98c24","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STH8W01TEJ250579YRZH2X0P16M65ACC4KVH6DG5","success":true},"operations":[],"transaction_identifier":{"hash":"0x68079b809fd384435f9180406441d2276ca9cc4395e4f0955082dcae4878485c"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x6c0cfe85bc95d97bdcf1f228aa7c88a95dd312d2854db3a2bfa073684022893b","index":40383},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000a4ae1f1fe3301244e01bd5ae1dd82b065ae9fb826c11e5cb7398","index":2189904},"confirm_microblock_identifier":{"hash":"0xb9bd4a3835879cba51ac067fbeb8326a09af86938ebfd85c876f5ebaff8fac28","index":3},"pox_cycle_index":180,"pox_cycle_length":1050,"pox_cycle_position":903,"stacks_block_hash":"0xe159282762a63a1cc3b46518377aab5a42637a93a12655f2fb397054c4c318e2"},"parent_block_identifier":{"hash":"0x45a975de6757ada62af3fa8161c08aff8e66fe006a6236fd9f81c3cd62f2061e","index":40382},"timestamp":1647346317,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6c6f63616c73747864656c6574657465737439)","execution_cost":{"read_count":16,"read_length":44037,"runtime":167581,"write_count":2,"write_length":170},"fee":2000000,"kind":{"data":{"args":["0x627463","0x6c6f63616c73747864656c6574657465737439"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":14,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400228e003a74845014e9f63f11741609a862a98c24000000000000000e00000000001e84800001533f73484cba2efeb45a14df8642847d0a4c339f1385fa9bc90d21765115dcc158dffda5c1f3498786c6aaba45801799a634c04a5ee54e361891156fbc4f89c6030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000136c6f63616c73747864656c6574657465737439","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000002ce04686173680200000000086d657461646174610c00000004046e616d6502000000136c6f63616c73747864656c6574657465737439096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a228e003a74845014e9f63f11741609a862a98c24","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STH8W01TEJ250579YRZH2X0P16M65ACC4KVH6DG5","success":true},"operations":[],"transaction_identifier":{"hash":"0x5c2c6607393881797c0d217dcb60e20967442f6c6ed098cfdc68fdf42104edd7"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x71cb2e89e6f5e22d0c95df016dd4c8c1bbc12e7f9947d74c0abc119a8a6898c9","index":40387},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000089bfc843cb404ca005a02409211ac2781cde4c398b268a2e03","index":2189908},"confirm_microblock_identifier":{"hash":"0x0a5890fd184a0bdcb76733a28429199a2c0f1ff0251ad24dee9979bdf74b33e7","index":0},"pox_cycle_index":180,"pox_cycle_length":1050,"pox_cycle_position":907,"stacks_block_hash":"0x18f311ae02f2b58b38788f1f5358adfd89198b7d4986322123c1966454f06d1e"},"parent_block_identifier":{"hash":"0x625968223859355eac4a459bf4a8bed697a2f1bf0e27b553e2b875084d2d2243","index":40386},"timestamp":1647349591,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6c6f63616c73747864656c657465746573743130)","execution_cost":{"read_count":16,"read_length":44040,"runtime":167620,"write_count":2,"write_length":171},"fee":1159036,"kind":{"data":{"args":["0x627463","0x6c6f63616c73747864656c657465746573743130"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":17,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400228e003a74845014e9f63f11741609a862a98c240000000000000011000000000011af7c000021343a40f39f7eeaff6ea8d0f635b8ac7df2213d8480f68b2d3e55de5c7a9bc66be7e32314e524e7f98eef4c4c33523562895b8ba879d7f998e560fde783edbf030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000146c6f63616c73747864656c657465746573743130","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000002d004686173680200000000086d657461646174610c00000004046e616d6502000000146c6f63616c73747864656c657465746573743130096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a228e003a74845014e9f63f11741609a862a98c24","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STH8W01TEJ250579YRZH2X0P16M65ACC4KVH6DG5","success":true},"operations":[],"transaction_identifier":{"hash":"0xd70ae171b7d7d2876298d497a823152dc94a08a46c8e759e2ce20533625c9af6"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x5673874538202524b6ca7e1f7341c4d95ca229f3ade378609e7ae7d73222be0c","index":40390},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000bdd209b7b4d010dd0f06e7beb2769e50ff7e1f655fb558f317","index":2189912},"confirm_microblock_identifier":{"hash":"0x7e1b944ded47c65f81f9858f4f9fa82390d4aa75990d8d562bd5d008b1fca7f7","index":1},"pox_cycle_index":180,"pox_cycle_length":1050,"pox_cycle_position":911,"stacks_block_hash":"0x33d802401c2174f38e0f01ac61feb6cc99b91f5a3f4aa3720720b3a3c86c9b9f"},"parent_block_identifier":{"hash":"0x57fc7e8a14acda4c8395487cb9ab98f9f050dad75ff32d932f2041c801d349eb","index":40389},"timestamp":1647351632,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6c6f63616c73747864656c657465746573743131)","execution_cost":{"read_count":16,"read_length":44040,"runtime":167620,"write_count":2,"write_length":171},"fee":581137,"kind":{"data":{"args":["0x627463","0x6c6f63616c73747864656c657465746573743131"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":20,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400228e003a74845014e9f63f11741609a862a98c240000000000000014000000000008de1100006107c1d1297045991238d3efe4916b60a9188ff7dd1193549fb41d35daf2034d7ed06ab1e93ffea8db01c8c9d277ad5bc48707455bb10c261824f16c892d8e36030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000146c6f63616c73747864656c657465746573743131","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000002d204686173680200000000086d657461646174610c00000004046e616d6502000000146c6f63616c73747864656c657465746573743131096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a228e003a74845014e9f63f11741609a862a98c24","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STH8W01TEJ250579YRZH2X0P16M65ACC4KVH6DG5","success":true},"operations":[],"transaction_identifier":{"hash":"0xa196117d8c9858b513c5e118016ead8a0fb5976ba75a10cc84ccaf72c7407131"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xee302bccc2d524f3d3b6c24a32d44fe913acd2fd9f1cbae5729521d68db23901","index":40524},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000cfa1643ad734e2de426884a9ed139c37e5f2d92d52b28c1e6f","index":2190071},"confirm_microblock_identifier":{"hash":"0xdde93c7e4bf811789bedfd5d67d72b9795f357125a7e199675362b13ff9a07b8","index":4},"pox_cycle_index":181,"pox_cycle_length":1050,"pox_cycle_position":20,"stacks_block_hash":"0xd7f558e008421f6b723e5feae9892578c19b3e2d65ccf775303bef59729435a6"},"parent_block_identifier":{"hash":"0x7543902c09e1ed3b26849b770f3b0e8935d60097845053d075236673b126d635","index":40523},"timestamp":1647448379,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6c6f63616c73747864656c657465746573743132)","execution_cost":{"read_count":16,"read_length":44040,"runtime":167620,"write_count":2,"write_length":171},"fee":2761,"kind":{"data":{"args":["0x627463","0x6c6f63616c73747864656c657465746573743132"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":23,"position":{"index":5},"proof":null,"raw_tx":"0x80800000000400228e003a74845014e9f63f11741609a862a98c2400000000000000170000000000000ac9000026679dde2286c3921a9287cefbccbedf19b5facc53f280e6a4aa2989214122fb29bb151b14cd9ba0225236bdc88af93b424a24c121c07b4d4e11b70c0a17305e030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000146c6f63616c73747864656c657465746573743132","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000002d404686173680200000000086d657461646174610c00000004046e616d6502000000146c6f63616c73747864656c657465746573743132096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a228e003a74845014e9f63f11741609a862a98c24","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STH8W01TEJ250579YRZH2X0P16M65ACC4KVH6DG5","success":true},"operations":[],"transaction_identifier":{"hash":"0x0643b5c32f574bb75a54c980dd9ea6c30e65de602f528b1e29775bb7d5f8b31d"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x885071268aac4c98af90b9439914c6abc65636ebd5e0b24275865ece0b8ba5da","index":40643},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000046a9305060c39e6333790927dd3e4331398b0a42e428855cd3","index":2190207},"confirm_microblock_identifier":{"hash":"0x147a13cbde98176ad1a7f9f62075263b8c08debce9bbf5485c9ec3c447db8b3f","index":4},"pox_cycle_index":181,"pox_cycle_length":1050,"pox_cycle_position":156,"stacks_block_hash":"0x849eae9edf10f7593ac492706d2b6d1b7459d21471177325e5d651d968b216d7"},"parent_block_identifier":{"hash":"0x03d7413d5834a550c3037006c5e692800fc505324fe1bc727d4cffc1429475fa","index":40642},"timestamp":1647527579,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x737472697065636173653374657374)","execution_cost":{"read_count":16,"read_length":44025,"runtime":167425,"write_count":2,"write_length":166},"fee":2897,"kind":{"data":{"args":["0x627463","0x737472697065636173653374657374"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400af29d35bb578e683b6f73c4a2d906a7c4cca042100000000000000000000000000000b510000d94ddff4b142ddfc6ffcb9d14a1f52c736f49daccbe5cc8055ba22161f6c580777cbc14faf5d47cc8e4081cfcab40ad39e063530a87a237d806255931fd7c177030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000f737472697065636173653374657374","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000002e404686173680200000000086d657461646174610c00000004046e616d65020000000f737472697065636173653374657374096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aaf29d35bb578e683b6f73c4a2d906a7c4cca0421","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2QJKMTVPNWED0XPYWY4MBCGD9Y4SJG444K4M0G9","success":true},"operations":[],"transaction_identifier":{"hash":"0xf61fbe0e39f14665573a0699d20028c812fd7071fa653926f16858c4a4cb58dc"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xc3c472701ca97c7cfbc19b1306022ea08cf419936eb574569581f93a9ef7cb9b","index":40645},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000a4d9295b3964a9383797fe365baf48d8c8cad6f67dae6dadb1e65830","index":2190209},"confirm_microblock_identifier":{"hash":"0x95ca348867f4fe6b286639020aff272f1ce25679f5118144e77aaf89ffa3e43a","index":3},"pox_cycle_index":181,"pox_cycle_length":1050,"pox_cycle_position":158,"stacks_block_hash":"0x5930ea6ceb19863c431a84e6a6b77bf0e5b132c848370fdf88a2a017f63fced9"},"parent_block_identifier":{"hash":"0x173da37b7fa21b16a1ffcbb29c109b5feee9f272a24816f1cf8be9b20e914325","index":40644},"timestamp":1647529681,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x737472697065636173653474657374)","execution_cost":{"read_count":16,"read_length":44025,"runtime":167425,"write_count":2,"write_length":166},"fee":2773,"kind":{"data":{"args":["0x627463","0x737472697065636173653474657374"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400386135d2d957a2b8cc1098ac8913c1f69cf82e6000000000000000000000000000000ad5000090a3e6c02812bcaab818da0d0b983eb927eade895a4979f8060384f38baee0d537c2f9caaf810d08f09d6cc328fc0469d9a10353e57b47d46ab5c6e4fef00b0e030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000f737472697065636173653474657374","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000002e604686173680200000000086d657461646174610c00000004046e616d65020000000f737472697065636173653474657374096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a386135d2d957a2b8cc1098ac8913c1f69cf82e60","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STW62DEJV5BT5E6C22CAS28KR7V9SY1EC3EM31F3","success":true},"operations":[],"transaction_identifier":{"hash":"0xc57ffa3d73d6dc0479168773e1869fe2ab82b31f9e5cf2c10ff96719b512c774"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x60aa441ee0dfbaffd710c86b902730aa03710ccb29a892074f560120340c6467","index":40647},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000001ebb0129ed48f4303ecdee95c02d858503329b22fcf32e70d7","index":2190211},"confirm_microblock_identifier":{"hash":"0x0cdbd27b2602db5f25090ac996c69c6e46d0115de2c398522ee620ff20f1a903","index":4},"pox_cycle_index":181,"pox_cycle_length":1050,"pox_cycle_position":160,"stacks_block_hash":"0xe20634edaea39631745dd75c5f62ca246e6857cbeab99455e580f35cdcb6aed4"},"parent_block_identifier":{"hash":"0x93ffe4526dac0f22d4f5fe6c27a35e07599a793f7b251547743e3bdb2d510e93","index":40646},"timestamp":1647531537,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7465737432)","execution_cost":{"read_count":16,"read_length":43995,"runtime":167035,"write_count":2,"write_length":156},"fee":2367,"kind":{"data":{"args":["0x627463","0x7465737432"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004005c30844e4f5a432c403fe965eeae50d1d212736b0000000000000003000000000000093f0000ff03882249089e2ee0004dcd6259576174421a8b7d3ef74196f5e9161ba763c50cc4e7b04c7c7689d5352e30acbc6d1d72d3507031729ec0d72fad6a9d4958ac030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000057465737432","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000002e904686173680200000000086d657461646174610c00000004046e616d6502000000057465737432096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a5c30844e4f5a432c403fe965eeae50d1d212736b","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1E3112E9XD46B207ZMPBVNEA38X44KKDD2NVZJ2","success":true},"operations":[],"transaction_identifier":{"hash":"0xc0552ed3f2b6922509a60e1cd5353eaee9389b2d84b43dbdeb183cc67fc0ace7"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x9ca0a6594c1e18f4805804daefba075bed4091138c55b78292f79f104f727aaa","index":40656},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000340363c85158f11991806114c6e9e9f5eb953a2f4b55726602","index":2190220},"confirm_microblock_identifier":{"hash":"0x5f08e9dec736471348840ad0482becfc26501d3dd0f4e0ff7182b83a11dc4948","index":0},"pox_cycle_index":181,"pox_cycle_length":1050,"pox_cycle_position":169,"stacks_block_hash":"0x0b0a63079e9cb423604048fd593e9de47a228e074b6f8f758fadce739667c755"},"parent_block_identifier":{"hash":"0x212cb356b832fcea23d1cd862d58a2165d16efbe7dd634470ed14d09bdac71d4","index":40655},"timestamp":1647535851,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x737472697065636173653174657374)","execution_cost":{"read_count":16,"read_length":44025,"runtime":167425,"write_count":2,"write_length":166},"fee":519,"kind":{"data":{"args":["0x627463","0x737472697065636173653174657374"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":1,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400694d0ef8bec6d2717ecabc7536422fc9ca52c0f500000000000000010000000000000207000111570e0dd682492ccabcc211c0b417e5fd2dcc17d5091c6cdfa21e36d1ccc5166eb11150f077d9b3d95fc7134f9fe08e94c739cad03721b8176069fd34472224030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000f737472697065636173653174657374","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000002ee04686173680200000000086d657461646174610c00000004046e616d65020000000f737472697065636173653174657374096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a694d0ef8bec6d2717ecabc7536422fc9ca52c0f5","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1MMT3QRQV3D4WBYSAY7ADJ25Z4WMMP0YMNDNJMR","success":true},"operations":[],"transaction_identifier":{"hash":"0x989d0d3468cb2987f8868f8f69e8a87b51a45a401a3d95a868be30e7661c64ed"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xc4fac0b72f11af62fe1339111893ea18b40e558847c830b05532f6e16969bfcb","index":40741},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000008d1c33226f60830da272709a59d48b9764cc2021ad5fabd2dadc9","index":2190309},"confirm_microblock_identifier":{"hash":"0x5b61cb5fcba9c80dd1055745ec1a5c8ebd587412888ed675c693f16e7fa55234","index":4},"pox_cycle_index":181,"pox_cycle_length":1050,"pox_cycle_position":258,"stacks_block_hash":"0x0920516c7a3fe24b8465ea658918943a4b111908dc7b5217aae8da03d5e92074"},"parent_block_identifier":{"hash":"0x55f0bcb68375b0931f3d671d89002d3dfae8b6bbfe4c0129adc97eed69fa5120","index":40740},"timestamp":1647598807,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x636f6d62696e6564636173657465737431)","execution_cost":{"read_count":16,"read_length":44031,"runtime":167503,"write_count":2,"write_length":168},"fee":562,"kind":{"data":{"args":["0x627463","0x636f6d62696e6564636173657465737431"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":2},"proof":null,"raw_tx":"0x8080000000040002bd1e3094e4d11965385dd586af20a9cc8c1ec200000000000000020000000000000232000073d0b85691420e08f92bb3645c11562ae8e3f1b51edebbf03f26c7fcb6059f2e5af6f934991961a34ddfb6453afe6de6c7d249c4eec676048801109f03df09e2030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000011636f6d62696e6564636173657465737431","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000002f204686173680200000000086d657461646174610c00000004046e616d650200000011636f6d62696e6564636173657465737431096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a02bd1e3094e4d11965385dd586af20a9cc8c1ec2","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1BT7HGJKJD26B571EXB1NF42MWS30YRAVFS2F3","success":true},"operations":[],"transaction_identifier":{"hash":"0xb9e54872f97191fecd1ddbf77930cc57f3d7cd214cded4a298ffa30de2f25f29"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x58659300ee7f83fb5dda7e785ee30579aa17ac988a0c156994be514a552ccfa4","index":41293},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000080397ca3b28c296fa9f5dda239fea9a87ac4d0d80a8a65d546","index":2190932},"confirm_microblock_identifier":{"hash":"0x314127f9d20bbd527e1859dcfe5d9742c18560fa20ef47ab53a2d115b81b2e78","index":3},"pox_cycle_index":181,"pox_cycle_length":1050,"pox_cycle_position":881,"stacks_block_hash":"0x9f51e91a3b6c774d9ca8c5f8ce3a10376a2133a0b07d1a6522f7010e4b27dba1"},"parent_block_identifier":{"hash":"0xf3f6636d9d828259ae97cb0595e7cd3f902d2eba8b15c084dbf467213207654c","index":41292},"timestamp":1647949013,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x73746174757375706461746574657374)","execution_cost":{"read_count":16,"read_length":44028,"runtime":167464,"write_count":2,"write_length":167},"fee":493,"kind":{"data":{"args":["0x627463","0x73746174757375706461746574657374"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400d3b204b57b64c93c5d8d1a1fe53787263346372b000000000000000000000000000001ed000175ee7833fed02a15c82c06cdc62e127dcc1093fd9d64602e15dbe8c066542500068504cf9c39569677b7155825af6ef7811cfdf81ac352f09ff7cf6537b01445030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000001073746174757375706461746574657374","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000030704686173680200000000086d657461646174610c00000004046e616d65020000001073746174757375706461746574657374096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ad3b204b57b64c93c5d8d1a1fe53787263346372b","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST39V415NFDJCJF2XHMD1ZS9QGWK36HHQ5E56JTKZ","success":true},"operations":[],"transaction_identifier":{"hash":"0x13838c53d0ce557864c44af296895952ec49c2741b2567324c83ea14f053fc03"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x73746174757375706461746574657374)","execution_cost":{"read_count":12,"read_length":43999,"runtime":132068,"write_count":0,"write_length":0},"fee":493,"kind":{"data":{"args":["0x627463","0x73746174757375706461746574657374"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":1,"position":{"index":4},"proof":null,"raw_tx":"0x80800000000400d3b204b57b64c93c5d8d1a1fe53787263346372b000000000000000100000000000001ed0000727deeab11b06f2fd65a9cbd72170f71ad169592b461d886ec15c874e881dc5b2db747588269c4308a11f0cdb31c8496b316d8b27b107eae46aca889fac691f9030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000001073746174757375706461746574657374","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST39V415NFDJCJF2XHMD1ZS9QGWK36HHQ5E56JTKZ","success":false},"operations":[],"transaction_identifier":{"hash":"0xb66237b0d724d51721f1187744095643571f566ccc52c55a69ec69096df97065"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x8db28c68feca45d532678278418f0eced4ad0b7eb1ab5cd42127ad7c0effcdd0","index":49377},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000518ca12855dadee850175f0b707c67d57c16eba08b63a581ee","index":2222516},"confirm_microblock_identifier":{"hash":"0x7ef66d4109abfcc08fc32ff18cadc437cd412b12f6dbeef8fd509a0abd572690","index":2},"pox_cycle_index":211,"pox_cycle_length":1050,"pox_cycle_position":965,"stacks_block_hash":"0xadedbe6db8dcbd81f94636de4b0c8ddab961b5e223728506abd71902ead10497"},"parent_block_identifier":{"hash":"0xaa95c4d85fadd92c7b0ba73905e0d78801ce6d9e24213d0b6054d3e67333b944","index":49376},"timestamp":1651771669,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x627463)","execution_cost":{"read_count":16,"read_length":43989,"runtime":166957,"write_count":2,"write_length":154},"fee":3000,"kind":{"data":{"args":["0x627463","0x627463"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400b356d799f0621ef25fa7b00225898e86302ee9a900000000000000020000000000000bb80001d0d2d1cb0e38884bd36e160caeaf3abb93b4430751c1e8dc576a4a36d5a771f500845fa52ff1164f71e84c5e300c78684579ace3ffa432aa44146abcbaf14433030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000003627463","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000045204686173680200000000086d657461646174610c00000004046e616d650200000003627463096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ab356d799f0621ef25fa7b00225898e86302ee9a9","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2SNDNWSY1H1XWJZMYR049C9HT330BQ9N5A1XN2X","success":true},"operations":[],"transaction_identifier":{"hash":"0x7d2ee5c9ae6cf0ad9c3c3c386b018bff96d00dc4b88aca00c99d533ec9ccf120"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x874180e55fd0e4e713ba6d5dc6befecd3a2caeec893e6abf541838b4e9b2adad","index":55768},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000006d6225dc9235962026c01c0bfbc9b2d25e608d16d58975ac6e","index":2252745},"confirm_microblock_identifier":null,"pox_cycle_index":240,"pox_cycle_length":1050,"pox_cycle_position":744,"stacks_block_hash":"0x1004b88d3626090c549ec60857093e3d758b2c0860a5b7793ed8f0b7c52a05a8"},"parent_block_identifier":{"hash":"0xbf1f5b613038821fe62ea893d1e8d9dc900a4b87d3dfa603546d2a18bafdaadc","index":55767},"timestamp":1653978215,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6a7573746174657374)","execution_cost":{"read_count":16,"read_length":44007,"runtime":167191,"write_count":2,"write_length":160},"fee":3000,"kind":{"data":{"args":["0x627463","0x6a7573746174657374"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004000a741da9894f9b88d2b651918faaf9034519b61600000000000000020000000000000bb80001f6779940b4f020cab10c7728f2b920eae3c55cf67ff2a3876ee4528b76477d7a2d75dce2f8cce12345e028fd085a7b76199968b291484b85a3c66e7b9c12ae6f030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000096a7573746174657374","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000049204686173680200000000086d657461646174610c00000004046e616d6502000000096a7573746174657374096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a0a741da9894f9b88d2b651918faaf9034519b616","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST5787D9H57SQ26JPS8S33XAZ41MA6DP2VHXQ0W4","success":true},"operations":[],"transaction_identifier":{"hash":"0xa55b07629c73e41f7ee800e9d39fca3dc414655c2e99924fe2b50c84329f7eaa"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xc474d53d4dff11bdef669704747bd4cb4da2161281d480bda43aea4462e1becb","index":55801},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000571cc9a5fd08ffb02861c503fe97b57ae303813ca2fae733ef","index":2252782},"confirm_microblock_identifier":{"hash":"0xc11808c57d28aebd96deae58d947144387219354653788c0708b65f0d94e9b99","index":3},"pox_cycle_index":240,"pox_cycle_length":1050,"pox_cycle_position":781,"stacks_block_hash":"0x9e81ccc3a4bc46522603d9ccd684714882721c9384559156c2e82ac74d79708c"},"parent_block_identifier":{"hash":"0x3292760d966e2022c2bce3f80831d201bb0d711c6b9946ddde1581e92f4c8f84","index":55800},"timestamp":1653989474,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7761716173746573743131)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167269,"write_count":2,"write_length":162},"fee":3500,"kind":{"data":{"args":["0x627463","0x7761716173746573743131"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":1,"position":{"index":5},"proof":null,"raw_tx":"0x80800000000400dc228d23098159e62ef42d1261838ab1af15a6df00000000000000010000000000000dac00006024e9299ec6d468c134431f5f3069262011e8615ec69375669905ddc127aff00e42d4e0316afc0592af990445b4dcadd7219ddc855664d8b545fd2b6c0f1531030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b7761716173746573743131","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000049a04686173680200000000086d657461646174610c00000004046e616d65020000000b7761716173746573743131096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051adc228d23098159e62ef42d1261838ab1af15a6df","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3E25393160NKSHEYGPH4RC3HARTY5D6VWN1TS64","success":true},"operations":[],"transaction_identifier":{"hash":"0xc32ea0f7da6f80402a6d4860e84f30a7156dee52b0cf293505f151aac87524f6"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x0284c6b31693192948dec02bfddf7b1e37ff10a152fb36458195e54f63fa39e7","index":58659},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000002dbb019b9a7fed81da1208b01a78a82d0641f4c23893065680b","index":2278320},"confirm_microblock_identifier":{"hash":"0x90adc94b12ad2d37e5f8aec36f6f02c4c5d33ae0e83d96e9def8419165e2c398","index":0},"pox_cycle_index":265,"pox_cycle_length":1050,"pox_cycle_position":69,"stacks_block_hash":"0xcd841d52a0ef1852500c48cda581b281c43db139c3fc0ee511e1b8a438bcf4c8"},"parent_block_identifier":{"hash":"0x506580bceb08379cef3870e45b5588d3878dcbefd33c3ce6ccb236fc42ed29d7","index":58658},"timestamp":1655444858,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7465737467616961737461747573737478)","execution_cost":{"read_count":16,"read_length":44031,"runtime":167503,"write_count":2,"write_length":168},"fee":3000,"kind":{"data":{"args":["0x627463","0x7465737467616961737461747573737478"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400960b755aae76a90d685747dbaea9803907c8ad1a00000000000000020000000000000bb80001d89ee941970cd02d0e735f101648cfd9f74a90e17f6955642bcb7968f1ea34bd5eaf5b80746b3452f17368af02255ef185b6270fde9c1c56e3956d4e963f674e030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000117465737467616961737461747573737478","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000004aa04686173680200000000086d657461646174610c00000004046e616d6502000000117465737467616961737461747573737478096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a960b755aae76a90d685747dbaea9803907c8ad1a","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2B0PXATNSVAJ3B8AX3XQBN9G0WGFJ5D393KZNSD","success":true},"operations":[],"transaction_identifier":{"hash":"0x15a418cfcbb4bb685194b96681b7d4b280274c259f74667edafa1f0b62796585"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x18d2112f913962d462bd44b690afbe9bb6ac7d29ce312bd6502f114c2c0c0160","index":58677},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000558a96c9d51223fdb6297c0456dff58336b88e707f96f3b6a1","index":2278373},"confirm_microblock_identifier":null,"pox_cycle_index":265,"pox_cycle_length":1050,"pox_cycle_position":122,"stacks_block_hash":"0xbe9980a5790ebb3810fd5e6ab5b24079b08c394f1de6680b765192f063c53cc7"},"parent_block_identifier":{"hash":"0x68be1eecf0a401cef3a9e8186c2b8843425d0d727ef231494b346372add5d932","index":58676},"timestamp":1655447613,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x737472697065746573746761696164656c65746564)","execution_cost":{"read_count":16,"read_length":44043,"runtime":167659,"write_count":2,"write_length":172},"fee":3000,"kind":{"data":{"args":["0x627463","0x737472697065746573746761696164656c65746564"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":1,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400997082d01dfe12d68677a3db9123f959301f7f8000000000000000010000000000000bb80000717cd70e6eda5a15516a1d187859b41b2d15b684bef2b18f7cccde14828b0b9a4bd3f5b89b6c1b8c7960bf41687bf8b857bb41af6115b8ebb68592f812a241e0030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000015737472697065746573746761696164656c65746564","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000004b004686173680200000000086d657461646174610c00000004046e616d650200000015737472697065746573746761696164656c65746564096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a997082d01dfe12d68677a3db9123f959301f7f80","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2CQ10PG3QZ15NM6EYHXQ493Z5CK07VZG3YGNF4T","success":true},"operations":[],"transaction_identifier":{"hash":"0x1bf18458ae6a765c49e1238730912b1fdea65d2710923d4048912dc86d74607e"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x540aa14f5a416736d367cf2262dd9fa50a24f4a89bcc6e506826d8c14d627b1a","index":58720},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000237962c9d964dc1ab73b3d6b76a5882c4686c6904baa5545395","index":2278456},"confirm_microblock_identifier":{"hash":"0x9e216e1c24f13143d031fe040186dc455af48924d01341a24ff2c26baf580d82","index":0},"pox_cycle_index":265,"pox_cycle_length":1050,"pox_cycle_position":205,"stacks_block_hash":"0x313da8f4efb3fb059db76873cdd99c5365e7b8c826f97ca6ebdb84311c624c28"},"parent_block_identifier":{"hash":"0xda734fe4401d220bee4b09b8fecdcd0b7e32bfec6340f0717366b000fa9cb7f8","index":58719},"timestamp":1655453693,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7761726e696e677465737464656c657465)","execution_cost":{"read_count":16,"read_length":44031,"runtime":167503,"write_count":2,"write_length":168},"fee":3000,"kind":{"data":{"args":["0x627463","0x7761726e696e677465737464656c657465"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":7,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400c67ad9f5791119bc267412fc62bc630b6993009700000000000000070000000000000bb800000e94be1e8a9768e00eeda067cc8f5274baa9f8c399d971d6c4f93de1e178050c6dc512dee776f62fc95a145aeeffec0c283a9d968676685057c0331e9030e92d030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000117761726e696e677465737464656c657465","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000004b604686173680200000000086d657461646174610c00000004046e616d6502000000117761726e696e677465737464656c657465096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac67ad9f5791119bc267412fc62bc630b69930097","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST337NPFNF48HKF16EG9FRRNWCC5PK4R0JZ6PKJW0","success":true},"operations":[],"transaction_identifier":{"hash":"0x863c96ef9e639036526ce94cc53663db5df0f096d555eb0b7942b48e7faa2fdd"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x4fb428e4bfc8ce7f7b88d5d5af7ae8fd26b85dfe79374d74f8be4cdbcfcbe1cf","index":58725},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000cb9e94e9fc6e9df39bb14bd512c272792adf782521055eb9a5","index":2278464},"confirm_microblock_identifier":null,"pox_cycle_index":265,"pox_cycle_length":1050,"pox_cycle_position":213,"stacks_block_hash":"0xfe775bd181993a8a9cd381cc01118eff1cbb77fe4c2ef5c150ee54b2eb0fbde1"},"parent_block_identifier":{"hash":"0x3075d20774141633763587d9a38fec969e637c91f201e01cfaeb78a682687b8d","index":58724},"timestamp":1655454270,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7465737464656c657465776172726e696e67)","execution_cost":{"read_count":16,"read_length":44034,"runtime":167542,"write_count":2,"write_length":169},"fee":3000,"kind":{"data":{"args":["0x627463","0x7465737464656c657465776172726e696e67"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":10,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400c67ad9f5791119bc267412fc62bc630b69930097000000000000000a0000000000000bb800007bcce2e30c0ed8c6d866a9c6617e98765e6b21ecb0ab1404f0d85095584e364552d4e40c5a6003234c9e56a3d9697d09c268357bc7ad733f16aa5b758e60ff08030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000127465737464656c657465776172726e696e67","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000004b804686173680200000000086d657461646174610c00000004046e616d6502000000127465737464656c657465776172726e696e67096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac67ad9f5791119bc267412fc62bc630b69930097","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST337NPFNF48HKF16EG9FRRNWCC5PK4R0JZ6PKJW0","success":true},"operations":[],"transaction_identifier":{"hash":"0x67d1ca6785b80958bf98d666fca86a1cbd78d8c6caab3197b25070e250710eb1"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x06b1d42602d7c231ceff77e565ea8465127efe06ca814ba993ed5f671c9efdd8","index":58801},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000030a79dae1be97e0ac9099a301e45ab298624cc850dcde4c2402","index":2278686},"confirm_microblock_identifier":{"hash":"0x5eb8aba97ce00a0e1a2f4093f6601056b5fdecb4771f3cda352242852bb192e6","index":0},"pox_cycle_index":265,"pox_cycle_length":1050,"pox_cycle_position":435,"stacks_block_hash":"0x9e2bfa98d5ef8f1fed2fdad6cba26a92dd7c86955dd6ed11845e0e4e3188341d"},"parent_block_identifier":{"hash":"0x9d530d7c9e22a8e45b7173cf9b67b46d57bbd260397eb971d14d36ab522d485e","index":58800},"timestamp":1655466910,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x737465707465737432)","execution_cost":{"read_count":16,"read_length":44007,"runtime":167191,"write_count":2,"write_length":160},"fee":3000,"kind":{"data":{"args":["0x627463","0x737465707465737432"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400609e9cfd329ed7ee066d758b86829297b0108b7400000000000000020000000000000bb800014dd6387032f3b76c628a7b65b74b1d3cbdb5c8628d7ef4c5f320310af878ed9a3507ccf265d9dc95c233bb53256b39fc368944d1a201e900a1f3f50c8345148e030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000009737465707465737432","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000004bb04686173680200000000086d657461646174610c00000004046e616d650200000009737465707465737432096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a609e9cfd329ed7ee066d758b86829297b0108b74","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1G9X77X6AFDFVG6DNTRQ1M2JABV044BEJ5ZKVBN","success":true},"operations":[],"transaction_identifier":{"hash":"0xb42948f9ff2e05c4584d2e83c24e91bc1fab351882f9f602a67b6077bac47d98"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x896f23e59add12c2cb5a44079dbfe3524ca6096f77101445d3b8dbcfec184839","index":59838},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000da4721ed9b47d740fce1fd0716cf2cb4107b42ef48aa6d1819","index":2280820},"confirm_microblock_identifier":null,"pox_cycle_index":267,"pox_cycle_length":1050,"pox_cycle_position":469,"stacks_block_hash":"0x29b1e88e261771f819a6999765a3b65c1c06ecb3e5b3c37a080dac15893d8a0c"},"parent_block_identifier":{"hash":"0xfc6f6146c5e5de58ef8fc384e8567e3d12bdf18d3ce21ece6373cd1ad4629a64","index":59837},"timestamp":1655709629,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7761716173746573743330)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167269,"write_count":2,"write_length":162},"fee":4200,"kind":{"data":{"args":["0x627463","0x7761716173746573743330"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":8,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400e9ee5be86ec9e38e491aef3993dc1c248d2bf7ba000000000000000800000000000010680001a5e00056ca09bfb7380395916a4eedefc863e33969e10cfa779ee0e9013306262a214117f38516cfccf24c536d97ffb65646377fccf8009bf09a9ff79fe941fd030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b7761716173746573743330","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000004bf04686173680200000000086d657461646174610c00000004046e616d65020000000b7761716173746573743330096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ae9ee5be86ec9e38e491aef3993dc1c248d2bf7ba","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3MYWPZ8DV4Y73J93BQKK4YW3GJ8TAZQQAFSRYNS","success":true},"operations":[],"transaction_identifier":{"hash":"0x63e9314854b94f4bfb7981e0185a279413d60b2038672e3b15c0e5524152e4bf"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x18e5a2a5ab16accda13b07fac52770b6fc0280406187d662a9155053c23eaa5c","index":60102},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000006f397b19374a5354d52136fd0b4babf8d54fa865122f5eaee6","index":2281162},"confirm_microblock_identifier":{"hash":"0x9e1ce08d129785a79f25c7dd3d9bfa88f42297c55652740bfceacdcaf160a22a","index":0},"pox_cycle_index":267,"pox_cycle_length":1050,"pox_cycle_position":811,"stacks_block_hash":"0x604ac75c3c2ed74c4359152a1b2422ccd2cf5709a46f166ed6a1b10d99267034"},"parent_block_identifier":{"hash":"0xfbd9683268f8db6fce282f2dfe44f98c16a7cd3e7cd31023d1d735351bb54d5c","index":60101},"timestamp":1655794409,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x77617161737373)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":3500,"kind":{"data":{"args":["0x627463","0x77617161737373"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004005cd708cae3bfab26be5838dd1080b274f4d4105e00000000000000030000000000000dac0000a429e373de6e15bde197eecaa26ea1483e188c3d5c31d36be308fb438d966bbe0603d9c88f58e03d7388a2c11d7d3b6d2c60fdf986c5f30052f9f0258d742b55030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000777617161737373","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000004c604686173680200000000086d657461646174610c00000004046e616d65020000000777617161737373096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a5cd708cae3bfab26be5838dd1080b274f4d4105e","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1EDE26AWEZTP9NYB0WDT440P9TF9N0GBSVH21VS","success":true},"operations":[],"transaction_identifier":{"hash":"0xb28fbe306fbd92514c5fe653963e9ed11cbfa58085f1a4433d9c8b139278e0ff"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x31c81caddaeabd315bfe42908a79000d878f8f8d09dd5bc2f6f3805f601e84e5","index":60166},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000010673c38c6899f41bb3643053a4ba6494637092be09d7179b8","index":2281233},"confirm_microblock_identifier":{"hash":"0xc3d309f418f7e0236c5fa0f585a9ce3162f30fc1c0be3da632cc0af1c201dd14","index":0},"pox_cycle_index":267,"pox_cycle_length":1050,"pox_cycle_position":882,"stacks_block_hash":"0x04544bdf7f3ce2943cdbc78257b910311aeba2cc9e8492731e8c79fbb05327c0"},"parent_block_identifier":{"hash":"0x6f151becfbe932c8f56f25b5b99b982433630bdb4df3f84335e3698ef606b3d1","index":60165},"timestamp":1655814463,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x666b646a616e666a64616b6e66)","execution_cost":{"read_count":16,"read_length":44019,"runtime":167347,"write_count":2,"write_length":164},"fee":3000,"kind":{"data":{"args":["0x627463","0x666b646a616e666a64616b6e66"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400223fa3bf8ef52bf20aed9a3f55236dbc82b026fc00000000000000020000000000000bb800018644b14904a8af17b13a6629db45a290b5ee3da0db0d33de6680edeb70a8958d79ca62c68dcc5cae61ac868d4956f47cd45477ecfba406f8372c3ea544e5c7c5030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000d666b646a616e666a64616b6e66","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000004ca04686173680200000000086d657461646174610c00000004046e616d65020000000d666b646a616e666a64616b6e66096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a223fa3bf8ef52bf20aed9a3f55236dbc82b026fc","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STH3Z8XZHVTJQWGAXPD3YN93DPY85C16ZGCCMXXW","success":true},"operations":[],"transaction_identifier":{"hash":"0x0e709c8e76eb6452ebcd0b16b2b0c4ddb0b89b36772ec05c2ea736738619491e"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xa2a97ab36cb8021bc9d28b16c8818324fbbe890db6470ec6d480087df3c1a234","index":60174},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000289de124d0a21bdc3608ad8be613c6e9e22805153e55eda898","index":2281243},"confirm_microblock_identifier":{"hash":"0xb6e98387df2287b05a1085ab23c42a1086c2887fe35c133c7e13924f1fb8d282","index":0},"pox_cycle_index":267,"pox_cycle_length":1050,"pox_cycle_position":892,"stacks_block_hash":"0x6553329cc0b67ad348f4b1e9688cb4059568f7fce26e2cab2c6bf86e01d3a63b"},"parent_block_identifier":{"hash":"0x751bfc00f5f68a594a1c1d8a40f8ac3a5c24ad0e9a412dcb75c0b3d504876db9","index":60173},"timestamp":1655817060,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6e6a696f66616a696e)","execution_cost":{"read_count":16,"read_length":44007,"runtime":167191,"write_count":2,"write_length":160},"fee":3000,"kind":{"data":{"args":["0x627463","0x6e6a696f66616a696e"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":5,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400223fa3bf8ef52bf20aed9a3f55236dbc82b026fc00000000000000050000000000000bb80001f1e94f55428d3ca555a3e41d73907c5a6c40a3efa53ad0fc2133b46c64c296e36067f861eab081ac61966ad9533b1c55ac087c5743e817244af42c64ed801560030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000096e6a696f66616a696e","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000004cc04686173680200000000086d657461646174610c00000004046e616d6502000000096e6a696f66616a696e096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a223fa3bf8ef52bf20aed9a3f55236dbc82b026fc","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STH3Z8XZHVTJQWGAXPD3YN93DPY85C16ZGCCMXXW","success":true},"operations":[],"transaction_identifier":{"hash":"0x95b4255390c4032d702e086e198d195e093deee6d2c91484d7378462fdbc275d"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x1d255bf229fa6c32f0309122c36862a040c95ace637c9b106d4a99e3de961253","index":60958},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000001cc9c6c72ccd58c1fbd56e548ab251c388c6f8b695f12385762c7","index":2282233},"confirm_microblock_identifier":{"hash":"0x40d6e44885b930dc254e03cb222b7208b843167d18f8c192d819ebbd0c61a441","index":2},"pox_cycle_index":268,"pox_cycle_length":1050,"pox_cycle_position":832,"stacks_block_hash":"0x8e6811639f35177879238b81409bf68c86a2c5c12670e3a1e0b5a7aa3b3bc109"},"parent_block_identifier":{"hash":"0xd322edce41974fc78b929a1d20afeac844f51a0c4d9415b1774b84cb698e2bf0","index":60957},"timestamp":1656072111,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6166646a6b6e666a61646e66)","execution_cost":{"read_count":16,"read_length":44016,"runtime":167308,"write_count":2,"write_length":163},"fee":3000,"kind":{"data":{"args":["0x627463","0x6166646a6b6e666a61646e66"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004001a60b0e4d6142ca5c5ea750103c713bfeaca4e8200000000000000030000000000000bb80000f52a59925e5b1d06efec6d5ed380b22c7315816869b9287d6779c93efa8cd23c5a1bd5df33089ffbf059663ee57dca0b97aba35f55ae0b47af3e278cb632ac12030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000c6166646a6b6e666a61646e66","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000004d804686173680200000000086d657461646174610c00000004046e616d65020000000c6166646a6b6e666a61646e66096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a1a60b0e4d6142ca5c5ea750103c713bfeaca4e82","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STD61C74TRA2S9E5X9TG20Y72EZYNJJEGAKXXQNR","success":true},"operations":[],"transaction_identifier":{"hash":"0x41c569626bfb942fd38c2ad0a462ea4d5e1bd13d97b3064c971ddaa63a35bfdf"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x97f3bbe02e63c8a427e5aea941f08986a346e76d263558e36d94e9a0d5c0e57e","index":61684},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000005a9a507d29449c50493eff394e95fcf552b50ad0deb712c8a0","index":2283044},"confirm_microblock_identifier":null,"pox_cycle_index":269,"pox_cycle_length":1050,"pox_cycle_position":593,"stacks_block_hash":"0xab086e172fe69a8e7dca4135cb715f918a616488550042e76e451dbc63bb39a1"},"parent_block_identifier":{"hash":"0xd44b80de4f1a58f4ef94c65e58bdcb331e3904e0d5034c35b25b8e665add94fa","index":61683},"timestamp":1656404084,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7265706c6163657465737431)","execution_cost":{"read_count":16,"read_length":44016,"runtime":167308,"write_count":2,"write_length":163},"fee":3000,"kind":{"data":{"args":["0x627463","0x7265706c6163657465737431"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":2},"proof":null,"raw_tx":"0x8080000000040095f47112fee93c25463a377a4ed06d570091378800000000000000020000000000000bb800018454c6d66dd8d25e5164a1cf5d56f3d0e3988d95ea6c35951a0d6cdfe512dad8529298b2d82e98c17a790004772404f6b14143f769d0b2ebf6033873f29a6a05030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000c7265706c6163657465737431","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000004db04686173680200000000086d657461646174610c00000004046e616d65020000000c7265706c6163657465737431096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a95f47112fee93c25463a377a4ed06d5700913788","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2AZ8W8JZVMKR9A678VQMKPGDNBG149QH03QBVN8","success":true},"operations":[],"transaction_identifier":{"hash":"0x6ad2c775a9aa542baa8e212b1971028732ad9ed3961eef1f184c41d99ac92120"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x5758e4455f3898933fd348749ca80352ae8efa034344832677aa8e87ba4ef443","index":61721},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000016d5374904bb8ec79abe4147d094fcd44cb09dfebab4fbc499","index":2283083},"confirm_microblock_identifier":{"hash":"0xc254addb0c1a4c7a80988b3ef367a7a0aaf7314648aa045d8b8408360b3e4a0f","index":3},"pox_cycle_index":269,"pox_cycle_length":1050,"pox_cycle_position":632,"stacks_block_hash":"0x10691e593ec080176843de41cc5ffcb08f8ff2b53a62d4f3a0a82b9662117561"},"parent_block_identifier":{"hash":"0x1c30d65d440e62370ec97062871021b91380e4c6c9bf990ca188022a7e501591","index":61720},"timestamp":1656419472,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7265706c6163657465737432)","execution_cost":{"read_count":16,"read_length":44016,"runtime":167308,"write_count":2,"write_length":163},"fee":75000,"kind":{"data":{"args":["0x627463","0x7265706c6163657465737432"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":6,"position":{"index":2},"proof":null,"raw_tx":"0x8080000000040095f47112fee93c25463a377a4ed06d5700913788000000000000000600000000000124f80000b99511544ac00db77a616b5bf29ea8d0dafd077077a25e0271274f281deb46f21647f33264f75fe4511dff4bd85c5ab0a4b6adb6d60f158966c0881bff29c47b030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000c7265706c6163657465737432","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000004df04686173680200000000086d657461646174610c00000004046e616d65020000000c7265706c6163657465737432096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a95f47112fee93c25463a377a4ed06d5700913788","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2AZ8W8JZVMKR9A678VQMKPGDNBG149QH03QBVN8","success":true},"operations":[],"transaction_identifier":{"hash":"0xe043e170b2620d86125c61ef67db9b7238264a8b501fbcb68d8ae6d9de80a3d9"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x1761abb21a829d477a178c144474d62cc9de43c4cda5596962012197e797d0c9","index":61851},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000466be79028a8586a59630d0bbe0cb4d5672391f18f6df08bae","index":2283229},"confirm_microblock_identifier":{"hash":"0x10c84fbdd7efba3e3fde0c1285112fce771378ae6381535a05fd148c23e16c0b","index":0},"pox_cycle_index":269,"pox_cycle_length":1050,"pox_cycle_position":778,"stacks_block_hash":"0x7da9de6a67fab1efe65c423cc53da9b0c1d87d8eddad5e6c5fbc02da9d2b2356"},"parent_block_identifier":{"hash":"0x7ca5b4a3d4461ae8d5b9b28096f846bbb6342a93f27272d9f4ca55c28b7b96f1","index":61850},"timestamp":1656486067,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x74786661696c7465737433)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167269,"write_count":2,"write_length":162},"fee":3000,"kind":{"data":{"args":["0x627463","0x74786661696c7465737433"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004003707ed3199373a8305a162cbc24dd7a74cdf4ad800000000000000030000000000000bb800003954f84f321cbe1244d8d778f9491079f0703b11d34409fd8394836ea9a60af2702943da6c59b6f6ab0cb98065e3cc75da956057ad334b84a154b7675e23a654030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b74786661696c7465737433","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000004e004686173680200000000086d657461646174610c00000004046e616d65020000000b74786661696c7465737433096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a3707ed3199373a8305a162cbc24dd7a74cdf4ad8","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STVGFV9HK4VKN0R5M5HCQGJDTYKMSQTAV1YTD3BT","success":true},"operations":[],"transaction_identifier":{"hash":"0x77b8f68e2553d527d916d75e2fae8f6b312a627600845e1e794b3868cd154776"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xf52ee7336e74f1e8d2e510433b7ae742f56e2475023a00b139b2f06c85bccf15","index":61895},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000001620a384bfadeba521a56a29457668f84643f47a856739f3b1c63","index":2283275},"confirm_microblock_identifier":{"hash":"0x1a9f137a138a802aedff6c86e3d4ce3854ccc7927ec49fbbe79be78009eef2bb","index":3},"pox_cycle_index":269,"pox_cycle_length":1050,"pox_cycle_position":824,"stacks_block_hash":"0xe8f27047685b77b45dbe298fa628d6b96625b32311857b02ebb400a2cd20e805"},"parent_block_identifier":{"hash":"0xd9348b7c1953dc62d5d06c9efa9824a5e93c813fef47ae75ce3a10c0d56aa566","index":61894},"timestamp":1656511157,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7265736574706167657465737432)","execution_cost":{"read_count":16,"read_length":44022,"runtime":167386,"write_count":2,"write_length":165},"fee":3500,"kind":{"data":{"args":["0x627463","0x7265736574706167657465737432"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":11,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004003707ed3199373a8305a162cbc24dd7a74cdf4ad8000000000000000b0000000000000dac0000c499b4e51fe722fe05d6102553811a318dc772e1fb4e10f0994d3ea55d8e66947c5dce6fb80d94606a60c58e77fd724f2e78b4604afde239f1e9ceb07b5149a7030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000e7265736574706167657465737432","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000004e204686173680200000000086d657461646174610c00000004046e616d65020000000e7265736574706167657465737432096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a3707ed3199373a8305a162cbc24dd7a74cdf4ad8","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STVGFV9HK4VKN0R5M5HCQGJDTYKMSQTAV1YTD3BT","success":true},"operations":[],"transaction_identifier":{"hash":"0x82bda87bfc4fb898dbc4cb6f9c92f75d4fe88e9466ec39a82e8775051f9ec4f8"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7265736574706167657465737432)","execution_cost":{"read_count":12,"read_length":43993,"runtime":132016,"write_count":0,"write_length":0},"fee":3000,"kind":{"data":{"args":["0x627463","0x7265736574706167657465737432"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":12,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004003707ed3199373a8305a162cbc24dd7a74cdf4ad8000000000000000c0000000000000bb80001c7e272a63f375a01be1f0eeee7085e6ee77605dd22b25e17e97caa2cc16969141eddf7973fb155c81f2e0c0f256447b962e7be1adf2c715c6a1a3a5bb80c23de030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000e7265736574706167657465737432","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"STVGFV9HK4VKN0R5M5HCQGJDTYKMSQTAV1YTD3BT","success":false},"operations":[],"transaction_identifier":{"hash":"0x349f30a92c8ac543ae44c85de440443beeb0fa197c86d1df79518e3bf77dbb21"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7265736574706167657465737432)","execution_cost":{"read_count":12,"read_length":43993,"runtime":132016,"write_count":0,"write_length":0},"fee":3000,"kind":{"data":{"args":["0x627463","0x7265736574706167657465737432"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":13,"position":{"index":3},"proof":null,"raw_tx":"0x808000000004003707ed3199373a8305a162cbc24dd7a74cdf4ad8000000000000000d0000000000000bb8000069b02e98f504bc559019152a35dcc233f7f3b09bd5549716b264f9c09b7335b52fc87c46d4d5608fdfe82fe734df4e739ff6816134880fce0e977273b7492d02030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000e7265736574706167657465737432","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"STVGFV9HK4VKN0R5M5HCQGJDTYKMSQTAV1YTD3BT","success":false},"operations":[],"transaction_identifier":{"hash":"0xe37831db3c69c23651c0f5bcdd235a9543592be9016158cf2a48c69d26531c87"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x13e868c18da7b6fa6e97a81f0f319d9f48e2094a5296fe805ec5df2d8b0621e1","index":61992},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000004b10ca8827a5d60c3dcdf26e93bb0002da3e39447b29751470823","index":2283375},"confirm_microblock_identifier":{"hash":"0x66cc53d3c63725131b9ae6ff007dfe31ebd1448667db3176a1ac554c44f7baf8","index":1},"pox_cycle_index":269,"pox_cycle_length":1050,"pox_cycle_position":924,"stacks_block_hash":"0x376ef83e8c967abae9b59b72e896d42e23460d667c5235a3772e9fb06cc2f392"},"parent_block_identifier":{"hash":"0xdff2586b4cae1b2f76a60c68bff953cabd37ae774a72ad7f7c530f598514746c","index":61991},"timestamp":1656576129,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7265736574706167657465737435)","execution_cost":{"read_count":16,"read_length":44022,"runtime":167386,"write_count":2,"write_length":165},"fee":3000,"kind":{"data":{"args":["0x627463","0x7265736574706167657465737435"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":16,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004003707ed3199373a8305a162cbc24dd7a74cdf4ad800000000000000100000000000000bb80001ccf04832870123ed688b2f56383fa7b10657dd2dd0a241c31257c81ba703793d6bc6b0f4c432192c3697694286cafc264a15eebb54efbacf0c725ca954fd1e2d030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000e7265736574706167657465737435","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000004e704686173680200000000086d657461646174610c00000004046e616d65020000000e7265736574706167657465737435096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a3707ed3199373a8305a162cbc24dd7a74cdf4ad8","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STVGFV9HK4VKN0R5M5HCQGJDTYKMSQTAV1YTD3BT","success":true},"operations":[],"transaction_identifier":{"hash":"0x65bd7d7a4d5a4574125441507bee5a32548f71bcc008b279ebc4f1c00320593b"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xe959aff3c8599ba95d0999d5109edd5f3b9e184ec5c447bda4f509cd9987bfa3","index":62006},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000002c9d8a9e44c68339ed37864b8fe7ae520777afa3060ea9ea33","index":2283391},"confirm_microblock_identifier":{"hash":"0x6dbc8286b3cb8ab4793e6c448bdfc5b9539badb2d1031e99597ed5aeef7a6fe0","index":0},"pox_cycle_index":269,"pox_cycle_length":1050,"pox_cycle_position":940,"stacks_block_hash":"0x46983ef63c61da04748ad533af17e4d00be3b761753a213f81d0aff3b2e801a0"},"parent_block_identifier":{"hash":"0xb68f3d8cf9b82a228872cba15d1798f4000df5e91194a4ee88f7902885a2476c","index":62005},"timestamp":1656585112,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7265736574706167657465737434)","execution_cost":{"read_count":16,"read_length":44022,"runtime":167386,"write_count":2,"write_length":165},"fee":3000,"kind":{"data":{"args":["0x627463","0x7265736574706167657465737434"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":9,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040095f47112fee93c25463a377a4ed06d570091378800000000000000090000000000000bb8000148fb638080f3c5a134744a4fa4776ee9f2046f68662e17e64e532a90c5baf6365cea5ab9d0ab9ae39486c17509d07265d9bdde56bdf31cedc2381ee914b17a92030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000e7265736574706167657465737434","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000004e804686173680200000000086d657461646174610c00000004046e616d65020000000e7265736574706167657465737434096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a95f47112fee93c25463a377a4ed06d5700913788","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2AZ8W8JZVMKR9A678VQMKPGDNBG149QH03QBVN8","success":true},"operations":[],"transaction_identifier":{"hash":"0xd4ef47fdf0e93dabc7af5796fd710294fcf3b1794ee8f7444f820603493d6482"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x7114eba442ce72a07e2e9d673c035f5271d8be280fb8349a01756bd916fa8875","index":62010},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000276d12874b6840ea0d708a72fc6c40af5b15dbe1eb21eb1fd4","index":2283395},"confirm_microblock_identifier":{"hash":"0x1e18e9d13d604c1e10ebd0b4d9f0b12c3e644c503fd4d94f1d6526b2eb27fddb","index":4},"pox_cycle_index":269,"pox_cycle_length":1050,"pox_cycle_position":944,"stacks_block_hash":"0xb0a5f2b37ec153c33c1a0854971bd9f99d0e487ba340e32bbe1a01883126fd51"},"parent_block_identifier":{"hash":"0xf2a264fa20b4f5c84683e79ca03ecd70d9a50b820d9e373da6c69917dd24d54f","index":62009},"timestamp":1656588057,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x72657365747061676573747269706574657374)","execution_cost":{"read_count":16,"read_length":44037,"runtime":167581,"write_count":2,"write_length":170},"fee":3000,"kind":{"data":{"args":["0x627463","0x72657365747061676573747269706574657374"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":3},"proof":null,"raw_tx":"0x808000000004003cbb14a97f2ceff24c88411b4df789f7e0dc523700000000000000030000000000000bb800011c439c705376a004a5748ffe67c5186465583c2ac78f524e59bce221c3792bde1beb5a0b380ad775b3a6bd9e0a483108cc3885f5a566172d17cb6f5698ddc46e030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000001372657365747061676573747269706574657374","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000004e904686173680200000000086d657461646174610c00000004046e616d65020000001372657365747061676573747269706574657374096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a3cbb14a97f2ceff24c88411b4df789f7e0dc5237","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STYBP559FWPEZWJCH10HPKFQH7VY1Q2J6XXB39G5","success":true},"operations":[],"transaction_identifier":{"hash":"0xdce346104d83b98143bbbd3540e62e1c54c147f9b69f0cdd70d0392aa837daa6"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x72657365747061676573747269706574657374)","execution_cost":{"read_count":12,"read_length":44008,"runtime":132146,"write_count":0,"write_length":0},"fee":3000,"kind":{"data":{"args":["0x627463","0x72657365747061676573747269706574657374"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":4},"proof":null,"raw_tx":"0x808000000004003cbb14a97f2ceff24c88411b4df789f7e0dc523700000000000000040000000000000bb80000e5b9627e54f9997bf0b783fca143ae28da5caed9db89cb7610d8fab2c2350e5c5806a8e85413f368ca41b770b4a9b1e9058a5836b9746f93df07041d17123001030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000001372657365747061676573747269706574657374","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"STYBP559FWPEZWJCH10HPKFQH7VY1Q2J6XXB39G5","success":false},"operations":[],"transaction_identifier":{"hash":"0xc0c7736ba525a5018b501de87d727dae210d784d3ea51c8e78f0b2cb4d534153"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x72657365747061676573747269706574657374)","execution_cost":{"read_count":12,"read_length":44008,"runtime":132146,"write_count":0,"write_length":0},"fee":3000,"kind":{"data":{"args":["0x627463","0x72657365747061676573747269706574657374"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":5,"position":{"index":5},"proof":null,"raw_tx":"0x808000000004003cbb14a97f2ceff24c88411b4df789f7e0dc523700000000000000050000000000000bb80001cd1555830530716f3b72c8827096e6a3a5fe54d96b9bc794fcab47fe290aa60f42062850d14d02c95917e1c1032df6839bcf3a287e3811ea3401c2675f87c219030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000001372657365747061676573747269706574657374","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"STYBP559FWPEZWJCH10HPKFQH7VY1Q2J6XXB39G5","success":false},"operations":[],"transaction_identifier":{"hash":"0x2e11c8c5ab3f9ec26ddc660f93ececcd49e4a07d0b7e3c1edd9617ccd7a2fcb2"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x72657365747061676573747269706574657374)","execution_cost":{"read_count":12,"read_length":44008,"runtime":132146,"write_count":0,"write_length":0},"fee":3000,"kind":{"data":{"args":["0x627463","0x72657365747061676573747269706574657374"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":6,"position":{"index":6},"proof":null,"raw_tx":"0x808000000004003cbb14a97f2ceff24c88411b4df789f7e0dc523700000000000000060000000000000bb80001cd52eb69e5b97bf302cb51221904c990657ea80d6190df69fcfa519b6409428c58e972b3ac3a1c30ef2bec2c45f4b301d6034756e8bd89a5d12c29274d956e27030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000001372657365747061676573747269706574657374","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"STYBP559FWPEZWJCH10HPKFQH7VY1Q2J6XXB39G5","success":false},"operations":[],"transaction_identifier":{"hash":"0x73c0a6daafe89a5fc27254a58c40f2c78a5293a05103b0966720262bc276feb2"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x63a346773034436dde4cbb31dc54e996fe19ca3daf5d18bb1a884055adaea9e0","index":62015},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000003bd96a33a8a13207195a8d3e1caa43b9b6e5ba3a3c2ad834d8","index":2283400},"confirm_microblock_identifier":{"hash":"0x0f1c8319106928f06192cefd8bf4efe05c7ef2c6f194a2fefcd8ad7a0d554979","index":1},"pox_cycle_index":269,"pox_cycle_length":1050,"pox_cycle_position":949,"stacks_block_hash":"0x97dd19bb3a4ed36a0b9ca1c441c1cff4366e87e396fea3173cc10a0acfd620da"},"parent_block_identifier":{"hash":"0x4cfd5f6861486155c0939fc77b6567a19effc1eeccee14d411be55bb581fcc21","index":62014},"timestamp":1656589524,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x726573657474657374)","execution_cost":{"read_count":16,"read_length":44007,"runtime":167191,"write_count":2,"write_length":160},"fee":3000,"kind":{"data":{"args":["0x627463","0x726573657474657374"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":2},"proof":null,"raw_tx":"0x8080000000040098b8beb97d13bd1dfa46284b756d80335500eba800000000000000020000000000000bb80000377bd33fade79a1d21761e3930a1103c2eb8b9a15e4c71aea6314b86f2e3883f355a86740d98d4834531b928c25309e7e9763c9a4dd9404dc8d1544032efe4bd030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000009726573657474657374","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000004ea04686173680200000000086d657461646174610c00000004046e616d650200000009726573657474657374096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a98b8beb97d13bd1dfa46284b756d80335500eba8","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2CBHFNSFM9VT7FT8RM4PXBDG0SNA07BN1SBE5A1","success":true},"operations":[],"transaction_identifier":{"hash":"0xe4de718d53aa003836ec43359043e32f83b493531447459d0b923f4529a32203"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x728edd0402801c19c782120ff36c3fa8b889e89f0c5350d5e03509ef98bc47db","index":62016},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000675481e4d2fb0b9e450f6ca46987cd23f8fc97021dd1a1251972","index":2283401},"confirm_microblock_identifier":{"hash":"0x45d157cd15bc06716ca18c7489d2c753e6a5bd9db5ca1ac29fe3dacadb062bc7","index":1},"pox_cycle_index":269,"pox_cycle_length":1050,"pox_cycle_position":950,"stacks_block_hash":"0x2b5f492a6c7d6ca599f0f811df3cd00f7ee1b4125faff5f9aad26be85d9eef6a"},"parent_block_identifier":{"hash":"0x63a346773034436dde4cbb31dc54e996fe19ca3daf5d18bb1a884055adaea9e0","index":62015},"timestamp":1656589969,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7374787472616e736665727465737432)","execution_cost":{"read_count":16,"read_length":44028,"runtime":167464,"write_count":2,"write_length":167},"fee":3000,"kind":{"data":{"args":["0x627463","0x7374787472616e736665727465737432"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":3},"proof":null,"raw_tx":"0x808000000004002f10526611c31ffc0bb46f90c59de2fd96873cb200000000000000040000000000000bb800007e6f70030c12f6e2c0b70b38c2890ec987b5472aa69981e00d185c92197ce0d917c241ada9a0f6bbc5d26ea191dfe197bcf526cf56aedfbca997a5b1efd5308f030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000107374787472616e736665727465737432","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000004eb04686173680200000000086d657461646174610c00000004046e616d6502000000107374787472616e736665727465737432096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a2f10526611c31ffc0bb46f90c59de2fd96873cb2","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STQH0MK6271HZZ0BPHQS1HCXWBYSD1SWP9EJ8MMC","success":true},"operations":[],"transaction_identifier":{"hash":"0x7868621cdb69a0fe0df20f77c0c56312ca9967f81b5e329fe554892d21a4ba30"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x8a60c966a19a4e66ba4dede50468261910f4bb2afe8e52eba6a2054eab5eaef0","index":62017},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000006e912245e306d03df097e7a78ad0d3ec7127985456e4db9438a51","index":2283402},"confirm_microblock_identifier":{"hash":"0xe2f872bf5a1832e4c7171e30a16554508aa3f3acbbdd89032d196f59d5765953","index":4},"pox_cycle_index":269,"pox_cycle_length":1050,"pox_cycle_position":951,"stacks_block_hash":"0x59d56716f999a9fb5ae91b1cdc5a76ae81a9fd1cf6f33a17fde6b69ca181b766"},"parent_block_identifier":{"hash":"0x728edd0402801c19c782120ff36c3fa8b889e89f0c5350d5e03509ef98bc47db","index":62016},"timestamp":1656591175,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x646f6d61696e636865636b31)","execution_cost":{"read_count":16,"read_length":44016,"runtime":167308,"write_count":2,"write_length":163},"fee":3000,"kind":{"data":{"args":["0x627463","0x646f6d61696e636865636b31"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400796d0666b80b9ee13014d8105f218d536d6d86e800000000000000030000000000000bb80001b83c67f72314362922d0b686840450fa5907211ccd0d7aa7b19e60ab04bc379d0d02db4f732d2c14edb2df41cc7ba29bca127d326fea9cfcf3346e8281e42c68030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000c646f6d61696e636865636b31","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000004ec04686173680200000000086d657461646174610c00000004046e616d65020000000c646f6d61696e636865636b31096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a796d0666b80b9ee13014d8105f218d536d6d86e8","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1WPT1K6Q05SXR9G2KC10QS1HN9PTVC6X0D4HMRM","success":true},"operations":[],"transaction_identifier":{"hash":"0xe9308d5c27678fd76e1ad71438f8c6683614a058a439430ecab7ec6a96160570"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x646f6d61696e636865636b31)","execution_cost":{"read_count":12,"read_length":43987,"runtime":131964,"write_count":0,"write_length":0},"fee":3000,"kind":{"data":{"args":["0x627463","0x646f6d61696e636865636b31"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400796d0666b80b9ee13014d8105f218d536d6d86e800000000000000040000000000000bb800011d32507982d83d432cb8e194eee6efb16fa3221639cbf42e48f88937ea4d4cdc043f35d29c09cc2e07a386bc06f2fd402a27f2aa98ab37123cfdb61f9809dc44030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000c646f6d61696e636865636b31","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST1WPT1K6Q05SXR9G2KC10QS1HN9PTVC6X0D4HMRM","success":false},"operations":[],"transaction_identifier":{"hash":"0x05aad402f922b31c8397801c334e171f1402d990611520b0c102d406b4ff92e8"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xb5b8e1adb6515bada04c90e61346c700987ab315a8aba1bca57aec61d672bfce","index":62020},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000a93dd66852af1a0c00889602a470383fc955d0be929e58fd8","index":2283405},"confirm_microblock_identifier":{"hash":"0x3a99aeb54d8ddfda5d8c5bbd3f58a6b7bc0caf2510edf8383b01dcbeb0f94d77","index":2},"pox_cycle_index":269,"pox_cycle_length":1050,"pox_cycle_position":954,"stacks_block_hash":"0x5e4a33a8190dd6b9a5f9693079e97056d8e0debc54b1ea312b453e6a64596f56"},"parent_block_identifier":{"hash":"0xbba9c6f439aa67502ed92aca6a8a40cc72ef417d1ec9cbe0a49dbef7dabebf91","index":62019},"timestamp":1656593224,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6a7573746173747269706574657374)","execution_cost":{"read_count":16,"read_length":44025,"runtime":167425,"write_count":2,"write_length":166},"fee":3000,"kind":{"data":{"args":["0x627463","0x6a7573746173747269706574657374"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":1,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004001146a74c16e3590ec0f60e0a2359b102cfc2a82100000000000000010000000000000bb8000113b7b4c2774e652bcb576ccc2fc7443a0a85eec0924c26296328ef69309cb375391199beb98f16851855e47fc7e30ef8d94010aaee572d1170dcc10c0e99e782030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000f6a7573746173747269706574657374","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000004ed04686173680200000000086d657461646174610c00000004046e616d65020000000f6a7573746173747269706574657374096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a1146a74c16e3590ec0f60e0a2359b102cfc2a821","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST8MD9TC2VHNJ3P0YR70M8TSP41CZGN8464EC5WX","success":true},"operations":[],"transaction_identifier":{"hash":"0x14d8e40c8f80a35bc3b505d3b12a14d48dbea46422c2086d78569e5ce6ae9abe"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6a757374617374726970657465737432)","execution_cost":{"read_count":16,"read_length":44028,"runtime":167464,"write_count":2,"write_length":167},"fee":3000,"kind":{"data":{"args":["0x627463","0x6a757374617374726970657465737432"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":1,"position":{"index":4},"proof":null,"raw_tx":"0x8080000000040072700a9e0971d480610460b6ad684fa418afb6b400000000000000010000000000000bb800005da276857734ef987f2d954fd6c6f045a05281cd30dd56735db6d499fa7e906f63057f8145495274a9140a5e133f1c186f668fdb5a99ece4121dcfa94706edd9030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000106a757374617374726970657465737432","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000004ee04686173680200000000086d657461646174610c00000004046e616d6502000000106a757374617374726970657465737432096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a72700a9e0971d480610460b6ad684fa418afb6b4","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1S702MY15RX90310HGBDBB89YJ1HBXPPH95QAT0","success":true},"operations":[],"transaction_identifier":{"hash":"0xf06ad5347d864fbc639ef80209aa5fb579a9b5acf06b76f73f77337874e80798"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xc6c5942a45732c661cb01171eb55f34717d61cc0ce47ff2b12d6ede9a3a17909","index":62572},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000045e43ad4598e5f1ad2ab3025cc360f4e447f31373a2c7c1ed3","index":2284019},"confirm_microblock_identifier":{"hash":"0x04bde165c4f3e1789da9cc6def79eed7f9564559c8e78d96e30ed4354ff86a99","index":0},"pox_cycle_index":270,"pox_cycle_length":1050,"pox_cycle_position":518,"stacks_block_hash":"0x5bc9b935a0e8719604d5ab197d64f1285a501576b7d39913ecdbc0d5cb8164ec"},"parent_block_identifier":{"hash":"0x30162006ab068f009a36b104c29d5ed6ba37e87668e75124e278acae57b66772","index":62571},"timestamp":1656925221,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7072656f726465727465737433)","execution_cost":{"read_count":16,"read_length":44019,"runtime":167347,"write_count":2,"write_length":164},"fee":3000,"kind":{"data":{"args":["0x627463","0x7072656f726465727465737433"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":16,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040095f47112fee93c25463a377a4ed06d570091378800000000000000100000000000000bb80001e8e11617da7885c0f98201e104c2bd0f61c7115ecc8ba5684dd640ee416fca265f2a836b0252a42912e131d242ffef67fd176b8176dc4845a2e1392fdb48f00d030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000d7072656f726465727465737433","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000004f404686173680200000000086d657461646174610c00000004046e616d65020000000d7072656f726465727465737433096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a95f47112fee93c25463a377a4ed06d5700913788","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2AZ8W8JZVMKR9A678VQMKPGDNBG149QH03QBVN8","success":true},"operations":[],"transaction_identifier":{"hash":"0x2597aa8528c46a1d4587d7ca7e075e48a77096293f06d3e55b515678bb4cee7d"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x1216d61f7ca074892499be50b79547e1649fc17d4b11c7c2749bb8019ab9bfdc","index":62735},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000a6485cc762b14a66bd5b2974062884aa71aa7838156c626b2","index":2284195},"confirm_microblock_identifier":{"hash":"0xc575829c2d2ec4ab70de7eacf861f68293fac87a49b04573905b40848d110f3c","index":0},"pox_cycle_index":270,"pox_cycle_length":1050,"pox_cycle_position":694,"stacks_block_hash":"0xcd2115efbd7bae7d73a92e256981e452122f73c61993776d6847661dbbe6b410"},"parent_block_identifier":{"hash":"0x2f229f05074c9c42f409a6c5333ad0fa03d2423f5039424d73260f4fe30041b7","index":62734},"timestamp":1657014407,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7265706c6163657465737472616e73666572)","execution_cost":{"read_count":16,"read_length":44034,"runtime":167542,"write_count":2,"write_length":169},"fee":3000,"kind":{"data":{"args":["0x627463","0x7265706c6163657465737472616e73666572"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400ae51689b808646c2c27fa2c90778408ded42107b00000000000000000000000000000bb800011104d8eef9b03632014c1c419d58770e7f2254a0c475f486cb0aeeb0b9accc7409d38aed66898c146017cd4ce1bfdc3b094513302ead567fa01720716218a6d1030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000127265706c6163657465737472616e73666572","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000004f504686173680200000000086d657461646174610c00000004046e616d6502000000127265706c6163657465737472616e73666572096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aae51689b808646c2c27fa2c90778408ded42107b","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2Q52T4VG234DGP2FYHCJ1VR826YTGGGFEMN94GG","success":true},"operations":[],"transaction_identifier":{"hash":"0x7ce0d51e269c15db22ae9466f50481815bea3f34a5e37745bd9bc3b3c5c94381"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x24737699461c33b6488a4be63e548f4c925aa701feb907a2a71f60a91b5b7ce9","index":62879},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000010deab143b7a24b072b74693c66c6678d1a5b7a9a168945094","index":2284345},"confirm_microblock_identifier":{"hash":"0x656f7850836b753fe5c2de4c7d288baf1c286cb22f588e54eca556bea59f6ee0","index":3},"pox_cycle_index":270,"pox_cycle_length":1050,"pox_cycle_position":844,"stacks_block_hash":"0x100e6538974d37db4fa4fc7de593b315fa38fc1c3c97c13c70b11be5b0c2a254"},"parent_block_identifier":{"hash":"0x9a0a813f5aab6249b7b90d39b3773362801de53e3dbafa0f3e90a4e16754f6b9","index":62878},"timestamp":1657103692,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x77617161313233)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":3500,"kind":{"data":{"args":["0x627463","0x77617161313233"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":13,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400e9ee5be86ec9e38e491aef3993dc1c248d2bf7ba000000000000000d0000000000000dac0000ed235e7cf9d043c8b3f5a2d71dbdef4aaf326854a3d01a835717d02923a488973a8afe2af84fb8aeaa336da476f4874d7c80c7b228923dc21f78d8ba36041529030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000777617161313233","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000004f704686173680200000000086d657461646174610c00000004046e616d65020000000777617161313233096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ae9ee5be86ec9e38e491aef3993dc1c248d2bf7ba","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3MYWPZ8DV4Y73J93BQKK4YW3GJ8TAZQQAFSRYNS","success":true},"operations":[],"transaction_identifier":{"hash":"0xb6e0ca0dd8dc4390a37f4b1ec8b5df3c42f1858936805f7f0f5e29e9c10a8140"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x77617161737465737431)","execution_cost":{"read_count":16,"read_length":44010,"runtime":167230,"write_count":2,"write_length":161},"fee":3500,"kind":{"data":{"args":["0x627463","0x77617161737465737431"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":5,"position":{"index":4},"proof":null,"raw_tx":"0x80800000000400e14cac7d41bd3c6e0a823ae48274f018c9693ef900000000000000050000000000000dac0000c3731d563a62b6226185a288f8fdd3e5f37650818686faf42e222118a0646f0579e78218fc9d4e2718d47c076089eb249f5012eb6b82e60380ede5abf163baef030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000a77617161737465737431","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000004f804686173680200000000086d657461646174610c00000004046e616d65020000000a77617161737465737431096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ae14cac7d41bd3c6e0a823ae48274f018c9693ef9","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3GMSB3X86YKRVGAG8XE90KMY0CCJT9YZ723KYKA","success":true},"operations":[],"transaction_identifier":{"hash":"0x78dbf1e01821f739e9a25bac020fd24b34d3cd62dc4d311b1353c7c6ee703e88"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xf42bd38bf7d0bd4398ae179e016ec15261045048f847fe6566cdc0852bde786e","index":62884},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000378d5b0df7d6d4b4a4c21f902abe0f1067591a0e45078ac3ba","index":2284351},"confirm_microblock_identifier":{"hash":"0x3546161b7da9ac600dfef938c6f58e919aabafb3f22966a258281b50a1232408","index":2},"pox_cycle_index":270,"pox_cycle_length":1050,"pox_cycle_position":850,"stacks_block_hash":"0xdb3dfeca03ad002b78414a548c3c426c0824afaed36d9709d82e8467b48f8ddf"},"parent_block_identifier":{"hash":"0xa0295ae402e2c47e83577445bcec48cd2bbd5a55942a354e11b1c18632fd45e6","index":62883},"timestamp":1657106243,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x776171617374657374)","execution_cost":{"read_count":16,"read_length":44007,"runtime":167191,"write_count":2,"write_length":160},"fee":3500,"kind":{"data":{"args":["0x627463","0x776171617374657374"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004005cd708cae3bfab26be5838dd1080b274f4d4105e00000000000000040000000000000dac0000c5fd6148969811401ee54aa897f8de95ef28d94d31550cf561272a61b5a9d32a7ef7769eb9d14c24ace68896f6793e0584a458a8fff6bfa1d8261c053fb3427c030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000009776171617374657374","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000004f904686173680200000000086d657461646174610c00000004046e616d650200000009776171617374657374096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a5cd708cae3bfab26be5838dd1080b274f4d4105e","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1EDE26AWEZTP9NYB0WDT440P9TF9N0GBSVH21VS","success":true},"operations":[],"transaction_identifier":{"hash":"0xab11a7fd318f6ae071af0089f3dcf6e0c442a429daf8c3a894997d6d6ad5114e"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xa74d2c9e47e942e4140be6ae689a4ca769f7ad2408f9beea993b7ddce9f70f1e","index":63017},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000e6f797c1533d803e76ab9859f6da713e6ac4d6a3125a65764387e206","index":2284495},"confirm_microblock_identifier":{"hash":"0x5d3e16d406491996c4134945a2468cfefea43ab29977253f14b313af26d6cbe6","index":1},"pox_cycle_index":270,"pox_cycle_length":1050,"pox_cycle_position":994,"stacks_block_hash":"0x366b8aa68d58034523bdeed776f231e4e12836f90d4532fa23ca05f68ec404e0"},"parent_block_identifier":{"hash":"0x36a7faab4c1725b0a79175da7e2ed4802e9208814d06a211a4538d1631afd6b2","index":63016},"timestamp":1657192172,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7465737462696c616c33)","execution_cost":{"read_count":16,"read_length":44010,"runtime":167230,"write_count":2,"write_length":161},"fee":6000,"kind":{"data":{"args":["0x627463","0x7465737462696c616c33"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":2},"proof":null,"raw_tx":"0x8080000000040054d504ed798a864a3da562d67578409ec6ec873a000000000000000000000000000017700000e6fd898a1de8f65527ffefb2335faf5ec7c162f3c07d07307280179de078afe04cdf78cfb768298eeaf4d16987e966e1995ef15524f31be40af691199a1b9bb3030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000a7465737462696c616c33","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000004fa04686173680200000000086d657461646174610c00000004046e616d65020000000a7465737462696c616c33096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a54d504ed798a864a3da562d67578409ec6ec873a","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1ADA17DF658CJHXMNHDCXBR82FCDV477BMD3JH2","success":true},"operations":[],"transaction_identifier":{"hash":"0x2c6d1fc63327555f954b48064d2497b7385c8812105ecb5f78bb8fd833478d35"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x5db7c9a764dd1e4978ed127e9c69560959caf391c980a60da538355bde1bcbca","index":64072},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000014b5dc09f9fa441f4a524efb7894b2bef0dce545c58519e691","index":2285686},"confirm_microblock_identifier":{"hash":"0x607e67defda4f5ccdb1509fe95733e8bc914c61365311abf1b554fb34ed5cd65","index":1},"pox_cycle_index":272,"pox_cycle_length":1050,"pox_cycle_position":85,"stacks_block_hash":"0x3374c9fbf980e82038e90074bb512ef79cfbb37387fd229c26b1943d587a0f88"},"parent_block_identifier":{"hash":"0xc4c2d3950de4e46cc26cef7ffcb94aa0d2639ae55f180f5d907453b996ff91a5","index":64071},"timestamp":1657702847,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x696e6372656d656e747465737431)","execution_cost":{"read_count":16,"read_length":44022,"runtime":167386,"write_count":2,"write_length":165},"fee":6000,"kind":{"data":{"args":["0x627463","0x696e6372656d656e747465737431"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400e7b3490e967732af9f66600fa6177adfa987601000000000000000000000000000001770000151f90f0c03527f75979b0be7b864c34d31f7e3bdf623f0c440dda7ccf11c4fea1fe71932025154ac5b608f1692035dc2a551d88d95db00f84dbea5b6dcf366e6030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000e696e6372656d656e747465737431","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000050104686173680200000000086d657461646174610c00000004046e616d65020000000e696e6372656d656e747465737431096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ae7b3490e967732af9f66600fa6177adfa9876010","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3KV6J8EJSVK5BWZCSG0Z9GQFBFTK1V0231DJR93","success":true},"operations":[],"transaction_identifier":{"hash":"0x5a96523d2079fd5836dc73caded2f3f4cddca6c3090871857c5fbc585825070d"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xf7139ea2a240eaa17976aaa8c10ea24835f6549d1b4c314b446fcb02a7c6677d","index":64378},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000061152a6c08b38f630c076ec92b53bf783b77434a2131795989a31e57","index":2286038},"confirm_microblock_identifier":{"hash":"0xe153a43f953cbe7838364db82a67b12cd21a1f82335962f920288beea96d5536","index":0},"pox_cycle_index":272,"pox_cycle_length":1050,"pox_cycle_position":437,"stacks_block_hash":"0xf22b3325bbbfc4b113218535c43e72e6f9ba4a7a5d00021b40eb3ac312116bd5"},"parent_block_identifier":{"hash":"0x381d53f3b4c6e52322d6477e6dbf9aa1e29949a668ff6698022fae8a1783fb4c","index":64377},"timestamp":1657871132,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7761716173313233313233313233)","execution_cost":{"read_count":16,"read_length":44022,"runtime":167386,"write_count":2,"write_length":165},"fee":3500,"kind":{"data":{"args":["0x627463","0x7761716173313233313233313233"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":7,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004005cd708cae3bfab26be5838dd1080b274f4d4105e00000000000000070000000000000dac0001ef4743356b097bd672511001e752d3e28611cd937b1175a7b45f7c2864154a4430ec581a3655fdaba5eb72bc682a58d7311c24392243a1681576cd032f15cfd5030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000e7761716173313233313233313233","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000050804686173680200000000086d657461646174610c00000004046e616d65020000000e7761716173313233313233313233096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a5cd708cae3bfab26be5838dd1080b274f4d4105e","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1EDE26AWEZTP9NYB0WDT440P9TF9N0GBSVH21VS","success":true},"operations":[],"transaction_identifier":{"hash":"0xb4d0b4fdfb737bb46784346fa1af7eeed322c05a789aab0aeed4cdbd0b90a227"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xd4b766d3aea888f32a3b99d656929324e06068cb68bd40bc97af7ac165ce1e47","index":68292},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000001cd88a1503df4bf88feabf6abfa0a06180246bd695830fa308","index":2314465},"confirm_microblock_identifier":{"hash":"0x233fdb18021b8912cc691d3d5e20cc216b4513409065842e0548fd589d03dd82","index":3},"pox_cycle_index":299,"pox_cycle_length":1050,"pox_cycle_position":514,"stacks_block_hash":"0xe19cc24446b9067444543092e080d5ded781fde032aa5c92bb75b8a0faf08048"},"parent_block_identifier":{"hash":"0xfd42f0f4d3eef0646e2d15672d91eddf27b2c292aa3567554ba4b88568974abc","index":68291},"timestamp":1659424336,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x65646765636173657465737431)","execution_cost":{"read_count":16,"read_length":44019,"runtime":167347,"write_count":2,"write_length":164},"fee":3000,"kind":{"data":{"args":["0x627463","0x65646765636173657465737431"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400254a79735e9607369e43e909c2d3991d2d415bbb00000000000000000000000000000bb80001ce847fe074ead250ba1017145b1ce522aa34d9f51bf4c2a470836eb6519b695708b738b93bbb0a168f1cf8b3cff257ed694239b20a1dc35b8872711bb1c904ed030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000d65646765636173657465737431","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000052504686173680200000000086d657461646174610c00000004046e616d65020000000d65646765636173657465737431096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a254a79735e9607369e43e909c2d3991d2d415bbb","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STJMMYBKBTB0EDMY8FMGKGPKK4EJTGAVQDW8KGP5","success":true},"operations":[],"transaction_identifier":{"hash":"0xf14bdb704e9e9ab8f33f397a4e609da2968efb307c5db1c066618f8ab31c276b"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x952adb2d692a5376b2bbd7fb91560cc99a48b9191ad52681b9ed5f5b71578a98","index":68297},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000001cd11ea63443a61a0c8269db04ca6dcb9b02d1be967f65a62b","index":2314470},"confirm_microblock_identifier":null,"pox_cycle_index":299,"pox_cycle_length":1050,"pox_cycle_position":519,"stacks_block_hash":"0x5dedb5621429b57ccf8674479fe7030d705020afde5a2ce2b48aaf51aea43a4b"},"parent_block_identifier":{"hash":"0x527e9bd31dc3694ac0f28b1fd332a460925c3ed19f59bba5a8167cdf593bef50","index":68296},"timestamp":1659428740,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x65646765636173657465737433)","execution_cost":{"read_count":16,"read_length":44019,"runtime":167347,"write_count":2,"write_length":164},"fee":2500,"kind":{"data":{"args":["0x627463","0x65646765636173657465737433"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400254a79735e9607369e43e909c2d3991d2d415bbb000000000000000300000000000009c400019e4e2fa17d6746b5610323ee53cb180c874033aa75a7b9098dc541eb88d34e3635aa5d1ab510e746341dbf77bf9448905a587226b637be887132e62e4d7f737b030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000d65646765636173657465737433","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000052704686173680200000000086d657461646174610c00000004046e616d65020000000d65646765636173657465737433096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a254a79735e9607369e43e909c2d3991d2d415bbb","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STJMMYBKBTB0EDMY8FMGKGPKK4EJTGAVQDW8KGP5","success":true},"operations":[],"transaction_identifier":{"hash":"0x32a4aea72e9cec01930eb62da88d151767518711c16083218c3eb343e3e71e2d"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xdd01c367a0f071af1b02620f005c05815a8e928d2a80f2d4b3ab5037e9ea00fd","index":68337},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000007589b61baef17caa1a6e0a9c2321822d54f1f1eff4cf625bfbc8850f","index":2314512},"confirm_microblock_identifier":{"hash":"0x0c7474f08d153bd4e391bfc2df87dae46f253df21fa8b025834be6e8289bcd89","index":1},"pox_cycle_index":299,"pox_cycle_length":1050,"pox_cycle_position":561,"stacks_block_hash":"0x93ba9a3889471b9d09aa97c59fe2cb588de387b85a1ca1ee402c4d650daf432a"},"parent_block_identifier":{"hash":"0x9818dbe495da6bc95b709051f14bc533deafdd39cbd7db2983e80d5d4c9dbc57","index":68336},"timestamp":1659452381,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x65646765636173657465737434)","execution_cost":{"read_count":16,"read_length":44019,"runtime":167347,"write_count":2,"write_length":164},"fee":3000,"kind":{"data":{"args":["0x627463","0x65646765636173657465737434"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004000f465dc179e93cf89048480bef835311ab72cad500000000000000000000000000000bb800009a6c8804ef5416387a0e99283bda37f69ced3431cb2bdbce6cd97bb447c42d333b6f7d4346203918925fe809c42ec3eebd79749001aafcf7ee83d5288cba0c31030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000d65646765636173657465737434","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000052d04686173680200000000086d657461646174610c00000004046e616d65020000000d65646765636173657465737434096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a0f465dc179e93cf89048480bef835311ab72cad5","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST7MCQE1F7MKSY4G9140QVW3AC8TPWPATP7K7TNP","success":true},"operations":[],"transaction_identifier":{"hash":"0x2a4ba523c601cb2b21d1e454e89634ac711a1bf1a9175758bf61346bad68c156"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x2d288853380fdcc3846f870871b45702e7017ef8dfb51dc44c58775f55cf096e","index":68486},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000030ac001db2112a448da12bc435682b26ffb2b435bc050d1136","index":2314675},"confirm_microblock_identifier":null,"pox_cycle_index":299,"pox_cycle_length":1050,"pox_cycle_position":724,"stacks_block_hash":"0x2b5341602ff5977eab9fe195250d1d9cbbfd81cdcd596596175d3b5acdc05663"},"parent_block_identifier":{"hash":"0x1cee77181492f51cac65575fb91bbad6c861dbc5d03fb51177a9b70040dc79b2","index":68485},"timestamp":1659535053,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x77313233313233)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":30000,"kind":{"data":{"args":["0x627463","0x77313233313233"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":8,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400e14cac7d41bd3c6e0a823ae48274f018c9693ef90000000000000008000000000000753000013e507d09ec7c8a5d49513ab9c156fb921934e5db3043d2d2e25d39a121e4c33f7dbd5f4b9260ffc021c9c856bc0edde69100d56201898cb61163786eb6831b3a030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000777313233313233","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000053004686173680200000000086d657461646174610c00000004046e616d65020000000777313233313233096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ae14cac7d41bd3c6e0a823ae48274f018c9693ef9","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3GMSB3X86YKRVGAG8XE90KMY0CCJT9YZ723KYKA","success":true},"operations":[],"transaction_identifier":{"hash":"0xb96cfc6853d478933b1a7fdb7090660d936b37425752fa325609a34bb5ebee19"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x57a65ed08eb62bfcacefe0d066e6cbdd1c735cefbb8024d2acfd4bfa5c2a2b55","index":68496},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000002db8f41a3a5306488c73eef6b51050156e6cca7945d48a98c0","index":2314685},"confirm_microblock_identifier":null,"pox_cycle_index":299,"pox_cycle_length":1050,"pox_cycle_position":734,"stacks_block_hash":"0x19ff5fb01258c5531303153c9400a0c7035dfc65f330a359501f78c06f37c331"},"parent_block_identifier":{"hash":"0x1724575b47e2c75e6c9e1ac5d606457d84d62fa500c19e202621a4588b65be7d","index":68495},"timestamp":1659540052,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7177717765)","execution_cost":{"read_count":16,"read_length":43995,"runtime":167035,"write_count":2,"write_length":156},"fee":3000,"kind":{"data":{"args":["0x627463","0x7177717765"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":8,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400dc228d23098159e62ef42d1261838ab1af15a6df00000000000000080000000000000bb800002c3668031e01491719f137fd657cb893e3ed205de060a7c9a4eb26f9dc9c90180b723f3cc6e4e970f5c205b04d1e4c1f8be8be2c69bd43f5dbb530428d97538a030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000057177717765","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000053204686173680200000000086d657461646174610c00000004046e616d6502000000057177717765096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051adc228d23098159e62ef42d1261838ab1af15a6df","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3E25393160NKSHEYGPH4RC3HARTY5D6VWN1TS64","success":true},"operations":[],"transaction_identifier":{"hash":"0xb555e9bc0ad953024fb243cb4537baba80319b5deaceb112fd78e426e1965355"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x450c309a4e4a0153f931ae94638962b2fa3b8b02bb700be60069f6099748373a","index":69445},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000014134a98e42060b84c75b4d6563aa67e91112b62df672d79a9","index":2315728},"confirm_microblock_identifier":{"hash":"0x49e9ac680aab9c0f5d74076ced07a4dd8cf02827db310509cb18007c84f5939d","index":5},"pox_cycle_index":300,"pox_cycle_length":1050,"pox_cycle_position":727,"stacks_block_hash":"0xef9fa964de80aeb8e77bfbbe0c1dfc3d7861f9df626dbb64e028fa9c30cb9787"},"parent_block_identifier":{"hash":"0xac7cea6edc3046034cd5e5f38a5b0b1ceaf06c4e8cd8a0e37dce44257784d56a","index":69444},"timestamp":1660145350,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7761713233)","execution_cost":{"read_count":16,"read_length":43995,"runtime":167035,"write_count":2,"write_length":156},"fee":15000,"kind":{"data":{"args":["0x627463","0x7761713233"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":12,"position":{"index":7},"proof":null,"raw_tx":"0x80800000000400dc228d23098159e62ef42d1261838ab1af15a6df000000000000000c0000000000003a9800012e284eddf06e459f5e214fed29820a72d70e0c566bbaa905446f03053b7bfc0d13e5227d6062f575be4f66712c4f9195af213af59de11e6aa2633053e2df3b15030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000057761713233","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000053a04686173680200000000086d657461646174610c00000004046e616d6502000000057761713233096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051adc228d23098159e62ef42d1261838ab1af15a6df","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3E25393160NKSHEYGPH4RC3HARTY5D6VWN1TS64","success":true},"operations":[],"transaction_identifier":{"hash":"0xe424ec42ce0fa21f351496f452dbf696b459a46a0aa0b635a09a6a1561ad0506"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xb0888e1836c7c13c3094c0c71c352c50bf22d561db654111c08f99838188e484","index":69552},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000012847e556717f97491ab144bec8383fd70a67103463c3e6edc","index":2315842},"confirm_microblock_identifier":{"hash":"0x3cc8f3015c86854cdb4064110276155f328847cd44c5b64205b5e784972539e7","index":4},"pox_cycle_index":300,"pox_cycle_length":1050,"pox_cycle_position":841,"stacks_block_hash":"0xdd7930547fcb9a96b33034eebb06482e27650422fcd7dca62aa96cc1748e9a0f"},"parent_block_identifier":{"hash":"0xffc231964510c52ac652b70b59f6e9892e6760f85b8969eae0c90d70200d2b92","index":69551},"timestamp":1660203451,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x65646765636173657465737436)","execution_cost":{"read_count":16,"read_length":44019,"runtime":167347,"write_count":2,"write_length":164},"fee":6000,"kind":{"data":{"args":["0x627463","0x65646765636173657465737436"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":3},"proof":null,"raw_tx":"0x808000000004007fcffc72ddb02c593de923c8e695954ded7645740000000000000000000000000000177000011e7d45dbf18c1f43bb975567ba2c1e291181f84e656b5f40fb8502ca440022d255e2fcb6319e9e97ae6268076c3f23e17e8d09d5d74e077295365b18c3b40e70030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000d65646765636173657465737436","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000053c04686173680200000000086d657461646174610c00000004046e616d65020000000d65646765636173657465737436096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a7fcffc72ddb02c593de923c8e695954ded764574","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1ZWZZ3JVPR2RP9XX4HWHSMNJN6YTXJ5EK491FVB","success":true},"operations":[],"transaction_identifier":{"hash":"0x77a9cf1900d39a20c42284ee881bbdc47c96e02f9c01426a4bfed420a7629c4a"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x6cb8df742b4215b1d37d7ec32ca22ef47a9d9ce1779126303e5d172c429dba5d","index":69558},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000037e69c5e2bcec5bd5789bfadabb9a5d236728d629447c57cf","index":2315849},"confirm_microblock_identifier":null,"pox_cycle_index":300,"pox_cycle_length":1050,"pox_cycle_position":848,"stacks_block_hash":"0x4439d88f7f36a5d96cb498320a3f0f7e7c384bf660f05f00a78591f85637a8a8"},"parent_block_identifier":{"hash":"0x557d9cb5b3e9902683bbdd820d0ba71e8c673a028ba485cda1b0f413d26a9de0","index":69557},"timestamp":1660205246,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x72656c6f61647465737431)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167269,"write_count":2,"write_length":162},"fee":6000,"kind":{"data":{"args":["0x627463","0x72656c6f61647465737431"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004007fcffc72ddb02c593de923c8e695954ded764574000000000000000300000000000017700001ba7e6bfd5b970d7c203a79574352b833f17f7a892d8fcb3632185f2da7cf46b4275174d616dc343e29b192bf013ba8c3ea5fb05204f8ab775cf17be5dddfb8a7030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b72656c6f61647465737431","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000053e04686173680200000000086d657461646174610c00000004046e616d65020000000b72656c6f61647465737431096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a7fcffc72ddb02c593de923c8e695954ded764574","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1ZWZZ3JVPR2RP9XX4HWHSMNJN6YTXJ5EK491FVB","success":true},"operations":[],"transaction_identifier":{"hash":"0xc620a160b4fee713b736117a16116bf3e69fe415979bde692b5caeb9d7177a1b"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xe10bde7cf3f743e0c0da9e50292d793708c0fbce1a12d973988de43f99699ccf","index":69568},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000eb7971e880619d9f8e5fe374505a6c204ab0298d184861aa2343dc76","index":2315863},"confirm_microblock_identifier":{"hash":"0xe8685d7ef6e515eb53f97aa66d1506237a1725985a7a15664ea15f648c852ea7","index":1},"pox_cycle_index":300,"pox_cycle_length":1050,"pox_cycle_position":862,"stacks_block_hash":"0x7da3b40178c34f93924a8746c00c1bdf676fa3672612c752ffa8f125845077d6"},"parent_block_identifier":{"hash":"0xee2cabe6fbbac0975d50d6eedba6517d0937bf5672a660e1419e9634fd7feb97","index":69567},"timestamp":1660209134,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x72656c6f61647465737432)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167269,"write_count":2,"write_length":162},"fee":6000,"kind":{"data":{"args":["0x627463","0x72656c6f61647465737432"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":6,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004007fcffc72ddb02c593de923c8e695954ded764574000000000000000600000000000017700001a016bd0d00f0aabcafd04ce4b6d7dceba77b5b496253fb35129f852138bba73f56cccba0013107c30a013bfe0196381b3ffd718dfd596390ba7997d21b11e4c2030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b72656c6f61647465737432","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000054004686173680200000000086d657461646174610c00000004046e616d65020000000b72656c6f61647465737432096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a7fcffc72ddb02c593de923c8e695954ded764574","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1ZWZZ3JVPR2RP9XX4HWHSMNJN6YTXJ5EK491FVB","success":true},"operations":[],"transaction_identifier":{"hash":"0x2dab8ef6c5ddd54111a03c72bbf0a20330d02ed34df39c1a5867e5b567f65d8e"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x42cc621e199d962349ec5f78475189400dfef46030b19e6d7507821104d011f9","index":69898},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000002a7ce623f7324f9b9809b64ded58149bba576c0f3e958a8a7b","index":2316228},"confirm_microblock_identifier":{"hash":"0x898ac06255fe12d781498b294502ebbb243d36b5a7530cc2e1e1983187a26960","index":0},"pox_cycle_index":301,"pox_cycle_length":1050,"pox_cycle_position":177,"stacks_block_hash":"0x883d6b961e024848c1494573518f289ab228ea4fdb54789a30917d224907e059"},"parent_block_identifier":{"hash":"0xf041988f4bf36b18ae7dd626bb42583c5c87b98f67bbeb36e635a92a9fe9e308","index":69897},"timestamp":1660393010,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x65646765636173657465737435)","execution_cost":{"read_count":16,"read_length":44019,"runtime":167347,"write_count":2,"write_length":164},"fee":12000,"kind":{"data":{"args":["0x627463","0x65646765636173657465737435"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":17,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400c8a53e382581442ac201705dd4fc89e2478b89b100000000000000110000000000002ee00000459f1119bb1cd762f24bac1951cf41a679fd9264294b5993bb2499e573fb76cc5189225f58eebe08d67ac5b1ef58ad19b5bc8784553b1adb567f035d180c3729030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000d65646765636173657465737435","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000055c04686173680200000000086d657461646174610c00000004046e616d65020000000d65646765636173657465737435096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac8a53e382581442ac201705dd4fc89e2478b89b1","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST34AAFHR4P0M8AP205R5VN7WH7H4F2W9P4V4PTT0","success":true},"operations":[],"transaction_identifier":{"hash":"0x9b25bda445f0b3194ffeae2a4eca2b9130b350c1f469092f4a8a60e956a45e11"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xd810812bdafd85168480bd21d070f15ceeefc75eb2b94917eb57aa44e3308f5e","index":69902},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000012ae15d9a260f093b00e28b880f6b4ad5454316a5cdd304192","index":2316233},"confirm_microblock_identifier":{"hash":"0xebc81d461471664d56d40e1d783617b2a2692102aa170b57a8c3a12128573e00","index":0},"pox_cycle_index":301,"pox_cycle_length":1050,"pox_cycle_position":182,"stacks_block_hash":"0x67c6dc1bfa20511c8b0273942241fcdb77797153a04d2e7d03dcfe6f41a13e5a"},"parent_block_identifier":{"hash":"0xa2bfdea94afc32ba46b9d38ea43b5ceefbebb1967dbaa1feae57eb5cc716069d","index":69901},"timestamp":1660395382,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x3137)","execution_cost":{"read_count":4,"read_length":41790,"runtime":48292,"write_count":0,"write_length":0},"fee":3000,"kind":{"data":{"args":["0x627463","0x3137"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400261fbb54427f9495c8f28a26963c8f5d7d82bdeb00000000000000040000000000000bb8000087c8868cef6dc3c41b3ed905a0bb826c66ea242574a62e19db9183e8adb0a12a7c7c7aca03d8db024eb9d3fbb1be099fdeb76ac16739b03a4ec77e38eeb59aa1030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000023137","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2013)","sender":"STK1ZETM89ZS95E8YA52D5HWHXEQV0NXXC3F8AYT","success":false},"operations":[],"transaction_identifier":{"hash":"0xf68f91659636df54bea2f1a3d2a49e75b36669cc03c0934372c09ec6eb104bb4"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x1705d354d4cff753ef30a20f0b3a605a64cfc158c5828573ef1cd5588c3cd695","index":69908},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000024149ca47604a5ae24c6f8b29ac7b7da9966e2f0eff030ef7c","index":2316240},"confirm_microblock_identifier":{"hash":"0x9764aedf5b798a38da0fed51480ed8b6a208a752d44dfad0408f6aee5b723f47","index":0},"pox_cycle_index":301,"pox_cycle_length":1050,"pox_cycle_position":189,"stacks_block_hash":"0x49dcc8184450cbe556cab257618b1923488ee6b11c4fcf9d432765272315c88f"},"parent_block_identifier":{"hash":"0xe326844013ed993fc0b6aa7b046666cb7f72fc987244684db07efc84e15be1f0","index":69907},"timestamp":1660397787,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x72656c6f61647465737436)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167269,"write_count":2,"write_length":162},"fee":3000,"kind":{"data":{"args":["0x627463","0x72656c6f61647465737436"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":20,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400c8a53e382581442ac201705dd4fc89e2478b89b100000000000000140000000000000bb80001dd1f104cce5ca8d6e5b9529f09c445a0d431bb2e15d44416eb3cc53029306e9d0356dba5c65e1d8777d4e2120aa2ae6f0e071fe952090975d61237fdf4b842d5030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b72656c6f61647465737436","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000055e04686173680200000000086d657461646174610c00000004046e616d65020000000b72656c6f61647465737436096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac8a53e382581442ac201705dd4fc89e2478b89b1","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST34AAFHR4P0M8AP205R5VN7WH7H4F2W9P4V4PTT0","success":true},"operations":[],"transaction_identifier":{"hash":"0x966d0c577e838f3ff617eacb46cea2960983303878df76c674ea25c918f97ad4"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xc1e8faf25001332d7553de1ce28e900e484eed35a32b202f6ee53904f118241d","index":72579},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000002e61c9e7d342a92bb941f13de093723c80f323ee695bb8d017","index":2343720},"confirm_microblock_identifier":{"hash":"0x0cb93422a7331aa474faf8a8efe7e7b78de696d793e62f364f6047f5b9cf83c9","index":0},"pox_cycle_index":327,"pox_cycle_length":1050,"pox_cycle_position":369,"stacks_block_hash":"0xd5610a17c3fe72edf46348061ae3b54e96da3b0f127e3a0ed9a8ca07d43dcda4"},"parent_block_identifier":{"hash":"0xa6491d78513f13ba90bf4fbe23c23165e0c85a07838012502d5e35b95550d53e","index":72578},"timestamp":1661339356,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x706f70757074657374)","execution_cost":{"read_count":16,"read_length":44007,"runtime":167191,"write_count":2,"write_length":160},"fee":6000,"kind":{"data":{"args":["0x627463","0x706f70757074657374"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":15,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400254a79735e9607369e43e909c2d3991d2d415bbb000000000000000f000000000000177000006db401525186994f10e08ff640bf10dad50f217b5e458a9577a25384b9a534a678c546f6a89183b81092ae12f0bc1e19c45e6adfac55eab1d3562778064adee3030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000009706f70757074657374","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000056d04686173680200000000086d657461646174610c00000004046e616d650200000009706f70757074657374096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a254a79735e9607369e43e909c2d3991d2d415bbb","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STJMMYBKBTB0EDMY8FMGKGPKK4EJTGAVQDW8KGP5","success":true},"operations":[],"transaction_identifier":{"hash":"0xb6548b678950edd9ce9cc97583401e040754a8271d6b43dd3c7fdc1489e04f08"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x828f1b92909d14bdfc29c0b8439f0a01765e30c20871b9cb0a2e033a320adc16","index":72586},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000009547aabc5f27b8b1f4401f76cacf32ec3cb634009de8ec8dd3bee","index":2343727},"confirm_microblock_identifier":{"hash":"0x7e1968e5dc851d34b011976ed8c2f6be2362e3783f28cdb02ddc83af081a6ec5","index":2},"pox_cycle_index":327,"pox_cycle_length":1050,"pox_cycle_position":376,"stacks_block_hash":"0x9e55cd2f09a74c55f11a3cfee15e687b0e7b928b5701815c96e8cc0b0973873d"},"parent_block_identifier":{"hash":"0xa20437abd986de9419cdfe169235d00bdbb3e09b891988ea40794e670fe6fdb7","index":72585},"timestamp":1661343379,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7265666163746f727465737431)","execution_cost":{"read_count":16,"read_length":44019,"runtime":167347,"write_count":2,"write_length":164},"fee":6000,"kind":{"data":{"args":["0x627463","0x7265666163746f727465737431"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":18,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400254a79735e9607369e43e909c2d3991d2d415bbb00000000000000120000000000001770000074a1811b59eda5caab10271a84f706e952636780aab1f5feabd9876cd5a633163ca28d1f12a689bcd42ae426ae92ebed82c4d727ca55da6751747198769f4a15030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000d7265666163746f727465737431","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000056f04686173680200000000086d657461646174610c00000004046e616d65020000000d7265666163746f727465737431096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a254a79735e9607369e43e909c2d3991d2d415bbb","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STJMMYBKBTB0EDMY8FMGKGPKK4EJTGAVQDW8KGP5","success":true},"operations":[],"transaction_identifier":{"hash":"0x238b2bec77a53cd430590625d5d16e98effc3f4b3d17392fce2c549314640cfe"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x173a4a3b45ca39d865ada8dc74bcd9c7ab4447383c6b095eb0d02cba0e421b2c","index":72732},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000355bccd8d5bc0c817624c2f0bddfbdb7583abce1ce3438a176","index":2343896},"confirm_microblock_identifier":{"hash":"0xff2c02f3e24ac17c3f89dd7f7bf032e8df7e349a335ffdb065fb7c1211a22a2c","index":3},"pox_cycle_index":327,"pox_cycle_length":1050,"pox_cycle_position":545,"stacks_block_hash":"0x52369268c0196678a3a6be0e96877b624205369e73c3227230624d1d26450ea3"},"parent_block_identifier":{"hash":"0x682b0c1a2387bb8ce8dae06d39ad682cb8c03ce436857521084bbf7e729c1b5b","index":72731},"timestamp":1661427332,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x646f6d61696e6e616d657375627465737431)","execution_cost":{"read_count":16,"read_length":44034,"runtime":167542,"write_count":2,"write_length":169},"fee":6000,"kind":{"data":{"args":["0x627463","0x646f6d61696e6e616d657375627465737431"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":9,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004000f465dc179e93cf89048480bef835311ab72cad50000000000000009000000000000177000000bb48a55710355278865f650ff366b338edf11e6cb27fb230cef3a5c2744219832c2dd649eff7104a4ce992a54d38552b808f95501e22148281d0d04670010bf010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000012646f6d61696e6e616d657375627465737431","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000057604686173680200000000086d657461646174610c00000004046e616d650200000012646f6d61696e6e616d657375627465737431096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a0f465dc179e93cf89048480bef835311ab72cad5","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST7MCQE1F7MKSY4G9140QVW3AC8TPWPATP7K7TNP","success":true},"operations":[],"transaction_identifier":{"hash":"0xa0802309a619e8692ed0a2c04ab4ebad866786daa23ad459aac21d7b8f8139a8"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xdee120cc7f3218d3c255a26978343d52b9c519ed3de140db426b5435dfda2174","index":72899},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000001687238e8dbb9f24d424cde17b3d5153e129356cfa05f157f7","index":2344089},"confirm_microblock_identifier":{"hash":"0xbeec30b07c52e4534d8eaa17442b3fc8f0e56f3349878ec374481e31e3692164","index":3},"pox_cycle_index":327,"pox_cycle_length":1050,"pox_cycle_position":738,"stacks_block_hash":"0xcc7430a69ef2852bd0091c6e378e8831a96aecd9e4d97d64b23f029f9ca7cc7f"},"parent_block_identifier":{"hash":"0xafbc2e2af5e017695690cc5a35f33404d904593b2097a30bf481ef989c5be273","index":72898},"timestamp":1661516011,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x696e6372656d656e747465737432)","execution_cost":{"read_count":16,"read_length":44022,"runtime":167386,"write_count":2,"write_length":165},"fee":12000,"kind":{"data":{"args":["0x627463","0x696e6372656d656e747465737432"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":19,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400ef29ee95fc9093bd6d968fec5f005495939d86a800000000000000130000000000002ee00001c8bef99f7a1b41bf04893e93f62373697d6ccaae9626acc3127be55b70addab57f25dd3df47e29af3d97f7749bae1d2ea5acfa5f6db3663ba772b3fbaa77fd66010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000e696e6372656d656e747465737432","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000057b04686173680200000000086d657461646174610c00000004046e616d65020000000e696e6372656d656e747465737432096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aef29ee95fc9093bd6d968fec5f005495939d86a8","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3QJKVMNZJ897FBDJT7YRQR0AJAS77C6N04SVV51","success":true},"operations":[],"transaction_identifier":{"hash":"0x5f204227dc26f8acdc41df9f936f15ac0a8b1902596b5b8671c482a44b90f8f5"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x5bdf4374433ccb2ce7b89517bdde8e9fa57a52f7a1e291f245bbef14e7b0d94b","index":74052},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000002530fd90f5f6dc1534c1c5798aa34278c1655de9b1025e509c","index":2345574},"confirm_microblock_identifier":{"hash":"0x601ea2e27b1238b30ecbb1a7f9965c10b4b36a97298bd63e6b88c1654c16e5bf","index":0},"pox_cycle_index":329,"pox_cycle_length":1050,"pox_cycle_position":123,"stacks_block_hash":"0x0447beb9f8f6f1f2013e138134867c10ac5db48a84d85a2fa659132a527d2d45"},"parent_block_identifier":{"hash":"0xccd4f6784dfe8c18ec72beccc683498e3facce59a25a72f5e4dbcecdc788eb46","index":74051},"timestamp":1662448577,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7374782d6f7665726861756c)","execution_cost":{"read_count":16,"read_length":44016,"runtime":167308,"write_count":2,"write_length":163},"fee":3000,"kind":{"data":{"args":["0x627463","0x7374782d6f7665726861756c"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004001c8ce452bbbca1c12e50ab2caf8ad9e4e84e3e2200000000000000020000000000000bb80000e1563ffb02c8c5c96cfb74e6c111efc7aad00f6218e964390118ad89d0f090ee6754e99b3365ff5f09206e7c5819c904800eece25ad18e9d93b5960cf0e903cc030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000c7374782d6f7665726861756c","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000057c04686173680200000000086d657461646174610c00000004046e616d65020000000c7374782d6f7665726861756c096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a1c8ce452bbbca1c12e50ab2caf8ad9e4e84e3e22","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STE8SS2JQEYA3G9EA2NJSBWAV7JEGKHY49Q586QX","success":true},"operations":[],"transaction_identifier":{"hash":"0x7da8413edf1f0f4e93e88980c3b917781c5a3b7978ec9607ad8aee3aae6a9812"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x601a8c63bee9fe3e4503bd759005c608631dd411dadf6cb53846e0a0956a7e37","index":74371},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000091f56ee9e1bc09f2a81b1f07920e070a31d2385815e010eada9f1ce0","index":2345928},"confirm_microblock_identifier":{"hash":"0xeaa4a09aee3ca6ca0ae908631e198e905a835c258c616ebae370f332c054f87d","index":3},"pox_cycle_index":329,"pox_cycle_length":1050,"pox_cycle_position":477,"stacks_block_hash":"0x97aae7d920899218b202d344a994e062daa13a3fe5aa64e1976e8d741d65baba"},"parent_block_identifier":{"hash":"0x9787f1accfee0aed6950f8e253d7e00afcf5928e4037a27b3b26c3fb85138a8c","index":74370},"timestamp":1662718537,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7265666163746f727465737433)","execution_cost":{"read_count":16,"read_length":44019,"runtime":167347,"write_count":2,"write_length":164},"fee":3000,"kind":{"data":{"args":["0x627463","0x7265666163746f727465737433"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":11,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004001c8ce452bbbca1c12e50ab2caf8ad9e4e84e3e22000000000000000b0000000000000bb80000b4191a5ef9fdccd4f648164e575535b86b0262cb1f77da8d9261b51775b764801089f49e9aa3495cdcf75f6967aa795426826ce7c1a3a3143bb77c5500b0bea9010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000d7265666163746f727465737433","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000058404686173680200000000086d657461646174610c00000004046e616d65020000000d7265666163746f727465737433096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a1c8ce452bbbca1c12e50ab2caf8ad9e4e84e3e22","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STE8SS2JQEYA3G9EA2NJSBWAV7JEGKHY49Q586QX","success":true},"operations":[],"transaction_identifier":{"hash":"0xbb198f3ce754006a2b02cbbc5059ddef523b81900557e4a06d6a841a925ea64b"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x9fdf90689d1e2fad1fd67ebdec05920ce7a6c40aead1c475d95c921a9d916c80","index":74376},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000078df535b9456b123e836c9c6ed42beab0c0fda88fb8a9c9f940de007","index":2345935},"confirm_microblock_identifier":{"hash":"0xd477d02c7be5f3ac5ff1f06163f47485099c369b70f3fd4152df0ca159fe6b77","index":2},"pox_cycle_index":329,"pox_cycle_length":1050,"pox_cycle_position":484,"stacks_block_hash":"0x5215a71684369b5e539192740d5176c32acdf40df2a204e2a1cad8cb416fbbf5"},"parent_block_identifier":{"hash":"0x476e83156e006a0744ad94a1b30cc84fd51ededa5e805b231d35d3456966b4c5","index":74375},"timestamp":1662725244,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7265666163746f727465737434)","execution_cost":{"read_count":16,"read_length":44019,"runtime":167347,"write_count":2,"write_length":164},"fee":3000,"kind":{"data":{"args":["0x627463","0x7265666163746f727465737434"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400744c17dbe498e8cdd77b89d4b243c83485c41d7600000000000000020000000000000bb800012f0780fa2b5c2480ccd2821ca73e7513289e82d0cfbc59266a714f4c63f30b6d341bda4d06186f2caaf8330acf1ab8749014bfb27e5bd6f550ad0ac686896163010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000d7265666163746f727465737434","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000058604686173680200000000086d657461646174610c00000004046e616d65020000000d7265666163746f727465737434096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a744c17dbe498e8cdd77b89d4b243c83485c41d76","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1T4R5YVWJCEHKEQFE4X9CJ3S0T8BH0XERBAT5PN","success":true},"operations":[],"transaction_identifier":{"hash":"0xa3f85786b5c1582151036567bf21e21522fc3a0aa878d437dec90b5b5e64a358"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x4cc3536c42d9b28ddb11f4958b58918e8038da88bedfe71788f292102569b505","index":74377},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000003c826c5c22187ba3898bebee61253b2633ab329da2e2caf0f0b1","index":2345936},"confirm_microblock_identifier":null,"pox_cycle_index":329,"pox_cycle_length":1050,"pox_cycle_position":485,"stacks_block_hash":"0x04c541bcd759bf9290bfead57b1781fd0434c0c1b97c2230e5c04cc2d2520cc4"},"parent_block_identifier":{"hash":"0x9fdf90689d1e2fad1fd67ebdec05920ce7a6c40aead1c475d95c921a9d916c80","index":74376},"timestamp":1662727651,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x74656d702d7072656f726465722d74657374)","execution_cost":{"read_count":16,"read_length":44034,"runtime":167542,"write_count":2,"write_length":169},"fee":3000,"kind":{"data":{"args":["0x627463","0x74656d702d7072656f726465722d74657374"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":4},"proof":null,"raw_tx":"0x8080000000040058965255434f9d7d32741070b80ec33e724c126c00000000000000000000000000000bb800014a09f2d7199ba15e4b0910d6421ed145e8d3b173c46845b0dae095c578605b594bcfe0e7344d6bd85314add8acede0bd057b27bcc43741c17f53c1ca95e908b7010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000001274656d702d7072656f726465722d74657374","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000058704686173680200000000086d657461646174610c00000004046e616d65020000001274656d702d7072656f726465722d74657374096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a58965255434f9d7d32741070b80ec33e724c126c","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1C9CMJN8D7STZ9JEG871E0ERCZ74K0JDJQW2AQG","success":true},"operations":[],"transaction_identifier":{"hash":"0x117ba98bdb3f08e24a82eba81bdb4665738f943d95fa45656fd57be426209668"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7465737474656d7032)","execution_cost":{"read_count":16,"read_length":44007,"runtime":167191,"write_count":2,"write_length":160},"fee":3000,"kind":{"data":{"args":["0x627463","0x7465737474656d7032"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":5},"proof":null,"raw_tx":"0x80800000000400724614b6e9ee4a4049da6cb1085bed1aeef7b71300000000000000000000000000000bb80001021494ea75d63a47dc388e525c2c96b4bbad4d22e43b9c72757d7fd119372e1245e3824e4287fe4b471e60453c02658e27662c712cc21521db14763998a1b13e010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000097465737474656d7032","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000058804686173680200000000086d657461646174610c00000004046e616d6502000000097465737474656d7032096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a724614b6e9ee4a4049da6cb1085bed1aeef7b713","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1S4C55PX7Q4MG29V9PB222VXMDEXXXQ2F0RQYBD","success":true},"operations":[],"transaction_identifier":{"hash":"0xc9b7ecec33becedf4cf97c28d41a77988d70bbbf83ebf6fd7afd67b30831d83f"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x2ead98d5b372fce10fb888c7398b7708c5faaec09904035c3bfcb3445b3b0951","index":74379},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000013429d1d8ea910404168ef410ce6904e40f1fb051c3908058d","index":2345939},"confirm_microblock_identifier":{"hash":"0xf6785c308298210490b0f69699fc8370495ed9517ec13ff769687af537f8842c","index":0},"pox_cycle_index":329,"pox_cycle_length":1050,"pox_cycle_position":488,"stacks_block_hash":"0xb789d40ac8afeba79df06bf1ea1f9703ed8c3aa8d05001a4518a1b66f17fdb8f"},"parent_block_identifier":{"hash":"0xcdfc43d1cc74bfb54799a6c22115a8a1e362c6d9dd18cf2f54b7b5d9bf4707b5","index":74378},"timestamp":1662730054,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7265666163746f727465737435)","execution_cost":{"read_count":16,"read_length":44019,"runtime":167347,"write_count":2,"write_length":164},"fee":3000,"kind":{"data":{"args":["0x627463","0x7265666163746f727465737435"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":16,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004001c8ce452bbbca1c12e50ab2caf8ad9e4e84e3e2200000000000000100000000000000bb800011c6786176e038510ab1be52a97ae45fe437e419e87ee2c9743a038c846e8ab8c683da39342c751792cbfb2c48fd0327b4c072d932915a6549e98d251ae1082cf010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000d7265666163746f727465737435","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000058a04686173680200000000086d657461646174610c00000004046e616d65020000000d7265666163746f727465737435096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a1c8ce452bbbca1c12e50ab2caf8ad9e4e84e3e22","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STE8SS2JQEYA3G9EA2NJSBWAV7JEGKHY49Q586QX","success":true},"operations":[],"transaction_identifier":{"hash":"0x6eea9635545d323f89c3727b3d6f40a706e17965746d8b517a85fcc2d948ea91"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xb45515b6865b2e192da5e215e47f595bc951f521a1a70afc8078512490f7d0d1","index":74733},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000001410268a0929ac8402c3b9fd9f750e307f54af2e5b0c57d0b4","index":2346403},"confirm_microblock_identifier":{"hash":"0x1bdaf493fbc2e8903363e0d06c9391ab82b0a922a13b2e5f77a47a8bcf21ad0f","index":0},"pox_cycle_index":329,"pox_cycle_length":1050,"pox_cycle_position":952,"stacks_block_hash":"0xc6c4f10bb4d610d9a1893f00b2c5f083a24e2fa045a23f169fb16d541f4a63ee"},"parent_block_identifier":{"hash":"0xa347fb4378248fea3760717b96fec3e3e6b0fe9e92279b44a709f155deafa923","index":74732},"timestamp":1663072148,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x72656c6f61647465737434)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167269,"write_count":2,"write_length":162},"fee":3000,"kind":{"data":{"args":["0x627463","0x72656c6f61647465737434"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":19,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004001c8ce452bbbca1c12e50ab2caf8ad9e4e84e3e2200000000000000130000000000000bb800006da17ec9574bbd8a2251e3d3c7991aaf97073f46d2d276b4ed56665e0bfd29a15e614c5051de03e784691424a64effccd23b3f3a3f67571e9413f67206f65805010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b72656c6f61647465737434","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000058d04686173680200000000086d657461646174610c00000004046e616d65020000000b72656c6f61647465737434096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a1c8ce452bbbca1c12e50ab2caf8ad9e4e84e3e22","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STE8SS2JQEYA3G9EA2NJSBWAV7JEGKHY49Q586QX","success":true},"operations":[],"transaction_identifier":{"hash":"0x30f9c6ee2631ac05065d82c10ae2aaac98e66dbfa872393c2d03e04189078292"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x697dbd801802217141397384971f573d63d8c5ef9dacee2971e58f62fe295a66","index":74976},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000355e14bc1a1000db0110ef82bd10e447b4f1a1127f20c3133f","index":2346670},"confirm_microblock_identifier":{"hash":"0x3580c72e2ef92a997cce4d075f69c9fe49616d8f87309387be95d60025754ba2","index":1},"pox_cycle_index":330,"pox_cycle_length":1050,"pox_cycle_position":169,"stacks_block_hash":"0xc95fe082a894a5ec01642a4863e9332b5e5bb367ff2c5ecbb7501b4d21138aea"},"parent_block_identifier":{"hash":"0xf9a3af7814cdc3ea878abc28bae9367e7dfc268179983744616adb84115ae98f","index":74975},"timestamp":1663314097,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x72656c6f61647465737435)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167269,"write_count":2,"write_length":162},"fee":144800,"kind":{"data":{"args":["0x627463","0x72656c6f61647465737435"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":6,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040058965255434f9d7d32741070b80ec33e724c126c000000000000000600000000000235a000009af8185121bf730c8a6355d5ff8427977afab4d9f4e91e21192be2c65f844dfa12e0bb56e41e471b17a2aca76dde696f555223c60bb3a81809e1b12813665950010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b72656c6f61647465737435","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000059204686173680200000000086d657461646174610c00000004046e616d65020000000b72656c6f61647465737435096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a58965255434f9d7d32741070b80ec33e724c126c","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1C9CMJN8D7STZ9JEG871E0ERCZ74K0JDJQW2AQG","success":true},"operations":[],"transaction_identifier":{"hash":"0xc594c5d50b0f1dbb948196b356d509fc514d8bf12e625afbeda4a7f1057e67a4"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xe47dd6c3f220967a3bafa618752af9340ac55eb5ebe31a163ac6f7890d322cfa","index":74999},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000b31af8d77977ae5a3357f5253024b07aa322bbe2926f23916","index":2346694},"confirm_microblock_identifier":null,"pox_cycle_index":330,"pox_cycle_length":1050,"pox_cycle_position":193,"stacks_block_hash":"0x13a69a923def648d7ed7fecd4f2171b9a63b40a17af2a8d72076899fdc9f2a00"},"parent_block_identifier":{"hash":"0x451645415940efd972dd94e3d17824811a2a25a664dcaf6f1a3957dc8e128031","index":74998},"timestamp":1663331160,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x72656c6f61647465737437)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167269,"write_count":2,"write_length":162},"fee":12000,"kind":{"data":{"args":["0x627463","0x72656c6f61647465737437"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":10,"position":{"index":2},"proof":null,"raw_tx":"0x8080000000040058965255434f9d7d32741070b80ec33e724c126c000000000000000a0000000000002ee000005389346c91413468b7eb7bcf66833188c8e1db40bf6d66367437fa4405e2735a1a6f9880f9ee73a3b5314941382890c6a56e40804a0abdc75dfeb84ee7d3e954010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b72656c6f61647465737437","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000059504686173680200000000086d657461646174610c00000004046e616d65020000000b72656c6f61647465737437096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a58965255434f9d7d32741070b80ec33e724c126c","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1C9CMJN8D7STZ9JEG871E0ERCZ74K0JDJQW2AQG","success":true},"operations":[],"transaction_identifier":{"hash":"0x131f7a042c2dd2660fb27320da14c3f1025a7440b937e34af06ba95f8b62176d"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x1f16edce79fd8e28c1b1440c1d7e8636daed9f2171ab589906aa9fcc05cd75ad","index":80416},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000359b746029b89b28b4a6cfb71f71256824a04384281149f0a","index":2377100},"confirm_microblock_identifier":{"hash":"0x07b3dcd2eeb45bd052c0fe972a06023fd622c6507b5370363003158794539da0","index":0},"pox_cycle_index":359,"pox_cycle_length":1050,"pox_cycle_position":149,"stacks_block_hash":"0x9d73d532dcff96eb2fd66bc0d6c44106a2d69158eaf6a938cfdb37f22943e047"},"parent_block_identifier":{"hash":"0xbbc74f7273b48a2b4f7b313cd8fb77491968aae5832b9bd02bcc4c018d25a316","index":80415},"timestamp":1666073950,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7465737474657374)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":71200,"kind":{"data":{"args":["0x627463","0x7465737474657374"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":23,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400ef29ee95fc9093bd6d968fec5f005495939d86a8000000000000001700000000000116200001b6f207f96b1853eaaa3640c46c56d1016d611355cba8d49c088a0e4df14859e0639e47a1fa22d899b5a0a460bc1b471004f73e55d60c9ce8b4f2af429f566fd1030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000087465737474657374","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000005ad04686173680200000000086d657461646174610c00000004046e616d6502000000087465737474657374096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aef29ee95fc9093bd6d968fec5f005495939d86a8","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3QJKVMNZJ897FBDJT7YRQR0AJAS77C6N04SVV51","success":true},"operations":[],"transaction_identifier":{"hash":"0x372c1242c5336a35c4ec1bf3717f651d64c34011e498fb538188753018c35e71"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x22aedbeef4a47aa3bc4fcd95329435b92ebf63a23389142426ef4a8e3a5405be","index":81147},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000001ea02a2c0ae90fa23d7c280685b6527754ccf9ced1edb34c59","index":2377959},"confirm_microblock_identifier":{"hash":"0xc89290a1043893cb42d22fde2f82c92071f08343ae485d85a36ab616a68a08ac","index":5},"pox_cycle_index":359,"pox_cycle_length":1050,"pox_cycle_position":1008,"stacks_block_hash":"0x2fc3ebd18ecafdf056c7a69d02e8d22ae06c5d23fb461b53c08a4e82f25ce0a3"},"parent_block_identifier":{"hash":"0xefdc6f5fd5066a6f8c33dd29d730d862012275dc2b52e4502380218ed65ce0e9","index":81146},"timestamp":1666596382,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x747279616761696e74657374)","execution_cost":{"read_count":16,"read_length":44016,"runtime":167308,"write_count":2,"write_length":163},"fee":3500,"kind":{"data":{"args":["0x627463","0x747279616761696e74657374"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":34,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400ef29ee95fc9093bd6d968fec5f005495939d86a800000000000000220000000000000dac0000126ba7de34f8a9d2e05875790297cf16cb658b38fe993cc94fe7795f10bc18687229758215ecf1386cb38f095d0b2c6e9057a5057e4cc5a1542e3edd06d66c6f010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000c747279616761696e74657374","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000005c404686173680200000000086d657461646174610c00000004046e616d65020000000c747279616761696e74657374096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aef29ee95fc9093bd6d968fec5f005495939d86a8","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3QJKVMNZJ897FBDJT7YRQR0AJAS77C6N04SVV51","success":true},"operations":[],"transaction_identifier":{"hash":"0x0618614435ca71202e9d8d8cb7d6b60141c9d648a66d9e2964cfc539e82425c0"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x6d094e7d9ef699171a1ab6d0f5643cb613c46034a95416b2027028659bc3c290","index":83075},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000073537c842c7ef0154bda154defe6b97c356c280f8073dd3a6","index":2403954},"confirm_microblock_identifier":{"hash":"0x3360b5bde4387ede98d4510ba562d2161db6c7d6e0f658202754a35fa9c3b592","index":4},"pox_cycle_index":384,"pox_cycle_length":1050,"pox_cycle_position":753,"stacks_block_hash":"0x7774f00148c07b9df4c6b7126390431400686cb8418ac2b86ce712efaa369594"},"parent_block_identifier":{"hash":"0x30df5edd11e73c257ed52d7a9971e39f39afd581d8e5984a703b726f26ac3821","index":83074},"timestamp":1667547752,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x64656d6f5f646f6d61696e)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167269,"write_count":2,"write_length":162},"fee":3000,"kind":{"data":{"args":["0x627463","0x64656d6f5f646f6d61696e"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":9,"position":{"index":6},"proof":null,"raw_tx":"0x8080000000040012b54110318003cd57830756ce6864d3064afcd100000000000000090000000000000bb80001ca257fca73b08a5c8cd6ea469cd4947e1708344a44447f74b6a184a90e87b5004fcc4c261d1acc4f12474c57b1bca6f7bf866252e0d674f1a4ff1b780b8da326030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b64656d6f5f646f6d61696e","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000005f704686173680200000000086d657461646174610c00000004046e616d65020000000b64656d6f5f646f6d61696e096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a12b54110318003cd57830756ce6864d3064afcd1","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST9BAG8G66007KAQGC3NDKK8CK9GCJQWT4KM4ASN","success":true},"operations":[],"transaction_identifier":{"hash":"0x0396c64ca37e26ecb252c572087d7588ef925baab238c0b3f1706e81dfa3f21d"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x950d497ec6fed5e35f418d329a3bcab99893bb3cb77a402164cf18eb48bc6de9","index":83943},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000b21d4aaad1a1e57e4fc3c3ca037b20872a19a8c6da4267ef60b51ba4","index":2405106},"confirm_microblock_identifier":{"hash":"0x8ba3103bca10e8a36feb535e2d9afcc08de5305533b5fd128c81d7ff753b40d3","index":3},"pox_cycle_index":385,"pox_cycle_length":1050,"pox_cycle_position":855,"stacks_block_hash":"0x93cce4816ae32860386a615ba2b3ed6a53029fee8e4a8b4ecf2643859d6f99bc"},"parent_block_identifier":{"hash":"0xcd4159df1d0c1aaf0d2129d533dba2720ed6f9e2ea79fb33c81d0b3fb3c88515","index":83942},"timestamp":1667775701,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x73637265616d)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":3000,"kind":{"data":{"args":["0x627463","0x73637265616d"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":2},"proof":null,"raw_tx":"0x8080000000040005391f5d843a0c6b04fa89aa29b0ab833de5868500000000000000020000000000000bb80000988f1081808078a76e7cec36c4113df9a1969fb0d9e4d5b205ddf6e5f212d6e14dce714aec6f2b076aca4a7def7986a052a52a20961a49fb9ae0abbaf5328cda030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000673637265616d","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000060004686173680200000000086d657461646174610c00000004046e616d65020000000673637265616d096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a05391f5d843a0c6b04fa89aa29b0ab833de58685","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2KJ7TXGGX0RTR4ZA4TMADGNE1KVSC6GQZ05QTX","success":true},"operations":[],"transaction_identifier":{"hash":"0xec9e25d98284ef799c3a9d4a77b3f670ee2d8bdf048255aeab7153e799a15216"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xba13c0a924e4b93905830fd855080cf86e5faf53ceb22b5143f6e8abf62ac4ca","index":83947},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000005734000a1922897120a76a168faa8f9a8c4e05d25592c7786edd","index":2405112},"confirm_microblock_identifier":{"hash":"0x53e74ced68a17b7178c4ca7a55be2efa80c7368b0a455a209e50ee25b10e69ba","index":4},"pox_cycle_index":385,"pox_cycle_length":1050,"pox_cycle_position":861,"stacks_block_hash":"0x3a291452486616d21a9c7a8c678014a24f11b4e2131d9edf4d5051a13efbf7ef"},"parent_block_identifier":{"hash":"0x85309dca3b33402147f2af9e883bae142107f65d6952e3c71972230ac78d6ae4","index":83946},"timestamp":1667778039,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6672616d6565)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":3000,"kind":{"data":{"args":["0x627463","0x6672616d6565"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400ce20107969127908f07c1f8e09e8e9a1f14681cc00000000000000020000000000000bb800011e63dc0e6a76de7a5090294c9f36094980ba949253ce36c48ea47f6a246a018405a11194445e4db0ffae08fad0c0a7d4b413137a82f9bb92144f1a50ef7d8922030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000066672616d6565","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000060304686173680200000000086d657461646174610c00000004046e616d6502000000066672616d6565096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ace20107969127908f07c1f8e09e8e9a1f14681cc","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST372043SD497J27GFGFRW2F8X6GZ2HM1SJ2T5AZX","success":true},"operations":[],"transaction_identifier":{"hash":"0xf4ffc352ac63b2dd6fc1ffa04aaa7651307cf8bba67cbb93be628a21f3410dd9"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6672616d6565)","execution_cost":{"read_count":12,"read_length":43969,"runtime":131808,"write_count":0,"write_length":0},"fee":3000,"kind":{"data":{"args":["0x627463","0x6672616d6565"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":5},"proof":null,"raw_tx":"0x80800000000400ce20107969127908f07c1f8e09e8e9a1f14681cc00000000000000030000000000000bb80001fbfa5e017b3f85df5de504a087caffa3ea1aea45e0760ae51dfa8c896de1382c2f66e1c6582ce1c17188783d9ccccd3c766f7781743b40c8eaa3b1cef9e12f4e030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000066672616d6565","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST372043SD497J27GFGFRW2F8X6GZ2HM1SJ2T5AZX","success":false},"operations":[],"transaction_identifier":{"hash":"0x1cefba7d6304f7026d82d51fc9a94c25077679e0d5fceacbca29c2d99af0c51e"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x79cc79bd832a7af02ffb203d89469585167424e7730c9dd592834551cb602ac5","index":84008},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000f23efa494c8be5f2b84706011c11cc3d9de213c34f87135256c3","index":2405183},"confirm_microblock_identifier":{"hash":"0x43942e158b11caf052014b27524ac4f5246317f82babdfcba8e1e398de963d4d","index":3},"pox_cycle_index":385,"pox_cycle_length":1050,"pox_cycle_position":932,"stacks_block_hash":"0x34cf13f6340ca28759260d61e0a78ab84806d056d4d1548f891caf2c148378f2"},"parent_block_identifier":{"hash":"0xda7f9e76c9994f7016972419a2b231d5fd5f37d0e4044114a6f35447d7bf8871","index":84007},"timestamp":1667817032,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x73686572696666)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":30000,"kind":{"data":{"args":["0x627463","0x73686572696666"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":6,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400ce20107969127908f07c1f8e09e8e9a1f14681cc00000000000000060000000000007530000005e4d9af05de0b9c38b0d853c198dcd26bd5b080a133bbf89521e86940d789de585750f5938e4d6d764883e3755f29b87deccc0f3d299b56a28625d0d9128f55010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000773686572696666","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000060804686173680200000000086d657461646174610c00000004046e616d65020000000773686572696666096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ace20107969127908f07c1f8e09e8e9a1f14681cc","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST372043SD497J27GFGFRW2F8X6GZ2HM1SJ2T5AZX","success":true},"operations":[],"transaction_identifier":{"hash":"0x24d70fbc3c9c9f53b19512f4fa706b0cb8388d4a244059d5f5a77a1a7e5d9d97"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xed2a9ee4927136d5b211203ae859cb02a01a16dac69b3cc51a8bc7e33c1d3f88","index":84021},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000039edad266518c25ff7186420952e956c05f5a78ac8ff2699d","index":2405196},"confirm_microblock_identifier":{"hash":"0xb871cd5116203070ffa485bcc990f402dcfd2eb50baf0da0814ddabadb583ff0","index":4},"pox_cycle_index":385,"pox_cycle_length":1050,"pox_cycle_position":945,"stacks_block_hash":"0xe5ab102b8f4c759e8943f1898e7d1eace18132aad4d6ed35ccf864fe5f8d5687"},"parent_block_identifier":{"hash":"0x91d796be338402ef47559674493a7cf3635cacfb9b6f80893b72073ceb214491","index":84020},"timestamp":1667825783,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x626c69747a)","execution_cost":{"read_count":16,"read_length":43995,"runtime":167035,"write_count":2,"write_length":156},"fee":15000,"kind":{"data":{"args":["0x627463","0x626c69747a"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400ccf133d2c282011b2866b6d71b6087d79385f55b00000000000000020000000000003a9800019819de25524d76ba981d4edb02071d0500e6818bef21a8824e31b564d585ad1f7dc8b7f57c20e76da2b0e466d3152e12f7001063cb0afe2a27f73b1791d3ce02010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000005626c69747a","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000060c04686173680200000000086d657461646174610c00000004046e616d650200000005626c69747a096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051accf133d2c282011b2866b6d71b6087d79385f55b","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST36F2CYJRA1026S8CTVDE6V0GZBS71FNBD196NK8","success":true},"operations":[],"transaction_identifier":{"hash":"0x7c8a19425cb1c0cb519f22d69cc94e09ceaeeeef0709770ff7cf73aba93bb5e7"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xa2972ed2d39060bcfa111cdaf35e6e14aa5bd0ad1c78415ab48ffc5e3c1ba70c","index":84027},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000aa567e3e213571b0f29f975448affdb00d49e7512b4caf062","index":2405203},"confirm_microblock_identifier":{"hash":"0x8827022e2706fde13910ff6293bedf8a2c3bfac5c68321a57c3b3711a0bb2c22","index":0},"pox_cycle_index":385,"pox_cycle_length":1050,"pox_cycle_position":952,"stacks_block_hash":"0x61977f57e461cce0823cd81607a90752b5ecd6c8b1bdcb83c2d9c396338e46f5"},"parent_block_identifier":{"hash":"0xefd03849c637a908507a49d6ac6a92c8bc0ce3e801867a74894c908d051e2fbd","index":84026},"timestamp":1667830853,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6e65776e616d65)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":3000,"kind":{"data":{"args":["0x627463","0x6e65776e616d65"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400eabeadb9fd7309492cff225e01194b79b80ea39f00000000000000020000000000000bb800017079000170e172c133a8b842428660d58b37d2543ed2f5ce75b1e4a8358627bf35d9c2c5617ded0c870c3f5bac2b0be96b981e37fa1dd6e9948e56062d0b152b010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000076e65776e616d65","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000060e04686173680200000000086d657461646174610c00000004046e616d6502000000076e65776e616d65096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aeabeadb9fd7309492cff225e01194b79b80ea39f","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3NBXBDSZNSGJJ9CZWH5W08S9DWVG3N3KYDK21AV","success":true},"operations":[],"transaction_identifier":{"hash":"0x83680e3a0cb7fcc1a840ca78271f0896faaabab54cfb764f68e0c11911ee7603"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x587483575a14f5bcd8b0f3f9dea0e734176dda1aa550578b83cea802749b6b64","index":84114},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000044c75a5764c6164a5c93a9a81906d258b4d7d87dc7c0a06239","index":2405298},"confirm_microblock_identifier":{"hash":"0xc10d2151008b72e7f33025026de7b91b8b6da10dcd0e469f7f177a62e0360058","index":1},"pox_cycle_index":385,"pox_cycle_length":1050,"pox_cycle_position":1047,"stacks_block_hash":"0x25748ad35818170123951e6f8c7b4c700f5c8e6f91dd4dc47f8dfe047b0ae8bc"},"parent_block_identifier":{"hash":"0x92244541fb0da650b68edb155250da9feaec994e59cc752f28588174f50ccf89","index":84113},"timestamp":1667883117,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x77686973746c65)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":6000,"kind":{"data":{"args":["0x627463","0x77686973746c65"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040010ddbae093922a79f9d33c36c68875d2c1c906e4000000000000000200000000000017700000a342a3f9b2a92419b6f5be8652aea6ab234e37bb41874e4fa323015880efe4ed45f14fdf85e3794318cbedb18b725371d5dab9a7fb543ec367a96387045b5caf010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000777686973746c65","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000061004686173680200000000086d657461646174610c00000004046e616d65020000000777686973746c65096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a10ddbae093922a79f9d33c36c68875d2c1c906e4","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST8DVEQ0JE92MYFSTCY3DHM8EQ9C3J86WGQBEECY","success":true},"operations":[],"transaction_identifier":{"hash":"0x1c09441abe045b0fc4cff32b74bb03bfe703add133e6f50b391af2a4419fd70d"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x3cbf90a3699556abc1c4acb338b0e2f546c0ee96a5f6e2beb0f58be23fdca5f5","index":84115},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000427e4eb88ee0a20a832082f9cf0138bdbfb46c1ef45b246940","index":2405299},"confirm_microblock_identifier":null,"pox_cycle_index":385,"pox_cycle_length":1050,"pox_cycle_position":1048,"stacks_block_hash":"0xd1c0020695ba9426e7f1adafd2051aeca9ea5397e49e86681d5978c654249bfa"},"parent_block_identifier":{"hash":"0x587483575a14f5bcd8b0f3f9dea0e734176dda1aa550578b83cea802749b6b64","index":84114},"timestamp":1667884238,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x77686973746c65)","execution_cost":{"read_count":12,"read_length":43972,"runtime":131834,"write_count":0,"write_length":0},"fee":192000,"kind":{"data":{"args":["0x627463","0x77686973746c65"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040010ddbae093922a79f9d33c36c68875d2c1c906e40000000000000003000000000002ee0000015a1946e49b77de6ff4c7abe7dcdc1c970a77b68fc982f1ec954011c7750eeb781de8334d433b41b51b38550bbd083cf853c15d8f35bbeb5ca54ccda74c4999a4010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000777686973746c65","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST8DVEQ0JE92MYFSTCY3DHM8EQ9C3J86WGQBEECY","success":false},"operations":[],"transaction_identifier":{"hash":"0x09291be2c1d777c6d2bc060a3c5a0623210fa5a381ec62edd3367ec8e15e192c"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xb33e6fac0ace2b21bbd3053773c8528f18eb968d81dc6c9ec8b1b30ecc002aec","index":84116},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000002856f1b1c5492537d93b5acfa85738236215af4383f5ccb9e9","index":2405300},"confirm_microblock_identifier":{"hash":"0xc75c59930cd98ace0f9f5369c60468df94adf436f7b02c9b669bf8f7f444e54a","index":4},"pox_cycle_index":385,"pox_cycle_length":1050,"pox_cycle_position":1049,"stacks_block_hash":"0x6e3072d4247eb79377a9197550a3fa65ab6d7e4c99954fb49169fe1fc94175bc"},"parent_block_identifier":{"hash":"0x3cbf90a3699556abc1c4acb338b0e2f546c0ee96a5f6e2beb0f58be23fdca5f5","index":84115},"timestamp":1667884411,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x62696c616c)","execution_cost":{"read_count":16,"read_length":43995,"runtime":167035,"write_count":2,"write_length":156},"fee":24000,"kind":{"data":{"args":["0x627463","0x62696c616c"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400c30d9ea5321592df016f6a3fa91f07c6927d1e2300000000000000020000000000005dc0000184842b01c273a3ee49ad7ae9458e8688e2e4276ae79a265ca1b99e1d9b0815504ecfbb3763cb933843a7ec30e1316eb2f61f9336271317c276f90aab0042a48f010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000562696c616c","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000061104686173680200000000086d657461646174610c00000004046e616d65020000000562696c616c096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac30d9ea5321592df016f6a3fa91f07c6927d1e23","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST31GV7N568AS5QR1DXN3ZA8Z0Z394Z8Y4C5J1Q9E","success":true},"operations":[],"transaction_identifier":{"hash":"0x12d9db77ad3735dd2a7a60c0d6fbad2f7403bbc3f309ce0690bc2dbabdea433b"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xb17bba20ebe51da1bc7a9523279fa1845f106650909c9d68b6869958b290d461","index":84118},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000eeb8ca236b1d751f5930ff86bf4050d5a237453420782c641cee","index":2405302},"confirm_microblock_identifier":{"hash":"0xace65f6115a6ec9718110560240545e1fd9356fe82c99bb53102f74d0351a17b","index":5},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":1,"stacks_block_hash":"0x17c6dfd49a76734dd331a2d4a85926b1a79ba9c7e4b385acae96467f57256b8e"},"parent_block_identifier":{"hash":"0x62603298ab1f784359f5d97d40ed699da2ccd9378b7184c4199fb25d047bdc4d","index":84117},"timestamp":1667886344,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x726561706572)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":24000,"kind":{"data":{"args":["0x627463","0x726561706572"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004002c4673bcc1fcf2bacdae24385dddd9a85d88175a00000000000000020000000000005dc000001d1c11f99ed82e388fe79bf57465558bc192ff79e21d01951cff2039bb8f73842889236ac81f0993abe99a35613bf4ef92614390e393db736da25ee9c097f071010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006726561706572","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000061204686173680200000000086d657461646174610c00000004046e616d650200000006726561706572096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a2c4673bcc1fcf2bacdae24385dddd9a85d88175a","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STP4CWXWR7YF5EPDNRJ3GQEXV6M5V20QBBRY5215","success":true},"operations":[],"transaction_identifier":{"hash":"0xe8304372677d8e168f4b051c9e839301ec250a9ef648458b886ec12e1ea23ae2"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x8d6fe47c36057cd884ed34aa9394e42aa95de635b5b75b251d54a350ef8c4cac","index":84119},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000038ef8414692cedc60a67b3281a5435911ac8b11ec4098d63e3","index":2405303},"confirm_microblock_identifier":{"hash":"0xf701582cffc57c0faf638640a293b527a6908e463fa4714ae3d55ed7ca7622ed","index":2},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":2,"stacks_block_hash":"0x7e3c74516990bd6bf8b6cf7111641578dcb73163bcca4363b0195e8ae85fdfe8"},"parent_block_identifier":{"hash":"0xb17bba20ebe51da1bc7a9523279fa1845f106650909c9d68b6869958b290d461","index":84118},"timestamp":1667887557,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x726561706572)","execution_cost":{"read_count":12,"read_length":43969,"runtime":131808,"write_count":0,"write_length":0},"fee":96000,"kind":{"data":{"args":["0x627463","0x726561706572"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004002c4673bcc1fcf2bacdae24385dddd9a85d88175a0000000000000003000000000001770000017d8b2c1350957911c76f97d9188095cf2af1466d92ecd6c222714c9ff429f31e2e4c6ae5e3d98205c988223fc812a6a619446d569191e23022f1e9f74a88fd0f010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006726561706572","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"STP4CWXWR7YF5EPDNRJ3GQEXV6M5V20QBBRY5215","success":false},"operations":[],"transaction_identifier":{"hash":"0x9a52907e8cc07160c9d19da2af61f984321675710db45158814d8c8a2fe08b10"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6e6f7374616c676961)","execution_cost":{"read_count":16,"read_length":44007,"runtime":167191,"write_count":2,"write_length":160},"fee":6000,"kind":{"data":{"args":["0x627463","0x6e6f7374616c676961"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400c29f2bc04c3a559f50d45767e3b8c3978952032b00000000000000020000000000001770000103ce5a745c38f94fbc95b81652361e6f8f7f923a1a5f8bb8dea97f3781a182eb3b8a5a268f95b12f16a4debe8ac6d8c8046b4b1ddf4e50dae3500e329bb2c267010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000096e6f7374616c676961","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000061304686173680200000000086d657461646174610c00000004046e616d6502000000096e6f7374616c676961096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac29f2bc04c3a559f50d45767e3b8c3978952032b","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST319YAY09GX5B7TGTHBPFRXRREBRJMG35D7B28QY","success":true},"operations":[],"transaction_identifier":{"hash":"0x102481960bb79ce68ce8a8e39a4bf6196873f59ef10ed81d27cf5bdbae229bee"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xb04f7028da96080cd234c8661c3ab7fbab741e2623f0d1bb729f600dce2d145b","index":84120},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000430f0a32eb1d1e96e443c0899909c7203faacefbadf4e2185a","index":2405304},"confirm_microblock_identifier":{"hash":"0x9ef55a6e833d87b25f73a93728f3afd3cc4e226812b88c0b814de0781672ecdd","index":0},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":3,"stacks_block_hash":"0x440b9a009f225af92d4e1585f9f38b4ed160fee8861841e036550010ee281dc8"},"parent_block_identifier":{"hash":"0x8d6fe47c36057cd884ed34aa9394e42aa95de635b5b75b251d54a350ef8c4cac","index":84119},"timestamp":1667887974,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x616368696c6c6573)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":6000,"kind":{"data":{"args":["0x627463","0x616368696c6c6573"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004008298c07ad273097619a191785dcafc2cf09d5305000000000000000200000000000017700001e5c3966851182b6ee0b1c7276324f57d3049f30f94fbf4ecdf8f786c980f2342677762d2645a31dedece405eba2249b607db829c020ae123183604b7fabc7fca010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000008616368696c6c6573","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000061404686173680200000000086d657461646174610c00000004046e616d650200000008616368696c6c6573096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a8298c07ad273097619a191785dcafc2cf09d5305","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST219HG3TT9SGJXGSM68QGQEAZGPF17AK0PWE6SD3","success":true},"operations":[],"transaction_identifier":{"hash":"0xd00a740881d3bc7be4b901267cc93c2b043f4106fcb33e8ae1913265fafd58e9"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x1d9d7b2871dc26d4661e6512ff750c8424fd69e6d58742b506f378e795646148","index":84121},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000010db15d1f8df6fac4b529a5b2fda176ac89274a324819844c7","index":2405305},"confirm_microblock_identifier":{"hash":"0x6e5c43ba1411f6b62f79c5094e9464a7429865f896a3111e459cdd12b5ec974b","index":2},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":4,"stacks_block_hash":"0x500a59258b454cc8bbb62282fa2f7dd55acaa038cfcba13030b5eaa0262a7b8a"},"parent_block_identifier":{"hash":"0xb04f7028da96080cd234c8661c3ab7fbab741e2623f0d1bb729f600dce2d145b","index":84120},"timestamp":1667888285,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x73757065726e6f7661)","execution_cost":{"read_count":16,"read_length":44007,"runtime":167191,"write_count":2,"write_length":160},"fee":30000,"kind":{"data":{"args":["0x627463","0x73757065726e6f7661"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400c80f061403e91afa78165a08819dff011fc2f541000000000000000200000000000075300001d63ceeb8f63678fc7db5750ed63b2ca8c3bb1a8cffc4283225e472332a8eeaa06d7accf0550a10bf35f2037c5be3528f54f102553830a66a93ee14e7fe9cb4d6010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000973757065726e6f7661","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000061504686173680200000000086d657461646174610c00000004046e616d65020000000973757065726e6f7661096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac80f061403e91afa78165a08819dff011fc2f541","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST340Y1GM0FMHNYKR2SD0H0CXZW0HZGQN87JDTXCJ","success":true},"operations":[],"transaction_identifier":{"hash":"0xb74ffcf4cce93a5507c4771c256f6b79e71a88a9656be24d8457080046abbae9"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x73fb7fb17ef7dc2c97844193b9d8fb7763d90880bdccb49dd2935e9252be8a66","index":84122},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000057a616e558afbeb78f47931f3122cd86d911626c6b370c4b0","index":2405306},"confirm_microblock_identifier":{"hash":"0x7f8f57fff315e52c360e3da846a331aee1cb39e6703ebe31f4922e2a6cb4905a","index":0},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":5,"stacks_block_hash":"0x97020b4f5a4f7906709823dede1836eda2a86810483c39a26962034aebf364a8"},"parent_block_identifier":{"hash":"0x1d9d7b2871dc26d4661e6512ff750c8424fd69e6d58742b506f378e795646148","index":84121},"timestamp":1667889088,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x676f7a696c6c61)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":12000,"kind":{"data":{"args":["0x627463","0x676f7a696c6c61"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004007a4389649f07fd1bc0383216339055b5922005cb00000000000000020000000000002ee00000a2e648c8a35501040b024e5e6170e84076afdcb662b61360fa21295dde32ffe10ee8181f032f602925ec6d4e3b18a68172984bbdc00a6c2a1b0818dbe6b9b410010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000007676f7a696c6c61","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000061604686173680200000000086d657461646174610c00000004046e616d650200000007676f7a696c6c61096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a7a4389649f07fd1bc0383216339055b5922005cb","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1X472B4KW3ZT6Y070S1CCWGAPTS4805SCT6P4WG","success":true},"operations":[],"transaction_identifier":{"hash":"0xcd7b8a9bfac6dfd3f404b659c80c4021e59e71bbec31fb96a1701cc654000395"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x647261676f6e)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":3000,"kind":{"data":{"args":["0x627463","0x647261676f6e"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400d63e29634052fefbbf4e3e2d915ffa3680994cd400000000000000020000000000000bb800013b3a95c4ee4cff316a0b6dbe078a94cb7d1c79666a0d015297b68f15f4a0dbd828268f10f9a01d982e2d7b0cb93eb7299256a8f8c32953dd7c87318ba8472408010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006647261676f6e","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000061704686173680200000000086d657461646174610c00000004046e616d650200000006647261676f6e096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ad63e29634052fefbbf4e3e2d915ffa3680994cd4","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3B3WAB3819FXYXZ9RZ2V4AZZ8V816ACTK7NVBKP","success":true},"operations":[],"transaction_identifier":{"hash":"0x72bbda12765de5e5add690985af4e351fae5651c87b5c93e5eac4a37282016aa"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xb4e792923095b6b1526a61ffd124329a615a5b3c1866c0b5765f4936b1a923c4","index":84125},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000044772b67fc5d72a0d28fa42ee7c4f0fad27fdf358020beaefb","index":2405310},"confirm_microblock_identifier":{"hash":"0x4bc252d111cbc94fa38abc33cfb01471429dc449f231e47d58db8b27947396f9","index":1},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":9,"stacks_block_hash":"0x55af7877f54f90affb14ca523979e6a68c37f08f25cdddea7bdca8836f4f0f7c"},"parent_block_identifier":{"hash":"0xd34bad477071f54aeac0c72da1f9ef41a34d08e759a77d8b91282a0526938253","index":84124},"timestamp":1667890294,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6d6163626f6f6b)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":6000,"kind":{"data":{"args":["0x627463","0x6d6163626f6f6b"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040065a21f6c2fe4aede58afa9760e32988d5ef09659000000000000000200000000000017700001b98aca1cff127786d0185c16f15c9ce27ad71c9e9f7c8c118fb1535a24bdc8c437c4a38aaf3c9016144886812001563d41a204c868cb5098ed17decefb38765f010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000076d6163626f6f6b","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000061804686173680200000000086d657461646174610c00000004046e616d6502000000076d6163626f6f6b096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a65a21f6c2fe4aede58afa9760e32988d5ef09659","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1JT47VC5ZJAXQJRNYMQC3HJK26NXW4PB5VA0GMF","success":true},"operations":[],"transaction_identifier":{"hash":"0x505427a8b24edcef03776695a08bfd93cfe142129a92a9a54c25f46123b07d13"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x1a7be76ad8aa90d38a86504d24c8185dd1b5db3bae589ba86be860733543cc30","index":84127},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000002f25dffd0bd8add21709d40f59976c9ed9635959da8edc25b2","index":2405312},"confirm_microblock_identifier":{"hash":"0xe687240e0fadad88f953c7b6db48db0b9e4b2a628632b857aa6a6eedb9dd2666","index":0},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":11,"stacks_block_hash":"0x9582bc904929ae60690273a34c5116cf56c6838209924b907d1b074f8bd6d290"},"parent_block_identifier":{"hash":"0xfca08ba5fc5d67bcfa18ccb8749fca0683669e01fd1fc007d21cc2122970765d","index":84126},"timestamp":1667890846,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6261626179616761)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":3000,"kind":{"data":{"args":["0x627463","0x6261626179616761"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004009665349744a4280711e6d4c8232ea804d91e8df600000000000000020000000000000bb8000044a339aa2618b7b36eaf6652a59ed7661a9df94b981b688d375261924d73dbcc4e3c4162d7621a9eb3225ebe36cf70d4f6794bff61dcbd4e7c61b82e5fe657fb010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000086261626179616761","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000061904686173680200000000086d657461646174610c00000004046e616d6502000000086261626179616761096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a9665349744a4280711e6d4c8232ea804d91e8df6","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2B6AD4Q8JJ2G1RHWVACG8SEN02DJ7MDYTMA9RBX","success":true},"operations":[],"transaction_identifier":{"hash":"0xd929f17c4d7d8e31381f8438a633f398ea9373c6f6f7093f893d094f484a3547"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xa2a36f26cb213433be8d9aa76a62f3d0a649d04233adec949e2e6407fe8da119","index":84132},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000019e6ea1e04dc6f4f9a1a36d32359e49017d9bd57c02e8d55d2","index":2405317},"confirm_microblock_identifier":{"hash":"0x440ce63fc8f099a1bf0425ee0b48854e7e3377778fa285190e34e3d9991f140a","index":4},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":16,"stacks_block_hash":"0xfb76beceea4cdcf59631499accef64cf3ca632511fa1fc62e015a53c2e388750"},"parent_block_identifier":{"hash":"0x9e359f782b71be9f8c7a1e7007ad1dad9b7127bcbfcafcc29dc80e40874f566c","index":84131},"timestamp":1667894767,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x636f7273616972)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":30000,"kind":{"data":{"args":["0x627463","0x636f7273616972"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":132,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004006c4236749a801ed99372a0f42d50efde8a627e160000000000000084000000000000753000013bd807958f52f435fd3ee80d35d998c42049b5d550e3d068828bd0a057785c474fa05b7f07236e52c933e849f226fecaa46b335ff58b990c78b83b500268e254010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000007636f7273616972","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000061b04686173680200000000086d657461646174610c00000004046e616d650200000007636f7273616972096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a6c4236749a801ed99372a0f42d50efde8a627e16","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1P44DKMKA01XPCKEAGF8BAGXZF8MRKY2SF20B11","success":true},"operations":[],"transaction_identifier":{"hash":"0x2d0de485b048cbde3e6dafa63a2d0377d1b00e9dbea3b4078ca470c30aaea4e9"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xd13d8e5ce04a80c3dbaaa6b7ec7d236e2fa6e4392286df7431b49665b4796602","index":84139},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000003a2e829baadb5656fe6295f209d03775b57f7880da7ef7bd3c","index":2405327},"confirm_microblock_identifier":{"hash":"0x9029bce8301f64a5632766ee6dd407de7e8c03b36f2725fad7e5bdc2f677f848","index":2},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":26,"stacks_block_hash":"0xee914da052bb4625fcba16430f8d14b76210dc3c32fa24a925cbdb0c111794ab"},"parent_block_identifier":{"hash":"0xde0c67d4c64d5f638d557c3baa510ffbc8e98cddcdec2feb0d6ce91fe09261f2","index":84138},"timestamp":1667900271,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6176656e67657273)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":75000,"kind":{"data":{"args":["0x627463","0x6176656e67657273"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":5,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004001124c966ba863ba7c8c86cf6c8b436ca411f602a000000000000000500000000000124f80001f1b4d4573d47e938d22284d44fb36a0fb7113f26f98a6f58bc47e5bf6b32cb922e9086880e7523cd2691947e373d0beeffb80735509ca4524cf4c3c5c2e7a444010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000086176656e67657273","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000062004686173680200000000086d657461646174610c00000004046e616d6502000000086176656e67657273096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a1124c966ba863ba7c8c86cf6c8b436ca411f602a","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST8J9JB6QA33Q9Y8S1PFDJ5M6V5427V05B80T6B2","success":true},"operations":[],"transaction_identifier":{"hash":"0x426780ed9adf053143f26e29a58cd3859187924e3c4da51b08c75d38b51e205d"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xca0fdfe24a365d98bf6d631eb608336fed6c86dd20c8c46a215764f71efcea3d","index":84141},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000049f18eaba9b007e5bb7059cb1635a4ab4ed0697c5452754f9cf2fe8e","index":2405329},"confirm_microblock_identifier":{"hash":"0xf086735cc87277ab542d7c5f81f638ed68ffe0a910803df99aaf4a8de0ff5226","index":3},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":28,"stacks_block_hash":"0x4dd4a346fcc7dcfa52894177b9a09b4e93f20d1f0228303d412a5f31102adf0d"},"parent_block_identifier":{"hash":"0x997d2b59a92b567fe0907863c5ef8e6e94a64871245c974839eedd8029fe74b3","index":84140},"timestamp":1667901673,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x646f6d61696e5f61)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":3000,"kind":{"data":{"args":["0x627463","0x646f6d61696e5f61"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":6,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400e7b3490e967732af9f66600fa6177adfa987601000000000000000060000000000000bb80001e389d7889ec2e284d1c7ff3676440cdadc7795278e51cf5c64391729974f7fe45181f4fbbbab82828766d46be9be46d55c272e3223f6dd288259b2fe0c06717b030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000008646f6d61696e5f61","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000062104686173680200000000086d657461646174610c00000004046e616d650200000008646f6d61696e5f61096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ae7b3490e967732af9f66600fa6177adfa9876010","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3KV6J8EJSVK5BWZCSG0Z9GQFBFTK1V0231DJR93","success":true},"operations":[],"transaction_identifier":{"hash":"0x3868dbcadbf4b2b89a80bbac1265ba444bfc999d7c41f1aa6f41ae786e358e0e"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x814da5fdb43ad06322bada29203be8ac84a065620354ddb3229c0653878d4dd2","index":84142},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000ad88e272d6d46016340770c00801f51bcf1ee9698d5ddb65f074","index":2405330},"confirm_microblock_identifier":{"hash":"0x73f6a8a535c4226be2aca528a14737645712ad20e7c6cf6177677e75f70dcd18","index":4},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":29,"stacks_block_hash":"0xebca611529e6446bf2fed6d5b760d0765439ad99d119f1edbb600ec7d3447c88"},"parent_block_identifier":{"hash":"0xca0fdfe24a365d98bf6d631eb608336fed6c86dd20c8c46a215764f71efcea3d","index":84141},"timestamp":1667902886,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x73696c766572)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":15000,"kind":{"data":{"args":["0x627463","0x73696c766572"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":5,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400c30d9ea5321592df016f6a3fa91f07c6927d1e2300000000000000050000000000003a98000101f95b8a5d8eca3b35b6a4835e43a0590b5bc55e644dba0998021224d66dd35130391b95daeae9c1b3a65ffeece332fec2758f6d26a9d16092d0a7a16586b1dc010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000673696c766572","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000062504686173680200000000086d657461646174610c00000004046e616d65020000000673696c766572096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac30d9ea5321592df016f6a3fa91f07c6927d1e23","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST31GV7N568AS5QR1DXN3ZA8Z0Z394Z8Y4C5J1Q9E","success":true},"operations":[],"transaction_identifier":{"hash":"0x3966476535d27fd412df7d6a1fcaf3c8e306bcf1bc758363fb8122b114ee9588"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x646f6d61696e5f62)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":3000,"kind":{"data":{"args":["0x627463","0x646f6d61696e5f62"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":14,"position":{"index":6},"proof":null,"raw_tx":"0x8080000000040012b54110318003cd57830756ce6864d3064afcd1000000000000000e0000000000000bb8000179a59c83ca0e0bf532d950cdaa87a3babb0e82b269611cf661f28c56d1e426950053fb17d620e950bfb3fbb3f2c5cea5e53559d2e54c02d73390e13f0436702e030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000008646f6d61696e5f62","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000062404686173680200000000086d657461646174610c00000004046e616d650200000008646f6d61696e5f62096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a12b54110318003cd57830756ce6864d3064afcd1","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST9BAG8G66007KAQGC3NDKK8CK9GCJQWT4KM4ASN","success":true},"operations":[],"transaction_identifier":{"hash":"0xcdeb744f3137f7f12d2b03e580bd725a0fa325a232a1f0af934e9dfdccb23563"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x53c90d72e3880f009ee702d650ba91afffb9e7eb43d8266408c1877f8590c7fa","index":84143},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000005a750436c38dba9642b2f1a582018295182c63bf1aacf35b7","index":2405331},"confirm_microblock_identifier":{"hash":"0x136483ed6b594344d625c6061dd17f343dd1acbb4cf98d364eb10893c3576c5a","index":4},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":30,"stacks_block_hash":"0xac9747ce77c75fccee1d7894d8c9f187295854c5fdca42d5de1d28853b547341"},"parent_block_identifier":{"hash":"0x814da5fdb43ad06322bada29203be8ac84a065620354ddb3229c0653878d4dd2","index":84142},"timestamp":1667904087,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x68657263756c6573)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":15000,"kind":{"data":{"args":["0x627463","0x68657263756c6573"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400293fab26b49ac31ac4d89467dc56fb6df4ce17b100000000000000020000000000003a980000e24ac54c58035f5efcac1d52b4863704c1ee67f7d274a1b8b236c8555063af1165dea77499a6aac3e14548409c3148442d3f084d7f71596fc5a2f565498fe9cc010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000868657263756c6573","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000062604686173680200000000086d657461646174610c00000004046e616d65020000000868657263756c6573096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a293fab26b49ac31ac4d89467dc56fb6df4ce17b1","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STMKZAS6PJDC66P4V2A6FQ2PZDPZ9KGQP4RWT9SR","success":true},"operations":[],"transaction_identifier":{"hash":"0x672edc4c3841d74f8ff350264065fa009aa275980c0183c2810961a47d96fa09"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x9423e9b4e7206f55839dabbcfd39c1ad62d301e9d7b4591a7f9a7a4ecb75c750","index":84150},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000050c580ca9eba4eb398e08a7de472b467519bc12601c5493c81561daf","index":2405338},"confirm_microblock_identifier":{"hash":"0x4a98955900d274d8e2cebcab9470ef4c4cbc2843477a6a3c0a171be13ff19a6b","index":1},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":37,"stacks_block_hash":"0xb2abbe461c6ce36a2f0a2180ef83f3cd9192b7942a79b663690cc250cf447634"},"parent_block_identifier":{"hash":"0x53ad07caf88464a7ab1013bce62d7dba9f6050c8700d823bd306b706cf4755bf","index":84149},"timestamp":1667908997,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x65636c69707365)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":75000,"kind":{"data":{"args":["0x627463","0x65636c69707365"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400554be47fb1be2e910dc77c29f7eec4025ac69943000000000000000000000000000124f80000adb66fa34b4c1c9069c72d6899dcfba8f6a83837ecb77186a1d22de9481051882e8a7721e0a785b5b2e9c5643ca48dcf2faf8e3d808fdff531664a703e31ab00010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000765636c69707365","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000062704686173680200000000086d657461646174610c00000004046e616d65020000000765636c69707365096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a554be47fb1be2e910dc77c29f7eec4025ac69943","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1AMQS3ZP6Z2X48DRXY2KXZERG15NHMS8DZA1TZK","success":true},"operations":[],"transaction_identifier":{"hash":"0xf006210aa583fce91f7dd85e95a58ee3c50be27d15bbd70a74dbbad0af0f8642"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x04749c1d96075cf64c2435c1e02b17046c479f78c56631ca12e6f2e5467d3940","index":84151},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000c55b9874bc741b2905f7ac4332588102e5d353a6bfc6b304d36f","index":2405339},"confirm_microblock_identifier":{"hash":"0xa9be988e13ad2b423145e828d247a3e5d18a912e8570f9c0ac7af97d87f133dc","index":4},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":38,"stacks_block_hash":"0xe19070f9f2a209ae34243c1f7457c936cb2ea86511274bb04fa81681cfbf3141"},"parent_block_identifier":{"hash":"0x9423e9b4e7206f55839dabbcfd39c1ad62d301e9d7b4591a7f9a7a4ecb75c750","index":84150},"timestamp":1667910203,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x696365637265616d)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":75000,"kind":{"data":{"args":["0x627463","0x696365637265616d"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":6,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040005391f5d843a0c6b04fa89aa29b0ab833de58685000000000000000600000000000124f8000157a7b55665789af12392a716c497173dbf0318b2645bee29c0a8655b79daf44740e169be2620e6d2c75a4d689d7cd13c9850c95fbff6e9c3feb8841c21575423010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000008696365637265616d","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000062804686173680200000000086d657461646174610c00000004046e616d650200000008696365637265616d096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a05391f5d843a0c6b04fa89aa29b0ab833de58685","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2KJ7TXGGX0RTR4ZA4TMADGNE1KVSC6GQZ05QTX","success":true},"operations":[],"transaction_identifier":{"hash":"0x17ee2a7c6557169734f90a9f96a12ac8ba91548f324a33c309c1276e8bcf1691"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x7c5d40d863a5ac17ae41239d7c9e463c51bebf63ebabdaa986c6bf11ee1c61f9","index":84153},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000ce5f5c9bb272bbbcd1fd1aeac2fbdb699f5c3243bddf13b8018","index":2405341},"confirm_microblock_identifier":{"hash":"0x8c52572f0617c6aac1a5e9e77ff84c288fe23555082a54c1dab8eae70096a59f","index":4},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":40,"stacks_block_hash":"0xc93e953b6e62bc38a08ee53ce2ce907b8240bed730258f5c88df9c812f535d9a"},"parent_block_identifier":{"hash":"0xfbd93958c4575df4a1b8a8ff674db8a8c03e9ab3d617710fb479d43ef86386df","index":84152},"timestamp":1667911888,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7072656461746f72)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":3000,"kind":{"data":{"args":["0x627463","0x7072656461746f72"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":8,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400c30d9ea5321592df016f6a3fa91f07c6927d1e2300000000000000080000000000000bb80001669ea5554b2adb80560bc0d0a45699c2c5f928fd53cbaabf21cf1fde559e18ad67a8c1e5e6142e45a6a26ae0848dc69cdf0d098ec19156f86f97d82623b3c691010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000087072656461746f72","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000062a04686173680200000000086d657461646174610c00000004046e616d6502000000087072656461746f72096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac30d9ea5321592df016f6a3fa91f07c6927d1e23","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST31GV7N568AS5QR1DXN3ZA8Z0Z394Z8Y4C5J1Q9E","success":true},"operations":[],"transaction_identifier":{"hash":"0x3095ec788bb7114fa6f5e9c02a171e9b12e8e20e2fd0abfb684025a219bd0440"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7072656461746f72)","execution_cost":{"read_count":12,"read_length":43975,"runtime":131860,"write_count":0,"write_length":0},"fee":75000,"kind":{"data":{"args":["0x627463","0x7072656461746f72"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":9,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400c30d9ea5321592df016f6a3fa91f07c6927d1e23000000000000000900000000000124f80000c048e4484cc883619b59cafae1e72bf1a7ac708c1ea800d2a53d5d162492873173651d844386aaf90101247f5637a749ad61941da253d5285c7eb19799bede28010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000087072656461746f72","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST31GV7N568AS5QR1DXN3ZA8Z0Z394Z8Y4C5J1Q9E","success":false},"operations":[],"transaction_identifier":{"hash":"0xcffb96ac156520319c4d44b577d3b5f75d1cb8ca8d56ebc03c7bdd4d1f24d8d5"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7072656461746f72)","execution_cost":{"read_count":12,"read_length":43975,"runtime":131860,"write_count":0,"write_length":0},"fee":12000,"kind":{"data":{"args":["0x627463","0x7072656461746f72"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":10,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400c30d9ea5321592df016f6a3fa91f07c6927d1e23000000000000000a0000000000002ee000012361337f1ec5c2b26f09114823aefe950c9471fd83bdd5790548f349fad2277c49b81171b9beedc7a6f29587d2b2cf2ded016f1016dd62c8064a7dc91af2eab0010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000087072656461746f72","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST31GV7N568AS5QR1DXN3ZA8Z0Z394Z8Y4C5J1Q9E","success":false},"operations":[],"transaction_identifier":{"hash":"0x2a2391431123fd23b9e7c0387781b274366225b6abc882506e8a969dc853e0ea"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x1d92aabfc4dc7b7b480d29e05eb5531a6c1163d12780881a0749d8648ca04c54","index":84156},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000002c5c805a946f04b950367e84b95d31b5f92903beb03108bbd3","index":2405344},"confirm_microblock_identifier":{"hash":"0xc072767d9ef3cbbb1dcbc7d187b95e533603b058128555483d4559cf199c626c","index":1},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":43,"stacks_block_hash":"0x235adba180fff7f8184f774bab192a5fae8e7eec433ece06d8405b706b118393"},"parent_block_identifier":{"hash":"0x7031cd1ca5b601f20f555a92ee9d7d1fade41444392e9b89f3b2c864e0e058f5","index":84155},"timestamp":1667914277,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6d61727368616c)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":15000,"kind":{"data":{"args":["0x627463","0x6d61727368616c"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":5,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400c29f2bc04c3a559f50d45767e3b8c3978952032b00000000000000050000000000003a9800007548c53f3ac45b22edaffe137b4e1b25904792daefe26c7c12947d712ea2e2775b59e288d3bac4d816221cd10b2bce67976ca3392a1cffee71e8eb33f686e42c010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000076d61727368616c","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000062c04686173680200000000086d657461646174610c00000004046e616d6502000000076d61727368616c096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac29f2bc04c3a559f50d45767e3b8c3978952032b","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST319YAY09GX5B7TGTHBPFRXRREBRJMG35D7B28QY","success":true},"operations":[],"transaction_identifier":{"hash":"0x30a28fa02248d2ce1dcee7b991cd6767dcccf682d0e9317b7dad19c920d36d9f"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xde36796d53bd4334e7d851069fad9974d1c788391f37567ac06fa72c48ad06a5","index":84159},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000003e9b00a2e957d698ef76eb56be0f7793a9f5e784831913c23e","index":2405348},"confirm_microblock_identifier":{"hash":"0xe9322b694ac212c4ca211ec1a7842eedaf38418d4f89e73b2019ba130cf3917c","index":2},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":47,"stacks_block_hash":"0xd2e075fedbdfd26bb71dfe37ba15ba9ad04bf0611c73286ca835b50e48b83304"},"parent_block_identifier":{"hash":"0x5d742033aafcd94c6a407519e843a4214e0b05bd59f141cb3a775fafb73befff","index":84158},"timestamp":1667916461,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6673646b766e7364)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":1875000,"kind":{"data":{"args":["0x627463","0x6673646b766e7364"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":8,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400c29f2bc04c3a559f50d45767e3b8c3978952032b000000000000000800000000001c9c380001e07f90fcb1e1d829c66f120291a910926f6f54e96924f45cbaba0d6955667a12016838caa5fc95a6fc59e36591e3eb6c25debc8af53ab2ecb070f52ce1bf8369010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000086673646b766e7364","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000062e04686173680200000000086d657461646174610c00000004046e616d6502000000086673646b766e7364096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac29f2bc04c3a559f50d45767e3b8c3978952032b","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST319YAY09GX5B7TGTHBPFRXRREBRJMG35D7B28QY","success":true},"operations":[],"transaction_identifier":{"hash":"0xf9a94d1a59c00db3650b3d9a23e6032312cd85831be3a0440bb406ec7bbcfd5a"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x4a9de5ed3db737218245446c382e59efa2dcbf3f80781125afdc39bcc29d8af5","index":84163},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000025c70ff050b783393f532e3d12cfb38467d06c524846df2c7453","index":2405352},"confirm_microblock_identifier":{"hash":"0xfa1ed00fef9fbc54c93a210346bc3dfc4c6e422501943ebe56390141ee2604d6","index":5},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":51,"stacks_block_hash":"0xef8a645a4f55c51821ca07659ea657d366d75f66053550386a8615e80c19a79c"},"parent_block_identifier":{"hash":"0xd6417d06924a2939822f8cc62e356581c4d38383706b4a876e0810426642975a","index":84162},"timestamp":1667918640,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x746573746e616d6531)","execution_cost":{"read_count":16,"read_length":44007,"runtime":167191,"write_count":2,"write_length":160},"fee":375000,"kind":{"data":{"args":["0x627463","0x746573746e616d6531"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":5,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400ccf133d2c282011b2866b6d71b6087d79385f55b0000000000000005000000000005b8d8000094a57c490a4e666a758b158e0a94c33bce7166ec0ce1eb3a5708d3a4a2527c4373844b9700fef7d21fb9788c6f657f4c9ed5428d5de2903b7fa1075868fbb6ff010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000009746573746e616d6531","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000063004686173680200000000086d657461646174610c00000004046e616d650200000009746573746e616d6531096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051accf133d2c282011b2866b6d71b6087d79385f55b","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST36F2CYJRA1026S8CTVDE6V0GZBS71FNBD196NK8","success":true},"operations":[],"transaction_identifier":{"hash":"0xcf79789a7d4dd2dee669d234cf64bf57c500ab4e6a47c66d32cb006657217f2e"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x5c479bd87f4dd8ed875eac8f0b25a9efa1767469beeda833930291a2e3002036","index":84166},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000c2b49a10c0f1eec2fdfdb5eedaf3d2181da390d9f096bde507753f81","index":2405355},"confirm_microblock_identifier":{"hash":"0x95a3cea86bfb817103cbe1828974b5cf6d0f29ac2b0c9e9bd3cfe593b6b8c791","index":6},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":54,"stacks_block_hash":"0x4d2d2e73b07b0d8604e01d1dae0c8bed4518deed39b7a719c93b23dfc33c4eeb"},"parent_block_identifier":{"hash":"0x90780e890b84c7eafd0dd02c0306e2601e5e54e2dabcfae9944b8a090bf8ff97","index":84165},"timestamp":1667922258,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x706c6f6b696a7568)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":15000,"kind":{"data":{"args":["0x627463","0x706c6f6b696a7568"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":136,"position":{"index":12},"proof":null,"raw_tx":"0x808000000004006c4236749a801ed99372a0f42d50efde8a627e1600000000000000880000000000003a980001b73f4e3a9ba29f4faeb5d1524b04c5ca913d3dd344fd6d230268a384021f56e10e6d4d459f0b26159d41a694626fba9ec4b2429fd9f31dee7806cc9cb85436dd030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000008706c6f6b696a7568","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000063204686173680200000000086d657461646174610c00000004046e616d650200000008706c6f6b696a7568096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a6c4236749a801ed99372a0f42d50efde8a627e16","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1P44DKMKA01XPCKEAGF8BAGXZF8MRKY2SF20B11","success":true},"operations":[],"transaction_identifier":{"hash":"0xe7e27064a4ce36273184af000a85a338565c87c40db029dd70b1b57a1bda2c02"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xd82f49621eb4370f3bc9d2528f83176e08a654a46b70866cfa1b33af4b4d8037","index":84168},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000003c07fba037afbe0f55a4c17e1b26fafde6230402965498666a","index":2405359},"confirm_microblock_identifier":{"hash":"0xd20eb55b52230fbf454cb5da18e43b69877169f9dbc366f07676d7b7196f3fd7","index":3},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":58,"stacks_block_hash":"0x1e945b3cd903507a5fea16a0bd9c439dc6cb4eec0fe25066ef780874bf230ee3"},"parent_block_identifier":{"hash":"0x7eeeb2f243ba9f47eee485b23187b809b9cc6bcad4a2d0c8482112602a968c25","index":84167},"timestamp":1667923730,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6b696e676b6f6e67)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":1875000,"kind":{"data":{"args":["0x627463","0x6b696e676b6f6e67"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040066305e8ed22f8c232269f857e5d71c84f7e66a3b000000000000000400000000001c9c380000b9be51ffb5d0a85b2cbcaaa1d8407309c61751cbc0ef80a6838667f752305256031dd6e35cacc12a700dd7f125c3410bf3914ed29cb2412ee7f9571f092b6940010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000086b696e676b6f6e67","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000063404686173680200000000086d657461646174610c00000004046e616d6502000000086b696e676b6f6e67096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a66305e8ed22f8c232269f857e5d71c84f7e66a3b","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1K30QMET8QRR8S2D7W5FSEQ3J2FFSKA7CWBD15K","success":true},"operations":[],"transaction_identifier":{"hash":"0xcb03e94d7def16496f5706306828edf2c36b50e3cb69946375d5a1dd087d6d8f"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x3d140422d723d9210685c08e9bceb40ec8d6176c0a41ca47f4f51d62333da54a","index":84174},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000261f76cbca3981b688d8a0d2219250c445f969da00a4e0de24","index":2405365},"confirm_microblock_identifier":null,"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":64,"stacks_block_hash":"0x214c95def44d56df71e583e27b2c5b33b1bcbd8addb6e8bd3d5647ed14e01765"},"parent_block_identifier":{"hash":"0x20c440685652c1e60395419747cd4728a8127ffb880411296659393fe5e9bca0","index":84173},"timestamp":1667926565,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x64656c657465)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":15000,"kind":{"data":{"args":["0x627463","0x64656c657465"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400a830b5b6ba9b1987d1a4eba94533e2e0ebfca32400000000000000020000000000003a9800011558588d7c047d6f9b773603626e90523778ed357e79a4b01a459cd96c2a3aaa3b421362b626d08681b98d721d427335f539889157232ef1538079f6a8ba5197010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000664656c657465","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000063604686173680200000000086d657461646174610c00000004046e616d65020000000664656c657465096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aa830b5b6ba9b1987d1a4eba94533e2e0ebfca324","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2M31DDPQADHK1YHMKNTJH9KWBGEQZ534G9Z87JN","success":true},"operations":[],"transaction_identifier":{"hash":"0x12dc98607bfc0500fcceba764adb3ae57d30daecb9eafec73aa140fae6e5c097"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x64656c657465)","execution_cost":{"read_count":12,"read_length":43969,"runtime":131808,"write_count":0,"write_length":0},"fee":3000,"kind":{"data":{"args":["0x627463","0x64656c657465"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400a830b5b6ba9b1987d1a4eba94533e2e0ebfca32400000000000000030000000000000bb80000a7df016400ecadf48588b275770813a6fe5f6947a433fcc8705b3f209e4950a511c843642f9cd2e66536fd94c1dbfa90460701c99bd545ca1f656c0f09c4f747010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000664656c657465","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST2M31DDPQADHK1YHMKNTJH9KWBGEQZ534G9Z87JN","success":false},"operations":[],"transaction_identifier":{"hash":"0x64dd6928a33e81ba11f468fbf06b69d88cc7fb075791fd9501f46af2538e04d7"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xd035fdbcc3ff07d332454167d161b301f5bf46996d7255bfca15e332b2ac8203","index":84179},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000570e78a7e7865c7f485252971c1495e8842bba1bd97ee9070600","index":2405370},"confirm_microblock_identifier":{"hash":"0x1fc4f35899f92576b0bfa10045aedbed88e560738971e241b9bb011c0d90aa60","index":1},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":69,"stacks_block_hash":"0x1ff52eceb118277e826d9ae4b89daf9c5cfad93b1409a1b8e9b8c9accecd6729"},"parent_block_identifier":{"hash":"0xce242aa67748b2ddfb212ce8b3b08dd0d35a6f2f95b8cabec1630672022831b7","index":84178},"timestamp":1667930926,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x74696e74617368)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":75000,"kind":{"data":{"args":["0x627463","0x74696e74617368"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":5,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040065a21f6c2fe4aede58afa9760e32988d5ef09659000000000000000500000000000124f800014cf63df5cd4f808271dd4a938844606aa3f8e14fad07ba18fb439f9947d6da9322f1ac559b613681f4b2ab9fd138acc9bc42be20a401b049554ec3a9466633e2010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000774696e74617368","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000063804686173680200000000086d657461646174610c00000004046e616d65020000000774696e74617368096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a65a21f6c2fe4aede58afa9760e32988d5ef09659","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1JT47VC5ZJAXQJRNYMQC3HJK26NXW4PB5VA0GMF","success":true},"operations":[],"transaction_identifier":{"hash":"0xe80fe11d386ed63a84c7b081e92cd605d2125d5f59aa9d2b06e6334198ff2ea5"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x74696e74617368)","execution_cost":{"read_count":12,"read_length":43972,"runtime":131834,"write_count":0,"write_length":0},"fee":15000,"kind":{"data":{"args":["0x627463","0x74696e74617368"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":6,"position":{"index":2},"proof":null,"raw_tx":"0x8080000000040065a21f6c2fe4aede58afa9760e32988d5ef0965900000000000000060000000000003a980001c0e0861141655141b287ef5c364e0f8a42a8f26100568f3466cff79ba819fcc9382d86b667f3303294993a35b75e2c936ce0eb20dd114f416a81b070aabf7032010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000774696e74617368","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST1JT47VC5ZJAXQJRNYMQC3HJK26NXW4PB5VA0GMF","success":false},"operations":[],"transaction_identifier":{"hash":"0x859d6667109ab06d949f4a5aaa4882c02b87afc252f4a9e138e021128b6b3fb6"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x74696e74617368)","execution_cost":{"read_count":12,"read_length":43972,"runtime":131834,"write_count":0,"write_length":0},"fee":15000,"kind":{"data":{"args":["0x627463","0x74696e74617368"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":7,"position":{"index":3},"proof":null,"raw_tx":"0x8080000000040065a21f6c2fe4aede58afa9760e32988d5ef0965900000000000000070000000000003a98000026665596eaad49b940a763dda946064b8bac1f112de4ae78ffb5a0c08ecde37547ddd8b166562735c3e513ece5f057caebbeab40f0792b70ab868c36a676d309010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000774696e74617368","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST1JT47VC5ZJAXQJRNYMQC3HJK26NXW4PB5VA0GMF","success":false},"operations":[],"transaction_identifier":{"hash":"0xceced1e9565fd1e4aed928766ea7d122294e1625570c241fa81a81b071e400bc"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x74696e74617368)","execution_cost":{"read_count":12,"read_length":43972,"runtime":131834,"write_count":0,"write_length":0},"fee":375000,"kind":{"data":{"args":["0x627463","0x74696e74617368"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":8,"position":{"index":4},"proof":null,"raw_tx":"0x8080000000040065a21f6c2fe4aede58afa9760e32988d5ef096590000000000000008000000000005b8d80000c13974b8ee27af7db231615e7a82235116c886af1c113bf8057498f7048b81176eab7abd8fb7dd511910819b70172a45ee9901d120699033e30b43a55a094481010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000774696e74617368","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST1JT47VC5ZJAXQJRNYMQC3HJK26NXW4PB5VA0GMF","success":false},"operations":[],"transaction_identifier":{"hash":"0x569190ff7d5a6e8f53c3f82fcaac854f9129c4cc7db99bf5db07526c59d8abb7"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x74696e74617368)","execution_cost":{"read_count":12,"read_length":43972,"runtime":131834,"write_count":0,"write_length":0},"fee":15000,"kind":{"data":{"args":["0x627463","0x74696e74617368"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":9,"position":{"index":5},"proof":null,"raw_tx":"0x8080000000040065a21f6c2fe4aede58afa9760e32988d5ef0965900000000000000090000000000003a9800015a1620e5789c5d9d531c0ef1380be193c3c2de2587b985f3248896294c44b535324099c70bce1dbbd845285f066692f41e7e39a68be050fbbe46905d78e2d7e7010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000774696e74617368","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST1JT47VC5ZJAXQJRNYMQC3HJK26NXW4PB5VA0GMF","success":false},"operations":[],"transaction_identifier":{"hash":"0xc4b2095596e3593c07ac7b03a9541ce17e0cb015371792c9ec92973426eb97cf"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x74696e74617368)","execution_cost":{"read_count":12,"read_length":43972,"runtime":131834,"write_count":0,"write_length":0},"fee":9375000,"kind":{"data":{"args":["0x627463","0x74696e74617368"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":10,"position":{"index":6},"proof":null,"raw_tx":"0x8080000000040065a21f6c2fe4aede58afa9760e32988d5ef09659000000000000000a00000000008f0d1800000133820867e11ab0216aae42bea8bd51e0a60f303b7752cd42e7665ad35b628725cfe6be712c3a405e43a965fbc088c89d8e0ff2c1fe2a4987c591f926daa4ce010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000774696e74617368","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST1JT47VC5ZJAXQJRNYMQC3HJK26NXW4PB5VA0GMF","success":false},"operations":[],"transaction_identifier":{"hash":"0xdc7fcde9a2b90d06b298874ef2198ef6e7846994cd3e5224023396bea1aa62c4"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x74696e74617368)","execution_cost":{"read_count":12,"read_length":43972,"runtime":131834,"write_count":0,"write_length":0},"fee":3000,"kind":{"data":{"args":["0x627463","0x74696e74617368"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":11,"position":{"index":7},"proof":null,"raw_tx":"0x8080000000040065a21f6c2fe4aede58afa9760e32988d5ef09659000000000000000b0000000000000bb80001534ba1f20fa7ad1223a09ccc73f548ac465e714b7791ec7bd18ab188a4db39e17d3879e1985b9334382f84e001fa6a66aac90a5efac084e6c817ecd77ac549e3010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000774696e74617368","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST1JT47VC5ZJAXQJRNYMQC3HJK26NXW4PB5VA0GMF","success":false},"operations":[],"transaction_identifier":{"hash":"0xcd14e189b0d618d931671c9fee6d9ee697868d078552056943a34e87c59ad213"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x82a04d12c597cefc96602c6e96a9d968f313299c6cbeda11c7b66b74907dd527","index":84181},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000d6bda83c4be84e20b08084010b11030c483f57e507e376bf849d","index":2405373},"confirm_microblock_identifier":{"hash":"0x7b0027a184a1ce960c4fd6151d2dceac43b81fa9d92e1e16e08c7365a1c263b4","index":1},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":72,"stacks_block_hash":"0x980820b23997f9ba49b0b8316d4ec0c738ae01336a457b2c7a45ea1b08f97548"},"parent_block_identifier":{"hash":"0xc1e71a95608e0bb154feb44a2fc8e0255313e35dbf436cf445555294d5d472eb","index":84180},"timestamp":1667933349,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x676f676f676f)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":75000,"kind":{"data":{"args":["0x627463","0x676f676f676f"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400ed00fb06edc442679f772c1776e0dd695f85e559000000000000000200000000000124f800007dbe29c86d52de0235aaa5b22bf3f5708c1f74242bdd872b6f056f174a5b54b04d06bab02b58e0afe5daa5a0f7aa4803691fb2c18ebedff710397f59ed8a68af010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006676f676f676f","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000063a04686173680200000000086d657461646174610c00000004046e616d650200000006676f676f676f096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aed00fb06edc442679f772c1776e0dd695f85e559","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3PG1YR6XQ244SWZEWP1EXQ0VNMNZ1F5B4FXAJYB","success":true},"operations":[],"transaction_identifier":{"hash":"0xd1485662158b9ddf9cd255f00653dd6ed8dacc4b355362d014a81e39faf0328b"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x676f676f676f)","execution_cost":{"read_count":12,"read_length":43969,"runtime":131808,"write_count":0,"write_length":0},"fee":75000,"kind":{"data":{"args":["0x627463","0x676f676f676f"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400ed00fb06edc442679f772c1776e0dd695f85e559000000000000000300000000000124f8000027a9ef65c27adac89591866a3dce73a4d73c0fc366f026229a45f2d8b1b029531b600a13e9884044c08c7fdea117ac78d80804a535bff3f259a16106b0b9cb27010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006676f676f676f","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST3PG1YR6XQ244SWZEWP1EXQ0VNMNZ1F5B4FXAJYB","success":false},"operations":[],"transaction_identifier":{"hash":"0xca23b3e377d66dfc4d10cb272ad6ae44b9c99544066be3b2d642f67767031296"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x676f676f676f)","execution_cost":{"read_count":12,"read_length":43969,"runtime":131808,"write_count":0,"write_length":0},"fee":75000,"kind":{"data":{"args":["0x627463","0x676f676f676f"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400ed00fb06edc442679f772c1776e0dd695f85e559000000000000000400000000000124f80001d1658572050c4315cb6af03a7b2b9d0e71764ea2d2b785235cf65d3c31719e1a579b8c595366b990aebb3c05a673ac8ad104915a9e9e565a29bd4f2167c7c4e2010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006676f676f676f","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST3PG1YR6XQ244SWZEWP1EXQ0VNMNZ1F5B4FXAJYB","success":false},"operations":[],"transaction_identifier":{"hash":"0x3c6dd5abf49f30cc21a9169d9535168aa713ff8a17302b21eba194836e5d15a4"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x636c6f636b636861696e)","execution_cost":{"read_count":16,"read_length":44010,"runtime":167230,"write_count":2,"write_length":161},"fee":15000,"kind":{"data":{"args":["0x627463","0x636c6f636b636861696e"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":9,"position":{"index":4},"proof":null,"raw_tx":"0x80800000000400ce20107969127908f07c1f8e09e8e9a1f14681cc00000000000000090000000000003a9800019b22438985e13f6a29a96131eca3cc24664e23eedb5db91002c8fb3cfbc72c6e317ec8fe4a50ce2ae6539d2935f5b2bbe129d4c10f861f2cf4b81690cdd2901e010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000a636c6f636b636861696e","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000063b04686173680200000000086d657461646174610c00000004046e616d65020000000a636c6f636b636861696e096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ace20107969127908f07c1f8e09e8e9a1f14681cc","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST372043SD497J27GFGFRW2F8X6GZ2HM1SJ2T5AZX","success":true},"operations":[],"transaction_identifier":{"hash":"0xccd67f652bc87393e42c21b7a7550dca6d789334a5549fdca581868269e30241"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x84fdddd9b77657de37963ac7006b28c061252396b9cd4d9a208a405e22c75aa5","index":84182},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000001b7cfe52989e034e76fe82a7e47d8bdae5ec47d350cdefbc70","index":2405374},"confirm_microblock_identifier":{"hash":"0xb3d5150db772d0c30c50d7968c27309466076bce68e06ef8f4b39ba05b90fd88","index":3},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":73,"stacks_block_hash":"0xa700c65d1b180b8e094e411cd43e17e57973ac74a6ccc6c610e1244afe2524d6"},"parent_block_identifier":{"hash":"0x82a04d12c597cefc96602c6e96a9d968f313299c6cbeda11c7b66b74907dd527","index":84181},"timestamp":1667934550,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x676f676f676f)","execution_cost":{"read_count":12,"read_length":43969,"runtime":131808,"write_count":0,"write_length":0},"fee":15000,"kind":{"data":{"args":["0x627463","0x676f676f676f"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":5,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400ed00fb06edc442679f772c1776e0dd695f85e55900000000000000050000000000003a980000300fc6ef6e6453dd3f1f9f4e3170fa22aee4c33a2ce9d47789788d6f5e253f004f12160cfee140435b9cdc80038665931d8d8441076759413177ae264c4383bd010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006676f676f676f","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST3PG1YR6XQ244SWZEWP1EXQ0VNMNZ1F5B4FXAJYB","success":false},"operations":[],"transaction_identifier":{"hash":"0x15aaa05351300225c22c95b5f1aeeb80acec285285d153e59fca97bc057031f2"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x676f676f676f)","execution_cost":{"read_count":12,"read_length":43969,"runtime":131808,"write_count":0,"write_length":0},"fee":15000,"kind":{"data":{"args":["0x627463","0x676f676f676f"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":6,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400ed00fb06edc442679f772c1776e0dd695f85e55900000000000000060000000000003a98000149451e0d1c7bb03f88e30d099b99b1f8effdb7bbfc80a6dc21ecd315f5f3957135c87b9d3ca4c4a9e94f1e426dde4766e191a1867ea980b85b4a8c78f3a09572010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006676f676f676f","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST3PG1YR6XQ244SWZEWP1EXQ0VNMNZ1F5B4FXAJYB","success":false},"operations":[],"transaction_identifier":{"hash":"0x8b144c1c42867aeb3f9cb70ed682fae9bf83cd1a13870ba0aa514d5ed9255517"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x676f676f676f)","execution_cost":{"read_count":12,"read_length":43969,"runtime":131808,"write_count":0,"write_length":0},"fee":15000,"kind":{"data":{"args":["0x627463","0x676f676f676f"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":7,"position":{"index":4},"proof":null,"raw_tx":"0x80800000000400ed00fb06edc442679f772c1776e0dd695f85e55900000000000000070000000000003a980000513f9b7195cae252537b22d8583102753b6d11c89050d85516ce38407771968e3673efe85edbbbd62a6be15ea40e0f5124e75d5d167b4b903aabe1ee5f82489d010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006676f676f676f","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST3PG1YR6XQ244SWZEWP1EXQ0VNMNZ1F5B4FXAJYB","success":false},"operations":[],"transaction_identifier":{"hash":"0xffa29f42441a7ee3216024c145fe8e1130b5928ab46eca045136918c80e62b9e"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x8982189057adf4817fb91315b2d17951033ae1f9c05443e9e3ff33b32f25e2e4","index":84185},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000012125343ad5e1b90bf65e0bb1b1f4eaef1b82831b0edf68cd2","index":2405378},"confirm_microblock_identifier":null,"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":77,"stacks_block_hash":"0xe8e8d33b154dd04601f4b242e6ea7ddcfcd9d99bb658a381c95484ba3d7e4534"},"parent_block_identifier":{"hash":"0x62d1ced949dd7f28985b3b3212f1486c091e8aa23e6aed31c4425292583eb6fe","index":84184},"timestamp":1667937053,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x666966696669)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":15000,"kind":{"data":{"args":["0x627463","0x666966696669"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400d63fd7ec23b0085b49757329fa19c299988153db00000000000000020000000000003a980000b151939d0200a5de4d506c3c87e9eb267cc471cab939ff1c9f7b2d8e7470bfc4570dc1c48b86532c77d5bbe4277cdc4b7d7b201fbd95194165799d71a96f4850010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006666966696669","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000063d04686173680200000000086d657461646174610c00000004046e616d650200000006666966696669096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ad63fd7ec23b0085b49757329fa19c299988153db","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3B3ZNZC4ER0GPT9ENSJKYGSRACSH0AKVCD515Q5","success":true},"operations":[],"transaction_identifier":{"hash":"0x752a1f45b953d36b9b283ca233c04f513e3e2f57316469727e3abf5315df3cb4"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x666966696669)","execution_cost":{"read_count":12,"read_length":43969,"runtime":131808,"write_count":0,"write_length":0},"fee":75000,"kind":{"data":{"args":["0x627463","0x666966696669"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400d63fd7ec23b0085b49757329fa19c299988153db000000000000000300000000000124f800018ee5e85e99c6197d2bc7545b76bae1f87b42cdfa864f8fa70ecfbde73fd87d1b20ae68f0d89628b3fc5158e93f885296a88fc8271da84cac8a63ce93b66444e6010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006666966696669","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST3B3ZNZC4ER0GPT9ENSJKYGSRACSH0AKVCD515Q5","success":false},"operations":[],"transaction_identifier":{"hash":"0xd2a12e81631729527c8285e39f6245fa04703656db6113dc38a96fbc9169bc51"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x269d31e2f1d5e7383698872ac1cce754db0dbf661a3f24b4a1a31e2f21e5578e","index":84187},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000072d85d2c73f4749cbd3eb3f7cbcc68207de915a838612b2ba6db44ad","index":2405380},"confirm_microblock_identifier":{"hash":"0x90556f6789a76e878bbcc4af3010a6341c1a748997832116c6748461bbe3c8b3","index":3},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":79,"stacks_block_hash":"0x1986ede687b8c3cd196235011657ef0e61d6db1fb5f504e9c2c72184694fe07b"},"parent_block_identifier":{"hash":"0xfe1fea6385a632b817a9bb01031eb2fe69dd141eb423c51cce8ed35c6547e628","index":84186},"timestamp":1667938502,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6a6173706572)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":15000,"kind":{"data":{"args":["0x627463","0x6a6173706572"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":5,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004006c787d6b138e08668836c65ffe49a09ba4ac99ed00000000000000050000000000003a980001b994b7b156ed2bc7819cd86962473c76be9605dc922be9f32b0d9154f41f1d6572be37cf93e0b11cd40cc0c34052b218b72f1adba2e2cbdfeaab7037ce7b1fa2010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000066a6173706572","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000063f04686173680200000000086d657461646174610c00000004046e616d6502000000066a6173706572096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a6c787d6b138e08668836c65ffe49a09ba4ac99ed","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1P7GZBB2E70GSM86V35ZZJ9M2DT9B4SXPY7GACY","success":true},"operations":[],"transaction_identifier":{"hash":"0x259fc075621805844ca9fb95f239fcfaad6005272e9fff80cf75cf0e327a20a1"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6a6173706572)","execution_cost":{"read_count":12,"read_length":43969,"runtime":131808,"write_count":0,"write_length":0},"fee":15000,"kind":{"data":{"args":["0x627463","0x6a6173706572"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":6,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004006c787d6b138e08668836c65ffe49a09ba4ac99ed00000000000000060000000000003a98000026d1ef3c12fd5356ca409944a08e161ac17e2bab7d4f303315e1e9dd5006625b64906aef518bc2bad97ebe007b3ba2e07bc07be928d83fadc3e741725eb62b4c010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000066a6173706572","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST1P7GZBB2E70GSM86V35ZZJ9M2DT9B4SXPY7GACY","success":false},"operations":[],"transaction_identifier":{"hash":"0x8d6b34d3ddf0c66ab33029f21eb0c0d38c513973fc4350863ecc20deb78e1a50"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6a6173706572)","execution_cost":{"read_count":12,"read_length":43969,"runtime":131808,"write_count":0,"write_length":0},"fee":15000,"kind":{"data":{"args":["0x627463","0x6a6173706572"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":7,"position":{"index":3},"proof":null,"raw_tx":"0x808000000004006c787d6b138e08668836c65ffe49a09ba4ac99ed00000000000000070000000000003a980001e453fd21cd4b4d2891060b27cb2524b34c6bf75b06ad089db3349d882bec8592349625f38b2087d778ceb55a83cd8b273a4f9c39b29f43a789718ee7c9c41036010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000066a6173706572","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST1P7GZBB2E70GSM86V35ZZJ9M2DT9B4SXPY7GACY","success":false},"operations":[],"transaction_identifier":{"hash":"0x4fd8182544c30e4de02a47cb7e921d18865fda5995b1d4ba0270516e3a3b3911"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xb7e23d3e3c458188fff1f644a16f3687772743781799744bce8ce2aa824f09f1","index":84189},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000040b0e0e77d1c761056fe0bf1fd25cfb946e6bb89255ecfbf15","index":2405383},"confirm_microblock_identifier":{"hash":"0xdbf8ce6aa9cec952d2048d41dc1eeee38ace2b3cdbd5161ab8d966c3a550281c","index":2},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":82,"stacks_block_hash":"0x174afbc8d8604647f4a1932fd01e38339572aa27ec51dd4f2c638094ddb177fa"},"parent_block_identifier":{"hash":"0x2227a783512a1a407cc253ead9fa98f40b1b34867932461b6f76b6c18898c561","index":84188},"timestamp":1667940147,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x717765727479)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":1875000,"kind":{"data":{"args":["0x627463","0x717765727479"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400ac192c794b03f59bbf7bd4b0ee9b002f271fdd94000000000000000200000000001c9c380001c8dba3eb7a40df74a9ca721af85e87a2d2e91a79bf957999540053a474fb30e2475d6ecad95bf1641050751a74f48f5c2b5e60c2ad1ec1fde1eba6abd9f722f7010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006717765727479","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000064104686173680200000000086d657461646174610c00000004046e616d650200000006717765727479096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aac192c794b03f59bbf7bd4b0ee9b002f271fdd94","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2P1JB3S9C1ZB6XZFFAB1VMV00QJE7YXJKMXDN6J","success":true},"operations":[],"transaction_identifier":{"hash":"0x0d5bd261a4292f3db5e824408e0195abc8d89833782147d6c8e59f1098786f03"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x717765727479)","execution_cost":{"read_count":12,"read_length":43969,"runtime":131808,"write_count":0,"write_length":0},"fee":75000,"kind":{"data":{"args":["0x627463","0x717765727479"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400ac192c794b03f59bbf7bd4b0ee9b002f271fdd94000000000000000300000000000124f80000d11101efb4f5d3e6d280a352675922a0d2895286cf52ef427f923ee3f8ef51a025ba479ad07cc5f144bcad11d1f10aca1d5f30cb344843322196d88e32179cb6010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006717765727479","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST2P1JB3S9C1ZB6XZFFAB1VMV00QJE7YXJKMXDN6J","success":false},"operations":[],"transaction_identifier":{"hash":"0x3c64277758b068cab09aef4a04a76be9f23bacb674897deaddcb6aee78925958"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x717765727479)","execution_cost":{"read_count":12,"read_length":43969,"runtime":131808,"write_count":0,"write_length":0},"fee":75000,"kind":{"data":{"args":["0x627463","0x717765727479"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400ac192c794b03f59bbf7bd4b0ee9b002f271fdd94000000000000000400000000000124f80000d4a46959aa80a6c119e10a9442b8498dcddacc03dadb4cb719acc909ada2939b5f7cb82d559e99f047668daa4297d7fa038ae95fc07fe87c3d7add937321883c010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006717765727479","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST2P1JB3S9C1ZB6XZFFAB1VMV00QJE7YXJKMXDN6J","success":false},"operations":[],"transaction_identifier":{"hash":"0x44e46f2570d4cb2b90742e1ab179287ca676254a58451251555aabdf3485e807"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x717765727479)","execution_cost":{"read_count":12,"read_length":43969,"runtime":131808,"write_count":0,"write_length":0},"fee":9375000,"kind":{"data":{"args":["0x627463","0x717765727479"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":5,"position":{"index":4},"proof":null,"raw_tx":"0x80800000000400ac192c794b03f59bbf7bd4b0ee9b002f271fdd94000000000000000500000000008f0d180001c0cd399db6950ae87debdf57125f648e3b5dcc4aede63b28ea339c80059b732574db218a46a97d9a5a2f4d07f10a406075b1fae28928f4a6e327f06adc685290010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006717765727479","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST2P1JB3S9C1ZB6XZFFAB1VMV00QJE7YXJKMXDN6J","success":false},"operations":[],"transaction_identifier":{"hash":"0x20ff30538fdc58fce6a268cf3de27a232274b0525764ce5ab3ddf3f8d0b8f041"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x717765727479)","execution_cost":{"read_count":12,"read_length":43969,"runtime":131808,"write_count":0,"write_length":0},"fee":1875000,"kind":{"data":{"args":["0x627463","0x717765727479"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":6,"position":{"index":5},"proof":null,"raw_tx":"0x80800000000400ac192c794b03f59bbf7bd4b0ee9b002f271fdd94000000000000000600000000001c9c38000056b7508d71cdbc0eee0f301c698eb7c859398ca383f4ece9db5c07911610812f09e5ed62634d418b0a35198d9f99a829605b8ecebf1efe1955916dd526fc9b1b010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006717765727479","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST2P1JB3S9C1ZB6XZFFAB1VMV00QJE7YXJKMXDN6J","success":false},"operations":[],"transaction_identifier":{"hash":"0x6fdf5699d3548852331983b4a8e54391861e2ffac347c3f33e6abc0e860e076d"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x717765727479)","execution_cost":{"read_count":12,"read_length":43969,"runtime":131808,"write_count":0,"write_length":0},"fee":15000,"kind":{"data":{"args":["0x627463","0x717765727479"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":7,"position":{"index":6},"proof":null,"raw_tx":"0x80800000000400ac192c794b03f59bbf7bd4b0ee9b002f271fdd9400000000000000070000000000003a980001e7bc2be26b5773a92a1739b083eb3123655bf9e24e6753ac8e00eef2e153ca7a1d6857360c5710dc4f1be7c31c6c4e793eb1bae8e0f1d02e772c5383da17a17b010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006717765727479","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST2P1JB3S9C1ZB6XZFFAB1VMV00QJE7YXJKMXDN6J","success":false},"operations":[],"transaction_identifier":{"hash":"0xc6cae283a2df8a1d85067694ca5a86e7f2c5b59f40f28e1f84187766c0bfc1d8"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x07446de4b1a761eb6e162267dedcb4d2401d28f8d76c30b74d139c87711b348b","index":84190},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000202c9a30a3f3f2a20d7b7bc5e8b787e159afcf0880e4d268f63c","index":2405384},"confirm_microblock_identifier":{"hash":"0x48ba01ff8198ce25070dec9f82a065838291c7dbc34af1ced72ca11a70ebf563","index":4},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":83,"stacks_block_hash":"0x2b956c7190c27543dfac1f5dc59fde3224c6b631bf0f3dbf8d31a156d0507237"},"parent_block_identifier":{"hash":"0xb7e23d3e3c458188fff1f644a16f3687772743781799744bce8ce2aa824f09f1","index":84189},"timestamp":1667941180,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6a617370657273)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":1875000,"kind":{"data":{"args":["0x627463","0x6a617370657273"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":10,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004006c787d6b138e08668836c65ffe49a09ba4ac99ed000000000000000a00000000001c9c380000316ef8cc2348f1b44e55ca2aa4d442064db982143b5e5c6e38bcc8656360c8892270dd544ccec5f2f8c442c27e23f0fee5e4b0254184eb559c55ba082772da6b010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000076a617370657273","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000064304686173680200000000086d657461646174610c00000004046e616d6502000000076a617370657273096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a6c787d6b138e08668836c65ffe49a09ba4ac99ed","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1P7GZBB2E70GSM86V35ZZJ9M2DT9B4SXPY7GACY","success":true},"operations":[],"transaction_identifier":{"hash":"0x85f6da2f0e27bf0b7a90380526c7233461fe8de376f7c129db12d3fee8a54ab5"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6a617370657273)","execution_cost":{"read_count":12,"read_length":43972,"runtime":131834,"write_count":0,"write_length":0},"fee":75000,"kind":{"data":{"args":["0x627463","0x6a617370657273"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":11,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004006c787d6b138e08668836c65ffe49a09ba4ac99ed000000000000000b00000000000124f80001eca11f248e69c1bbc862e8a2c074ab751e6c59cfedb92c68526b0558ee9a16fc5d707290e80df7528ae6370d95fa7affde497f340ba065c60c94db8bb288f45f010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000076a617370657273","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST1P7GZBB2E70GSM86V35ZZJ9M2DT9B4SXPY7GACY","success":false},"operations":[],"transaction_identifier":{"hash":"0x66fd1468e5d0b1450f9d81b1ce7ab5c327fd58a22408d654e732b20d7d79c01c"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6a617370657273)","execution_cost":{"read_count":12,"read_length":43972,"runtime":131834,"write_count":0,"write_length":0},"fee":9375000,"kind":{"data":{"args":["0x627463","0x6a617370657273"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":12,"position":{"index":3},"proof":null,"raw_tx":"0x808000000004006c787d6b138e08668836c65ffe49a09ba4ac99ed000000000000000c00000000008f0d1800006a800caeb7f3e01e6ca203c4dabd613e03e1ca84d995c8cd9cded7183fe4bf23078cee31e2e62923016173076378296d7d117439656ea672314445563e51a9aa010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000076a617370657273","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST1P7GZBB2E70GSM86V35ZZJ9M2DT9B4SXPY7GACY","success":false},"operations":[],"transaction_identifier":{"hash":"0xf0448a6d9f6a092a97e6452022b640cf0c099cab3627383fdeec6684687f87b8"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6a617370657273)","execution_cost":{"read_count":12,"read_length":43972,"runtime":131834,"write_count":0,"write_length":0},"fee":3000,"kind":{"data":{"args":["0x627463","0x6a617370657273"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":13,"position":{"index":5},"proof":null,"raw_tx":"0x808000000004006c787d6b138e08668836c65ffe49a09ba4ac99ed000000000000000d0000000000000bb80001ac2b8382a1e2ec714d11b8102befd3760cc63484a81055448799359de432ebd52b38f29979fbcca2efef18096363783bad52f923e86a677c196fd5d9ee93d7e8010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000076a617370657273","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST1P7GZBB2E70GSM86V35ZZJ9M2DT9B4SXPY7GACY","success":false},"operations":[],"transaction_identifier":{"hash":"0xccc796254bbddf6c59265a111a615f1159f3e578c15be9df514081fafe339c84"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x1dfaefd887102650a59b6957544611c55763cb6324b4b68008b02b045ab75f8b","index":84195},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000a148e35e9a4ad13c04b7613af931f94baa0ce933b8ac290cb30","index":2405391},"confirm_microblock_identifier":{"hash":"0x7113ba3f0978abdfd527f8a1d26056e973ce61778a892bacdd05ec9d7f2f464a","index":3},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":90,"stacks_block_hash":"0x467e9e9c51d709b6e8d0bc42f1c825dbedc814d0b38767fefe139b1054ddc676"},"parent_block_identifier":{"hash":"0xc1b2852a1b372f5b60f2a150590f7a59410523b21a023bd4031f29fa7fea2292","index":84194},"timestamp":1667945050,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x74757475747574)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":468750000,"kind":{"data":{"args":["0x627463","0x74757475747574"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":10,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400ac192c794b03f59bbf7bd4b0ee9b002f271fdd94000000000000000a000000001bf08eb000009cdcfb0f9cf83e39bbe49845c4c08b849f5db193808e2427bd2cb7e1d931ce967d0aa8069b71fee5d3517822fce463b4f1d673c4e9215fd5f2b42f4c6906eae7010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000774757475747574","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000064504686173680200000000086d657461646174610c00000004046e616d65020000000774757475747574096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aac192c794b03f59bbf7bd4b0ee9b002f271fdd94","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2P1JB3S9C1ZB6XZFFAB1VMV00QJE7YXJKMXDN6J","success":true},"operations":[],"transaction_identifier":{"hash":"0x1bec9d280529fbbdf8684ecb9f48aa3512f8fbdbb16e9e629786ec76dcb94314"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xe8968580d724697e8faadfb21ee8d800dd289438987865b42f9066e234fa6e51","index":84232},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000026739b1f188a3338e1c19c987b89b07ef29e164eec696c28bc","index":2405433},"confirm_microblock_identifier":{"hash":"0x2516e8e7ede1b088a9c4271ee3dd83d357fea97d68318474e3be8dae96133267","index":0},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":132,"stacks_block_hash":"0x4b0bff6d61939a56b5b2d5878bba6f877e4aec071b15defb6911236108b0ef88"},"parent_block_identifier":{"hash":"0xa785ab8a811434a72e67beaec36ec8ac1b811a5cfe783437ba0201678f8f4e60","index":84231},"timestamp":1667973663,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x616161616161)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":9375000,"kind":{"data":{"args":["0x627463","0x616161616161"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":6,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400d63fd7ec23b0085b49757329fa19c299988153db000000000000000600000000008f0d18000090c470883648082ebf832400a2b992995aa10e6dac1c6d3c53bae7d8eb69a22f34537726cf01561ca2b1ebfd84d2f8a3a4df1477b8ec9d366aaea4abb7a36fdd010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006616161616161","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000064804686173680200000000086d657461646174610c00000004046e616d650200000006616161616161096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ad63fd7ec23b0085b49757329fa19c299988153db","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3B3ZNZC4ER0GPT9ENSJKYGSRACSH0AKVCD515Q5","success":true},"operations":[],"transaction_identifier":{"hash":"0xac3107e3324e9600201c06e886822afec3c9096d24b23977b01aba206ff02817"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x5b4081c341b2eb6c0c046697e95487d9efa352bbbf01d86ed56bb84c736c25a4","index":84260},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000dece57f879c11e9afc3c7d1670876b72b4f6e46b4a63216f37c8","index":2405462},"confirm_microblock_identifier":{"hash":"0xf3a6abdd47d01b0b914112bb876813a5fdff1acd7a507093ff034eb4287d71eb","index":4},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":161,"stacks_block_hash":"0x5cc3256965e959713fcf9eda39730560c8a19b0a4f726e84a36db7cf0383c5e6"},"parent_block_identifier":{"hash":"0xf7911f1777b043095bdf5c001a901dcd8f6c9029be1a5f555f207aefa2eb8208","index":84259},"timestamp":1667988841,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x636f72766574)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":12000,"kind":{"data":{"args":["0x627463","0x636f72766574"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":7,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040066305e8ed22f8c232269f857e5d71c84f7e66a3b00000000000000070000000000002ee0000105e32c0a41df16838f39a1f207eca1e844d13696ee46a029727501d0afe9b46855037024948676373352689c5d44387a74009158ce035e1333d30b0b104a9946010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006636f72766574","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000065004686173680200000000086d657461646174610c00000004046e616d650200000006636f72766574096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a66305e8ed22f8c232269f857e5d71c84f7e66a3b","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1K30QMET8QRR8S2D7W5FSEQ3J2FFSKA7CWBD15K","success":true},"operations":[],"transaction_identifier":{"hash":"0x96db817ab25e578327273322ac6ec4bb80618b3a61573a60b91c285d65f52117"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x9b0e45ad681a81d7d83294fe1caa4c4eb3d57b11c6e819cfe3ef78cf5eccaf07","index":84261},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000001ed62f042751d4df222ddfa6b8ce62d4a2646192b327ef8310","index":2405464},"confirm_microblock_identifier":{"hash":"0x8534d1d6584df8a73f671b65718a452f56c17923f8a54a0069f07a089c0794df","index":4},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":163,"stacks_block_hash":"0xd5bab366d60634ceae93c1a1fa5e00aa9591228a773c3d81f80bd73f3bd28729"},"parent_block_identifier":{"hash":"0x5b4081c341b2eb6c0c046697e95487d9efa352bbbf01d86ed56bb84c736c25a4","index":84260},"timestamp":1667990062,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x636363636363)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":24000,"kind":{"data":{"args":["0x627463","0x636363636363"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":6,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004002c4673bcc1fcf2bacdae24385dddd9a85d88175a00000000000000060000000000005dc0000196747fd7192bae8c86511be2bf2fb2e23bb5756bb45fa19b54a3c8d19073fb6b1c6c847defdeab1e5e46714667e72df10ad446d90ef5e3972c105bd075bac46b010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006636363636363","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000065104686173680200000000086d657461646174610c00000004046e616d650200000006636363636363096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a2c4673bcc1fcf2bacdae24385dddd9a85d88175a","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STP4CWXWR7YF5EPDNRJ3GQEXV6M5V20QBBRY5215","success":true},"operations":[],"transaction_identifier":{"hash":"0x66151abf98c0a6ad4e130f80c77fe1aa9a46dcc5bb5abfbeb8f8e77217c9c952"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x636363636363)","execution_cost":{"read_count":12,"read_length":43969,"runtime":131808,"write_count":0,"write_length":0},"fee":24000,"kind":{"data":{"args":["0x627463","0x636363636363"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":7,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004002c4673bcc1fcf2bacdae24385dddd9a85d88175a00000000000000070000000000005dc00000528ca60bc84f68713b3a31f48c0ebeb816ab1199716923963f79b3886ce5625e6d9560eff1d4e5041137b283b03d21e776ebd925180a9542624724761b7dfd19010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006636363636363","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"STP4CWXWR7YF5EPDNRJ3GQEXV6M5V20QBBRY5215","success":false},"operations":[],"transaction_identifier":{"hash":"0x787e7de9f843db85fa9bb5c080849ccf7d052571a84be20c604bf050908688e0"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7a7a7a7a7a)","execution_cost":{"read_count":16,"read_length":43995,"runtime":167035,"write_count":2,"write_length":156},"fee":12000,"kind":{"data":{"args":["0x627463","0x7a7a7a7a7a"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":13,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400c30d9ea5321592df016f6a3fa91f07c6927d1e23000000000000000d0000000000002ee000017ad752c20764e19f51c8a7dc1ec7c109dd0bd820022912114bc9fb97a7f78d90616b5d1896e51f4c31e4688e9a0e890cc4a7336d5c021b1b4eeaaedc792c7eb7010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000057a7a7a7a7a","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000065204686173680200000000086d657461646174610c00000004046e616d6502000000057a7a7a7a7a096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac30d9ea5321592df016f6a3fa91f07c6927d1e23","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST31GV7N568AS5QR1DXN3ZA8Z0Z394Z8Y4C5J1Q9E","success":true},"operations":[],"transaction_identifier":{"hash":"0xc3033431947c9aa279663501079d7edead5fe76948948202d5df2a3f775b3b07"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7a7a7a7a7a)","execution_cost":{"read_count":12,"read_length":43966,"runtime":131782,"write_count":0,"write_length":0},"fee":6000,"kind":{"data":{"args":["0x627463","0x7a7a7a7a7a"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":14,"position":{"index":4},"proof":null,"raw_tx":"0x80800000000400c30d9ea5321592df016f6a3fa91f07c6927d1e23000000000000000e000000000000177000012250741bda88b19db1644ba06b04852885b99952f41ac0ea5171ba96f0f2bfc631f912b14ec5fff9a50b2adbedfc43afe7d015b01cbcb08dc1ef00bbb8bf4161010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000057a7a7a7a7a","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST31GV7N568AS5QR1DXN3ZA8Z0Z394Z8Y4C5J1Q9E","success":false},"operations":[],"transaction_identifier":{"hash":"0xfc7bacf43eb2763850aa1608f142bff772d940a8295712867f59ac58e150a5fb"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xfd1994c93b7b632dbc0af6b71b6568bc856be0db0530c47ee9b3cc9bdcc8502e","index":84263},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000002f39e33c2860807c85d510d52afe805c49ce97f129a61ef381","index":2405466},"confirm_microblock_identifier":{"hash":"0x62e26d6249a1ebb39d92682055e3a54868126cee8b1e10984056fefa7bf5beea","index":6},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":165,"stacks_block_hash":"0x17cd97d4604a82d4f7e52b0ba1c373986699da9fd6a90b585a537bb5e38f7ea4"},"parent_block_identifier":{"hash":"0x3fd17ea0c6e12c5544e82999b15af87d9f3990f963de1444f6069994e6418f9a","index":84262},"timestamp":1667991746,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x627261766f)","execution_cost":{"read_count":16,"read_length":43995,"runtime":167035,"write_count":2,"write_length":156},"fee":24000,"kind":{"data":{"args":["0x627463","0x627261766f"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":5,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400c80f061403e91afa78165a08819dff011fc2f54100000000000000050000000000005dc00000e1274b1ef12fceaa3e5fca1b3e245a569e8ff12e1078f73b95dd8b98a0a7f68906e9bedf1b851c24da22111796810930e914ec0e3b5bfe2e5c9fb756ccd4e43b010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000005627261766f","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000065304686173680200000000086d657461646174610c00000004046e616d650200000005627261766f096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac80f061403e91afa78165a08819dff011fc2f541","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST340Y1GM0FMHNYKR2SD0H0CXZW0HZGQN87JDTXCJ","success":true},"operations":[],"transaction_identifier":{"hash":"0xb55a571fcafeaba7e3357519ad77bf6d7bc6f2ba0087afef8be47cfa58036007"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x636861726c6965)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":6000,"kind":{"data":{"args":["0x627463","0x636861726c6965"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":11,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400c29f2bc04c3a559f50d45767e3b8c3978952032b000000000000000b00000000000017700001817b428a4d78c01d35f8ce16e56f5dc1da91c914c9958c7e5e79ab0c21909546150c6d6b396163e1e9a2ef03f2f2d65735f28558420affa3ea54e0575854e214010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000007636861726c6965","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000065404686173680200000000086d657461646174610c00000004046e616d650200000007636861726c6965096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac29f2bc04c3a559f50d45767e3b8c3978952032b","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST319YAY09GX5B7TGTHBPFRXRREBRJMG35D7B28QY","success":true},"operations":[],"transaction_identifier":{"hash":"0x7f3864a759cdfc98f1e5ca51f3e4239bd41a90ea2a66903245dc575cbb664302"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x636861726c6965)","execution_cost":{"read_count":12,"read_length":43972,"runtime":131834,"write_count":0,"write_length":0},"fee":24000,"kind":{"data":{"args":["0x627463","0x636861726c6965"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":12,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400c29f2bc04c3a559f50d45767e3b8c3978952032b000000000000000c0000000000005dc0000195e1cfd392cf0fb48e920699c95503d8fea59a7eade31ded48207d11151e73a16d052a396a64807949fd68c120b78d60e7fc64f43b8fa01cd16f029e1cdbba79010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000007636861726c6965","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST319YAY09GX5B7TGTHBPFRXRREBRJMG35D7B28QY","success":false},"operations":[],"transaction_identifier":{"hash":"0x9dbb2d3b56bece6fb15d3da66dc293ed5bdfa1d3223bdb1d4819020e8878401b"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xd61cb5464acd028d227dc0d61351e8a9e0bacecb236b9fecc7e92a7d9a2f12fd","index":84267},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000297880e6cb527e1d1373bd56d2c9438c4b18026d26784dbd53","index":2405470},"confirm_microblock_identifier":null,"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":169,"stacks_block_hash":"0xb659e6c64e7386adf2af45dd7e25e5f91a11c4b48e1e0d3181f1200075d64e77"},"parent_block_identifier":{"hash":"0xdde99e4290ed39d60231f23563ee312e1295d75f6e25c04cfae1f233b181e61e","index":84266},"timestamp":1667994441,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x626262626262626262)","execution_cost":{"read_count":16,"read_length":44007,"runtime":167191,"write_count":2,"write_length":160},"fee":24000,"kind":{"data":{"args":["0x627463","0x626262626262626262"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":13,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400ac192c794b03f59bbf7bd4b0ee9b002f271fdd94000000000000000d0000000000005dc000011778bb4f09c4774c403f237a5b7df4f4b669457ef7085e9bd7155c04951ad6a668c927200ada31281541e843dc27335b1ef58796752dae9bf02226c2735256ff010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000009626262626262626262","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000065504686173680200000000086d657461646174610c00000004046e616d650200000009626262626262626262096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aac192c794b03f59bbf7bd4b0ee9b002f271fdd94","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2P1JB3S9C1ZB6XZFFAB1VMV00QJE7YXJKMXDN6J","success":true},"operations":[],"transaction_identifier":{"hash":"0xdd2bcc30fdae50d4702d1245d1372cd6f3fd9b2b8fde44eb78bf6721eafb8d0e"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x267a2c6078aa357dc89a9b50a272fe3c087b52928e507bea77896a0254b6228f","index":84316},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000043c5a546ac00091a515dcf9a62a9dbc0cd6249234b41464a53","index":2405526},"confirm_microblock_identifier":{"hash":"0x09f8e7f561ae81608da74d08b7c90e7ddbb62a4cf052946289cf3625f5ba2bf8","index":2},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":225,"stacks_block_hash":"0x79c8be299ae3db7d7ad24b8bfae3cad482db1899534185af1801007287071453"},"parent_block_identifier":{"hash":"0xe33a9b5beba71d06ca4d512e31b5fda2823e7d0175d043dd150e8b500d9a609d","index":84315},"timestamp":1668021369,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x646667646667)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":3500,"kind":{"data":{"args":["0x627463","0x646667646667"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":21,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400e9ee5be86ec9e38e491aef3993dc1c248d2bf7ba00000000000000150000000000000dac000089ad06049db608f67863e8c3529434bfaf3baaf6793eb04931dcadb1e5fa3fe70a8a0a0b31e58c864e18f67caeb53fd5b50d4a9bc56ed54a8ba212e0298b5e1f030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006646667646667","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000065a04686173680200000000086d657461646174610c00000004046e616d650200000006646667646667096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ae9ee5be86ec9e38e491aef3993dc1c248d2bf7ba","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3MYWPZ8DV4Y73J93BQKK4YW3GJ8TAZQQAFSRYNS","success":true},"operations":[],"transaction_identifier":{"hash":"0xe22b8530b5e4270a42da99cedabfea436fdb00b47cee06dd68f299887e978436"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xa653dd7c0740a17857a2899cc44764d6ba0477ffbe2f14a41e0a1bb060dd415f","index":84317},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000b75d51027303f42479a1a3c4b25bad6d5e55f3381007448c6","index":2405527},"confirm_microblock_identifier":{"hash":"0x930fb17d3836ec9ff0441e7a61bb2447f2d9e761742d41886c19dd8e85d4a0c4","index":1},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":226,"stacks_block_hash":"0xc9c016e13fe99e58d5f0010d62fad7898b7fce2d3bfb71b74291e0233374f7a9"},"parent_block_identifier":{"hash":"0x267a2c6078aa357dc89a9b50a272fe3c087b52928e507bea77896a0254b6228f","index":84316},"timestamp":1668021851,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x313233313332)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":3500,"kind":{"data":{"args":["0x627463","0x313233313332"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":15,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004005cd708cae3bfab26be5838dd1080b274f4d4105e000000000000000f0000000000000dac000191f77d05b2e247df363785fce483153a02e6dedeb88db250cd2673194879113e24787694c8d58ddf778e384520919c27892c8d69b3ab9d7f13811999a93dd7e3030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006313233313332","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000065b04686173680200000000086d657461646174610c00000004046e616d650200000006313233313332096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a5cd708cae3bfab26be5838dd1080b274f4d4105e","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1EDE26AWEZTP9NYB0WDT440P9TF9N0GBSVH21VS","success":true},"operations":[],"transaction_identifier":{"hash":"0x6ad3d2b500df0fbe7ed9c365f6d02c7dcf23307ddce519c4f98ec2a4dcb92e48"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x53c7e3eb4ab18f36b3af742fe2fc1beea372608c28019bce92906eef5190b30d","index":84523},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000f5d0e4720e903e305433c00f8b5a35358202f20700fbcabcdf7e4343","index":2405764},"confirm_microblock_identifier":{"hash":"0x45541311506eb64758cf1147600f36b58879fea4d8931d13fca63f96d77b174c","index":3},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":463,"stacks_block_hash":"0xe26129d99c67d4749ea814eaa1e503c7568730963e7b26594f18f3827482b79a"},"parent_block_identifier":{"hash":"0xe5932b52cb06a0b0290c1c9a81772c6b53247fc6542d1335cc53d760eed7a235","index":84522},"timestamp":1668146577,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x2d5f)","execution_cost":{"read_count":16,"read_length":43986,"runtime":166918,"write_count":2,"write_length":153},"fee":3000,"kind":{"data":{"args":["0x627463","0x2d5f"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":4},"proof":null,"raw_tx":"0x80800000000400e5e82753dcec32347028d23e32bdac52080dc8f500000000000000020000000000000bb800004f592a1cb32e25a2b18b681fb40c7e89b94bfb9c66d1fdc1b84d93a75fc23d3a7f5cc298aae85493027515a3c161699b467b58aef0c48962fecc1bade6ec875d030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000022d5f","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000066104686173680200000000086d657461646174610c00000004046e616d6502000000022d5f096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ae5e82753dcec32347028d23e32bdac52080dc8f5","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3JYG9TKVKP34D3G5393WCNXNH90G3E8YP1K09XZ","success":true},"operations":[],"transaction_identifier":{"hash":"0xc519ed381cf48c4597af0f613e325de1638cdaceefe9879bac8d5b6ab2051a8b"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xc21ebbd2bda5bee13973993125e994dd6f088630edbbe9bebe5d0a70a6246e94","index":84524},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000001765b91b5dd35ad67a6fb6c3dec4b525ee4159d645f2d2ba7","index":2405765},"confirm_microblock_identifier":{"hash":"0x54fd36914b372f2097e474459e91c473041c97be79ca93ad2564033b83863172","index":1},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":464,"stacks_block_hash":"0xd8769b406b6b98fbbb68b9226a64da2358d7d4b891c093270e79ffad376a6d04"},"parent_block_identifier":{"hash":"0x53c7e3eb4ab18f36b3af742fe2fc1beea372608c28019bce92906eef5190b30d","index":84523},"timestamp":1668149773,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x31327731326531656173642d6473762d7364762d7364762d732d2d2d612d64612d2d5f7364665f5f7673646d7a6d785f)","execution_cost":{"read_count":16,"read_length":44124,"runtime":168712,"write_count":2,"write_length":199},"fee":3000,"kind":{"data":{"args":["0x627463","0x31327731326531656173642d6473762d7364762d7364762d732d2d2d612d64612d2d5f7364665f5f7673646d7a6d785f"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400cff965b6b4553644f65ae11651fbf743f3153c1b00000000000000020000000000000bb800018fe66b50ce6b81b7202729133cb4c518686fa70884563c7212a520e7df2b1bca7e2e3a07705829035c81cf0c7830618377897ca4f72b4c10b89f4562963759e4030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000003031327731326531656173642d6473762d7364762d7364762d732d2d2d612d64612d2d5f7364665f5f7673646d7a6d785f","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000066404686173680200000000086d657461646174610c00000004046e616d65020000003031327731326531656173642d6473762d7364762d7364762d732d2d2d612d64612d2d5f7364665f5f7673646d7a6d785f096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051acff965b6b4553644f65ae11651fbf743f3153c1b","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST37ZJSDPPHAKCH7PBBGHCMFVYX1Z659W3CY0426D","success":true},"operations":[],"transaction_identifier":{"hash":"0xbfa510c401c8b99617b1a53a322a8127e81c8da70b7501daac43f9417e524587"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x617463)","execution_cost":{"read_count":16,"read_length":43989,"runtime":166957,"write_count":2,"write_length":154},"fee":3000,"kind":{"data":{"args":["0x627463","0x617463"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":12,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400e14cac7d41bd3c6e0a823ae48274f018c9693ef9000000000000000c0000000000000bb80001325952275db34eafeb6ea2423cb04f6bbb030608123429a41fef138b64b102d43e918f06517e66f8e6622a855c7ba05839f7d5845266afcf1c1925c6b55c4adb030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000003617463","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000066504686173680200000000086d657461646174610c00000004046e616d650200000003617463096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ae14cac7d41bd3c6e0a823ae48274f018c9693ef9","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3GMSB3X86YKRVGAG8XE90KMY0CCJT9YZ723KYKA","success":true},"operations":[],"transaction_identifier":{"hash":"0xc8c84865f87ade95f5cfbafc575e38dc5b356744dff4059d20f27608ac2de54a"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x31323331323331323331)","execution_cost":{"read_count":16,"read_length":44010,"runtime":167230,"write_count":2,"write_length":161},"fee":3000,"kind":{"data":{"args":["0x627463","0x31323331323331323331"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":15,"position":{"index":4},"proof":null,"raw_tx":"0x80800000000400dc228d23098159e62ef42d1261838ab1af15a6df000000000000000f0000000000000bb800004c10166dce85daf872e2bd394d2d2ce1e09106dc99f4f3fad44dc296bc96ba4573943f57a0b9e53ce770efa3d283c249460ba08f4435353ae2bac967e6e28f75030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000a31323331323331323331","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000066604686173680200000000086d657461646174610c00000004046e616d65020000000a31323331323331323331096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051adc228d23098159e62ef42d1261838ab1af15a6df","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3E25393160NKSHEYGPH4RC3HARTY5D6VWN1TS64","success":true},"operations":[],"transaction_identifier":{"hash":"0xc06636dc6aa07d3634a708584feb919a9336cf2610a65381d301d6632517b642"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xef6161a5240916c78954dad036464319bff8db89b8f74a9baf653ac9487cdce1","index":84527},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000378e61b7e6bef53784d414d3bd457bc4fcc243ea37f2eb6c83b2d158","index":2405768},"confirm_microblock_identifier":{"hash":"0xc2409d5f1fda06fc576e20cab40d9e097cb2805d362499425e7c6146d90292a6","index":2},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":467,"stacks_block_hash":"0xdd1d2438dbb3ffb326bdea9813bd79ca10ebf5de2c31ed733c1e4c0a551eb4cd"},"parent_block_identifier":{"hash":"0xc9d1a586a44ff7ddcd5fa95bfcb3174b71e0752bea7b4d92b41c05616d606586","index":84526},"timestamp":1668153199,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x33343577646677)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":3000,"kind":{"data":{"args":["0x627463","0x33343577646677"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":23,"position":{"index":4},"proof":null,"raw_tx":"0x80800000000400e9ee5be86ec9e38e491aef3993dc1c248d2bf7ba00000000000000170000000000000bb800002408274a12fe0d2894372a6707876b4b89754597c5a0c886cb1b62934f7902a551171192632736c40bd0d9c56eb41a832bf7f6d58d6c9bd6b0d31d75ad004fc0030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000733343577646677","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000066704686173680200000000086d657461646174610c00000004046e616d65020000000733343577646677096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ae9ee5be86ec9e38e491aef3993dc1c248d2bf7ba","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3MYWPZ8DV4Y73J93BQKK4YW3GJ8TAZQQAFSRYNS","success":true},"operations":[],"transaction_identifier":{"hash":"0x36b51104d8462d614a668458e59f5920937f6e8a27251292c16e3feebf0b0c19"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xbbe3f133216eafb16354abe8aef74e11ae5970ae7cda360471972129d681ee38","index":84545},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000006d80948a907ff13f7de40479d99e8f1ce4bb8e162ba39d55933c","index":2405791},"confirm_microblock_identifier":{"hash":"0xeb187dcf208415810107bebda4c0ca86e30caa26a8aaf8cd9ac011109ad5b734","index":5},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":490,"stacks_block_hash":"0xaf5e920a208fabb48390735c36ce33df7d7561fef05a1b0f93a4a22d4684f594"},"parent_block_identifier":{"hash":"0x9392677329e48891cb760889508764e488cb73eab3b499817e3bdafa9dbf8e48","index":84544},"timestamp":1668168520,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6c69686c69683938)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":3000,"kind":{"data":{"args":["0x627463","0x6c69686c69683938"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":17,"position":{"index":7},"proof":null,"raw_tx":"0x80800000000400dc228d23098159e62ef42d1261838ab1af15a6df00000000000000110000000000000bb80001a0d9843b6c6d3851d9ad66c781ee2cd15a7024fde0679c70f6255fdd8c3b983c6307c02aafb68fddcb249479f6af169d9f6024071b9afda2ea335f967fbe14b5030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000086c69686c69683938","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000066d04686173680200000000086d657461646174610c00000004046e616d6502000000086c69686c69683938096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051adc228d23098159e62ef42d1261838ab1af15a6df","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3E25393160NKSHEYGPH4RC3HARTY5D6VWN1TS64","success":true},"operations":[],"transaction_identifier":{"hash":"0x75f3b7f736cc74bb63b27ce6bc6ffed873fa263ea28122c49c88bf8ac8a6130e"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x3c180e7f2b3881fd15f927bc66a0ed9634977f226904c510e45de2fad68746de","index":84576},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000014c044477fa2d7a18cf7d8a124dfd0921b8802839bce972fe2","index":2405830},"confirm_microblock_identifier":{"hash":"0x2c63cfc3eec282a38bb8687bcf16557a2c311046e0eb3ed735ca8348c084a0c8","index":0},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":529,"stacks_block_hash":"0x25d60e3061d133c429966ceddbf2c9c79d96fd40610dc6fc8e88a52f5ff938af"},"parent_block_identifier":{"hash":"0xb12ce56bb811eb16c0e9e269224f93cbd4f4cc35fee1e3ac5da65207a197be1c","index":84575},"timestamp":1668189026,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x75757575757575)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":75000,"kind":{"data":{"args":["0x627463","0x75757575757575"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400102c4f4e99ca94d32538dad1ef46b7f43a814276000000000000000200000000000124f80001eabfa616cd89195e5aebb333720b7676f16803ef22f9ea975ab1cc0c8cffaaf14b4dd94e8cd4a98b6c2dbeea8555ebc2e96ba827bfed3b65698b867949d85b9a010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000775757575757575","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000067104686173680200000000086d657461646174610c00000004046e616d65020000000775757575757575096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a102c4f4e99ca94d32538dad1ef46b7f43a814276","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST82RKTEK7599MS573DD3VT6PZT3N0A2ESB6KQG2","success":true},"operations":[],"transaction_identifier":{"hash":"0x79aca5c37f634ceb130f767dedaa54369b28ec7b81ce8079725348e464ea4699"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xdb8e5c7879fcec78d9e8d107c9c3f3e83e6e08fd8e11c8311815e1b56c5b4047","index":84577},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000001295c0715afdc373c797f722e86683ea24cf8b7853723242f3","index":2405831},"confirm_microblock_identifier":{"hash":"0x517c0fe128c3862c89b24d6d0ef961d92303bffa68eb5082d423f95802a4a2da","index":1},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":530,"stacks_block_hash":"0x1a261f294584c38e640e8e7f01c6093c94e20a13e4fd68f8ffbc83790c426312"},"parent_block_identifier":{"hash":"0x3c180e7f2b3881fd15f927bc66a0ed9634977f226904c510e45de2fad68746de","index":84576},"timestamp":1668189932,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x636f6e766f79)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":375000,"kind":{"data":{"args":["0x627463","0x636f6e766f79"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400f26c45abbf6802c224d8489b3a44c84169d93ee60000000000000002000000000005b8d800003f6c54c160e83edad8e983897558710d731b00bff896fac113f418874042b8305c251344b79d7f973a93210cd46a64c994dd6a899a24619d1cbc637042cd81d4010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006636f6e766f79","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000067204686173680200000000086d657461646174610c00000004046e616d650200000006636f6e766f79096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051af26c45abbf6802c224d8489b3a44c84169d93ee6","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3S6RHDBQXM05GH4V149PEJ4S10PKP9YWTCVVJDP","success":true},"operations":[],"transaction_identifier":{"hash":"0x4efb707ae3643a986546ced23034877c6862dd31865f0232571007d1420a97cf"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x27f8084a59f7568808d34d82d0f3263ab3c26bb501565556520e25dee8b475d5","index":84902},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000002983f8837c825e97b012ca971521c88488f1ce946a04974983","index":2406209},"confirm_microblock_identifier":{"hash":"0x027bb2d8ca996168a7ad5273f7117be4fe3b55faadf7c4b6cd461d6d2f9f0941","index":1},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":908,"stacks_block_hash":"0xadb2ccef32bb8884beb4e83960a15fee69bb51ab8ffd3e5f5cff6f969ea6a963"},"parent_block_identifier":{"hash":"0x4e91f408d3a87af43e26384411dfd11fedb6990e6863b24d63f7cd548e178036","index":84901},"timestamp":1668410067,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x737572666572)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":15000,"kind":{"data":{"args":["0x627463","0x737572666572"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400cf170cceaa11f1a9ea0766260a4bbf36385631a600000000000000040000000000003a98000184b1425ad746d9771ebcfef79bfac5d86b4d905e4e3690e4b84f808e53cfe2f25017a624489848366fbe40a537c4dff572ad6c91badc3c660606cc265bc68605010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006737572666572","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000067704686173680200000000086d657461646174610c00000004046e616d650200000006737572666572096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051acf170cceaa11f1a9ea0766260a4bbf36385631a6","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST37HE36EN88Z3AFA0XK2C2JBQWV3GNHHMRKD5W46","success":true},"operations":[],"transaction_identifier":{"hash":"0xa4861908aedc784c50bf59938b4d4ac3d376ebf09551926433a66dc6b23774af"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x5ac788c6787dabd0195e308f972f3f0d4532ee5cdd2b9205db4a2b10c9008b17","index":84903},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000082f9280afa6c0b939c530110870dc6e0cfb9bfe1549fc724ccef","index":2406210},"confirm_microblock_identifier":{"hash":"0x49f01d922eab92654ccc922ff0b11832ade2b7dadcd3e5f92e4149f389624d36","index":2},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":909,"stacks_block_hash":"0x5c9f069bb865738637d7c1598bfcf355f896da1ab10c6dd0c8b6b6b55fd851b7"},"parent_block_identifier":{"hash":"0x27f8084a59f7568808d34d82d0f3263ab3c26bb501565556520e25dee8b475d5","index":84902},"timestamp":1668411051,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x737572666572)","execution_cost":{"read_count":12,"read_length":43969,"runtime":131808,"write_count":0,"write_length":0},"fee":375000,"kind":{"data":{"args":["0x627463","0x737572666572"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":5,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400cf170cceaa11f1a9ea0766260a4bbf36385631a60000000000000005000000000005b8d80000f7a2a86f49e2db22313347f507629d0ab67ace9b1bb2a4dee135556928c7d84a7182f92c7c99205aa37959ca3c6a6f48d7f42874e077225717e20b92aa9eca8c010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006737572666572","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST37HE36EN88Z3AFA0XK2C2JBQWV3GNHHMRKD5W46","success":false},"operations":[],"transaction_identifier":{"hash":"0x0677b576f6c54a778660a169ff2863bd4d2527fc07bf0469b715903c1414555f"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7a7a7a7a7a7a7a)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":300000,"kind":{"data":{"args":["0x627463","0x7a7a7a7a7a7a7a"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004009460fab3ec3b8f4d1f962b15e6bf97835ec6798c000000000000000200000000000493e00001043d30fe074d66ec8691b4fc2832b1877d353328a3ee98d7ccb3aac1f16d7cda59cb377323c51eb3e58d3e4db1611b78cab535160946f0f0d49bc09f5362dcd1010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000077a7a7a7a7a7a7a","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000067804686173680200000000086d657461646174610c00000004046e616d6502000000077a7a7a7a7a7a7a096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a9460fab3ec3b8f4d1f962b15e6bf97835ec6798c","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2A61YNKXGXRYK8ZJRNHBSNZJY1NXHKSHHWF4X1D","success":true},"operations":[],"transaction_identifier":{"hash":"0xa7a10c31b272258c9b5c933681f92e5059a406d5facb854109bb7baa3d77a031"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7a7a7a7a7a7a7a)","execution_cost":{"read_count":12,"read_length":43972,"runtime":131834,"write_count":0,"write_length":0},"fee":15000,"kind":{"data":{"args":["0x627463","0x7a7a7a7a7a7a7a"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":3},"proof":null,"raw_tx":"0x808000000004009460fab3ec3b8f4d1f962b15e6bf97835ec6798c00000000000000030000000000003a980000c2c6e0f02bdc98eb190fe98bccb0195b452984348d1b2e6eac684d5a4e97ca5f7e9f349a94f645a02bb11d153176af6dbc4b870b7754e0c97e03449bed74724e010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000077a7a7a7a7a7a7a","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST2A61YNKXGXRYK8ZJRNHBSNZJY1NXHKSHHWF4X1D","success":false},"operations":[],"transaction_identifier":{"hash":"0x1aee68ce4b1c95464ad2cf784cde6eddd0d062f2af72ede2d52602722b8c5710"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7a7a7a7a7a7a7a)","execution_cost":{"read_count":12,"read_length":43972,"runtime":131834,"write_count":0,"write_length":0},"fee":30000,"kind":{"data":{"args":["0x627463","0x7a7a7a7a7a7a7a"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":4},"proof":null,"raw_tx":"0x808000000004009460fab3ec3b8f4d1f962b15e6bf97835ec6798c0000000000000004000000000000753000009cab927089e24702a46138985b3459486d0a89a43d07bdd1fcdae9bdf7bd338a172b04db93b99cb7157ad1bec13f1cdf5b3814a7ee63c01e9386c4b81d1e30bb010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000077a7a7a7a7a7a7a","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST2A61YNKXGXRYK8ZJRNHBSNZJY1NXHKSHHWF4X1D","success":false},"operations":[],"transaction_identifier":{"hash":"0xdb5a08e38b4ea3357e8d75292f0f5614766a280f6c47cba2255d75868a858ba6"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xaf75d8fc6fd14c7ddc0593d98b7173ea435baf52ca3b7612fa2ca29b5d2454a6","index":84904},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000007e45f2290f20e26ac72049c2ea4922ebbe3895382da5774ef64","index":2406211},"confirm_microblock_identifier":{"hash":"0x1c90a33fe0cd04e8abf931d1c55208b2c7b585aa426475b25e977a8d09a7889b","index":1},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":910,"stacks_block_hash":"0x35d180e32124a9c6bf657a0aeba2400fd7d69d3b94939c8df6f72899f2dcb261"},"parent_block_identifier":{"hash":"0x5ac788c6787dabd0195e308f972f3f0d4532ee5cdd2b9205db4a2b10c9008b17","index":84903},"timestamp":1668412265,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x617364617364)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":75000,"kind":{"data":{"args":["0x627463","0x617364617364"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004002d4c4e9e82588700bfe95094cff35461a888ad44000000000000000200000000000124f80001bff3aa5c4003e844be7cec54b52f5527830974205f6d22af075b9d5e5b09eff01a978a0656b376f64637d79b0b429553fdd61230ca0c9c4f6147d064144dc6c3010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006617364617364","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000067904686173680200000000086d657461646174610c00000004046e616d650200000006617364617364096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a2d4c4e9e82588700bfe95094cff35461a888ad44","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STPMRKMYG9C8E05ZX5899KZKAHGTH25D8KTNYYZC","success":true},"operations":[],"transaction_identifier":{"hash":"0x3a10610f0b9b01980aef2095da13afee0959d5fab4b3adbbdb16010ff50cc236"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x617364617364)","execution_cost":{"read_count":12,"read_length":43969,"runtime":131808,"write_count":0,"write_length":0},"fee":15000,"kind":{"data":{"args":["0x627463","0x617364617364"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004002d4c4e9e82588700bfe95094cff35461a888ad4400000000000000030000000000003a980000c42006fb80ba8d1b851fd540d4361919dd078cc6d33e0799a1d9264e50bf6b4d649b16f085d85019dd708a31fd51fb68dcef3de447f8c768ada6b8a5279625f6010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006617364617364","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"STPMRKMYG9C8E05ZX5899KZKAHGTH25D8KTNYYZC","success":false},"operations":[],"transaction_identifier":{"hash":"0x244e47231eef74657c43237e334fa71f14670c87e17766203c2ea7bcd9c6a698"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7a7a7a7a7a7a7a)","execution_cost":{"read_count":12,"read_length":43972,"runtime":131834,"write_count":0,"write_length":0},"fee":15000,"kind":{"data":{"args":["0x627463","0x7a7a7a7a7a7a7a"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":5,"position":{"index":3},"proof":null,"raw_tx":"0x808000000004009460fab3ec3b8f4d1f962b15e6bf97835ec6798c00000000000000050000000000003a980001520e1bfff632d31bf74a2109e0474d1f8e735703f953445b929f9e8f79d374011982f715a040bb7db342f698bda835746899c3fff79b8a2044d5ef876c5e83d5010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000077a7a7a7a7a7a7a","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST2A61YNKXGXRYK8ZJRNHBSNZJY1NXHKSHHWF4X1D","success":false},"operations":[],"transaction_identifier":{"hash":"0x0d3f85b0ac542fbdf94b49facb902473c7d049bd8b0f5b43109bad481ecde773"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x57ae9573cf48ca58eb933ddb7f504978180748893b19c56da07d77fcb91b4e0e","index":84905},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000001fd98806eb36a17f7f6211e287d0c045e4ae15f1f2e48f3057","index":2406212},"confirm_microblock_identifier":{"hash":"0xbd47920dc1bd8766a2dd8804bf87b00da8002fcf5725ea784b7f2fd4dcf5dc01","index":1},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":911,"stacks_block_hash":"0x90502f45ad8fe43da0734721635cdf836c4261ac916d9e3274bb15a0b0585a26"},"parent_block_identifier":{"hash":"0xaf75d8fc6fd14c7ddc0593d98b7173ea435baf52ca3b7612fa2ca29b5d2454a6","index":84904},"timestamp":1668413491,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x626f796b61)","execution_cost":{"read_count":16,"read_length":43995,"runtime":167035,"write_count":2,"write_length":156},"fee":75000,"kind":{"data":{"args":["0x627463","0x626f796b61"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400a6bf385c515e6deec564b7973875a66b044c083a000000000000000200000000000124f800004b0bced843ceeaa8e7fff20b4f15bc56742dba45dfd31facf371144cd18b4ee44c7f8bb8b788c1e9329a86191955b7153f09ead992b8af1edc23225fe66af7fa010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000005626f796b61","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000067a04686173680200000000086d657461646174610c00000004046e616d650200000005626f796b61096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aa6bf385c515e6deec564b7973875a66b044c083a","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2KBYE2WA5F6VVP5CJVSEE3NMSNG8K087BZGFQK5","success":true},"operations":[],"transaction_identifier":{"hash":"0xf8671bf488de5b8e5e54e082ebd269eeaacb9bd09aaa47eb7d17da8ea59db2ab"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x617364617364)","execution_cost":{"read_count":12,"read_length":43969,"runtime":131808,"write_count":0,"write_length":0},"fee":15000,"kind":{"data":{"args":["0x627463","0x617364617364"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004002d4c4e9e82588700bfe95094cff35461a888ad4400000000000000040000000000003a9800011ceb361a8fef00a19f18a1e190bee93d6440f1444cf28c2a65601c0c047467e66a87dd5d4f5e750f7e9e279edd6ad7453eb40af44b63eb0f9a5271302c1bd691010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006617364617364","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"STPMRKMYG9C8E05ZX5899KZKAHGTH25D8KTNYYZC","success":false},"operations":[],"transaction_identifier":{"hash":"0x6c3233cad1eaa6073b9bf6aa1c7404a40165526b64c924207ab6fc482bd92c4d"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x617364617364)","execution_cost":{"read_count":12,"read_length":43969,"runtime":131808,"write_count":0,"write_length":0},"fee":15000,"kind":{"data":{"args":["0x627463","0x617364617364"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":5,"position":{"index":3},"proof":null,"raw_tx":"0x808000000004002d4c4e9e82588700bfe95094cff35461a888ad4400000000000000050000000000003a980001d37919c62d28c9ada3177f8b61dba082a20a1d73cde51a5427e631a26f1001bc3bbc82b26bc82f3a6c909b0ae701f46fb9eb849898c4c3a46d183cfce4a9c15f010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006617364617364","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"STPMRKMYG9C8E05ZX5899KZKAHGTH25D8KTNYYZC","success":false},"operations":[],"transaction_identifier":{"hash":"0x13a07ee899f7e6e8a8d85a315c30057d1b78d3fe9ae9e1b3e273a2b4a972abde"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x617364617364)","execution_cost":{"read_count":12,"read_length":43969,"runtime":131808,"write_count":0,"write_length":0},"fee":75000,"kind":{"data":{"args":["0x627463","0x617364617364"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":6,"position":{"index":4},"proof":null,"raw_tx":"0x808000000004002d4c4e9e82588700bfe95094cff35461a888ad44000000000000000600000000000124f800006ffd4e09b1a9597fc260a40bea049d6b254212ecb227b316087093b5dcab501120c123182a2f70881452915cd881466efd7543d9c2414986643032cb0cd661a3010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006617364617364","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"STPMRKMYG9C8E05ZX5899KZKAHGTH25D8KTNYYZC","success":false},"operations":[],"transaction_identifier":{"hash":"0x30f8791756ac3629ef23fdb2899e607a25089f5a53072ba17be5cd6492aeeda2"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xfd13849783b13b7301ce93f43be21c65d3b9c57330e0b5fffa2488b90031b7bd","index":84926},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000003b467f513acc2b348ddb2c4efd825f96648ce3a449636c4002","index":2406236},"confirm_microblock_identifier":{"hash":"0xb00ca0a46598fc11f8a1861bf37709636e5076727c00534e956341af13ee1287","index":4},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":935,"stacks_block_hash":"0xb768d76365877d2235ff0ce7a8a1846b3259de2dbf69698976d7b21ac86bf5c2"},"parent_block_identifier":{"hash":"0xc8454d6d535cbd91ba0ea22f705dd7821349136ccb759ea879261b0ac5b3d63d","index":84925},"timestamp":1668429192,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x616161616161616161)","execution_cost":{"read_count":16,"read_length":44007,"runtime":167191,"write_count":2,"write_length":160},"fee":300000,"kind":{"data":{"args":["0x627463","0x616161616161616161"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":9,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400d63fd7ec23b0085b49757329fa19c299988153db000000000000000900000000000493e000004cdb025727243fc0a44c8db1392b2eedeb56305ab3360f89e4b2a140920706d307c62702d28719147295f18bf069385873b749fa26e72eebf85255c8ef6bc3bf010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000009616161616161616161","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000068104686173680200000000086d657461646174610c00000004046e616d650200000009616161616161616161096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ad63fd7ec23b0085b49757329fa19c299988153db","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3B3ZNZC4ER0GPT9ENSJKYGSRACSH0AKVCD515Q5","success":true},"operations":[],"transaction_identifier":{"hash":"0x08e1611df4ffbaa931fc28e856c0cd5368b15c3c2e7e37f2501a09a201f33532"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x54ed15653066be8f10a946690ea25923adc1b49d7739a0d024b759b1f63f37be","index":84929},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000358f14062200c87f592cdd72797ae803da2a54ad3f3ada0462","index":2406240},"confirm_microblock_identifier":{"hash":"0xc8dbe92660ed137c796617f79e00c7d688bd5de8693de27316e7b2900b7d1503","index":5},"pox_cycle_index":386,"pox_cycle_length":1050,"pox_cycle_position":939,"stacks_block_hash":"0x5645198d56e178e3a409b72ad646510ab8658e632ed2e98be3a98ca086f79193"},"parent_block_identifier":{"hash":"0xde7b99fd8b00a3912602fe0620c0a13042a8e4393b4f723a7bee9778f5d266de","index":84928},"timestamp":1668431924,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x74776973746572)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":48000000,"kind":{"data":{"args":["0x627463","0x74776973746572"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":12,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400d63fd7ec23b0085b49757329fa19c299988153db000000000000000c0000000002dc6c000000a812ce4eed10661045ec8df3a6d95fa1a8eda19d5809cd4668d638f94634112e335bd0c4f8d2ed95e1f62cd9023d291d18e6b63b2ac5914db1bbdffccf5930f8010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000774776973746572","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000068904686173680200000000086d657461646174610c00000004046e616d65020000000774776973746572096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ad63fd7ec23b0085b49757329fa19c299988153db","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3B3ZNZC4ER0GPT9ENSJKYGSRACSH0AKVCD515Q5","success":true},"operations":[],"transaction_identifier":{"hash":"0xa53482b9f7515435ff42f1a0f06bb79743dce77d2dca36d69c7e89c1a7bab641"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x24a25dab65838d27d1c2e4d40a324f4ed24a55dcb6c121840e67e434a4d6e888","index":85033},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000131e45cb56b7fbf3f2e168fb3be9bb9b477a180145e0f1a5fe","index":2406355},"confirm_microblock_identifier":{"hash":"0x201dd4b727bfe6959e80bb320aa893a56939f0bd5c3437dd928c100c4e974da3","index":0},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":4,"stacks_block_hash":"0xd21dd065c5d19a7c85a36062ed0f87be4449b0830c24fa15c158c10fb21efdea"},"parent_block_identifier":{"hash":"0xb266fc01944799bdf65fda5f8a311584e6d2715ea37e3e09e042430cc83b5b7f","index":85032},"timestamp":1668488407,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6d6d6d6d6d6d)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":300000,"kind":{"data":{"args":["0x627463","0x6d6d6d6d6d6d"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400f26c45abbf6802c224d8489b3a44c84169d93ee6000000000000000300000000000493e000008c3c246304eec1cbf7cdad0b21cd114f94c17eca4a1212892e7ec56e709bb84f06ca672ee6295d4778c7ba906f6aeab56a1816ea4839966846a9edf83b9f7f7f010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000066d6d6d6d6d6d","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000068c04686173680200000000086d657461646174610c00000004046e616d6502000000066d6d6d6d6d6d096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051af26c45abbf6802c224d8489b3a44c84169d93ee6","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3S6RHDBQXM05GH4V149PEJ4S10PKP9YWTCVVJDP","success":true},"operations":[],"transaction_identifier":{"hash":"0xb741a7005efd4384cf29c60103483a3f9836cc0bd4bbc94cb2c7f4d9954ffcaa"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xafecc297de7427739a970bea72caee298265cc8603abeac2c658eb94f9441ad4","index":85038},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000006e4f6c3f6b44d61bea4faa910b72d084e097dbfb712383801","index":2406360},"confirm_microblock_identifier":{"hash":"0x0aa675b4ffc19a0dc66d75a854c542e40a9c052477dc8a0ea012d67a8a18ee5c","index":3},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":9,"stacks_block_hash":"0xfe3f070dc1851337e8d33c78925b07539c7fc1271382d81467875d02bb34b9c0"},"parent_block_identifier":{"hash":"0x3b06ff3fbf6735391ef7c9d7c7e37f1f5c2069a813d9fc4c4928d7a6f2435b58","index":85037},"timestamp":1668491118,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6f6b6b6f6b6b6f6b)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":375000,"kind":{"data":{"args":["0x627463","0x6f6b6b6f6b6b6f6b"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":6,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400f26c45abbf6802c224d8489b3a44c84169d93ee60000000000000006000000000005b8d8000099deda41d0184677ee2a6b6807064b2fcaa6f907977dbd8c0e23a10749650142669e6e3dc981b7861cff87f942ef61d6024e15ee6369e75a2f4278d27905430c010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000086f6b6b6f6b6b6f6b","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000068f04686173680200000000086d657461646174610c00000004046e616d6502000000086f6b6b6f6b6b6f6b096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051af26c45abbf6802c224d8489b3a44c84169d93ee6","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3S6RHDBQXM05GH4V149PEJ4S10PKP9YWTCVVJDP","success":true},"operations":[],"transaction_identifier":{"hash":"0xaa75b11bbff32601244a908d628d29179fb5ae1973cd950bc6c8d4da4e0dadda"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x918de8df6492c1c12313fd1cec7f603a39daef429928faa0d0b5c9041dd40cb1","index":85047},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000129ecf9072029575ecdfd62aa9dc8b2d0415155ab9b4c3aae7","index":2406371},"confirm_microblock_identifier":{"hash":"0xc37521ed1612a39ae8815447baa35aa563c01cc5b0527fc14cfdd5e39a7b0adf","index":0},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":20,"stacks_block_hash":"0x210ca3ffb6c3b36ae81af68cd194077c9671f6f2f3c077e34e569c6ae23e373c"},"parent_block_identifier":{"hash":"0xc80d7aaa03e83485d54da969a437a1268fdce024276c2b48f5ba9df7668b532d","index":85046},"timestamp":1668496878,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x74726574726572)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":15000,"kind":{"data":{"args":["0x627463","0x74726574726572"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400102c4f4e99ca94d32538dad1ef46b7f43a81427600000000000000040000000000003a980001c0a1767276e0981c775e08e66af1888720d92e4c29816f311a4ecc6ed4b9228d34a6927da737c3b1aaaa7c67d0ad8e43882fa99d290b5805e1734bf15726683d010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000774726574726572","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000069604686173680200000000086d657461646174610c00000004046e616d65020000000774726574726572096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a102c4f4e99ca94d32538dad1ef46b7f43a814276","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST82RKTEK7599MS573DD3VT6PZT3N0A2ESB6KQG2","success":true},"operations":[],"transaction_identifier":{"hash":"0x1a09a65ffdcb5c07912cf75c874de7d21d3576dcae00e7823e880be6387560ab"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x71959829e4984102b3aba43b27417d1ae277a5e975744a89ebcf16fd51158eb3","index":85048},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000001741b6b7fb34e2a489a8f1f0177f3e979140850796bf1676a","index":2406372},"confirm_microblock_identifier":{"hash":"0x9c1ea8231f20fc053d021640cdbab4ad5a589ea712d26fdf9fa43fc906df3682","index":3},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":21,"stacks_block_hash":"0x9af560448d662708be4e715484aaf62f37a09ec1e473c381055f718d58497d14"},"parent_block_identifier":{"hash":"0x918de8df6492c1c12313fd1cec7f603a39daef429928faa0d0b5c9041dd40cb1","index":85047},"timestamp":1668497336,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x65717561746f72)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":15000,"kind":{"data":{"args":["0x627463","0x65717561746f72"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":11,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400f26c45abbf6802c224d8489b3a44c84169d93ee6000000000000000b0000000000003a980001fc09b6f32170abf4fd00f72c90f80f21f2d4e8d17461d24a87fd7d8ecbbdc35a303e044f617976b42c498a68ac167e6a8b70f13579d5fea80363cccc3a7c880c010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000765717561746f72","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000069a04686173680200000000086d657461646174610c00000004046e616d65020000000765717561746f72096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051af26c45abbf6802c224d8489b3a44c84169d93ee6","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3S6RHDBQXM05GH4V149PEJ4S10PKP9YWTCVVJDP","success":true},"operations":[],"transaction_identifier":{"hash":"0xcbeba35aa6e0a2b2e918ca38a230b537c9229d9d1c10ba967099c2ac970d2f49"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6f70657261)","execution_cost":{"read_count":16,"read_length":43995,"runtime":167035,"write_count":2,"write_length":156},"fee":3000,"kind":{"data":{"args":["0x627463","0x6f70657261"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":4},"proof":null,"raw_tx":"0x80800000000400801cf60dd4b4857634e00c3136391a7c2a10683a00000000000000030000000000000bb8000147296368d9950aa9d9a94667fd67074812831f9e9465c75e3da877054d4dd65f683755916f5bd433a23edee8abfbfb9654977388e7dfc0dfa4af430b8851c31a010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000056f70657261","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000069b04686173680200000000086d657461646174610c00000004046e616d6502000000056f70657261096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a801cf60dd4b4857634e00c3136391a7c2a10683a","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST201SXGDTJT8AXHMW0632DHS39Y2M4387AFT2S3A","success":true},"operations":[],"transaction_identifier":{"hash":"0x7398c9806ebd659ae2fef07c5129ab2a212e9af27780b45a153182750b66c43f"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x756b5e9381b9b5ff865ede8fa1914157510d245b4ee8e5ed1a46ac688f780063","index":85095},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000d73a30f0457222c0eeb594825f6eb55474b5e978f3bec3b2ace75365","index":2406422},"confirm_microblock_identifier":{"hash":"0xf22652ef6636606136b039da137ea3edf31dad577ea43729f481645a410f6649","index":6},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":71,"stacks_block_hash":"0xc7503a0932198c42af320c96cafc459b5719f30e2f47ec7d12dd9c86487c2432"},"parent_block_identifier":{"hash":"0xc3cfcd815be9c1bec5abb3406acbd89006534cddf40e2c60dcb10ce79445161d","index":85094},"timestamp":1668529142,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x727472747274)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":3000,"kind":{"data":{"args":["0x627463","0x727472747274"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":8,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400102c4f4e99ca94d32538dad1ef46b7f43a81427600000000000000080000000000000bb80001fdb79ee82c0e673975455137108a6a8fb8991fd6de685f603e1bc540a023206c1f6e3433249668bf380632ce37f48f296c6a53da1d42d68f3f08ff7f0f88b40b010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006727472747274","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006ab04686173680200000000086d657461646174610c00000004046e616d650200000006727472747274096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a102c4f4e99ca94d32538dad1ef46b7f43a814276","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST82RKTEK7599MS573DD3VT6PZT3N0A2ESB6KQG2","success":true},"operations":[],"transaction_identifier":{"hash":"0x795c84668edb14815d8404e9f82dd6b14b2d11447d4505ea5865b473acbbff44"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x63686172636f616c)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":3000,"kind":{"data":{"args":["0x627463","0x63686172636f616c"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":15,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400f26c45abbf6802c224d8489b3a44c84169d93ee6000000000000000f0000000000000bb80001cecbc4b3eb227d9c159e93c8354ba5ad286029a259d55883f6a743e3a92ecff00f422286dca3781420f653ff8d197c602ef31915afdcd5eb808bdba60d0347a9010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000863686172636f616c","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006ac04686173680200000000086d657461646174610c00000004046e616d65020000000863686172636f616c096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051af26c45abbf6802c224d8489b3a44c84169d93ee6","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3S6RHDBQXM05GH4V149PEJ4S10PKP9YWTCVVJDP","success":true},"operations":[],"transaction_identifier":{"hash":"0x4024c4ec76f059f0517f759be5ebff4737ac14236b6293d47b94e7da1523b2bc"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x616c69656e)","execution_cost":{"read_count":16,"read_length":43995,"runtime":167035,"write_count":2,"write_length":156},"fee":3000,"kind":{"data":{"args":["0x627463","0x616c69656e"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":3},"proof":null,"raw_tx":"0x8080000000040009c5ad860cb9f2d893abb2f9d692c402474d805400000000000000030000000000000bb80001f9f37647ca17938427e0f43cf3f8edaf878fba0f4465a24c371b1f572a7e704b39897db55499a514feb8ee39b0632729f817aa8dc9e132505acfad24460684fd010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000005616c69656e","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006ad04686173680200000000086d657461646174610c00000004046e616d650200000005616c69656e096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a09c5ad860cb9f2d893abb2f9d692c402474d8054","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST4WBBC61JWZ5P4KNESFKNMJRG14EKC0AK7BVJSX","success":true},"operations":[],"transaction_identifier":{"hash":"0xf6c1e211c172d01c63bcb731359c6ffda2aa045ccad0903f9d187cc48f540369"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6368726f6d65)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":3000,"kind":{"data":{"args":["0x627463","0x6368726f6d65"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":4},"proof":null,"raw_tx":"0x80800000000400b9a2b17b1cad5deb3806aec7445de90fd4a7b7d300000000000000030000000000000bb80001f65f6df52c2eb10744de39c6d18febe1b2d981681dd6b99ae79b83dba7590ad42fa788d6ec6b587902507d08c04ce1a1d94e3082aacf4a0dc96b56898a4d1ed9010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000066368726f6d65","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006ae04686173680200000000086d657461646174610c00000004046e616d6502000000066368726f6d65096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ab9a2b17b1cad5deb3806aec7445de90fd4a7b7d3","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2WT5CBV3JPNVTSR0TQCEH2XX47X99XQTCYBG6FJ","success":true},"operations":[],"transaction_identifier":{"hash":"0x1eaf80b519cf0a351d8c0d9c97b66a0806a8d3e98bf0f39cf292c267ac22464e"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x3e788894a97449ce5fa0df2e59b9bfd60b23c5326eea68eb97fd449533ff3e07","index":85096},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000701b4592c16c14327ade05ba837224b927c1cd6e704a49a7d","index":2406423},"confirm_microblock_identifier":{"hash":"0xb3a71df1e6b5d235007b70b4847d8dd8edfaeda2b277903cc409f2f0546133fe","index":2},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":72,"stacks_block_hash":"0x242bfa0da1a32d4b94b60468611d5a468433679c8bd18920dcfbca6c3d5ebe87"},"parent_block_identifier":{"hash":"0x756b5e9381b9b5ff865ede8fa1914157510d245b4ee8e5ed1a46ac688f780063","index":85095},"timestamp":1668530344,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x73647673647661736476)","execution_cost":{"read_count":16,"read_length":44010,"runtime":167230,"write_count":2,"write_length":161},"fee":3000,"kind":{"data":{"args":["0x627463","0x73647673647661736476"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":17,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400d63fd7ec23b0085b49757329fa19c299988153db00000000000000110000000000000bb80000dc716d0a50467d23338e8818444792e783940a71c38457a7c9c90d2bd669369d3dd96c7a4ecd1e45fd3f22912b4a0ce8ce57604f8a4da97e28671c74596cd8c1010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000a73647673647661736476","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006b004686173680200000000086d657461646174610c00000004046e616d65020000000a73647673647661736476096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ad63fd7ec23b0085b49757329fa19c299988153db","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3B3ZNZC4ER0GPT9ENSJKYGSRACSH0AKVCD515Q5","success":true},"operations":[],"transaction_identifier":{"hash":"0xe14964ea17e0bf57647cb47276192dbb86240d6c606288fb5661e0197113aa52"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x77c309168f511d84c56a5c3f98492594d5299b6b53f2049e9b49f1f52a1b97fd","index":85098},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000014ce0e497c0e266b184301afba98f74b92de39801daf45190f","index":2406425},"confirm_microblock_identifier":{"hash":"0x242fa3dffa4ba09d045198d3362f8ef1072d40cde44772685fc97b9163bd59f4","index":1},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":74,"stacks_block_hash":"0x06fd6641160b4559ccc5261284abbf66988ff8fa915774925ec4e7071cf99709"},"parent_block_identifier":{"hash":"0x3c9b5f970bd4aed0d6111058e2a467fa963af1ec0322898ce43d01c7bb76dc6c","index":85097},"timestamp":1668531058,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x617364617364616473)","execution_cost":{"read_count":16,"read_length":44007,"runtime":167191,"write_count":2,"write_length":160},"fee":3000,"kind":{"data":{"args":["0x627463","0x617364617364616473"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040082386f2a70a4b57e2d4304fb19364d89d0df04c400000000000000020000000000000bb80001fafc28f49cad31d3e66bcaf91b9f82e7289f5dd61c0d87892d1fe567dc3e5a95400bdf2eaed0caba45441d9e0a3d8fab61ab9a0d0de3aecb47591be9a1184e55010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000009617364617364616473","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006b304686173680200000000086d657461646174610c00000004046e616d650200000009617364617364616473096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a82386f2a70a4b57e2d4304fb19364d89d0df04c4","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST213GVSAE2JBAZHD8C2FP69P9P4X1QR4RKRFPG6J","success":true},"operations":[],"transaction_identifier":{"hash":"0x111b5a233aba6a49088b3705e2ed2250458ad60e272e08f4eb8b968e39b78c20"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xfd9c65cfd8762938b28002768231a8f792438081a2d64e0e842a09dd589378a4","index":85099},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000cc5ada54fcf1b89180d527206fc92f079fbb05bc9b42fd1a2","index":2406426},"confirm_microblock_identifier":{"hash":"0x6d60323fdb752ae06ac896fcdd7199439ee5e0a5e118cdc2dd7bcb38470db5db","index":3},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":75,"stacks_block_hash":"0xa5d74861fb9aa20be9ea99afe54a94bc8fff76ab6e248e03c94dfbeadf1e7bb0"},"parent_block_identifier":{"hash":"0x77c309168f511d84c56a5c3f98492594d5299b6b53f2049e9b49f1f52a1b97fd","index":85098},"timestamp":1668531249,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6e65776e6577)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":3000,"kind":{"data":{"args":["0x627463","0x6e65776e6577"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":6,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040090a0c8a69c98cc0e7f4109a27d61dcb18e35e55c00000000000000060000000000000bb80001ba3f4f56aa2d0be7d49547ed55e250bc8bea25953ec732d16b3a3a005ed522202deb2b3b9e8e076cbb76cb0406630bd6c78543b8eab5b911d8f73f266115ee4d010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000066e65776e6577","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006b404686173680200000000086d657461646174610c00000004046e616d6502000000066e65776e6577096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a90a0c8a69c98cc0e7f4109a27d61dcb18e35e55c","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST28A1J56KJCCR3KZ844T4ZB1VJRRWDF5BJMDN2ZY","success":true},"operations":[],"transaction_identifier":{"hash":"0x3367e1c74f44c03cd2d8b1b96e61666e71e98bf15d111840826776ff7cc72170"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x1736797debabcb35a8d0f84743802d9c0ec2968d76adc1a7a1be32298e686998","index":85102},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000003d713ec9996c2ae4141071299dfc9e55cd40f5b660b14fedf8","index":2406429},"confirm_microblock_identifier":{"hash":"0x06ac582a44a68378e7453d5fc88e4e22d228b0d414c9d73b7ef0d315041ed949","index":4},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":78,"stacks_block_hash":"0xf2761a39a1ab789f739b6067e60fcaaa1df41fdd3e5e56bfde05a6ca917d1e21"},"parent_block_identifier":{"hash":"0x09649df3371bb77c170f47363829f0b66c4f67aa5bac9e034e4cbcc34f07b965","index":85101},"timestamp":1668531769,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7a78637a7863)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":3000,"kind":{"data":{"args":["0x627463","0x7a78637a7863"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":8,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400cf170cceaa11f1a9ea0766260a4bbf36385631a600000000000000080000000000000bb8000033d7dbc0cd48c18618eda937b8b30eff4070348f8b3b43131c157184dbdb0dcc183c1cab2841c2c04c77d4d202328311964c5fa120d5f4f60c109304f6505f1b010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000067a78637a7863","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006b604686173680200000000086d657461646174610c00000004046e616d6502000000067a78637a7863096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051acf170cceaa11f1a9ea0766260a4bbf36385631a6","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST37HE36EN88Z3AFA0XK2C2JBQWV3GNHHMRKD5W46","success":true},"operations":[],"transaction_identifier":{"hash":"0x886dd3041a79dc56573f0758000931f7362971b99cc41d0debf99538b557ab20"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x3e061abc9e5dd4c3e791ff783abb4d672469a6bb566008ba9804a77072337338","index":85104},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000001f9bb1f90fe24ee1e2633a723a9e03f712604fde3267a5aff6","index":2406431},"confirm_microblock_identifier":{"hash":"0x02f3129cbf51918a1666c9815f5e780bbbe715df9b745cb0b9b7a711ffc2180e","index":1},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":80,"stacks_block_hash":"0xad21685a6f445887d599e9c390da307aa1814fe1cffa8808d99cea785f10c6c6"},"parent_block_identifier":{"hash":"0xe062c794fb0ebf2c2ae5a6ef6801266582584a9a65d6ab9149ceb5509527832e","index":85103},"timestamp":1668532456,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x616c6b73646e616b6c736e64)","execution_cost":{"read_count":16,"read_length":44016,"runtime":167308,"write_count":2,"write_length":163},"fee":3000,"kind":{"data":{"args":["0x627463","0x616c6b73646e616b6c736e64"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004002bab36c23d196770d96b35bfc67e1875fb85276d00000000000000030000000000000bb80000b5790521f9d450e286c774f7763c8369c1b4c29b7c4524e6ea5928edc06545ad5892ac8640bb77d69b311fd32b8afac859f9242a0413c0ef5ee60adb4d8ce1cb010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000c616c6b73646e616b6c736e64","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006b904686173680200000000086d657461646174610c00000004046e616d65020000000c616c6b73646e616b6c736e64096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a2bab36c23d196770d96b35bfc67e1875fb85276d","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STNTPDP27MCPEW6SDCTVZHKY31TZQ197DPB6QT5H","success":true},"operations":[],"transaction_identifier":{"hash":"0x98007b1273701383089d1d9be9d000b53407b12f8147b1f7d81b745e7665b535"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x2ee94c9f28464e87993649086836bcda8bb7f49da374e423b91939bcfdb2eb81","index":85110},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000020aebe0ec5faba5a7fe49d11b44325f8018816b6e5bf7b12f8","index":2406437},"confirm_microblock_identifier":{"hash":"0x33fa610e2a00d9587c0847d8aad3373c4852dda0c661e1c5037897bc2d4a2b6c","index":2},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":86,"stacks_block_hash":"0xa84aa86ee80cc1c002445b3e3aa646ef2792476ddadd78562b2469e5a8458e29"},"parent_block_identifier":{"hash":"0xdc693eb58257c5bba34ce048e00d61cb19ff5463efe9ea80ba8f8463200c72a8","index":85109},"timestamp":1668536337,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6c6b6d6c6b6d)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":24000,"kind":{"data":{"args":["0x627463","0x6c6b6d6c6b6d"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004003a7c5239fa9d8395dd073f45f2dd390a5cf8fa3800000000000000020000000000005dc000004e282ab862955abce5325bf3a6455bb5ceb6166681d7b7aaa1ace8efb00d5f19400166aaffee64b9c94aaf09063cb49231d3d29ec19bab6f2b56a25c0c80e857010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000066c6b6d6c6b6d","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006bb04686173680200000000086d657461646174610c00000004046e616d6502000000066c6b6d6c6b6d096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a3a7c5239fa9d8395dd073f45f2dd390a5cf8fa38","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STX7RMHSZAER75EX0WZMBWPX7455SY7T72ZBS62F","success":true},"operations":[],"transaction_identifier":{"hash":"0x2e3509c591badc21baf6faa99e3ed42814cd2babb37e680d83384b03400a55d8"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xddeb182f5aed9db56272518d0db49768fb979156b7e7d04ce599c3c08c03d3df","index":85117},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000003a63979a6b9cf45d9f09a72e2a319246c59991d95afb1b02a0","index":2406447},"confirm_microblock_identifier":{"hash":"0x157b08227e3115ce6558723e674113da54dfeff5d79610bcbec179842a8965f2","index":5},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":96,"stacks_block_hash":"0x0133001e2aca8fc24f60516ba043073069bf915ee848c25653e53ed3f1a171e2"},"parent_block_identifier":{"hash":"0x26b6117e13ccdcf975977188cc476f11615162bfd5b08982fce8c8b05a3e53f9","index":85116},"timestamp":1668541376,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6b6b6b6b6b6b6b)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":3000,"kind":{"data":{"args":["0x627463","0x6b6b6b6b6b6b6b"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":5,"position":{"index":4},"proof":null,"raw_tx":"0x80800000000400801cf60dd4b4857634e00c3136391a7c2a10683a00000000000000050000000000000bb800013fedc1296254ef32c5aca86911e8de2d804f2690c7d743997bdc3df230ddebce6e519388d18df594a2aaedf7d58b7cb26379fa09204e8dc2fbf1226e5afacf7d030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000076b6b6b6b6b6b6b","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006be04686173680200000000086d657461646174610c00000004046e616d6502000000076b6b6b6b6b6b6b096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a801cf60dd4b4857634e00c3136391a7c2a10683a","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST201SXGDTJT8AXHMW0632DHS39Y2M4387AFT2S3A","success":true},"operations":[],"transaction_identifier":{"hash":"0xa79941fde8877b5b638a3efcc56bba22d18020e45bd81d49f1411131bc35d3dc"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6b736c666a7676)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":3000,"kind":{"data":{"args":["0x627463","0x6b736c666a7676"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":5},"proof":null,"raw_tx":"0x80800000000400c59ee6ff16df50b45f7888a159b22835ac6db98f00000000000000030000000000000bb800008d5e1439dd5ed399b81fe93eded4faf997ef99850a0f26c3a8277d4c43a9ab5d10097e877ceb1b0192d276b7b34312473f3fdd7252fe0e55b2fcef056d841e73030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000076b736c666a7676","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006bf04686173680200000000086d657461646174610c00000004046e616d6502000000076b736c666a7676096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac59ee6ff16df50b45f7888a159b22835ac6db98f","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST32SXSQZ2VFN1D2ZF24A2PDJ50TTRVDSHX6W32MG","success":true},"operations":[],"transaction_identifier":{"hash":"0x1d51555dec7282f8c80806e4c017b29cc3c8337d97b5a5140990c22bacb6b8b8"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xded02fdac4ae220033544f9d0cf7dbcae9508f894066d0a9dc792fc7662039d0","index":85175},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000044eb884d936b7ab83843fcc770aeee674d2bd62dcc0feb512f","index":2406507},"confirm_microblock_identifier":{"hash":"0x94d84ceeebfb023c02001d88bed94c4de71e3bf26eae15d5f416ed6c4cf98a4d","index":1},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":156,"stacks_block_hash":"0x8d7c7bc32258ea67c3f0b30cc8ef11faed372f3d7147f681d0c3f2a8562266b8"},"parent_block_identifier":{"hash":"0x12436a7be3c920df761ce15ba05071d2b8221adcb904710c96447a30c6caef01","index":85174},"timestamp":1668581979,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x646a766e6b736a646e76)","execution_cost":{"read_count":16,"read_length":44010,"runtime":167230,"write_count":2,"write_length":161},"fee":3000,"kind":{"data":{"args":["0x627463","0x646a766e6b736a646e76"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":5,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004003a7c5239fa9d8395dd073f45f2dd390a5cf8fa3800000000000000050000000000000bb80001b8b4c7ce0ae89e3168b25150f8cf975f39d95dba810fc6689e26f95bd608a4547ba98a12ac52169b32971cd924f629263f2c3cb3c8725e7389f69644b9f7964a010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000a646a766e6b736a646e76","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006c404686173680200000000086d657461646174610c00000004046e616d65020000000a646a766e6b736a646e76096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a3a7c5239fa9d8395dd073f45f2dd390a5cf8fa38","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STX7RMHSZAER75EX0WZMBWPX7455SY7T72ZBS62F","success":true},"operations":[],"transaction_identifier":{"hash":"0xe5a57238084183789281f31aa6fdea703e1e466869221c0fb256d3c94cc7ec5c"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x5b9db8bcf08a251eb663a7e543a1e05efafa3c8bf62c8b1bd3b946eb93c4e74c","index":85179},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000004d422c448e699c8d9881715c469bb7295a54495a88adc4bc257cf021","index":2406511},"confirm_microblock_identifier":{"hash":"0x234de097b86dcbcf90738dbc39b89b0ab452d8b2651d21d8ac93ef7aaa8f7169","index":2},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":160,"stacks_block_hash":"0x4b730361af4ae4301c1765a9cea56af023419720b434c942b9031bdb6bb8742e"},"parent_block_identifier":{"hash":"0x45a001018949d7a6681a491c893218f41928c861fd4b8768fc2246607d776a4e","index":85178},"timestamp":1668583604,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6c73646b6e76736c646a6e76)","execution_cost":{"read_count":16,"read_length":44016,"runtime":167308,"write_count":2,"write_length":163},"fee":3000,"kind":{"data":{"args":["0x627463","0x6c73646b6e76736c646a6e76"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004000d073907a4b7d4400fa949621ea7fec0b12d932500000000000000030000000000000bb80001be244bfc06f4004dfe41fde0493455e2a82cda178257a559cb8f3d2bfe41a9060297268f620e51a841f46ff5790ffb0843fe2953acee674006a3a86c72798644010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000c6c73646b6e76736c646a6e76","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006c604686173680200000000086d657461646174610c00000004046e616d65020000000c6c73646b6e76736c646a6e76096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a0d073907a4b7d4400fa949621ea7fec0b12d9325","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST6GEE87MJVX8G0FN54P47N7ZV0B2BCK4MKMDV7X","success":true},"operations":[],"transaction_identifier":{"hash":"0x8eabe90362c488af12e2e1310c1dfd3c4baacd0d7c79a52437afff4dc19e880d"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x9616d56c5766aaabb693527b2ed177b1852387daa849a5dccc74ea1d9cb4beea","index":85181},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000027f5c33c0860f81609d7caac39e6a27c380ab61bf1f7b9250e","index":2406513},"confirm_microblock_identifier":{"hash":"0x63790f8900b4bb717e7e57ae108a3e0150ff0cbbdbe3e7b79c08022fc06e436a","index":0},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":162,"stacks_block_hash":"0xe2def93cd851214c9bc2d86d595b612b3d1b56a1c6466fcf3cd0a9aa10b39e7c"},"parent_block_identifier":{"hash":"0x3158c5a5e7a5866271b85234a10ce504f3d28ef5bc43fb40a6bc670e30b83585","index":85180},"timestamp":1668585349,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6f706b70696a6970)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":3000,"kind":{"data":{"args":["0x627463","0x6f706b70696a6970"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":6,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400b9a2b17b1cad5deb3806aec7445de90fd4a7b7d300000000000000060000000000000bb80000a4dbfb82549062f8e2e6a746e02e14bdd67b965b9ac73cc9e8d69bd86c2ed2666a713f0204e0be3daeb7be89e3434fa81c9d5c89622a20af215dcd82df6d3a36010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000086f706b70696a6970","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006c704686173680200000000086d657461646174610c00000004046e616d6502000000086f706b70696a6970096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ab9a2b17b1cad5deb3806aec7445de90fd4a7b7d3","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2WT5CBV3JPNVTSR0TQCEH2XX47X99XQTCYBG6FJ","success":true},"operations":[],"transaction_identifier":{"hash":"0xbf9868599234811e8cad21fa882faeb676334f35cabd6446d61a7267ecff5a3f"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xa8a30e663a781367f1297dbbac36a5f48269b673aa4ee440032d2a238932324e","index":85184},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000053cf0ef6c09866f9b2445baabac184922e68a1c46c67395063cd","index":2406516},"confirm_microblock_identifier":{"hash":"0x77e33eeff603c9826f65597ccd75da50460d3e35022e1131dcfa3ae9c76aeaaf","index":4},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":165,"stacks_block_hash":"0x374cc51c9f44063bb71fee31a3465e0da665b7e9273851cd53c62a30e897b4fb"},"parent_block_identifier":{"hash":"0x27d1c5bf33a63f316717334a029ecc9451e905e2e5271443ac8684b2641b596b","index":85183},"timestamp":1668586133,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6569727465716f6867)","execution_cost":{"read_count":16,"read_length":44007,"runtime":167191,"write_count":2,"write_length":160},"fee":3000,"kind":{"data":{"args":["0x627463","0x6569727465716f6867"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":6,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040009c5ad860cb9f2d893abb2f9d692c402474d805400000000000000060000000000000bb80000a5400e13afb1da5e89677d00f1015adb71818566ae57c9ca5c1a904dcde609a7305d769ac526ceaf5d4aa130809b5fea663cda224b1fbe6fb6ad7af9701d0a91010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000096569727465716f6867","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006c804686173680200000000086d657461646174610c00000004046e616d6502000000096569727465716f6867096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a09c5ad860cb9f2d893abb2f9d692c402474d8054","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST4WBBC61JWZ5P4KNESFKNMJRG14EKC0AK7BVJSX","success":true},"operations":[],"transaction_identifier":{"hash":"0x5a687fba82641da354b02de4f0e8e8f5a32f4747eba967a786dceb045f140726"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x43463cd774c6362a4da8d71429ee3a7535ef9d99ec0eb393e51b02daf2d908d7","index":85185},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000006241d3f1ef8e2ef48b977e9a74ff161da308c11959b9f825cc997cab","index":2406517},"confirm_microblock_identifier":{"hash":"0xf43e35afd29b5ad1123e02ab67137146ddf429ccc6d779754e844d36457bf8ff","index":4},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":166,"stacks_block_hash":"0x6a7ef873e6dabb8f3f97646b87dd5709eb1ac71c80e2eb19639fd8640e5e5de3"},"parent_block_identifier":{"hash":"0xa8a30e663a781367f1297dbbac36a5f48269b673aa4ee440032d2a238932324e","index":85184},"timestamp":1668587355,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6e6b6c6e6b6e)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":3000,"kind":{"data":{"args":["0x627463","0x6e6b6c6e6b6e"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":6,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004000d073907a4b7d4400fa949621ea7fec0b12d932500000000000000060000000000000bb80001241c5b606d72ad25bec52ae8f3a1857816ab70dce1fc05fc0725ab733328c3fc368087057b70f9d3da4b3e5ff814ee4dba85f37833577267a24e59de66cdeeff010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000066e6b6c6e6b6e","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006ca04686173680200000000086d657461646174610c00000004046e616d6502000000066e6b6c6e6b6e096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a0d073907a4b7d4400fa949621ea7fec0b12d9325","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST6GEE87MJVX8G0FN54P47N7ZV0B2BCK4MKMDV7X","success":true},"operations":[],"transaction_identifier":{"hash":"0x6e280e6816f23b6756c41eb0db7257a54e142cb8aef6b409a4f1b49470591040"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xeec682013d9fa67cdbc533a2d22cc131733aabd3d8919be21b0eaae5ffad6511","index":85187},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000350173c5fefe96638f528909216ea8da02fc5bee84af203f90","index":2406520},"confirm_microblock_identifier":{"hash":"0xb97423cb6c49474fc0c24b6af14205b80dceeac3c088eebe849f43e091398111","index":3},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":169,"stacks_block_hash":"0x10664bcc2f7fde2780db25d5238d2ba6cd48f86e73c887ec2fde0afebd226a5e"},"parent_block_identifier":{"hash":"0x262fdf7fd46fb604d3a44e1d277c6078a8e6a7e75e8e626041bd6792f24f92bd","index":85186},"timestamp":1668589222,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6d6e6d6e626d6e62)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":3000,"kind":{"data":{"args":["0x627463","0x6d6e6d6e626d6e62"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":5,"position":{"index":3},"proof":null,"raw_tx":"0x8080000000040082386f2a70a4b57e2d4304fb19364d89d0df04c400000000000000050000000000000bb80000137264f70987095f9a77794ba553a50577f58c09fe4c3e73b8f58aa344f2e33c4b59d3ec6dc50aa61ea2abb3362b96b2778f2174a0100b47fb3295e62018cd31010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000086d6e6d6e626d6e62","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006cb04686173680200000000086d657461646174610c00000004046e616d6502000000086d6e6d6e626d6e62096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a82386f2a70a4b57e2d4304fb19364d89d0df04c4","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST213GVSAE2JBAZHD8C2FP69P9P4X1QR4RKRFPG6J","success":true},"operations":[],"transaction_identifier":{"hash":"0x6602bc6c33841a6c3bd9383ba08652a7e71c20907d5954dd1fa90e388f5f430c"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x4f2948ebe777308aff041d5ac56cd02e32fb6a9a96f451af453abfb824512f58","index":85188},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000001ad4bbb4bb1b2ae5ad8b23f9a3732e40588ee8e864b49b2ffc","index":2406521},"confirm_microblock_identifier":{"hash":"0x65a5187fd9aba3814b0b1e7342109cabbc4785062f987ce60221aab78da03784","index":1},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":170,"stacks_block_hash":"0xccac104e04f7ed25955a4e35a3624610835b3b2e70521c39b4a996260aebd37f"},"parent_block_identifier":{"hash":"0xeec682013d9fa67cdbc533a2d22cc131733aabd3d8919be21b0eaae5ffad6511","index":85187},"timestamp":1668589888,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6879676d62766b76)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":3000,"kind":{"data":{"args":["0x627463","0x6879676d62766b76"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":8,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004003a7c5239fa9d8395dd073f45f2dd390a5cf8fa3800000000000000080000000000000bb8000106afe6e4b16f8ed78054845ef8be57ebbdcc7b15bddc3b923b06b2f6d874a9b96eaa7ff5f8ba5a35bc0933d8187bde6ef14f3336436e31565230c25a856ef5b4010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000086879676d62766b76","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006ce04686173680200000000086d657461646174610c00000004046e616d6502000000086879676d62766b76096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a3a7c5239fa9d8395dd073f45f2dd390a5cf8fa38","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STX7RMHSZAER75EX0WZMBWPX7455SY7T72ZBS62F","success":true},"operations":[],"transaction_identifier":{"hash":"0xed9835fdbadb863196f477811ad1464883d18bfe2fe5a2312c7e95fd9e53b951"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xf72836358e1419f679224ce73b6b47ab93c6b65c3cc494b0a606e6d7eaa8fa81","index":85190},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000449d26a66491da55b07254aafda7a1f22be26016215637f211","index":2406523},"confirm_microblock_identifier":{"hash":"0xf47d86cee728fd9863b0ed64daa773edd2bd5f8f705519315d06686fd2d0894e","index":6},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":172,"stacks_block_hash":"0x8166ef35bc1d4154313b93befd9e56aad245c2ce4ca0acbfe5c58c8176f56fad"},"parent_block_identifier":{"hash":"0x4a3d97aa2a2c0c187cf5b70a37180b643ebc3f46ecdc0aa46e379328ef2e64ce","index":85189},"timestamp":1668590257,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6b626876676a)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":3000,"kind":{"data":{"args":["0x627463","0x6b626876676a"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":9,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400b9a2b17b1cad5deb3806aec7445de90fd4a7b7d300000000000000090000000000000bb80001421bf197bc56b7ad721c18ce408f29edc02b9bbfe16f114f05197c00f96f70d4519ae32fac99334e921be7a555e931c935c816eb999c47318255c12d5fdb07fe010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000066b626876676a","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006cf04686173680200000000086d657461646174610c00000004046e616d6502000000066b626876676a096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ab9a2b17b1cad5deb3806aec7445de90fd4a7b7d3","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2WT5CBV3JPNVTSR0TQCEH2XX47X99XQTCYBG6FJ","success":true},"operations":[],"transaction_identifier":{"hash":"0xf62ee7b335d747ce06dd1f852f329eb8851856cb4069e6097de2eef0d9f464fb"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x55cf45ce7623d534dd9b1ba7df6d53c1ab4279a3074a4362210a186709566ae0","index":85192},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000007bc759b288adb78047528ff2ab41bc34de48ab0ea19f2cf516987f7","index":2406525},"confirm_microblock_identifier":{"hash":"0xb1a762ed6dc684bceb92e67b1887b7dc572ae175b812790e6aef5a53c83726c1","index":3},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":174,"stacks_block_hash":"0x19d48118f257033b392edf488634f5764cadfcf058133dff74896c73a5b98e64"},"parent_block_identifier":{"hash":"0x16123f0cbcc2e60321ac4cc5f0717373cff3fa3801e23fc8721636193f00cda2","index":85191},"timestamp":1668591311,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x636c61696d69)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":3000,"kind":{"data":{"args":["0x627463","0x636c61696d69"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":9,"position":{"index":2},"proof":null,"raw_tx":"0x8080000000040009c5ad860cb9f2d893abb2f9d692c402474d805400000000000000090000000000000bb8000048bab052eef2bcc9764941b172556d640c36f36dff24cfbd72ae1b52795dda954d29327c305a8cb98d26bfb3faa674e9f427f91c7b8f305889d0dc22428568de010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006636c61696d69","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006d304686173680200000000086d657461646174610c00000004046e616d650200000006636c61696d69096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a09c5ad860cb9f2d893abb2f9d692c402474d8054","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST4WBBC61JWZ5P4KNESFKNMJRG14EKC0AK7BVJSX","success":true},"operations":[],"transaction_identifier":{"hash":"0xd7b1c96508ed215c0c609fa6467dadd1f5923812eb93771d1b4bfe20398c29ff"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xce73818bf953acefc5e541bdda43f66a1fdfa92cce3ee8e85cc4105304126cae","index":85194},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000005fe6caa5abe6079f82ad1ab0d727d4ee13d7b590c0aa6949de72","index":2406527},"confirm_microblock_identifier":{"hash":"0x7c6e217aca321423e9b2790a41fd7bf99af22cf05bb8f5186635a3d77b175cba","index":1},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":176,"stacks_block_hash":"0xa556f8e9bf2c4066d17375be049139baba23ecb6bdf5b001ccde43694ec3b438"},"parent_block_identifier":{"hash":"0xdfdc5ce38ae4dea3aab09e16b4e328cdf5a669a063c17286b845ce072d758c42","index":85193},"timestamp":1668593729,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7364667361646661736466)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167269,"write_count":2,"write_length":162},"fee":3000,"kind":{"data":{"args":["0x627463","0x7364667361646661736466"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":9,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004000d073907a4b7d4400fa949621ea7fec0b12d932500000000000000090000000000000bb800013b37288a629a94a1fb5b3852d391095272f656caa6bf42b978ed5eee5d0c3ac443bdeec0411fea49c54387b01c07a3b7e3db42e83fcdf899462d9a8174968f1b010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b7364667361646661736466","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006d504686173680200000000086d657461646174610c00000004046e616d65020000000b7364667361646661736466096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a0d073907a4b7d4400fa949621ea7fec0b12d9325","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST6GEE87MJVX8G0FN54P47N7ZV0B2BCK4MKMDV7X","success":true},"operations":[],"transaction_identifier":{"hash":"0x5197633173bf9e97437f6ec38339ffdd70da3fa5f71f9a781f261598e0ae6985"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x357fb753c564ce79964353a910ae33811ba86993867f337e3ac74221f2a92f4b","index":85196},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000198673890f25c84beb40a331d2d01e8a73921b2d7d6ec81ddb","index":2406529},"confirm_microblock_identifier":{"hash":"0x3a7f66757edc0bb3a1f96d2cdb60d8004d6589338264171c9d1607ffccfb1d07","index":5},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":178,"stacks_block_hash":"0x8f8c80cc89cfa1065354fd102273e4e3c88679d3c879d1ecac41c95f527e6f79"},"parent_block_identifier":{"hash":"0x57a74e77811cd0468a96ea178c9893c38d0567d4d98b0620f589aab5f56b6815","index":85195},"timestamp":1668595113,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x73616466617364667361646673616466)","execution_cost":{"read_count":16,"read_length":44028,"runtime":167464,"write_count":2,"write_length":167},"fee":3000,"kind":{"data":{"args":["0x627463","0x73616466617364667361646673616466"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":12,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400b9a2b17b1cad5deb3806aec7445de90fd4a7b7d3000000000000000c0000000000000bb800005b17ca001e512e4d54e191b06d98095bc514f54bc5a3144b759174d9b1a036bd7afee4d565d06609e12ffecb32812edbe493820dbd47ae0197d29750d14e933d010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000001073616466617364667361646673616466","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006d604686173680200000000086d657461646174610c00000004046e616d65020000001073616466617364667361646673616466096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ab9a2b17b1cad5deb3806aec7445de90fd4a7b7d3","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2WT5CBV3JPNVTSR0TQCEH2XX47X99XQTCYBG6FJ","success":true},"operations":[],"transaction_identifier":{"hash":"0xc90bc3434b9f746782260291af6206db1235309cb7d1374e0ca7e24b50953634"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xf4f80a48e842ff821f3f8022db63452dcae2e418c9e4e927087bc086ebea1a99","index":85197},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000225227d44af752dfa10496e0746c7813782c031593115197dd1f","index":2406531},"confirm_microblock_identifier":{"hash":"0x9a9321131fb9a193c647080037c5aa1d03a5b8487c9832ddf5047f5e06c68342","index":5},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":180,"stacks_block_hash":"0x23ff6c5e7ca485c3cef668346a3b854c10f7c28b7193390451d3fdc8f10e1f08"},"parent_block_identifier":{"hash":"0x357fb753c564ce79964353a910ae33811ba86993867f337e3ac74221f2a92f4b","index":85196},"timestamp":1668595959,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x666f7874726f74)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":3000,"kind":{"data":{"args":["0x627463","0x666f7874726f74"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":139,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004006c4236749a801ed99372a0f42d50efde8a627e16000000000000008b0000000000000bb80000bcd71899d0382487b6a08faaf80ec4f1f8a76b62ea2e3d37b8a78fda1d9ab99b2e32f220b49b94fac6bac9e014b91db8a837f5dca6fe54e7cef536d33eabb394010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000007666f7874726f74","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006d904686173680200000000086d657461646174610c00000004046e616d650200000007666f7874726f74096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a6c4236749a801ed99372a0f42d50efde8a627e16","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1P44DKMKA01XPCKEAGF8BAGXZF8MRKY2SF20B11","success":true},"operations":[],"transaction_identifier":{"hash":"0x5dd676f17d7cf2806f9e38644a9edca42c44c5b34a43e4a353915f2342f68d35"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xf92642a0b4cf31003d8f91aa3bb011585f8a3064c9d7f29bccd857156421508c","index":85198},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000128a959ac5f399418a0f13d18b9ea236d5d3dcce354ca2149f","index":2406532},"confirm_microblock_identifier":{"hash":"0xdd6b517065fcd93e8cb00782f6b1a724a50594768655e3003d14cee3e5c72ae5","index":4},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":181,"stacks_block_hash":"0xbb6919e60913e1f7bdea37b505f70bf78638af1975081b02e33cbdf4bef63392"},"parent_block_identifier":{"hash":"0xf4f80a48e842ff821f3f8022db63452dcae2e418c9e4e927087bc086ebea1a99","index":85197},"timestamp":1668597235,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x706f6b706f6b)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":3000,"kind":{"data":{"args":["0x627463","0x706f6b706f6b"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":11,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004003a7c5239fa9d8395dd073f45f2dd390a5cf8fa38000000000000000b0000000000000bb800000cbe9acde5a4eb65068a0c1c8a8df81c3d83a1ff7e10b575220bf47b44b56fb532ce4d3e27935338342f502a9166bb28f815232958193bd7ad112cf1fb902fc5010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006706f6b706f6b","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006db04686173680200000000086d657461646174610c00000004046e616d650200000006706f6b706f6b096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a3a7c5239fa9d8395dd073f45f2dd390a5cf8fa38","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STX7RMHSZAER75EX0WZMBWPX7455SY7T72ZBS62F","success":true},"operations":[],"transaction_identifier":{"hash":"0x790f0930325b42d8db811ba94b862e998b2fbc0cdb5e0a4cc6affad30422d1ca"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x63787a637a78)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":3000,"kind":{"data":{"args":["0x627463","0x63787a637a78"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":12,"position":{"index":3},"proof":null,"raw_tx":"0x808000000004000d073907a4b7d4400fa949621ea7fec0b12d9325000000000000000c0000000000000bb80001dd6cf9bed92005979eb7fd9c189d3aac1cf187aa038b4e1b91d9df42ffb134eb6eeadaaaf7a453fad070a6b33539a2aeae3215a69f3ca81be715a98d6be15238010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000663787a637a78","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006dc04686173680200000000086d657461646174610c00000004046e616d65020000000663787a637a78096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a0d073907a4b7d4400fa949621ea7fec0b12d9325","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST6GEE87MJVX8G0FN54P47N7ZV0B2BCK4MKMDV7X","success":true},"operations":[],"transaction_identifier":{"hash":"0xd504c316edb7570bfff085a52cb9966658f872506d3c84e1672072f62baa8fa0"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x5615d8fd82f77172546674d51506520d36dfb926ac4aec91ad53652787e62576","index":85199},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000a23a89042474924d34f7d80ad095f099e7c84cdb6bfd76f40d74","index":2406533},"confirm_microblock_identifier":{"hash":"0x1cc4e1a9af6452c863cf660e48217eb87fc4d2cf4ef397fff358661818f57ecf","index":4},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":182,"stacks_block_hash":"0x799f3517f52ba1b5097f8368e9d358b1ee0daf9dcd0af566f795cc897a05b145"},"parent_block_identifier":{"hash":"0xf92642a0b4cf31003d8f91aa3bb011585f8a3064c9d7f29bccd857156421508c","index":85198},"timestamp":1668597836,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x72746572676e69646c)","execution_cost":{"read_count":16,"read_length":44007,"runtime":167191,"write_count":2,"write_length":160},"fee":3000,"kind":{"data":{"args":["0x627463","0x72746572676e69646c"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":3},"proof":null,"raw_tx":"0x808000000004008eebcc7630f669463187bbab6b9896aff3f4893900000000000000020000000000000bb80001e73df6aa1709da84f86e956365f96684da548a9da8f57f95e33fc360899b708d0a27614cc229805be186b3b98d28b40d5ae8abb2b8c670107922cd640e9e3eff010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000972746572676e69646c","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006de04686173680200000000086d657461646174610c00000004046e616d65020000000972746572676e69646c096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a8eebcc7630f669463187bbab6b9896aff3f48939","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST27EQK3P63V6JHHHGYXTPTWRJTQZ7X4975MB90ET","success":true},"operations":[],"transaction_identifier":{"hash":"0xd9a83a115713bb65b431a9d34fcff0212919f58fe1a91717b1b1f3eb35e7dd87"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xbf8ae71a5c251797a3e83f98bb17d1f3175fc7973d0eaa2883dcb247cf100e18","index":85202},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000071457b3f686cdad9273fb13bde00b2b23ed847213f1b605912304f05","index":2406537},"confirm_microblock_identifier":{"hash":"0x1c335753b99ec37dd82c12db089724d9e7268b92057997b3edbcb30744a8d11d","index":4},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":186,"stacks_block_hash":"0x6ea76dc3db288b1a031546719ecfffe6e5cf34311dca152dffcd61c1805932df"},"parent_block_identifier":{"hash":"0x466d1dee8c4aac5120d00c5ea622633d4b9df09fb4c775496c7fc2fcda2cfbf6","index":85201},"timestamp":1668600326,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x736a6b64636e73616b6a646e63)","execution_cost":{"read_count":16,"read_length":44019,"runtime":167347,"write_count":2,"write_length":164},"fee":3000,"kind":{"data":{"args":["0x627463","0x736a6b64636e73616b6a646e63"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":142,"position":{"index":5},"proof":null,"raw_tx":"0x808000000004006c4236749a801ed99372a0f42d50efde8a627e16000000000000008e0000000000000bb80000de052e020735829afb3bf1c36b40133cf5472e635829e210f1aa590adf8a07cc277903d3a6e673f7b9edb96461dc1c9d9117df2307e65f4fa3bd1106e3b1b1bb010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000d736a6b64636e73616b6a646e63","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006e104686173680200000000086d657461646174610c00000004046e616d65020000000d736a6b64636e73616b6a646e63096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a6c4236749a801ed99372a0f42d50efde8a627e16","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1P44DKMKA01XPCKEAGF8BAGXZF8MRKY2SF20B11","success":true},"operations":[],"transaction_identifier":{"hash":"0xee412131d45327b421e8edd0f4f88da4139317975a656bdf9818181cc9ae9888"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x0bbef1674da849da1b43d17f47b0340f6a7e5baa1aa2248de93418b07a270ebb","index":85204},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000bf4365bf7c7e54277136279db08f168869d7f02537d6c7404f08","index":2406540},"confirm_microblock_identifier":{"hash":"0xb3581408290e682b554cdef08e818d372e32cf3a24440440b089bd32faee1119","index":6},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":189,"stacks_block_hash":"0x2cabea2d284345f40d9325649bdbf2c5ff49677e2c6475050b49398dee9637ed"},"parent_block_identifier":{"hash":"0xd4f56d1a1bd55979f1ad9de8a1c5ae9b9f08d77a984a0cb227386710698b9eea","index":85203},"timestamp":1668601708,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6e6b6a6e6b6a6e)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":3000,"kind":{"data":{"args":["0x627463","0x6e6b6a6e6b6a6e"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":8,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040082386f2a70a4b57e2d4304fb19364d89d0df04c400000000000000080000000000000bb800014a268b3f71cc5848aec18179ca58927b5e97c2d27c4c5d13f408f3789e69739d4bc8393d146ace3921eb2bde59b428dfdff19994f0c2167cbe1d89537f60284d010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000076e6b6a6e6b6a6e","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006e504686173680200000000086d657461646174610c00000004046e616d6502000000076e6b6a6e6b6a6e096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a82386f2a70a4b57e2d4304fb19364d89d0df04c4","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST213GVSAE2JBAZHD8C2FP69P9P4X1QR4RKRFPG6J","success":true},"operations":[],"transaction_identifier":{"hash":"0x5490cf7b2883a7d3965e2189aa6a1834502ec059d6842ba50bd6a31d2e1c0d61"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6b736a646e766b6a73616e64766b6a73)","execution_cost":{"read_count":16,"read_length":44028,"runtime":167464,"write_count":2,"write_length":167},"fee":3000,"kind":{"data":{"args":["0x627463","0x6b736a646e766b6a73616e64766b6a73"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400af56a17f9b87d854f18e579c1787d7358330c96700000000000000020000000000000bb80001be60dee5aa19d95207b63ec74dd0794a49d80e45b442731f54039a6a1a38c6c1472d5a80046d0d0e19ae3217906d3e5e2548a27febdea66a84a36e31c2e72e74010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000106b736a646e766b6a73616e64766b6a73","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006e604686173680200000000086d657461646174610c00000004046e616d6502000000106b736a646e766b6a73616e64766b6a73096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aaf56a17f9b87d854f18e579c1787d7358330c967","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2QND8BZKE3XGN7HHSBSR5W7TWTR6C69CWAMCGXP","success":true},"operations":[],"transaction_identifier":{"hash":"0xd639489d4535605e8ac9cff62ac38bd2c37ae02927c9914de4b2205fa23915e5"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xe4bd53989b0e0e9a00a16fd506d5319abff2c122223cee5fc4ec7513ea631ac6","index":85206},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000250918161dee752a7ba2b399df5fcce7d77af7f0f41607189f","index":2406542},"confirm_microblock_identifier":{"hash":"0xb3792973539f67c9fcc81922031fe6bda29dd6584e1d0f190d0187b2c97966a2","index":2},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":191,"stacks_block_hash":"0xfbc4ea1753d1e4ca91ebbbd0bc0160b0330e50d61bdab6d091c1ef19d5bc4b29"},"parent_block_identifier":{"hash":"0xc539a0b4b0effcf1f7a1c87b78efc0ece5cf1ec327686eef83255903fb34a60c","index":85205},"timestamp":1668603328,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x706f6b706b6c6b)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":3000,"kind":{"data":{"args":["0x627463","0x706f6b706b6c6b"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":15,"position":{"index":4},"proof":null,"raw_tx":"0x80800000000400b9a2b17b1cad5deb3806aec7445de90fd4a7b7d3000000000000000f0000000000000bb8000144e91ac446f5fe41ae5c8a8090fda080fce67b3b031a72e509864ca8fd390ea012f3582219dfd49a2ee804c656bafea9e790ee5e3c40975655792e015fd4472a010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000007706f6b706b6c6b","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006ea04686173680200000000086d657461646174610c00000004046e616d650200000007706f6b706b6c6b096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ab9a2b17b1cad5deb3806aec7445de90fd4a7b7d3","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2WT5CBV3JPNVTSR0TQCEH2XX47X99XQTCYBG6FJ","success":true},"operations":[],"transaction_identifier":{"hash":"0x6a7dd6b69b99740124178b97c632b3f875707d853f9d603b5bb1c791fd9e1e2c"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xe8ee6c299f66356324b6b5d886c4c606b7bab1c37c8d2688ebb8f2029bc6ed53","index":85208},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000002930017f9469d7c2fedc0d699b23f2b27f3458cd43653f9957","index":2406544},"confirm_microblock_identifier":null,"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":193,"stacks_block_hash":"0xb2372d7a9bbdef1032599059fa5115791308c64e3c1298998ba58d3335c9f0cd"},"parent_block_identifier":{"hash":"0xd9a095b661eeb4c87e884cbd6eb16a0380159db94c791ed357ce0d19985f3c1e","index":85207},"timestamp":1668604062,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6e6d626e6d626d6e62)","execution_cost":{"read_count":16,"read_length":44007,"runtime":167191,"write_count":2,"write_length":160},"fee":3000,"kind":{"data":{"args":["0x627463","0x6e6d626e6d626d6e62"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":14,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004003a7c5239fa9d8395dd073f45f2dd390a5cf8fa38000000000000000e0000000000000bb8000091ab4c760deebe04eee61a243b5e7489514db98be07cfdf15323c9ebcb6f68c938fa750304e04b23d63cc891067f97d4b7ac4383501d99bc0b2699a886c57f19010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000096e6d626e6d626d6e62","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006eb04686173680200000000086d657461646174610c00000004046e616d6502000000096e6d626e6d626d6e62096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a3a7c5239fa9d8395dd073f45f2dd390a5cf8fa38","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STX7RMHSZAER75EX0WZMBWPX7455SY7T72ZBS62F","success":true},"operations":[],"transaction_identifier":{"hash":"0x34af07d09f844a93de77acf209820d9797784ba103296909693f426880e9a363"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x4685ed2aea5e0dc4b465235d03d5f1af95eff30fc2f210a163f233467313e223","index":85209},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000007f5ab19f01ae76a4850b621ec40e055fe83aeecb8829330a015b","index":2406545},"confirm_microblock_identifier":{"hash":"0xf2fba15bbcb7a1fec2b01a194bcfdd76eac137e380877290391578981b8561e0","index":4},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":194,"stacks_block_hash":"0xce1f6dd3829803fa9dd8ba09056889ff71750bbeacf7ddb90c5a49cab9026e0b"},"parent_block_identifier":{"hash":"0xe8ee6c299f66356324b6b5d886c4c606b7bab1c37c8d2688ebb8f2029bc6ed53","index":85208},"timestamp":1668604155,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x736163617363)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":3000,"kind":{"data":{"args":["0x627463","0x736163617363"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":12,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040009c5ad860cb9f2d893abb2f9d692c402474d8054000000000000000c0000000000000bb8000006f688d59f75e790ad2f7c040f646b5cd6ebe065fd909cab206dec07efa0668e1bb4396a998f2ec23fc076cc4314651b52c49cfacbf9ee2568aeb1fa1132857e010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006736163617363","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006ed04686173680200000000086d657461646174610c00000004046e616d650200000006736163617363096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a09c5ad860cb9f2d893abb2f9d692c402474d8054","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST4WBBC61JWZ5P4KNESFKNMJRG14EKC0AK7BVJSX","success":true},"operations":[],"transaction_identifier":{"hash":"0xe7fd8b71a003d9ce945fe197ac90909211412daa21ab71a95fca50f60688c673"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6c6b6e6c6e6b)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":3000,"kind":{"data":{"args":["0x627463","0x6c6b6e6c6e6b"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":5,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004008eebcc7630f669463187bbab6b9896aff3f4893900000000000000050000000000000bb80000a8647ac3a4c810f1125cf790152ccd956856aa4b943634b69fc437633f480b642e7896e1d2aad1f974dec6606dc049640ea0f1af9fbc30f8e071e415f4e9c2d9010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000066c6b6e6c6e6b","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006ee04686173680200000000086d657461646174610c00000004046e616d6502000000066c6b6e6c6e6b096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a8eebcc7630f669463187bbab6b9896aff3f48939","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST27EQK3P63V6JHHHGYXTPTWRJTQZ7X4975MB90ET","success":true},"operations":[],"transaction_identifier":{"hash":"0x2a0a23d2841eef51e7432c892d1507f0b475c4b073a261c1a411b8ae54a51e09"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x21c9299066458df1196be47cf255c2608ea45b1827c2816de986a9b674d4453d","index":85211},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000a14439dec04795f99e4ee0f2c9b3f3a2b860a793a8b6a0658","index":2406547},"confirm_microblock_identifier":{"hash":"0x4df0c54848f54c72b1878d28d123425ae3bf11c7feba94cc18e5c5550f55fc9b","index":0},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":196,"stacks_block_hash":"0xbb25596795bcb85d0dc81b7468ad81807e6f5a6e3a40c39d37dba26e70f5609c"},"parent_block_identifier":{"hash":"0x15623ad081863ab972116a822211752fdefad8b0e72129e51f195ff6076a4d3b","index":85210},"timestamp":1668606212,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6a79676a62)","execution_cost":{"read_count":16,"read_length":43995,"runtime":167035,"write_count":2,"write_length":156},"fee":3000,"kind":{"data":{"args":["0x627463","0x6a79676a62"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":15,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004000d073907a4b7d4400fa949621ea7fec0b12d9325000000000000000f0000000000000bb800005268873ba041bde712d898c3651bea0a6c45fb383b584f3b67644389a4043ef805d6701fb8a5e8bfc5ec696db1fb5bc9d65baff2f72f2ecd3e141abe5a671203010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000056a79676a62","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006ef04686173680200000000086d657461646174610c00000004046e616d6502000000056a79676a62096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a0d073907a4b7d4400fa949621ea7fec0b12d9325","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST6GEE87MJVX8G0FN54P47N7ZV0B2BCK4MKMDV7X","success":true},"operations":[],"transaction_identifier":{"hash":"0x64e91c00d8c288eabf2831f836b2211bd359f685c7e057cc6b006e1b2987e7fd"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x1a406517e8ae4fd0771e30b5dcdbdaffaf8c9c1f0dd9a17c18376d8145441f38","index":85213},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000084bbb9dc1490606c0f043385676b92af6d9eda46c8894869d0a670af","index":2406550},"confirm_microblock_identifier":{"hash":"0x1893db13d569904a47437e2b1f6882ad3152975c45cf026019e3ab63079ec080","index":5},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":199,"stacks_block_hash":"0xb1d50139f0be28fa5e00a5ff971fe9a0053628f38cc162fc6fd390e06e8d2fa4"},"parent_block_identifier":{"hash":"0xb1f872ef7bdb071c1b98598504a38571c10d3d1234d6df3eb95dba1bb3bfc326","index":85212},"timestamp":1668607680,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x626a6874646867)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":3000,"kind":{"data":{"args":["0x627463","0x626a6874646867"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":5,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400af56a17f9b87d854f18e579c1787d7358330c96700000000000000050000000000000bb8000085c95c26ab308005181d415258bea6986016ef0f4144cbc7f3d7529d204d54110db1ff8b30c01aeea0e8e0f4e4f1801741068f90247cccaa467bbb8342ce3041010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000007626a6874646867","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006f104686173680200000000086d657461646174610c00000004046e616d650200000007626a6874646867096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aaf56a17f9b87d854f18e579c1787d7358330c967","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2QND8BZKE3XGN7HHSBSR5W7TWTR6C69CWAMCGXP","success":true},"operations":[],"transaction_identifier":{"hash":"0xf71784da6f3573c36e27f9ca9215d95e62344b1e61789e2ce3632002214fb110"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xf73f4adb923987ef77a2fa0235dcc95ec9d26cd5e8ab65405c0ac1521f862532","index":85215},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000007f750e3e615bbe7ce166c57b1d07a211013091e6dba1f89a3","index":2406553},"confirm_microblock_identifier":{"hash":"0x199d3b49c36ddcdc4c253c389d1f28d5d3b8e84502888a84d8f89eb8581b99e5","index":3},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":202,"stacks_block_hash":"0x8d08697882fcdb88d59d28cae076c34b07b6ec310bdd563189c29e34b41b9c82"},"parent_block_identifier":{"hash":"0x1760dc1905724dd3910b87a0e829d0b9a87aaf86e3a403751667a182dbb00697","index":85214},"timestamp":1668609535,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7567696a6869626a)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":3000,"kind":{"data":{"args":["0x627463","0x7567696a6869626a"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":145,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004006c4236749a801ed99372a0f42d50efde8a627e1600000000000000910000000000000bb80000e265148457de3796bc80ed1de0a738b898ce96216beb9cd0b27bd6796540b3a315f18db65f12220c5221ee7f518bdf361fa0453bbb9e4a4bc25d55cecaa7ae09010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000087567696a6869626a","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006f204686173680200000000086d657461646174610c00000004046e616d6502000000087567696a6869626a096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a6c4236749a801ed99372a0f42d50efde8a627e16","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1P44DKMKA01XPCKEAGF8BAGXZF8MRKY2SF20B11","success":true},"operations":[],"transaction_identifier":{"hash":"0xf883eb6c16a9615c0333f1cdc639529bf84a269c3b9be4e5a2346cc9f6913f70"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x409865665d79968108fe6c2b7cf57bf9c9f0d7bf368a5e5bc2ecaef50c914ab4","index":85216},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000457cb5941179fb56d3f6b3869707adcb5438e82e8b9a56ab43","index":2406554},"confirm_microblock_identifier":{"hash":"0x389321638a1010b47e32d415570f9cee4d6b41c982ba1ea647b0ce1b714a2d3a","index":4},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":203,"stacks_block_hash":"0x03a4d904d11df3190068aec6d4b5e657ea3c69ace97645bfae2329a48c493063"},"parent_block_identifier":{"hash":"0xf73f4adb923987ef77a2fa0235dcc95ec9d26cd5e8ab65405c0ac1521f862532","index":85215},"timestamp":1668609926,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x706c6f6b696a)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":3000,"kind":{"data":{"args":["0x627463","0x706c6f6b696a"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":8,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004008eebcc7630f669463187bbab6b9896aff3f4893900000000000000080000000000000bb8000050cec144bc2e725fffcfca592296d6f6c1fa9a367847fad5e3615dbe8ea6e3ac27c50786da7fcc85cf7f1ef2ed3b7574e217a1abef4fdcc7ac6aefffba5d2c7b010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006706c6f6b696a","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006f404686173680200000000086d657461646174610c00000004046e616d650200000006706c6f6b696a096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a8eebcc7630f669463187bbab6b9896aff3f48939","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST27EQK3P63V6JHHHGYXTPTWRJTQZ7X4975MB90ET","success":true},"operations":[],"transaction_identifier":{"hash":"0x7a9e7509e96d06bd831718f949ec8baac6ccccfe066b4b0395087f36cc68e20d"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x340f8734fbc6e9559d0709126fc007bef24d37e24cc730ed31c74b85dadbd94c","index":85219},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000c5690c60804bb5cf2417e4b8cf1a19e9176128ab1449369b205c","index":2406558},"confirm_microblock_identifier":{"hash":"0xde1048c2161ebcfa33ac765dfb3f3c92b01fbb78d1ae851e78c2e49b6dc39183","index":6},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":207,"stacks_block_hash":"0x05e6177013267aaa0ddfd29a4a4e3fb242f4e0c8c069ab0d4aa482728608f64f"},"parent_block_identifier":{"hash":"0x364398a0f7eb3237a147e4bcdb6e11943683052292e948ddf43e13bbd2ca5852","index":85218},"timestamp":1668611671,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6173646667686a6b6c)","execution_cost":{"read_count":16,"read_length":44007,"runtime":167191,"write_count":2,"write_length":160},"fee":3000,"kind":{"data":{"args":["0x627463","0x6173646667686a6b6c"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":17,"position":{"index":3},"proof":null,"raw_tx":"0x808000000004003a7c5239fa9d8395dd073f45f2dd390a5cf8fa3800000000000000110000000000000bb80000bcb58466a37713e5be6814bd4c05cebfaf1761d2e142e3b1f105bde9f332615e053da9722ae17870e6eaa6ae616ceb155620edaa4339e804d43709ec04b6226d010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000096173646667686a6b6c","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006f604686173680200000000086d657461646174610c00000004046e616d6502000000096173646667686a6b6c096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a3a7c5239fa9d8395dd073f45f2dd390a5cf8fa38","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STX7RMHSZAER75EX0WZMBWPX7455SY7T72ZBS62F","success":true},"operations":[],"transaction_identifier":{"hash":"0x564c0e95d831ff76fbc7e37393fce6e2b7642a66a8400a881c9f288a0ede648c"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xf66d1c1790676849ef6b397e463d7c38085b05e439db62abed05d3bde8ea1e35","index":85224},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000004106916b140373bc27842879d514b302e7efd132c9acbbf9fc","index":2406563},"confirm_microblock_identifier":{"hash":"0xc9eef9ebfc43b4d9be05db884333f06fccfc3fb5e6b19e75a13e915165ff61ae","index":6},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":212,"stacks_block_hash":"0x2ec36fd63ca35bbe20beac066afece04a6891be2a237f0caf38c9a0d90d5776d"},"parent_block_identifier":{"hash":"0x41f6b34a46d66f7f0d52c2d1740ba0ec143d03b8d95a964056132842933eedcc","index":85223},"timestamp":1668615177,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6b6c64766e6c736b6476)","execution_cost":{"read_count":16,"read_length":44010,"runtime":167230,"write_count":2,"write_length":161},"fee":3000,"kind":{"data":{"args":["0x627463","0x6b6c64766e6c736b6476"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":3},"proof":null,"raw_tx":"0x808000000004009b184cd9b6bad0eda71e6e9b89b604de4494fb1c00000000000000030000000000000bb8000003f1675fa7051b50f23259d241ed9906a4cb80df73e0b125a5e408b31cead20a72524075a50348ef2c055629e2e785512b68dd43c6faa39b1300e4e1fc676962010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000a6b6c64766e6c736b6476","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006f804686173680200000000086d657461646174610c00000004046e616d65020000000a6b6c64766e6c736b6476096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a9b184cd9b6bad0eda71e6e9b89b604de4494fb1c","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2DHGK6SPTXD1VD73SQ9Q2DP0KF4957V3JFETK3E","success":true},"operations":[],"transaction_identifier":{"hash":"0xc3850b900677e0240a1111e597c8677f25998b41ee9885c7c1013b1529568566"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x361272defe6b639a3e83861bf321dad2be9c1449ef22533b922fb92f4b2b03ee","index":85226},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000002bd8ea8e9c3cec8de018efc7ad352181af2b1eb2ebb5106572","index":2406566},"confirm_microblock_identifier":{"hash":"0xe723a9e19b584343a02b250be964d4ba441a1158f46eb145da0187b08cc93681","index":6},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":215,"stacks_block_hash":"0xa75852c92215a6d3604b44b269bbb1b11930d8cfd0b7761bbefb87988da23681"},"parent_block_identifier":{"hash":"0xa850c26eb25899b732c8d4ad2bffdd4b6490040aee5f6955308472e9b090279b","index":85225},"timestamp":1668616640,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6e62766774666a676b67)","execution_cost":{"read_count":16,"read_length":44010,"runtime":167230,"write_count":2,"write_length":161},"fee":3000,"kind":{"data":{"args":["0x627463","0x6e62766774666a676b67"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":11,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004008eebcc7630f669463187bbab6b9896aff3f48939000000000000000b0000000000000bb8000110441bdb0bb90f316f3c08c1e7a0556389876781543e1fad7c1aff4e2f824bf278c38992c5abf67bcc1ee4ca9d3163ceccf4f51f4845740e5fc31e2c154dad97010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000a6e62766774666a676b67","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006fa04686173680200000000086d657461646174610c00000004046e616d65020000000a6e62766774666a676b67096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a8eebcc7630f669463187bbab6b9896aff3f48939","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST27EQK3P63V6JHHHGYXTPTWRJTQZ7X4975MB90ET","success":true},"operations":[],"transaction_identifier":{"hash":"0x83deba92cd8602a502eae3bb5521e5e08f11e5dcc4c2d76f0fc42664eef89ce9"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x228e8462ce73e350c0aab562c151dcf9dcaab1f65d68a66e345c1396844ab8dd","index":85227},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000002847b7840f40754f0f0924caec72f95ca534485e36e79507c9c4","index":2406567},"confirm_microblock_identifier":{"hash":"0x28632e952fa0b3ebdb2480f6cac79e6214b9b795913ceb29cff25cdfffe049c4","index":6},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":216,"stacks_block_hash":"0x60ffcb938900010118d83a656b676f3fa6554da2a8bc229b2896d5a3bd645807"},"parent_block_identifier":{"hash":"0x361272defe6b639a3e83861bf321dad2be9c1449ef22533b922fb92f4b2b03ee","index":85226},"timestamp":1668617758,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6b6a626a6b62)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":3000,"kind":{"data":{"args":["0x627463","0x6b6a626a6b62"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":148,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004006c4236749a801ed99372a0f42d50efde8a627e1600000000000000940000000000000bb80000004242e0efa615b280d7288e64277c74b8431c2f06d94af1df24e87d4ea187bc15fa6683c9fccdfad031d0169c7018eaccb8abdab37b809f28e2ed3080aa34c4010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000066b6a626a6b62","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000006ff04686173680200000000086d657461646174610c00000004046e616d6502000000066b6a626a6b62096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a6c4236749a801ed99372a0f42d50efde8a627e16","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1P44DKMKA01XPCKEAGF8BAGXZF8MRKY2SF20B11","success":true},"operations":[],"transaction_identifier":{"hash":"0xfccb035a2c13934199104df51c95416ed55297d99411495553964cf5d00762e1"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xb39030dc63699e1ece65aaa740879452546a5c60a79d6b0976233e495091e7d5","index":85229},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000059d4ab37176201788b706cd9bc2342a68d8726ce730315abe89","index":2406570},"confirm_microblock_identifier":{"hash":"0x78ce1cfb28b631d638b948d535fb1d8bd336c6109e4a9a81133d4b8a29c07eb4","index":6},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":219,"stacks_block_hash":"0x4c0d231a833d59a6c63d9c92614664618ec9ad7ac2bf60834a7ea48e6f53c786"},"parent_block_identifier":{"hash":"0x06ed02d8389a5abcb56615f9f33adcbf77d515832cc46c382c2b80bffe7f3a47","index":85228},"timestamp":1668619155,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x63736463736164667765)","execution_cost":{"read_count":16,"read_length":44010,"runtime":167230,"write_count":2,"write_length":161},"fee":3000,"kind":{"data":{"args":["0x627463","0x63736463736164667765"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":15,"position":{"index":2},"proof":null,"raw_tx":"0x8080000000040009c5ad860cb9f2d893abb2f9d692c402474d8054000000000000000f0000000000000bb8000026f78bdbe7127478b06455e6d695fe1e8e0fd5ecb0c7dd3f3bde9d0dc07edd43296d3b271ccb8eb0ccfe1367361e9c67cc569283155c0ef605daeba9a6b5c484010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000a63736463736164667765","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000070104686173680200000000086d657461646174610c00000004046e616d65020000000a63736463736164667765096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a09c5ad860cb9f2d893abb2f9d692c402474d8054","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST4WBBC61JWZ5P4KNESFKNMJRG14EKC0AK7BVJSX","success":true},"operations":[],"transaction_identifier":{"hash":"0x85971dc8ce3cdc50a18a159954e6f5ba4b5aa97a56ab05971c2996b9b15b6271"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x1d7d4ba6e3f3d54889c5879df5da4c63c9a6f8f91ff4cffd4b48bad21349d4c7","index":85230},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000029e8c238bf1f0ac95e14c8cc008d6275869d7277d2673dc69e","index":2406571},"confirm_microblock_identifier":{"hash":"0x50ee28365104bd23c1c2c4b9fc6f6ca9ccd6065c5e05920f798cb091e8915121","index":3},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":220,"stacks_block_hash":"0xa5f212e9d9eb3a15794ec570e27a19c74f4f357293b73f98f6d628448333ebaf"},"parent_block_identifier":{"hash":"0xb39030dc63699e1ece65aaa740879452546a5c60a79d6b0976233e495091e7d5","index":85229},"timestamp":1668620414,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6373646c6b63636e6b6c73)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167269,"write_count":2,"write_length":162},"fee":3000,"kind":{"data":{"args":["0x627463","0x6373646c6b63636e6b6c73"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":8,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400af56a17f9b87d854f18e579c1787d7358330c96700000000000000080000000000000bb80001025a74b067b4edffd068d55e1236bfa347366ad054133387e4e676b10cc6bde705eb56a4813efd38160d5c038cd5b8c3dfdd3202678b46bb5eba1314453b46aa010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b6373646c6b63636e6b6c73","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000070204686173680200000000086d657461646174610c00000004046e616d65020000000b6373646c6b63636e6b6c73096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aaf56a17f9b87d854f18e579c1787d7358330c967","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2QND8BZKE3XGN7HHSBSR5W7TWTR6C69CWAMCGXP","success":true},"operations":[],"transaction_identifier":{"hash":"0x399b2565d898e7c18913c50d365590a5efc799b943c65a0aace44b8d372da653"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6373646c6b63636e6b6c73)","execution_cost":{"read_count":12,"read_length":43984,"runtime":131938,"write_count":0,"write_length":0},"fee":3000,"kind":{"data":{"args":["0x627463","0x6373646c6b63636e6b6c73"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":9,"position":{"index":4},"proof":null,"raw_tx":"0x80800000000400af56a17f9b87d854f18e579c1787d7358330c96700000000000000090000000000000bb80000f03a1d06e87fd7c68b2b5b5df6d7c3f98c0a8a5cad7547972ac1f45d19e5a3656a34cb9b557f07a8997fb2a78fd3298655e7ec7b31d8a4117fb648ff069de5c6010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b6373646c6b63636e6b6c73","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST2QND8BZKE3XGN7HHSBSR5W7TWTR6C69CWAMCGXP","success":false},"operations":[],"transaction_identifier":{"hash":"0x543a6fd8d4455e36af2827f51f0f847800ee97769d924e6071b791b3005d4641"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x6158e51a8ce37efee0eba8796e8e330a1dfc4b7bf9f9ba9ec5dd584c2536d994","index":85232},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000464965bc21507c5d33556e8130961808d6cf8326395d331bff","index":2406573},"confirm_microblock_identifier":{"hash":"0x678aec0b8a35280d58534eb44e1ebc32e913bc6f3afb2aad73a62adc475ab636","index":1},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":222,"stacks_block_hash":"0xee6e45499f56fffaeb0259586f27e5668d9c03661db13171d11dedf804a606ae"},"parent_block_identifier":{"hash":"0x36186ae26a152651ffd8e6f826f9d3952449702346b4da6cfa36b3eb9eaa4464","index":85231},"timestamp":1668621006,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x766766687479)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":3000,"kind":{"data":{"args":["0x627463","0x766766687479"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":18,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004000d073907a4b7d4400fa949621ea7fec0b12d932500000000000000120000000000000bb800015788eaef535f2c46729c67985e8595666f66111c8936851f3a8a83c5f5df312c00f2bcb97a43648dcf0cc9b2945309c849fb894a875e70f797a36d57033c05f3010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006766766687479","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000070404686173680200000000086d657461646174610c00000004046e616d650200000006766766687479096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a0d073907a4b7d4400fa949621ea7fec0b12d9325","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST6GEE87MJVX8G0FN54P47N7ZV0B2BCK4MKMDV7X","success":true},"operations":[],"transaction_identifier":{"hash":"0x76ea0f45ce3a50169640c5fccb038950fe86534d1a7fe412df562e0a46f171d9"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x4a9e28a85c4ceb5ba3b5f9119f20ad8ae0854121a4bb1e43766489abaa1ee71c","index":85233},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000de396adfb7dc4c32882ba4ba9d2e0306f984d4dbd8c7a0a4ab5d","index":2406574},"confirm_microblock_identifier":{"hash":"0x63cf54bb5b546ee93616503276237e21ca16d53f3257f3c9a551afcec4808668","index":4},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":223,"stacks_block_hash":"0x805675364d856b4b728c7751f73293801ad4827929b87238c050eb6eb06e92f8"},"parent_block_identifier":{"hash":"0x6158e51a8ce37efee0eba8796e8e330a1dfc4b7bf9f9ba9ec5dd584c2536d994","index":85232},"timestamp":1668621229,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7673647661736476)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":3000,"kind":{"data":{"args":["0x627463","0x7673647661736476"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":151,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004006c4236749a801ed99372a0f42d50efde8a627e1600000000000000970000000000000bb80000a7ad495da542cbf24d563589adc061fa96df031a2b9071c1c0a5fef9d53f5daf4ef580d03b00b0c5d8d097d05dee977d376fa042b01e41114847af0e5d78c836010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000087673647661736476","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000070704686173680200000000086d657461646174610c00000004046e616d6502000000087673647661736476096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a6c4236749a801ed99372a0f42d50efde8a627e16","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1P44DKMKA01XPCKEAGF8BAGXZF8MRKY2SF20B11","success":true},"operations":[],"transaction_identifier":{"hash":"0x6eb31146317019c400d41701f8d748f355504e23bd79507325715776d90309c0"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xa42b2dee07eb05eea251b567704965e6fd9cebc56931cd261073575b90bd6168","index":85234},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000001cf2cd7d29c4731c519e5182af5987dcc04bc9210175a48bca","index":2406575},"confirm_microblock_identifier":{"hash":"0xe8fa4858908e004567e8ff71a7cfc3b9e5f4c51f1ee772b175ae5c2ce34062e1","index":4},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":224,"stacks_block_hash":"0x803a29de92d34b694d6bdb0bc3652b0a27b4942bd2a863ff8df8ed41095d304a"},"parent_block_identifier":{"hash":"0x4a9e28a85c4ceb5ba3b5f9119f20ad8ae0854121a4bb1e43766489abaa1ee71c","index":85233},"timestamp":1668622446,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x646361736363)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":3000,"kind":{"data":{"args":["0x627463","0x646361736363"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":11,"position":{"index":2},"proof":null,"raw_tx":"0x8080000000040082386f2a70a4b57e2d4304fb19364d89d0df04c4000000000000000b0000000000000bb80000af0ec1b238d1d64830552b7de1a0bf245b45ff4c396aae4327ff8a4114ed7faa51d1b49fa86336dea616ed75929022249c52a384e20dcae45545f1b5c3d5fef2010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006646361736363","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000070804686173680200000000086d657461646174610c00000004046e616d650200000006646361736363096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a82386f2a70a4b57e2d4304fb19364d89d0df04c4","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST213GVSAE2JBAZHD8C2FP69P9P4X1QR4RKRFPG6J","success":true},"operations":[],"transaction_identifier":{"hash":"0x2df30b581b8ff709228eaca90a0c598eceab57d247909be114928845f693d8b4"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xb7d6d8bc5640d610a448f56a91239e448573ee36d06a3f090f0a03c27b4c78cd","index":85235},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000029e160833ef09cb3df9624b3cf26605038dbea6a6ab1f865d7","index":2406576},"confirm_microblock_identifier":{"hash":"0x517eab48eb54f7c2c6d2bb7194424897fda8fe4ac9ce587eb509683a4f34f3d5","index":2},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":225,"stacks_block_hash":"0xa05a56e2fe588e1321073adc2bb5149e8fa2bb517c6c8997f63fd45714432253"},"parent_block_identifier":{"hash":"0xa42b2dee07eb05eea251b567704965e6fd9cebc56931cd261073575b90bd6168","index":85234},"timestamp":1668622633,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x696a6e696e6a6e6a69)","execution_cost":{"read_count":16,"read_length":44007,"runtime":167191,"write_count":2,"write_length":160},"fee":3000,"kind":{"data":{"args":["0x627463","0x696a6e696e6a6e6a69"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":6,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004009b184cd9b6bad0eda71e6e9b89b604de4494fb1c00000000000000060000000000000bb80001a92ab8d21e2007bffb4db0f04096d74e0e920fc2d8e35a0653f94527f50e026143a186adfd94b1109fcaf44f1bd1a56a83c7c0e87d631681504125b89e2debcf010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000009696a6e696e6a6e6a69","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000070a04686173680200000000086d657461646174610c00000004046e616d650200000009696a6e696e6a6e6a69096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a9b184cd9b6bad0eda71e6e9b89b604de4494fb1c","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2DHGK6SPTXD1VD73SQ9Q2DP0KF4957V3JFETK3E","success":true},"operations":[],"transaction_identifier":{"hash":"0x3517389192d6a65ecb3e91ff7cd535ab80a8a668197800add4865cca6a63a2a4"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xfb8ddeb9713dae4d3e5113139f07b19fab05a2a3f04b478ef27cf0e8a8eb7564","index":85238},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000092e7f6a43087f6d36d1261e6bab2aafeee8264becf5bc7fef","index":2406579},"confirm_microblock_identifier":{"hash":"0xe5421f350e7f8338ce89cca4018d19c666d0d085df67357c4ad7d6818ac19676","index":1},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":228,"stacks_block_hash":"0x914ae63c7f9332304499b2eeef91b18f7aea895085c8199bf042d770128d0e8c"},"parent_block_identifier":{"hash":"0x1d8a33449f1b2b9b4bf409529209bbb653720f1c5baa7dabd03825a5b07ce3f3","index":85237},"timestamp":1668624059,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6c6b6d6e6c6b6e)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":3000,"kind":{"data":{"args":["0x627463","0x6c6b6d6e6c6b6e"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":20,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004003a7c5239fa9d8395dd073f45f2dd390a5cf8fa3800000000000000140000000000000bb800004c1ba8db014e2ecce57ad6ce2d1349cc24d1c660677aa47e8a6f3af122eae68f2bd8d43e78491ed7458e661f110423395e7cca43236e582b88e51544da9d0445010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000076c6b6d6e6c6b6e","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000070d04686173680200000000086d657461646174610c00000004046e616d6502000000076c6b6d6e6c6b6e096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a3a7c5239fa9d8395dd073f45f2dd390a5cf8fa38","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STX7RMHSZAER75EX0WZMBWPX7455SY7T72ZBS62F","success":true},"operations":[],"transaction_identifier":{"hash":"0x75ea9f0d6fc8335e702924816d04d104d3ff4b17d9ebae21d5bd753b69bfa90d"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xe0ed40761d6bddce807e7255b3bde2c74a7f105846b318bdaa50e02438273e2c","index":85239},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000003c26680886e9ec42ac9e532a5c7a83c0a947b19f46571f5e9d","index":2406580},"confirm_microblock_identifier":{"hash":"0x9ccc3e8c5a47149743c530f2beae8754ddacb9d937cff003d623cae6ff9a91e8","index":1},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":229,"stacks_block_hash":"0x4ebcfaae534064bbeb0daaf3858b5507c8b88c9aa23ae2d5571749c3a2bc5026"},"parent_block_identifier":{"hash":"0xfb8ddeb9713dae4d3e5113139f07b19fab05a2a3f04b478ef27cf0e8a8eb7564","index":85238},"timestamp":1668625044,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6c6b6a6e6c6e6c6a6e)","execution_cost":{"read_count":16,"read_length":44007,"runtime":167191,"write_count":2,"write_length":160},"fee":3000,"kind":{"data":{"args":["0x627463","0x6c6b6a6e6c6e6c6a6e"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":14,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004008eebcc7630f669463187bbab6b9896aff3f48939000000000000000e0000000000000bb80001a7e07ae61a75dba5829f4b6e9f2abdb8d14b05c6985cd91dc0172be3cb62b4183175e13157595f3353c4080ef109e28ca8e56e4cec8b64b6ec96a7f51388a679010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000096c6b6a6e6c6e6c6a6e","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000070e04686173680200000000086d657461646174610c00000004046e616d6502000000096c6b6a6e6c6e6c6a6e096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a8eebcc7630f669463187bbab6b9896aff3f48939","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST27EQK3P63V6JHHHGYXTPTWRJTQZ7X4975MB90ET","success":true},"operations":[],"transaction_identifier":{"hash":"0x034f75e002581db77a94a4927f5d90c5269bc765b4923a5d2081d4cf319aa263"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x51f67805174cbcf189b500e5cfbe237d9fa044a497ec926af0506bc744e863b0","index":85240},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000042f8f9613e75dd3830753d380a5575df3f26cce8c0920152e5","index":2406581},"confirm_microblock_identifier":null,"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":230,"stacks_block_hash":"0x4ba3d8fb9ea84df9c7f2351c1e194603d3cfe4963b24f84a52a24f7847696477"},"parent_block_identifier":{"hash":"0xe0ed40761d6bddce807e7255b3bde2c74a7f105846b318bdaa50e02438273e2c","index":85239},"timestamp":1668625503,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6b6a6e6a6b6e)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":3000,"kind":{"data":{"args":["0x627463","0x6b6a6e6a6b6e"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":18,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400b9a2b17b1cad5deb3806aec7445de90fd4a7b7d300000000000000120000000000000bb80001a48dc8a0407ca4845583f432c17a2e0ee2633d7d4bd28116841f483ae7e2de1c4773c8061ec95ecf3976d90a1b9a642baa68199c30335651da0c94f20691074e010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000066b6a6e6a6b6e","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000071204686173680200000000086d657461646174610c00000004046e616d6502000000066b6a6e6a6b6e096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ab9a2b17b1cad5deb3806aec7445de90fd4a7b7d3","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2WT5CBV3JPNVTSR0TQCEH2XX47X99XQTCYBG6FJ","success":true},"operations":[],"transaction_identifier":{"hash":"0x23663c8d88a7dc0b755f5bc41cfe29752de25424268c575d3d44f676797befea"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x17e6894fe96cc209fcfea15ff9893d27f97a915b25531a5c0141134e00e42615","index":85243},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000004738bdb24a027be136e9e8c2f555b560e6c6d92193ec411c9a","index":2406585},"confirm_microblock_identifier":null,"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":234,"stacks_block_hash":"0x359ccc056e2abc9fc8a212ae84ccb0e5b32e52ea0a9097d666cb9e8100916d0c"},"parent_block_identifier":{"hash":"0xddfab2575b376c356b6e19074b90ba74ce3dd7dafb2ff931eaeca8ab56186431","index":85242},"timestamp":1668627334,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6e6c6b6e6d6a6e)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":3000,"kind":{"data":{"args":["0x627463","0x6e6c6b6e6d6a6e"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":154,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004006c4236749a801ed99372a0f42d50efde8a627e16000000000000009a0000000000000bb800014cb3eedb97f714032bb1708f117f636a25beb75ffd513a059f6c8fc3bf1050fc7b45db4c45726de0b9b0a1c07dc7deef258dde2d2d14487e9799db08e8a6898f010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000076e6c6b6e6d6a6e","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000071304686173680200000000086d657461646174610c00000004046e616d6502000000076e6c6b6e6d6a6e096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a6c4236749a801ed99372a0f42d50efde8a627e16","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1P44DKMKA01XPCKEAGF8BAGXZF8MRKY2SF20B11","success":true},"operations":[],"transaction_identifier":{"hash":"0x7a930073de30e69a07735557b0e92e0ff34711d1a8e6c6158a712c50416248f4"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x73646673616466)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":3000,"kind":{"data":{"args":["0x627463","0x73646673616466"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":9,"position":{"index":3},"proof":null,"raw_tx":"0x808000000004009b184cd9b6bad0eda71e6e9b89b604de4494fb1c00000000000000090000000000000bb80000a8c41bbe96337c5fe0a3ee58f79b90b0bea48aca34b85581991710de8db6207636dbae2188eb9ad84ddced2eaf6b52e7945d57ce3e173d1e228937cbcb24d9c6010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000773646673616466","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000071404686173680200000000086d657461646174610c00000004046e616d65020000000773646673616466096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a9b184cd9b6bad0eda71e6e9b89b604de4494fb1c","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2DHGK6SPTXD1VD73SQ9Q2DP0KF4957V3JFETK3E","success":true},"operations":[],"transaction_identifier":{"hash":"0xe75790eb35a980823978724e5560e8372e1c23756fac301b2436d0edc2f2184e"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x86fe3c5292b0bf95173d66a530198b533da9a2fe2e8e284b6f04421ebdefd824","index":85244},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000001aaeb07af88973b6c971eaea093fcfc71bd4d9c75d9d948e58","index":2406586},"confirm_microblock_identifier":{"hash":"0x94bc4aee1b0c204958cab52fe0bb3572be2aa9050309981411deb8b4f4eae3a2","index":3},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":235,"stacks_block_hash":"0x3b1617743d1018d3ddedb6fe176a532c0bf69bcc922ef0842cc096945b30e1a9"},"parent_block_identifier":{"hash":"0x17e6894fe96cc209fcfea15ff9893d27f97a915b25531a5c0141134e00e42615","index":85243},"timestamp":1668627536,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6968756967)","execution_cost":{"read_count":16,"read_length":43995,"runtime":167035,"write_count":2,"write_length":156},"fee":3000,"kind":{"data":{"args":["0x627463","0x6968756967"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":14,"position":{"index":2},"proof":null,"raw_tx":"0x8080000000040082386f2a70a4b57e2d4304fb19364d89d0df04c4000000000000000e0000000000000bb8000183561e0325c9bf6601242b2355feccc12c4d8e911a0534a223137320674f9d5030713e58088dd70ad05be07a13d4ba8e360fe6d837206bd16ac23627ab0963f9010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000056968756967","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000071604686173680200000000086d657461646174610c00000004046e616d6502000000056968756967096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a82386f2a70a4b57e2d4304fb19364d89d0df04c4","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST213GVSAE2JBAZHD8C2FP69P9P4X1QR4RKRFPG6J","success":true},"operations":[],"transaction_identifier":{"hash":"0xd7edd2b7937d21a09c727f947ba2146595cfe65a0988653b63a96ac511c2f6f4"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x73edf006f95746975cc1094bea0b1c4555c170c6781ff5b50741a310df7197ef","index":85245},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000002d4b7216a708782602bf2f630ed02c2cd00e92cc872be111f0","index":2406587},"confirm_microblock_identifier":null,"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":236,"stacks_block_hash":"0x7c1ab0f7f3e7c146dad8e8982d71f053a6e28338d872b92a108892d3cd761930"},"parent_block_identifier":{"hash":"0x86fe3c5292b0bf95173d66a530198b533da9a2fe2e8e284b6f04421ebdefd824","index":85244},"timestamp":1668628259,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6a626763667864676366686776)","execution_cost":{"read_count":16,"read_length":44019,"runtime":167347,"write_count":2,"write_length":164},"fee":3000,"kind":{"data":{"args":["0x627463","0x6a626763667864676366686776"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":18,"position":{"index":2},"proof":null,"raw_tx":"0x8080000000040009c5ad860cb9f2d893abb2f9d692c402474d805400000000000000120000000000000bb80001324f44675b713959cafa89e48f34487b260e7d7bafa3b971008175308429ab6a347c3c030ef7cde7842fac4d8b98f5b599b4b12750b02ca132ba6cda80839f2a010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000d6a626763667864676366686776","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000071704686173680200000000086d657461646174610c00000004046e616d65020000000d6a626763667864676366686776096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a09c5ad860cb9f2d893abb2f9d692c402474d8054","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST4WBBC61JWZ5P4KNESFKNMJRG14EKC0AK7BVJSX","success":true},"operations":[],"transaction_identifier":{"hash":"0x2c8673193fb7493cd87476b85c25fa586e9a8e75eef9950b45cea25672cef2e3"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xad05e0c81e8c2e40fe9179d970d67593d42b07f28ef80a33636e29f7dbc27d2e","index":85257},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000024e554894d68b6adc9a7bd5a869e2fccec8d77b9aa96e891e1","index":2406603},"confirm_microblock_identifier":{"hash":"0x0ab0eb5b49d6786ddeed850a206f0c12f1f8e64d5bb0463a55338ed15e379958","index":1},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":252,"stacks_block_hash":"0x786080e1503c9caf98cd7873586c1abc00764d50022a79665bda1c9859c7cecc"},"parent_block_identifier":{"hash":"0x253fa58111d9b5f99b54d75f1c1951114f39a0ac31937370019f55ee9b195878","index":85256},"timestamp":1668633945,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x637364616373)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":30000,"kind":{"data":{"args":["0x627463","0x637364616373"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":19,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040082386f2a70a4b57e2d4304fb19364d89d0df04c4000000000000001300000000000075300000c197b2561bd9a77eb45e2b1cfd4140740155b3238bdeade5df633091a18490df6bfa6747d212b6361152520165865b181a795e721e2294136f3cbf505047dc31010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006637364616373","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000072104686173680200000000086d657461646174610c00000004046e616d650200000006637364616373096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a82386f2a70a4b57e2d4304fb19364d89d0df04c4","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST213GVSAE2JBAZHD8C2FP69P9P4X1QR4RKRFPG6J","success":true},"operations":[],"transaction_identifier":{"hash":"0xe101b4054a3fd47e922dafc89e7d5c295ab3b84ece92df2416b0b350e35692d3"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x7418b384326de2837a04eacf89fff079fc6a85ea94ca3b2840fe6babc04b7a77","index":85343},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000003fbfa221cd29784d3238e63875da2d47869b2ecc04639b1962","index":2406706},"confirm_microblock_identifier":{"hash":"0x258a308fd2277e43a8828704320c17b1f5829758f74e306189e93b498d9fa46e","index":1},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":355,"stacks_block_hash":"0x8c33387a487310115df6460dd090e2ab800b317169eed57d9d3d0b64e9822db1"},"parent_block_identifier":{"hash":"0x2cced4bab16bcb87de64fe248656a7a3c7eb45021632a30d0e3c84abeb4f2c74","index":85342},"timestamp":1668678734,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7361646c666b6a)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":48000,"kind":{"data":{"args":["0x627463","0x7361646c666b6a"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":23,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004000d073907a4b7d4400fa949621ea7fec0b12d93250000000000000017000000000000bb800001f294e6812e1c9eeca194b32345085ca18434ae468a56f72d79cbbd7fc54d197f0d208eac0649b0bc25df9aeabf14edd1fd33ac70498295fb383f246696a34568010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000077361646c666b6a","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000072904686173680200000000086d657461646174610c00000004046e616d6502000000077361646c666b6a096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a0d073907a4b7d4400fa949621ea7fec0b12d9325","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST6GEE87MJVX8G0FN54P47N7ZV0B2BCK4MKMDV7X","success":true},"operations":[],"transaction_identifier":{"hash":"0x21415ee6f294968b50e1bf6eee41802f8afe10f8045bb2ebb7fa5d243b7786a4"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x905a0895ac5ad807183dddebc3acf53fbf5b1d284cc28fa79cc136a07157d45a","index":85345},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000069f08bdfcc83a73a1a13185fa0c97068aaaf5e23c2dc7a1b9c3e6b90","index":2406708},"confirm_microblock_identifier":{"hash":"0x67b3be5cd4df3084e9a72772846665fdcbaafcad27118f2a8cf6532fd624c66c","index":4},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":357,"stacks_block_hash":"0x09a3516715344df270e1f097b0b3f77de0f315b6c61b67a7fefdb8a6cf2a942d"},"parent_block_identifier":{"hash":"0xfbbdcc93bb568f937b311b35b0ce85652312538815aad011647b78f8a4310331","index":85344},"timestamp":1668679926,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6a6b6e6268766763)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":393216000,"kind":{"data":{"args":["0x627463","0x6a6b6e6268766763"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400f26d12ce74eb0e6d6cd5427486b6cc90f824c67a0000000000000000000000001770000000005bd53f832eefe0234b29bab534a6cd91dc0569164effb0a7b321e65a20650d8276875c3eeef0c9547b30b58a797086e710373b108858af59094841361eb0867b010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000086a6b6e6268766763","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000072b04686173680200000000086d657461646174610c00000004046e616d6502000000086a6b6e6268766763096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051af26d12ce74eb0e6d6cd5427486b6cc90f824c67a","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3S6T4PEEKNGWVBCTN1791NPSJ8FG966F9KP46QJ","success":true},"operations":[],"transaction_identifier":{"hash":"0x5b8bd807a5e087e3012f898aa19572e118b900f2a95e90ea80576979dd165f43"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x646f6d61696e5f63)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":3000,"kind":{"data":{"args":["0x627463","0x646f6d61696e5f63"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":9,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400e7b3490e967732af9f66600fa6177adfa987601000000000000000090000000000000bb80000a16dc0fc16a7963e815f7f5b2afc681a0b52631feba99e3cc48fee80e53bd7b270f54cb7242632cd4390439e210ee85c972216aa24e9945d3c416173de9a0a8a030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000008646f6d61696e5f63","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000072a04686173680200000000086d657461646174610c00000004046e616d650200000008646f6d61696e5f63096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ae7b3490e967732af9f66600fa6177adfa9876010","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3KV6J8EJSVK5BWZCSG0Z9GQFBFTK1V0231DJR93","success":true},"operations":[],"transaction_identifier":{"hash":"0xed3f8037947979dca5c2914359e5fc71fcd85e295443fbb2c13277d9cf79fd3e"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x220c11090bcc19f3ee08b8164a23805795ecf4d28fbcbf52a837f9472bef6beb","index":85346},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000051905cf824151bdb133571d6ee77cf58119f5e92694bebe0c","index":2406709},"confirm_microblock_identifier":{"hash":"0xb7a241e2cce07973ef3ae0255e392a6158e55d44e1b6c630a21a3ac6e5a18c94","index":0},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":358,"stacks_block_hash":"0xb3d8b516558f0d26a8743bab1ecb8dee90bc0aced854f18743d44727651e9c55"},"parent_block_identifier":{"hash":"0x905a0895ac5ad807183dddebc3acf53fbf5b1d284cc28fa79cc136a07157d45a","index":85345},"timestamp":1668681137,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x61736664666173)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":12000,"kind":{"data":{"args":["0x627463","0x61736664666173"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400348a3799c6e7d92dba88a9820460437bcabf02c500000000000000000000000000002ee000009f21b7c79ede3044dd405e80779b3d28dafb8c288cdc3438b978b29db114e54b3232ec6fc48a4edff4b195f71a80dd2a1a77d7a2d0339531bdad75b186cae0f3010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000761736664666173","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000072c04686173680200000000086d657461646174610c00000004046e616d65020000000761736664666173096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a348a3799c6e7d92dba88a9820460437bcabf02c5","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STT8MDWSRVKXJBDTH2MR41308DXWNFR2RP2D2QKQ","success":true},"operations":[],"transaction_identifier":{"hash":"0x014cdfce99ef4786a7b9a3a5f69958831f4bca973a9f98b574757b854eb3f098"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x17822cbe9416235ff38fda3c6b14e23119ef8508eb82551811d453608430daac","index":85347},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000002aac2711fd7e0d21c668fc62405d3acd1aa5ef4d2e6848c52e","index":2406710},"confirm_microblock_identifier":{"hash":"0x426fde629bfec4e08efef5f65082e60f2b5cafe5a93ea79da78e5581358736d9","index":2},"pox_cycle_index":387,"pox_cycle_length":1050,"pox_cycle_position":359,"stacks_block_hash":"0x3626f683f25d91cfa8bb41a653c18d430fa83759fd17ae24deeefd484a2f2e10"},"parent_block_identifier":{"hash":"0x220c11090bcc19f3ee08b8164a23805795ecf4d28fbcbf52a837f9472bef6beb","index":85346},"timestamp":1668681378,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6572747975)","execution_cost":{"read_count":16,"read_length":43995,"runtime":167035,"write_count":2,"write_length":156},"fee":384000,"kind":{"data":{"args":["0x627463","0x6572747975"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":22,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004003a7c5239fa9d8395dd073f45f2dd390a5cf8fa380000000000000016000000000005dc000000410848b7edbc96aa80b14fe78785c1ac4fcf08505f6098dc3d98a379dc8aacc311d82e58d9368823673e6c77a65fe34bd4cb1878bce0f1b742a96b9fa54644b9010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000056572747975","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000072e04686173680200000000086d657461646174610c00000004046e616d6502000000056572747975096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a3a7c5239fa9d8395dd073f45f2dd390a5cf8fa38","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STX7RMHSZAER75EX0WZMBWPX7455SY7T72ZBS62F","success":true},"operations":[],"transaction_identifier":{"hash":"0x66d1688ca39dfbf62e854bc0093245c0050972bf3398bac8d58022dce4b24c2b"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xd5cdafa6f255729d1f50066b23d53c4043eb6d4eae331332c94355de7f498576","index":86204},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000002635d9dec0876e05bbcec9640f7b0091d7550f0ce3ed10b90","index":2407666},"confirm_microblock_identifier":null,"pox_cycle_index":388,"pox_cycle_length":1050,"pox_cycle_position":265,"stacks_block_hash":"0xb982a061c8587dc3bf4d70544941a0330aa9f0a567dd5d97bdfaf9a0946f3dcb"},"parent_block_identifier":{"hash":"0x5be8ee130eabbeee0d6d8417a82fe278d135aa7c3e122e14148a2d374db6e828","index":86203},"timestamp":1669108579,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x766768766a76)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":3000,"kind":{"data":{"args":["0x627463","0x766768766a76"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":25,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004003a7c5239fa9d8395dd073f45f2dd390a5cf8fa3800000000000000190000000000000bb800013d6500aed6b015c51ac92a7ec905362c40f03857eaee542623a49609c5cab54d095bcff478841f2c39d41e71234407810c8c58a9548382bb0238c8d775049a87010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006766768766a76","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000073404686173680200000000086d657461646174610c00000004046e616d650200000006766768766a76096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a3a7c5239fa9d8395dd073f45f2dd390a5cf8fa38","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STX7RMHSZAER75EX0WZMBWPX7455SY7T72ZBS62F","success":true},"operations":[],"transaction_identifier":{"hash":"0x2849ccdda7f5ce536d552e227c68829a0e1a70efd1692ad005a0217dedcedf0c"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x805f06d8eccdcc7f0f59c85fbb55df3afe6c7950d6029ef2721abdc955d00c68","index":86280},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000084d9e05cf38a81eb1b3303673e642d08a102af61b1cfe0c0b801","index":2407768},"confirm_microblock_identifier":{"hash":"0xafaa65f372c469610710e1436f5a81ce8aea53b894ce8f7821170dccf2b4a0c8","index":1},"pox_cycle_index":388,"pox_cycle_length":1050,"pox_cycle_position":367,"stacks_block_hash":"0x46a91bc0d9b154b583cd6e8babca0ab37f6d041232093b400ac4cdeb09a47ceb"},"parent_block_identifier":{"hash":"0x60d3cea8c49f892408e307005c4b95bdecc578dc7a2103123a52ef8da5dbf914","index":86279},"timestamp":1669154627,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7364666173666461736466)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167269,"write_count":2,"write_length":162},"fee":3750000,"kind":{"data":{"args":["0x627463","0x7364666173666461736466"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":7,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400348a3799c6e7d92dba88a9820460437bcabf02c5000000000000000700000000003938700000338076c68b6f63139842488e8fbe3fa9a53513b60f75ee076db500b01e3dc52e09854ec848cea491c427b34cfefb9f893c665be5b153193052d1f55ef7fe3d68010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b7364666173666461736466","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000074604686173680200000000086d657461646174610c00000004046e616d65020000000b7364666173666461736466096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a348a3799c6e7d92dba88a9820460437bcabf02c5","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STT8MDWSRVKXJBDTH2MR41308DXWNFR2RP2D2QKQ","success":true},"operations":[],"transaction_identifier":{"hash":"0xa0342270746e5039cc09b6314a81d81893b39cfd5c591ed678c3778e405da33b"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x73a8c3b9e62e1e29f7c516b5a07c91c3e32fcbc16dd04ebea304e3340bde6be9","index":86281},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000110d1e3a5929a2eb7ca418d7b548506d229d3e6eb24b5c0366","index":2407770},"confirm_microblock_identifier":{"hash":"0xb8ccb63487e022951dc6127e09f2a4c8cd795bcbf5e6588e37e01702e0a52122","index":1},"pox_cycle_index":388,"pox_cycle_length":1050,"pox_cycle_position":369,"stacks_block_hash":"0xf8aaa2e3fe72bd78e03e6b8293682fad7ba0d28dbfb0adea8d909e9fa516da99"},"parent_block_identifier":{"hash":"0x805f06d8eccdcc7f0f59c85fbb55df3afe6c7950d6029ef2721abdc955d00c68","index":86280},"timestamp":1669155838,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6a73646e766b736a646e76)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167269,"write_count":2,"write_length":162},"fee":30000,"kind":{"data":{"args":["0x627463","0x6a73646e766b736a646e76"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":27,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004000d073907a4b7d4400fa949621ea7fec0b12d9325000000000000001b00000000000075300001051642311d32811a133f3a8f73401647cd50be44b62c8336eedd21302832721439e14a63d5b0cfa569b314064a73a6bf22a8d047e4000a0eb78700f7a322f41b010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b6a73646e766b736a646e76","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000074704686173680200000000086d657461646174610c00000004046e616d65020000000b6a73646e766b736a646e76096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a0d073907a4b7d4400fa949621ea7fec0b12d9325","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST6GEE87MJVX8G0FN54P47N7ZV0B2BCK4MKMDV7X","success":true},"operations":[],"transaction_identifier":{"hash":"0x112b913482fb880b90d354e4609b58d85a3f914e62c573f9389bab09b62ea614"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6a6b626b6a626b6a)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":3000,"kind":{"data":{"args":["0x627463","0x6a6b626b6a626b6a"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":28,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004003a7c5239fa9d8395dd073f45f2dd390a5cf8fa38000000000000001c0000000000000bb80001fed8f5a32ddfeebe379a28fa7d04ba4008dd4f2222acd81ba6bffd873a80e4be7be2da7800f589d16a067b7d4eff6f77f896e6f8d3681c6751e305fb30573e88010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000086a6b626b6a626b6a","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000074804686173680200000000086d657461646174610c00000004046e616d6502000000086a6b626b6a626b6a096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a3a7c5239fa9d8395dd073f45f2dd390a5cf8fa38","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STX7RMHSZAER75EX0WZMBWPX7455SY7T72ZBS62F","success":true},"operations":[],"transaction_identifier":{"hash":"0xdc7ddad093d5dff94e0ec476750a5daf5790b0946aa28e49c323ebbf34a35711"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x63c92c0742cfe354425098ce98e6ff99281cc1f6727fc0653808516989c661ee","index":86351},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000ee89341ac3510b577de95ee458f6720b45e07f9bb68941a21","index":2407859},"confirm_microblock_identifier":{"hash":"0x71d38ff37be9e12d104ef2fafff707966e661a571d198c7a3456dc18997b82c4","index":0},"pox_cycle_index":388,"pox_cycle_length":1050,"pox_cycle_position":458,"stacks_block_hash":"0xe1fe925176a9f29c967151157a2cf7f962f78150f0e82ef8e54098d9dbb25643"},"parent_block_identifier":{"hash":"0x890efa4108a53a34c2385a1c9a652840d55e01f943f8b006c05afa3862e60612","index":86350},"timestamp":1669199727,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6b6f6f6c616964)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":3500,"kind":{"data":{"args":["0x627463","0x6b6f6f6c616964"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":19,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400e7b3490e967732af9f66600fa6177adfa987601000000000000000130000000000000dac00014b7a301394636df8182dbdb838fe147d4029a30085a503e8ed98a1b7933080cd28782de691be7e9687242d2f672561765ad80a9775366a9ad9632e7dec39f540030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000076b6f6f6c616964","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000074e04686173680200000000086d657461646174610c00000004046e616d6502000000076b6f6f6c616964096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ae7b3490e967732af9f66600fa6177adfa9876010","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3KV6J8EJSVK5BWZCSG0Z9GQFBFTK1V0231DJR93","success":true},"operations":[],"transaction_identifier":{"hash":"0xc46cde5e3fdc5eebc8fc9c3b3e14f54a98e582bac5b9298b9150d2e1e29a787a"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x166ac12830e27db28dcf48c3c077842b12a61b819a254efa3b194bf870929c87","index":86489},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000091316dfbd90467dc9735929124aadd92f01b4d052e3b6cea59b","index":2408031},"confirm_microblock_identifier":{"hash":"0x64c243f7e8097b2954d472d18e0aad65f7b0d8c582d0fd4399fd4b62ec36bab1","index":4},"pox_cycle_index":388,"pox_cycle_length":1050,"pox_cycle_position":630,"stacks_block_hash":"0x4edfa32b627208710260ece9044be7af13dd71ab951f6cba2b04e1a81ae8a483"},"parent_block_identifier":{"hash":"0x3b3b7d32f3f2399d6341863418a75a7d1d42b59590667ae75ee58f03a63b723b","index":86488},"timestamp":1669290048,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x616461736464)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":24000,"kind":{"data":{"args":["0x627463","0x616461736464"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":31,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400b9a2b17b1cad5deb3806aec7445de90fd4a7b7d3000000000000001f0000000000005dc00000a0f3ee9b7c97a35a1c8f168232c557c7edfc492167987cefb618924d125d8ede6a24fc1de628f813eecbedad5e474ab3ae5c0a0b7899aae98154a9aa9b85fc25010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006616461736464","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000075304686173680200000000086d657461646174610c00000004046e616d650200000006616461736464096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ab9a2b17b1cad5deb3806aec7445de90fd4a7b7d3","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2WT5CBV3JPNVTSR0TQCEH2XX47X99XQTCYBG6FJ","success":true},"operations":[],"transaction_identifier":{"hash":"0x0f23e612b2c51a1ff8eb09ec79fa98126b12d1d48ce69d9d7fb73a9add8afdf3"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x8daadd3950834f629db1a81d1096d95aea2b0d8c7a51244459036d37b1a1f434","index":86500},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000001bd8436f422d628807a758705e8fe8f8b1dfaa5b92526a42ac","index":2408045},"confirm_microblock_identifier":{"hash":"0x0b6160dca4e3d4988f3dba08fd516131b0842701dc23a64ff790daf063bf09f1","index":1},"pox_cycle_index":388,"pox_cycle_length":1050,"pox_cycle_position":644,"stacks_block_hash":"0x34fa43ab31d84019ec0e748ccddf0ec222bb01f2dafcac1eea27fb64ccc8629c"},"parent_block_identifier":{"hash":"0xb3bc013477823f78a259fecf944409bc3b15d35d59c92a9ece144d1ac39e7888","index":86499},"timestamp":1669295496,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6f697567626e6d)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":6000,"kind":{"data":{"args":["0x627463","0x6f697567626e6d"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":22,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040009c5ad860cb9f2d893abb2f9d692c402474d805400000000000000160000000000001770000055f952eb6292efac0a75f285b80104e9a9f058a21cb5e611fb3859884c0716bb49484e471f22cf03663444e574c7febcfe054326adeae5fb0532df1de3516ab0010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000076f697567626e6d","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000075804686173680200000000086d657461646174610c00000004046e616d6502000000076f697567626e6d096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a09c5ad860cb9f2d893abb2f9d692c402474d8054","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST4WBBC61JWZ5P4KNESFKNMJRG14EKC0AK7BVJSX","success":true},"operations":[],"transaction_identifier":{"hash":"0x625bb1a191204668cddb8be8c121707a23e3eb9c1c51c31121e49ed99c93b9a4"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xc1caa216023c4613d334a6c90674b8b9e4c578680d0530928e75aa6dd4e412ed","index":86513},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000018e2a9f1d53651d2b4f4fc282e39fc082f5581952f0c3721d5","index":2408060},"confirm_microblock_identifier":{"hash":"0x5be23852bb833dae25866a84660d63d5fa92760ea4570003d0f6bbf3c5f99371","index":2},"pox_cycle_index":388,"pox_cycle_length":1050,"pox_cycle_position":659,"stacks_block_hash":"0x181f3beb90a027ff9bb176c387fee5447d6acb43dbf677c370da55962e284b61"},"parent_block_identifier":{"hash":"0x15ef7c50184f4c9c8720a8c242dff6ba536b6f2b0cb4d88f9de6e541ce735888","index":86512},"timestamp":1669303118,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7061636b61676575706461746566696e616c7632)","execution_cost":{"read_count":16,"read_length":44040,"runtime":167620,"write_count":2,"write_length":171},"fee":3000,"kind":{"data":{"args":["0x627463","0x7061636b61676575706461746566696e616c7632"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004006b668c1727d5cd3eafec7976d9cb7da9c03737aa00000000000000000000000000000bb800019aaf2ee89b92c3df639f310d9bc088b494cdce9f3aa87a3c031fb7cc8c72bff03b3702ec6ca6faa112a84cfc94c5b86f33acc2f7ab3505a23177a366c454d23a030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000147061636b61676575706461746566696e616c7632","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000075904686173680200000000086d657461646174610c00000004046e616d6502000000147061636b61676575706461746566696e616c7632096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a6b668c1727d5cd3eafec7976d9cb7da9c03737aa","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1NPD30Q4ZAWTFNFXHWQDPEBFPMW0DSQNAHPJVM8","success":true},"operations":[],"transaction_identifier":{"hash":"0x5db6635b0b9a7b69790550ea956c7ab27d3a906bdef1ad1ef5d326d9554328f3"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x6a5d6c513edae089f62cc380958999252e003d764a9cec3b9128492ebe207f9c","index":86630},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000037e983090cee039b6e3fa0132d8fa487ce22fc34519dbf9395","index":2408223},"confirm_microblock_identifier":{"hash":"0xcf8396879db766a5b36463ef456d2caee3335d31d1527ee9e0c98c69bde11de2","index":1},"pox_cycle_index":388,"pox_cycle_length":1050,"pox_cycle_position":822,"stacks_block_hash":"0x345ca0bd0393f372baebdc190bf3218599c7da9f12f0683e15e89108d7949cce"},"parent_block_identifier":{"hash":"0x9404c8629030aa653ba6bccdec15e050eb770495d3ea2f59dba26927f91723d6","index":86629},"timestamp":1669378165,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x73646661736664)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":3000,"kind":{"data":{"args":["0x627463","0x73646661736664"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":25,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040009c5ad860cb9f2d893abb2f9d692c402474d805400000000000000190000000000000bb8000001952980c8806c148d899313d3122971ec8c30c9d982c468e14776afd92cc2ef60738e7dfac8d7b61c87fe390eed5bc17acd0f53216132218ba8f02e26d65d02010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000773646661736664","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000075c04686173680200000000086d657461646174610c00000004046e616d65020000000773646661736664096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a09c5ad860cb9f2d893abb2f9d692c402474d8054","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST4WBBC61JWZ5P4KNESFKNMJRG14EKC0AK7BVJSX","success":true},"operations":[],"transaction_identifier":{"hash":"0xd2d78bb31ef0de3f066f62cdc0baa6a679bbe94fb6299ba6289f69419277a424"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x696a75687967746664637662)","execution_cost":{"read_count":16,"read_length":44016,"runtime":167308,"write_count":2,"write_length":163},"fee":3000,"kind":{"data":{"args":["0x627463","0x696a75687967746664637662"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":34,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400b9a2b17b1cad5deb3806aec7445de90fd4a7b7d300000000000000220000000000000bb800001df8eaf7c72b13e330536cf44b491dcaf418571153a2af517ea63a864fd4eb7273d894c1b9cd048d15739ba00c18566c397d73a2708e68487f648afb436dfb65010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000c696a75687967746664637662","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000075d04686173680200000000086d657461646174610c00000004046e616d65020000000c696a75687967746664637662096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ab9a2b17b1cad5deb3806aec7445de90fd4a7b7d3","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2WT5CBV3JPNVTSR0TQCEH2XX47X99XQTCYBG6FJ","success":true},"operations":[],"transaction_identifier":{"hash":"0x0ae0eafd059d69c4b60d90c9af12f6d7929b7e157faa1d49019b3b4ad748d7b7"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xd493eacad5961065083f56b622791bba64ac0d019ce5b0087500b57fb7ecc3bc","index":86643},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000ae5c8a0f8ca33e7b8fc738abfc82d220766d3b1eaf607c834","index":2408240},"confirm_microblock_identifier":{"hash":"0xf1cdcb52bdb637e581f68c121b095d81a642ef695113ff020ccb4ee03bdae82f","index":0},"pox_cycle_index":388,"pox_cycle_length":1050,"pox_cycle_position":839,"stacks_block_hash":"0xb4ec2ab12ed1c0d5c18d860624895d7269ae13be6c5cee61e2a5ff588e9e8ad6"},"parent_block_identifier":{"hash":"0x3d2d01b132ecee93f77b8b9c8e3ec48f818581be8204799fdc353ff033f2f594","index":86642},"timestamp":1669388211,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7364666173646661736664)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167269,"write_count":2,"write_length":162},"fee":24000,"kind":{"data":{"args":["0x627463","0x7364666173646661736664"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":26,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040082386f2a70a4b57e2d4304fb19364d89d0df04c4000000000000001a0000000000005dc00001c78c2a241d3bd57706bdc30df3832436a46d1f7787786df64b710cb25f1c0bf962cb49544e63976ec7f99463a24608b19ca957866a44a4b5f8f4a5234aac1583010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b7364666173646661736664","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000076104686173680200000000086d657461646174610c00000004046e616d65020000000b7364666173646661736664096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a82386f2a70a4b57e2d4304fb19364d89d0df04c4","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST213GVSAE2JBAZHD8C2FP69P9P4X1QR4RKRFPG6J","success":true},"operations":[],"transaction_identifier":{"hash":"0x68ceb8487e2a4437989f2a2b7f77950b71a3c67784586d4c9062c78c7028d4af"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xc32eae2bd9ec54ba296fa5a0c538c099c01a1116993ead53b774a4ea4926d34a","index":87045},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000029dd860521e7874ea315ddc3caea55a52bb64447b706c5bbbd","index":2408755},"confirm_microblock_identifier":{"hash":"0xdeeb3339b2dc2149d0200721b3e138c4f66dc71e348db57f16bf86aafb5f0b05","index":0},"pox_cycle_index":389,"pox_cycle_length":1050,"pox_cycle_position":304,"stacks_block_hash":"0x45748b22831bbbb96e5fe1b030411c0aefe2818be4471bbbf8144a7879efc89e"},"parent_block_identifier":{"hash":"0xd4d12eb2ec994cb7400687ffcd60b0d280dba72797fd3d3785b1494ae32fd571","index":87044},"timestamp":1669615672,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6c6b6d6b6e)","execution_cost":{"read_count":16,"read_length":43995,"runtime":167035,"write_count":2,"write_length":156},"fee":3000,"kind":{"data":{"args":["0x627463","0x6c6b6d6b6e"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400f26d12ce74eb0e6d6cd5427486b6cc90f824c67a00000000000000040000000000000bb8000024aa72f4f0b2474e52ec9fbddd2f2667e9fda2724caabeba3741a31e702ed1831667c360395a7c06012d255fba7c35a405af9995dc9377db549a6686bc6e47e2010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000056c6b6d6b6e","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000076404686173680200000000086d657461646174610c00000004046e616d6502000000056c6b6d6b6e096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051af26d12ce74eb0e6d6cd5427486b6cc90f824c67a","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3S6T4PEEKNGWVBCTN1791NPSJ8FG966F9KP46QJ","success":true},"operations":[],"transaction_identifier":{"hash":"0xcb938a1937562adaf7674a5c12938c5cd430d47083e1841c8b3eb8dae5274956"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xdef80387def5f53f902597b307b30c7013a4cf0e31e2bb9c8be23aaf3c8d5c0e","index":87130},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000002810858ddc1b8e7773faab8b7cbcf3b45a055845b73856eb7d","index":2408859},"confirm_microblock_identifier":{"hash":"0x7aa5329a640afa286735b7ee50a4e9a2ef62cd07c911b20858ff0bc0d09afe91","index":1},"pox_cycle_index":389,"pox_cycle_length":1050,"pox_cycle_position":408,"stacks_block_hash":"0x5497f945025d554db397f83d7fbc831b3a9a1851ef0f8218bb463d519ff6b79a"},"parent_block_identifier":{"hash":"0x26a3b851b6beb0aafc701aad18ac2df055cff16bd9746d2418bb8fb278ae805f","index":87129},"timestamp":1669665227,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6f706f7568)","execution_cost":{"read_count":16,"read_length":43995,"runtime":167035,"write_count":2,"write_length":156},"fee":3000,"kind":{"data":{"args":["0x627463","0x6f706f7568"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":14,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004009460fab3ec3b8f4d1f962b15e6bf97835ec6798c000000000000000e0000000000000bb800004bc5ba6d6ebdf38dda2aef1218b031449d9df1094c1561f8e5df6e9b1def07dc25cf316637929dc035af9d7e73ca0fa0aa87f7c8231272cda0dec6fb6158e36f010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000056f706f7568","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000077504686173680200000000086d657461646174610c00000004046e616d6502000000056f706f7568096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a9460fab3ec3b8f4d1f962b15e6bf97835ec6798c","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2A61YNKXGXRYK8ZJRNHBSNZJY1NXHKSHHWF4X1D","success":true},"operations":[],"transaction_identifier":{"hash":"0x57dd325807b9a8ad59974b4c9149ecafbbc1ebfcac80f622cb288291af8a4b42"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x930d06db6a4b4c2b2d608cb99eb819490f2b361ba8d57ca8d4425d2867fa5dcf","index":87218},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000021d66850c0e787dc1aa04c7b193586541770d5352660f0953c","index":2408965},"confirm_microblock_identifier":{"hash":"0x69689e6f069b76436569ddf0240efd7f2bac16393e537a1703964f9cb9d92a7d","index":2},"pox_cycle_index":389,"pox_cycle_length":1050,"pox_cycle_position":514,"stacks_block_hash":"0x9e0f3a9bba5b229cd2859b0361ac53231b772fcc590656b972b5d105a30d9bb9"},"parent_block_identifier":{"hash":"0x4a4e090f2a257871b3a6e57b1a822e43318e96bb59205589b5b705b64f7a3afc","index":87217},"timestamp":1669720871,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6274636e616d77)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":15000,"kind":{"data":{"args":["0x627463","0x6274636e616d77"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":7,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400a6bf385c515e6deec564b7973875a66b044c083a00000000000000070000000000003a98000084d04755326e494f4e61d8d9753fca83b1527eaab2411d66524c43dbd383bf1722bddffa67e680e5d9b13c3acb3a94c57dad2e4463d01ee684e5b803021527f0010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000076274636e616d77","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000077e04686173680200000000086d657461646174610c00000004046e616d6502000000076274636e616d77096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aa6bf385c515e6deec564b7973875a66b044c083a","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2KBYE2WA5F6VVP5CJVSEE3NMSNG8K087BZGFQK5","success":true},"operations":[],"transaction_identifier":{"hash":"0xe1ec98c3e55972259d1d5d58fe20a23a68d66ac8eb440123fd3d2e7f6cddbd40"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x550bbd1cff917669681eb701ac8d7f2fb08e1b9f1a05945affca8037289478c7","index":87219},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000a83a9a94c0d9f0c396111cf7921c1990ce202f71e60acba80","index":2408967},"confirm_microblock_identifier":{"hash":"0x2a35a2cf1217deb9485d398767970a72ef72daa199ddb16d58e48e69f367530e","index":2},"pox_cycle_index":389,"pox_cycle_length":1050,"pox_cycle_position":516,"stacks_block_hash":"0x05fef438a2556325d1a41f997932db293dd529c65c0972a1e1933899e5dd8214"},"parent_block_identifier":{"hash":"0x930d06db6a4b4c2b2d608cb99eb819490f2b361ba8d57ca8d4425d2867fa5dcf","index":87218},"timestamp":1669721879,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6274636e616d77)","execution_cost":{"read_count":12,"read_length":43972,"runtime":131834,"write_count":0,"write_length":0},"fee":240000,"kind":{"data":{"args":["0x627463","0x6274636e616d77"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":8,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400a6bf385c515e6deec564b7973875a66b044c083a0000000000000008000000000003a9800000260275ad64eb8df916a959d52f52868f96d8f2046ac844e067dffd0bfabe23421fae475f3b105fb5705b8d35c36355b8c97cb87d01db4ed00493ef0f4e25098b010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000076274636e616d77","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST2KBYE2WA5F6VVP5CJVSEE3NMSNG8K087BZGFQK5","success":false},"operations":[],"transaction_identifier":{"hash":"0x42f850f9877eb13ef7b66733129c08409d28f77f61e408f25213bc0656fd4f9a"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6f697579747265)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":12000,"kind":{"data":{"args":["0x627463","0x6f697579747265"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":9,"position":{"index":2},"proof":null,"raw_tx":"0x8080000000040090a0c8a69c98cc0e7f4109a27d61dcb18e35e55c00000000000000090000000000002ee00001726a5a51e57707c572ee5376d2f93bba8eecb79eb03cfa0f6f58a4c3e46671f81d0a3cb220188620e1c1a9def3f9b56c00c8ae8e110300ae2ccd77ede8094520010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000076f697579747265","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000077f04686173680200000000086d657461646174610c00000004046e616d6502000000076f697579747265096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a90a0c8a69c98cc0e7f4109a27d61dcb18e35e55c","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST28A1J56KJCCR3KZ844T4ZB1VJRRWDF5BJMDN2ZY","success":true},"operations":[],"transaction_identifier":{"hash":"0x0cab4c7d2ed6a2a6841e58219980375f21448e6f9238145acbd30c9bc6839717"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6274636e616d77)","execution_cost":{"read_count":12,"read_length":43972,"runtime":131834,"write_count":0,"write_length":0},"fee":3000,"kind":{"data":{"args":["0x627463","0x6274636e616d77"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":9,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400a6bf385c515e6deec564b7973875a66b044c083a00000000000000090000000000000bb800018ef370a9c704b34c6dfb57d2f359e6df3c9d8c378055992ef7dd5836dabfab380f5ec393f280937536341dc4630defd42eb73c47def241cbaeef66aa8359d15c010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000076274636e616d77","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST2KBYE2WA5F6VVP5CJVSEE3NMSNG8K087BZGFQK5","success":false},"operations":[],"transaction_identifier":{"hash":"0x43b738c8ca5d97fad77a0bf92da8c3361f7024af4e0b4b34a515d9f4d2bcb837"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x3675196767984ad2ad75c0d788b172b0c7361288e6795239273322936e10d887","index":87240},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000001d5b54c16545bb86717042e8f8ae08fb731139cc343e6209c","index":2408991},"confirm_microblock_identifier":{"hash":"0x1505e9f79c93ada0e0e788c7eac695f7776bd8d25537881b00ce82420a2f2115","index":4},"pox_cycle_index":389,"pox_cycle_length":1050,"pox_cycle_position":540,"stacks_block_hash":"0x1508102ef43e3986ae076160f34b78e446abdaafa6daca57c95beb8e0acf1fa9"},"parent_block_identifier":{"hash":"0x1c12fe9a66b88abc188f01907abce143d3c0a9a5e7a95ff2c306a015ff671f0f","index":87239},"timestamp":1669735932,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x747572626f)","execution_cost":{"read_count":16,"read_length":43995,"runtime":167035,"write_count":2,"write_length":156},"fee":15000,"kind":{"data":{"args":["0x627463","0x747572626f"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":6,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040025b982a646691c36c336b05ce676a5d416401e2400000000000000060000000000003a980000f8c3dc970379110ac97af6d312cc88b6b6c473cc70c8ea351616769035ae1a4c4b7d39dabd7abf04f58a5b67e7bc247c408037813af9bcc4bf0f3541505d40dd010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000005747572626f","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000078b04686173680200000000086d657461646174610c00000004046e616d650200000005747572626f096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a25b982a646691c36c336b05ce676a5d416401e24","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STJVK0N68SMHRDP36TR5SSKPMQA1CG0Y4H0AEY94","success":true},"operations":[],"transaction_identifier":{"hash":"0x3249f2f7a13dff6694d38f66cac0a6e695aafbed4c4ce941ced6360bfd843d89"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x058076f9cb48a47131f4e841d068c0a333a71c2018261118dd3a9bfc0bbe8900","index":87244},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000002f22f39e3e8324e2683e851b7ef0cd1b8ba4b77a6ee2ea8b6b","index":2408995},"confirm_microblock_identifier":{"hash":"0x5f6d7744bea3b57f035dbbc76774a53968c79f2306391d01719338db195ec13d","index":1},"pox_cycle_index":389,"pox_cycle_length":1050,"pox_cycle_position":544,"stacks_block_hash":"0x8a62187d41f2b3bc3f8fa5867fc2c0af23bcc2a0db1ab99d14449049efdad9b0"},"parent_block_identifier":{"hash":"0x54508b4860a27621b6fa4aa281fd8f9fac47b904b9ded4ec21ec2fe7b2772789","index":87243},"timestamp":1669739059,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6d6963636865636b)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":12000,"kind":{"data":{"args":["0x627463","0x6d6963636865636b"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040024da0a91ab07e014ad63796cdba16372bfec1e8e00000000000000020000000000002ee00000426fcfe4bdd0fc06b338513f49107f5b93c5eae8196ebf738f66ce98ef83d6aa30010e2c52e9f0bac0ab4e44082f588d6a5ad9393913dcbd09959fff2f244a58010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000086d6963636865636b","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000078d04686173680200000000086d657461646174610c00000004046e616d6502000000086d6963636865636b096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a24da0a91ab07e014ad63796cdba16372bfec1e8e","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STJDM2MHNC3Y055DCDWPSPX1CDSBZV0YHVH4YHVW","success":true},"operations":[],"transaction_identifier":{"hash":"0x75731d518c25b28f183153f4d4c45d5b90faa7166dd049355111cca6decf7849"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x3314be03d46cc6439cf85a7d29328276b1dc34e9cd0730ddfc56300c1378f56b","index":87245},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000001db1847afb824ae5e225cfbf1f5c9b629cf971d1d61f03810f","index":2408996},"confirm_microblock_identifier":{"hash":"0x1f6458d790f4f618a13956c9ecc19900b8f0b60e2577f573d71d5ed1fe6e939e","index":2},"pox_cycle_index":389,"pox_cycle_length":1050,"pox_cycle_position":545,"stacks_block_hash":"0xae983b04a8856f442e2f3b0f1352c92388e2a70f178fe430536e904e1bdf6374"},"parent_block_identifier":{"hash":"0x058076f9cb48a47131f4e841d068c0a333a71c2018261118dd3a9bfc0bbe8900","index":87244},"timestamp":1669739845,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6f6f757579747361776177)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167269,"write_count":2,"write_length":162},"fee":150000,"kind":{"data":{"args":["0x627463","0x6f6f757579747361776177"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040071587055a2f71a657784d9bd4e07bcd8f6a1959c000000000000000000000000000249f000019aec06edb998aefadb575a02cadb574f41f0ab271e9bcd295f15e5b8919a8a6a49a90486c2547369306ddc4ea549fa70e89ab47db5e063dd0e3b90a0b069a7c4010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b6f6f757579747361776177","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000078e04686173680200000000086d657461646174610c00000004046e616d65020000000b6f6f757579747361776177096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a71587055a2f71a657784d9bd4e07bcd8f6a1959c","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1RNGW2NMBVHMSBQGKCVTKG7QKCFD8CNKGNFXNQH","success":true},"operations":[],"transaction_identifier":{"hash":"0xbb1f55ae649dad1fe7bfdb6e20f1fd98f6df0bc56e44015916ea1d71b343000e"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x9ff3d2ac4b739d3c5e5509e1376caf49afde4f8105f4c57323132ce08a72b872","index":87248},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000002e175bad14868d48b2c53068f8d7186f1c6bbfd1b1619dffa4","index":2408999},"confirm_microblock_identifier":{"hash":"0xbcab436ffb7969ead2c3547880a1e997892d6ef6a3b08c299b970575e3f58f40","index":0},"pox_cycle_index":389,"pox_cycle_length":1050,"pox_cycle_position":548,"stacks_block_hash":"0x62b2e1b875a502c2ead2c6b2a9005200f4e169d040c7b5e81e31432b9b512f1a"},"parent_block_identifier":{"hash":"0x7dfc5519a62b0fbf1ca1a5c9a44720cb1cb3bb4e3977d5518032da05cece23da","index":87247},"timestamp":1669740872,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6a7662686a626a6862686a62)","execution_cost":{"read_count":16,"read_length":44016,"runtime":167308,"write_count":2,"write_length":163},"fee":3000,"kind":{"data":{"args":["0x627463","0x6a7662686a626a6862686a62"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":5,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040024da0a91ab07e014ad63796cdba16372bfec1e8e00000000000000050000000000000bb80001fcc460d250339a2552808d6291cc2a14eeec9dcd491f03917db686ff3efabc892a313c651ca5269db9c8f61504b7e387a346e80ba3cecd44d5b875a2d60534c2010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000c6a7662686a626a6862686a62","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000079004686173680200000000086d657461646174610c00000004046e616d65020000000c6a7662686a626a6862686a62096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a24da0a91ab07e014ad63796cdba16372bfec1e8e","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STJDM2MHNC3Y055DCDWPSPX1CDSBZV0YHVH4YHVW","success":true},"operations":[],"transaction_identifier":{"hash":"0x949a63592b1db411f3ea28d8e64f2bfbf5c96666439d169d5cadd998484ea382"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x8aa6774eb2d409727be43c666735d43410b054d60b3d2d4862847ad19c524b93","index":87252},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000ba57127a6cac89bacb165fbe3abf91f88f83a1b07156de53c6fc5c4a","index":2409005},"confirm_microblock_identifier":{"hash":"0xcb1753afacf469af6ae873967fbf07542e203180472af9107a53780ada610ffd","index":3},"pox_cycle_index":389,"pox_cycle_length":1050,"pox_cycle_position":554,"stacks_block_hash":"0x3bdb497d464e6838fa1e38ee0f920d86a21a7a9db1ecf48b8eb1b727cbeb99c1"},"parent_block_identifier":{"hash":"0x93f5d53f0061b897726d200f42497a100301e592a4c4ed3390806aee162faf75","index":87251},"timestamp":1669742887,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x797472657374)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":15000,"kind":{"data":{"args":["0x627463","0x797472657374"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":8,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040024da0a91ab07e014ad63796cdba16372bfec1e8e00000000000000080000000000003a980000c9670a94c51942ec6a04e3ef341a21a6d04e5b5062a5a8d17b1dca805fd07e624cddeba0d036ecd045d58e10ee93af7e3d730827f9a44e559c64b2fbea8a6890010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006797472657374","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000079204686173680200000000086d657461646174610c00000004046e616d650200000006797472657374096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a24da0a91ab07e014ad63796cdba16372bfec1e8e","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STJDM2MHNC3Y055DCDWPSPX1CDSBZV0YHVH4YHVW","success":true},"operations":[],"transaction_identifier":{"hash":"0xc095346d1fd8b0cb2e1ef4837f808ec66d000896d9158cf761846ea2b64ede64"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x29bf942dc23418306234d20442c902802bc0eff0b91df3abb80005f0424a730c","index":87256},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000698162d3e74ebcb3159294b2a760d8df1cc3cc12c0e363186","index":2409009},"confirm_microblock_identifier":{"hash":"0x185d06c06ed3e626b8cecccb76e16dfe322eccacaa4534f0255eb6ab337d9580","index":1},"pox_cycle_index":389,"pox_cycle_length":1050,"pox_cycle_position":558,"stacks_block_hash":"0x377062d64ee23bf19c163303ae41ad53b1ef1576938ffb71cf9b1e9ecc29497c"},"parent_block_identifier":{"hash":"0xfb90a49e83f0b3894eca648695443ddc341ab97de57df09b8b0fd59dbb484a04","index":87255},"timestamp":1669746021,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x78637a7876626e636d6777)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167269,"write_count":2,"write_length":162},"fee":24000,"kind":{"data":{"args":["0x627463","0x78637a7876626e636d6777"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":11,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040024da0a91ab07e014ad63796cdba16372bfec1e8e000000000000000b0000000000005dc0000143897c180562a9c8c6cb04c82843d9a6fe7a10434d1f3dd7cedac4d8612a2a9831057d4b06ddd95ca323c424e3aa59b8e40c656cbcbcb13ebb23ad383a53a415010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b78637a7876626e636d6777","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000079704686173680200000000086d657461646174610c00000004046e616d65020000000b78637a7876626e636d6777096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a24da0a91ab07e014ad63796cdba16372bfec1e8e","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STJDM2MHNC3Y055DCDWPSPX1CDSBZV0YHVH4YHVW","success":true},"operations":[],"transaction_identifier":{"hash":"0x8f3828f6e2dc3983ef491cd8cc71165d7d46132b9d7ca13d8b0ba24a17506ec3"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xc1aa9cb983ae782e273a86302a30d599700f2944233ae1f5702420370758f0c1","index":87267},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000c614857d477c922ca77b674243ab6ea360f45abfea5375fd4c7fd6eb","index":2409021},"confirm_microblock_identifier":{"hash":"0x37238854af13a77d9c966763cdb61e7ea5e805d66b1249da1c62bfc1a3f8d25d","index":1},"pox_cycle_index":389,"pox_cycle_length":1050,"pox_cycle_position":570,"stacks_block_hash":"0x8961bacd513b01cd3a8ea1d51c6ebc7f6a3c71d5f5a394de55b02f8bca827b39"},"parent_block_identifier":{"hash":"0x8ae0833e3863b5236f210c450ab4d9e4599c14ce8beb47b58f7edbd1d55bfe2b","index":87266},"timestamp":1669750733,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6975797472657361647863666776)","execution_cost":{"read_count":16,"read_length":44022,"runtime":167386,"write_count":2,"write_length":165},"fee":6000,"kind":{"data":{"args":["0x627463","0x6975797472657361647863666776"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004005d35a7e8d4600d0285ec0b3a97f764c750e415d4000000000000000000000000000017700001d8ee7b28b8fd3003b18955215dfc43ecd3fa93640be65bc9b65e1fa93ec830cd19f933b8ff63cd2e3ea831da78299b28fc3a4a51d0e4444283f7750112697841010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000e6975797472657361647863666776","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000079a04686173680200000000086d657461646174610c00000004046e616d65020000000e6975797472657361647863666776096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a5d35a7e8d4600d0285ec0b3a97f764c750e415d4","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1EKB9Z8THG0T0M5XG5KN5ZQCK3N1S0NTJ3R9R4W","success":true},"operations":[],"transaction_identifier":{"hash":"0x036a4e5cc8f942c62a69d059084ba793e43b0e333b606d578e7c783ecd4f3fd5"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x45e01bd8abc8d7fdf45f1baa727234500f6ee2be3c449e3f30612a86b3e39c4c","index":87272},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000002a1c7bb094b9330bbfdfe2928bbba3f63b8ac56166edfb7b99","index":2409027},"confirm_microblock_identifier":{"hash":"0x4ca7ef482aa50380f0d9573545cb7c32789f32aa0bf09a9fda9a6df2ad6f02ed","index":4},"pox_cycle_index":389,"pox_cycle_length":1050,"pox_cycle_position":576,"stacks_block_hash":"0x9df1d0922d5ff5b20975f1eb3597598e280be1e57b2816c1ba86ae17227ceb14"},"parent_block_identifier":{"hash":"0x2eb19cc47a9d808a3865b9deb67b8d777d670c00b1e3b5d79ac895f7183f02ef","index":87271},"timestamp":1669754689,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x646f6d61696e)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":3000,"kind":{"data":{"args":["0x627463","0x646f6d61696e"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":7,"position":{"index":3},"proof":null,"raw_tx":"0x808000000004003da601439aa4bd4a6c3181956d05322fa915211100000000000000070000000000000bb80000fa47d0e00c4a429a3021d7927ff5c10cbe0adfc9c00442113cd59aaf53ddb93a7a9a8b477698db7c00d0ce6ca7d4b6e9962bd3ba7ae15f363fac217ca75cb218030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006646f6d61696e","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000079f04686173680200000000086d657461646174610c00000004046e616d650200000006646f6d61696e096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a3da601439aa4bd4a6c3181956d05322fa9152111","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STYTC0A3KAJBTJKC660SAV8568QTJ59124HYXP5R","success":true},"operations":[],"transaction_identifier":{"hash":"0xfa55c052bc334432d242812f34e397d16c48319bb6562c3d6c1088d84b2c28e7"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x852fde1cc3d443bd83b2b4e4f139c9ecf12e08ca2e9eb6d19dec178e2622a696","index":87275},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000002206f15c09d9d9750d1f2bf5520302e7bd0dfff44ff46bc5a3c2","index":2409031},"confirm_microblock_identifier":{"hash":"0xf40a6d82c99d8d85c426252b6964dfd60d783561238119802481de0e983734b0","index":4},"pox_cycle_index":389,"pox_cycle_length":1050,"pox_cycle_position":580,"stacks_block_hash":"0x4dbeafae344528350ca95bae4ba3d46680363d184da0862db80d702acb127e99"},"parent_block_identifier":{"hash":"0xf608cb8e93500e8abb621efc04dc6946f786e7ab04fe59112ae7dbd5e62fccc5","index":87274},"timestamp":1669756282,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7465737464)","execution_cost":{"read_count":16,"read_length":43995,"runtime":167035,"write_count":2,"write_length":156},"fee":3000,"kind":{"data":{"args":["0x627463","0x7465737464"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":1,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004004f3acca619f08db7d1908d94fa8caea9b267be8700000000000000010000000000000bb800016a61508d840532f20aee34290af5d4479d024059b336eee820f44812ac85a4c726798cb75038bbaa972cb7c871d28d194cb9ffb06372ddac986bbc27b4107982030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000057465737464","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000007a404686173680200000000086d657461646174610c00000004046e616d6502000000057465737464096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a4f3acca619f08db7d1908d94fa8caea9b267be87","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST17KNK5637R8VDYHJ26S9YMCNTMV4SXYGW42YG81","success":true},"operations":[],"transaction_identifier":{"hash":"0x9997f3d38b76434fc0c9e1846619ab7438bdc4cf317c78da919b525640603547"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x44ccab45fd3019eb5113aa992554fcb7242c2a2eff21e520dd9f063b53c9f3a0","index":87282},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000001805a52975eee1cbe39d8345ad8398517cf7c5a6dbf7592007","index":2409040},"confirm_microblock_identifier":{"hash":"0xadeff9820a06c1faa8c8ee0b7e86f3b621ffdb36032aba82df7eac2621ee2d67","index":2},"pox_cycle_index":389,"pox_cycle_length":1050,"pox_cycle_position":589,"stacks_block_hash":"0x1b92a26ee2d0a31fb07a18f05ba597ea97c6a662a2e6fe294a24f13c66259057"},"parent_block_identifier":{"hash":"0x04593f45e3299a2385c75fc3abb11ac71665422e7c5426a7691c74f4a27dd509","index":87281},"timestamp":1669761829,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x63736b6c646a766263736b6c6a64)","execution_cost":{"read_count":16,"read_length":44022,"runtime":167386,"write_count":2,"write_length":165},"fee":75000,"kind":{"data":{"args":["0x627463","0x63736b6c646a766263736b6c6a64"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004002f7ebdd66c450524da9ad9136daad7a982286555000000000000000300000000000124f800007a017248363577263c1bc9a0de3619009bc6a93a3ede31b35c7e3e84281ed07729f0b01ba21627a321e9165e5fbc9e980b92278c5a1bd8a7d7788480c59ed330010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000e63736b6c646a766263736b6c6a64","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000007aa04686173680200000000086d657461646174610c00000004046e616d65020000000e63736b6c646a766263736b6c6a64096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a2f7ebdd66c450524da9ad9136daad7a982286555","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STQQXFEPDH2GA96TKBCH6VDATYMR4A35APHCS7Q9","success":true},"operations":[],"transaction_identifier":{"hash":"0x90d74b07ac0882286f7cdc4180edf29f3748806bc186ce788d8650fdc3a277c0"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x63736b6c646a766263736b6c6a64)","execution_cost":{"read_count":12,"read_length":43993,"runtime":132016,"write_count":0,"write_length":0},"fee":15000,"kind":{"data":{"args":["0x627463","0x63736b6c646a766263736b6c6a64"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004002f7ebdd66c450524da9ad9136daad7a98228655500000000000000040000000000003a980001b4eb72ab3000321a0ec7e44d8b96418ac98a8eee67b38a039986df91ae5e4f9120cffb286d6d7e7b4c2ed81094b5e83cc619d9377b8143e6bbcc2823ae7281d3010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000e63736b6c646a766263736b6c6a64","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"STQQXFEPDH2GA96TKBCH6VDATYMR4A35APHCS7Q9","success":false},"operations":[],"transaction_identifier":{"hash":"0x01f64217ae4a64871ff87a6299488e0f14172e2b15f137ba3d0d449f0d37b497"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x0c97b76ba4cf3509d53736c8601fded00940d15eca0bb02cbd47371695c282af","index":87284},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000324ec8f9e38679853f82097096e249f0b16ccc593de5e22280","index":2409042},"confirm_microblock_identifier":{"hash":"0x456e0b31eb7802d2ba4f3e7614f1b00e2b4899fabe8ca354a8e32d70a0ebb912","index":0},"pox_cycle_index":389,"pox_cycle_length":1050,"pox_cycle_position":591,"stacks_block_hash":"0x26efc3132b4e6664eb3726cc77fe341fa7ce2096beac061b53dfe34117812a5a"},"parent_block_identifier":{"hash":"0x15d1393db590aa5a004a851eb817caf44bf26a13cd9ae592cd108368a4417f44","index":87283},"timestamp":1669762393,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x63617363736363)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":3000,"kind":{"data":{"args":["0x627463","0x63617363736363"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":28,"position":{"index":2},"proof":null,"raw_tx":"0x8080000000040009c5ad860cb9f2d893abb2f9d692c402474d8054000000000000001c0000000000000bb8000189ba354ecf1b96a2b86297d2708759699022e9d694ccfe3f02d033e08f242cfa155f7bfe53f219700bfa48ffc874d500eacdab9ec626106d5677dc3d7f07a900010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000763617363736363","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000007ad04686173680200000000086d657461646174610c00000004046e616d65020000000763617363736363096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a09c5ad860cb9f2d893abb2f9d692c402474d8054","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST4WBBC61JWZ5P4KNESFKNMJRG14EKC0AK7BVJSX","success":true},"operations":[],"transaction_identifier":{"hash":"0xe7be16eba5841b2911109031f3749e07f8e20df497f6bf89465406eb09920650"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x78bae2c906a16dd9db8d44f5fec17b818020260f3ae1c6d08ff915aa846bdd15","index":87285},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000294ca0a1e4e352ef7ed9e9080472086f6aa6f20cda625f9f533c","index":2409043},"confirm_microblock_identifier":{"hash":"0xbf6c5dfea57593ce0dfbc252d0fe570820d2b79e1aedd83852b49f35ec3781cb","index":5},"pox_cycle_index":389,"pox_cycle_length":1050,"pox_cycle_position":592,"stacks_block_hash":"0x49457c5ed2456c0c50749d885e8a45a0982bebcfd14f056c683c30a543d504b6"},"parent_block_identifier":{"hash":"0x0c97b76ba4cf3509d53736c8601fded00940d15eca0bb02cbd47371695c282af","index":87284},"timestamp":1669762706,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x69757974726577)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":30000,"kind":{"data":{"args":["0x627463","0x69757974726577"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":6,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400c59ee6ff16df50b45f7888a159b22835ac6db98f000000000000000600000000000075300001f69172780d8dc1042b43f5d15ef437ff4f6cf73f25e14b2f47c666759c6f21cb5685d287918c8598136e5d47abef994834a163c961773b1808eeb43c202f31f3010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000769757974726577","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000007ae04686173680200000000086d657461646174610c00000004046e616d65020000000769757974726577096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac59ee6ff16df50b45f7888a159b22835ac6db98f","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST32SXSQZ2VFN1D2ZF24A2PDJ50TTRVDSHX6W32MG","success":true},"operations":[],"transaction_identifier":{"hash":"0xa6c572c49ae0fe966268214e945627928df7471584f0792c8102bad7cc54ba90"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xcf12cd22da8fbcf691e494b0dfdbdc9c7c63734e643ac3b59bde05e05621c1c8","index":87286},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000040eab398a7e143ee8c993d7f849ce87a98fc0762ee6dde82ff","index":2409047},"confirm_microblock_identifier":{"hash":"0x43678d1475d9d9c23d304682132672206c3265ec079d5db85e57aa51fcf20ccf","index":5},"pox_cycle_index":389,"pox_cycle_length":1050,"pox_cycle_position":596,"stacks_block_hash":"0x781722b21b77b2a7c17ef4bcf0a0bba08cd9900b094888dc05485dbe3f525870"},"parent_block_identifier":{"hash":"0x78bae2c906a16dd9db8d44f5fec17b818020260f3ae1c6d08ff915aa846bdd15","index":87285},"timestamp":1669763909,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6f706f7069757575)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":15000,"kind":{"data":{"args":["0x627463","0x6f706f7069757575"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":12,"position":{"index":2},"proof":null,"raw_tx":"0x8080000000040024da0a91ab07e014ad63796cdba16372bfec1e8e000000000000000c0000000000003a980000af69f21acce45f0823fc921f978e5e27bb5e1b79a6893142845ae2f25a17345125d712cb0333a4d72ab1de3847cf86352bee3c38ceab0dc5496a876a9d0e51be010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000086f706f7069757575","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000007b104686173680200000000086d657461646174610c00000004046e616d6502000000086f706f7069757575096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a24da0a91ab07e014ad63796cdba16372bfec1e8e","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STJDM2MHNC3Y055DCDWPSPX1CDSBZV0YHVH4YHVW","success":true},"operations":[],"transaction_identifier":{"hash":"0xd447f895f67dc2411aaa386b1ed1dca7bdbeb8206a7ccf72398f83d55c3e4adb"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xc47f80349151a9f4e075713cd6f280e5c8904734b168efeb5b5b4632d9ed6ac4","index":87333},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000003b2e29df8a6876f44fd9a4a632d15c460be885d31be406b490","index":2409102},"confirm_microblock_identifier":{"hash":"0xe2b44282d1285605283083aee4a23f4f901478b5a7956a5ac3f47134c42751b1","index":1},"pox_cycle_index":389,"pox_cycle_length":1050,"pox_cycle_position":651,"stacks_block_hash":"0xb6116566303325698339bc4a9e45491aa393e717077a68a202ed73c25736dad6"},"parent_block_identifier":{"hash":"0xa02d6a223609d30f60197eb2bb2ff5fd1601c6f9be07f984d9462c0d02e39b12","index":87332},"timestamp":1669796276,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6f69686a626a6b62)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":15000,"kind":{"data":{"args":["0x627463","0x6f69686a626a6b62"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":15,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400348a3799c6e7d92dba88a9820460437bcabf02c5000000000000000f0000000000003a980001a8d1730402d6d9c36ff8ab1996980af165c0d0dceeded402adc78d30853b17de0e4403d34378f47d73cec4bbe5b498f896d0e42bc064d9d6aa6556208382224a010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000086f69686a626a6b62","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000007b504686173680200000000086d657461646174610c00000004046e616d6502000000086f69686a626a6b62096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a348a3799c6e7d92dba88a9820460437bcabf02c5","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STT8MDWSRVKXJBDTH2MR41308DXWNFR2RP2D2QKQ","success":true},"operations":[],"transaction_identifier":{"hash":"0x39c93a70fd34889a73dd7cb2b84d08a59ccac2f8702174fcaf3ee7e96d17421c"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xcf14ace546c99e7e94ee99c88e28d7dc4672eda1797cc1e9abdecdf195834b1b","index":87337},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000002811e882541c49f5731af8c36a9af10b85bcb04b5ac6b9828f","index":2409106},"confirm_microblock_identifier":{"hash":"0xcc23185b12edfb77cbd100976981d60bbcc71042a3e4e52a739054b23ba35329","index":1},"pox_cycle_index":389,"pox_cycle_length":1050,"pox_cycle_position":655,"stacks_block_hash":"0x738ff1dc7e4ccc51ea768e4b869c71364b22b8df67f4a8be4e505928766bfbd0"},"parent_block_identifier":{"hash":"0x21903503a2c274b8ab77ff0cdd678e08a92f115c9af2400cf32a4cec5149fd1f","index":87336},"timestamp":1669799082,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x612d646f6d61696e)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":3000,"kind":{"data":{"args":["0x627463","0x612d646f6d61696e"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":45,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400ef29ee95fc9093bd6d968fec5f005495939d86a8000000000000002d0000000000000bb8000123ce1a53098a32ba6f2f4d71016add2fe717804ad9d5d9188a29bffaf554f1ef73d4a61722c5975caa30c9c39e75b3abec993888f6e47bc43e71c30ec1ea08d3030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000008612d646f6d61696e","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000007b804686173680200000000086d657461646174610c00000004046e616d650200000008612d646f6d61696e096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aef29ee95fc9093bd6d968fec5f005495939d86a8","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3QJKVMNZJ897FBDJT7YRQR0AJAS77C6N04SVV51","success":true},"operations":[],"transaction_identifier":{"hash":"0x2d9728d6a004efe4e6b814b02ab49cbefe4b59bca09468a0bd871c9c41730632"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x51ce4761b2169f3fdfec73e574e832c0b09dadec7bde35f22a0fb6f29d02e6ad","index":87347},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000bd7810760ad91c48105052635f350362fe642f3d703d549e67f86cb2","index":2409118},"confirm_microblock_identifier":{"hash":"0x4e28b3aa8c5a18f6971cf78406aad8e9fc5bda62a232812e3617c50bbcda9697","index":3},"pox_cycle_index":389,"pox_cycle_length":1050,"pox_cycle_position":667,"stacks_block_hash":"0x6e4a0026c19fc28d4a2fe51690d81f0b4c7a84916987ffa1ae658925eccb02d5"},"parent_block_identifier":{"hash":"0xe52761ffc0ae45216dc03f622024cd707b657bc53f45521330888cf18788edcd","index":87346},"timestamp":1669806214,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x706c71636e6e)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":75000,"kind":{"data":{"args":["0x627463","0x706c71636e6e"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":20,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004009460fab3ec3b8f4d1f962b15e6bf97835ec6798c000000000000001400000000000124f80001349648513c4fc58d0ada0a97539d3d6714c0ca5057cac47aa2e891e329208aad51c472805498cddb25b1d0bd37dd3fe12aad68258305737cf4e9f925eef4a5ec010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006706c71636e6e","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000007c004686173680200000000086d657461646174610c00000004046e616d650200000006706c71636e6e096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a9460fab3ec3b8f4d1f962b15e6bf97835ec6798c","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2A61YNKXGXRYK8ZJRNHBSNZJY1NXHKSHHWF4X1D","success":true},"operations":[],"transaction_identifier":{"hash":"0xe895bf59aa6b54b515cf090a88433e448e693d147790765ce19804823d57f845"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x9ebd8261edde2023c2c0e909470615eb2ae6498f570f7d3d21a53b6459eceb17","index":87350},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000892920d2a2f716d8307d7c319d76b1ca4803e750aafda0cf19fa874d","index":2409121},"confirm_microblock_identifier":{"hash":"0x74d8ea9f233dab761f46f765389123cc393a929b4be6eb0b4118ac41cae8d309","index":2},"pox_cycle_index":389,"pox_cycle_length":1050,"pox_cycle_position":670,"stacks_block_hash":"0xc6385dab991aa563ac5b5833d2307c23cfdccd94b9c4eac3c949ec44fb9f5237"},"parent_block_identifier":{"hash":"0x30f1b436b024ec6aba4fe856f5b140d7d12046cb06e0e489d9b5a8eef7155d03","index":87349},"timestamp":1669808323,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x696a6f68696f69)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":75000,"kind":{"data":{"args":["0x627463","0x696a6f68696f69"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004007075c88ba7e72f517b90acd5d6bbc7835e17019d000000000000000000000000000124f80000fa05b35fbe62fdd2a0aec73e796761e4632abee15e5b6253b6189893ceac0f60060f54286842e294ffaa70ec2a99e79bddbba66707ab960f911047902c6cf1bb010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000007696a6f68696f69","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000007c104686173680200000000086d657461646174610c00000004046e616d650200000007696a6f68696f69096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a7075c88ba7e72f517b90acd5d6bbc7835e17019d","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1R7BJ4BMZKJYMBVJ2PDBNNVRY1NW5R1KPABFN83","success":true},"operations":[],"transaction_identifier":{"hash":"0x5591293b4c87a1487e1f236de59df5363a08878ebad193a7a1249b321ca9ae86"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6173646663787a6275)","execution_cost":{"read_count":16,"read_length":44007,"runtime":167191,"write_count":2,"write_length":160},"fee":15000,"kind":{"data":{"args":["0x627463","0x6173646663787a6275"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400e2c8eca76a6f40a2e6c41c02c4333c353e8e888500000000000000000000000000003a98000070a2967166fbdb13035dad7f9d66a18cd5769bf23554850136daa1c4b47911f12b8ea5265dc8e988f9675bfc5e5c912c7b27e9834b3a82b1e9c7ce478120ae9b010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000096173646663787a6275","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000007c204686173680200000000086d657461646174610c00000004046e616d6502000000096173646663787a6275096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ae2c8eca76a6f40a2e6c41c02c4333c353e8e8885","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3HCHV57D9QM18Q6RGE05H1K7GTKX3M8GQZS28J6","success":true},"operations":[],"transaction_identifier":{"hash":"0x1ca7e12a12ec862bea9dee5009baa01f10bbf63134059c9162a8266c83860d38"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x3d73e6fb7f950b95f77d70cdd0b12fa26d5e0e377ef027acac06bcdeacef4490","index":87354},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000121886a8e858db11c3fdc8733ecf3ec8175fb1c3bc9335a985","index":2409125},"confirm_microblock_identifier":null,"pox_cycle_index":389,"pox_cycle_length":1050,"pox_cycle_position":674,"stacks_block_hash":"0x6bfc0762074e2d414933e9a79b2b920081c6d810e1294114a58f31e4bf85e752"},"parent_block_identifier":{"hash":"0xae32b383886fe2f366a19ca26b7b2c2fbc7d786b91c2acb3f5c1da719321e3a7","index":87353},"timestamp":1669812090,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x73667177656663)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":75000,"kind":{"data":{"args":["0x627463","0x73667177656663"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004008435c694e51024d978ea3fb42971d74b8ff3df35000000000000000000000000000124f80000329b294c2d876293bad6fb3a00421718c5133b2506fad865aa4a8e73c79fab382277fcca27994aa20432eefe60192e40c9b05593358ea2a1bdeade1eca5816bd010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000773667177656663","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000007c504686173680200000000086d657461646174610c00000004046e616d65020000000773667177656663096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a8435c694e51024d978ea3fb42971d74b8ff3df35","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST223BHMMWM829PBRX8ZV8ABHTX5RZWYZ6PTJCWC5","success":true},"operations":[],"transaction_identifier":{"hash":"0xd961a0345c6085e30086d5e4926554fc3fa1ab3bc22aad50e36d2eafbdd34734"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x9e6cf500ead62b34abfd887f46bc4fb06ca2a3f6ab6128e2f1de602a7d23124b","index":87357},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000622dab80d78e53c886d889acf51752cb74f682f7b53a028f4cfa57b5","index":2409128},"confirm_microblock_identifier":{"hash":"0x3ba8f9bd43005ebea0b69a3c8c19538df0c8c68040dc6fc82be05b280d8dfe8f","index":2},"pox_cycle_index":389,"pox_cycle_length":1050,"pox_cycle_position":677,"stacks_block_hash":"0xbd44c97b66abe8d8ca4743ad405125d90fd3cbbbe7de305ef630fec49d2a7c89"},"parent_block_identifier":{"hash":"0x634667f62283b75399effd42993bb0c30a45f889ac41d3c26e609905a2475e12","index":87356},"timestamp":1669814589,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x73647663637a7672)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":6000,"kind":{"data":{"args":["0x627463","0x73647663637a7672"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400e2c8eca76a6f40a2e6c41c02c4333c353e8e8885000000000000000400000000000017700000cc8d21037ab0bfaf738f3ae232285c8a71a029ec77bf31d71efeecc2e839a9ff0bc172c57ba5d5626792c04e462fa6a3c18975846b94d566f3f70b087cbe1527010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000873647663637a7672","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000007c904686173680200000000086d657461646174610c00000004046e616d65020000000873647663637a7672096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ae2c8eca76a6f40a2e6c41c02c4333c353e8e8885","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3HCHV57D9QM18Q6RGE05H1K7GTKX3M8GQZS28J6","success":true},"operations":[],"transaction_identifier":{"hash":"0xb4612c94fb610ff7a8edac2a2de99413b17ac950c24d76ff75779653ded8dfec"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x28c099f086b07e89575e050fda5edbbc39a49ee8fb30b811260890d8ae343cbb","index":87358},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000df75cc125c0b368b1448efe7c3e99d03b8b561c4e0c6e8badc37","index":2409129},"confirm_microblock_identifier":{"hash":"0xcb719ec609a31a8fb32f462ac8bbc070c88ea938cd2b7b18c5cd5378d66de315","index":2},"pox_cycle_index":389,"pox_cycle_length":1050,"pox_cycle_position":678,"stacks_block_hash":"0x0588f6ac17759c1a9494044fa7c794507d0880d180d83d3c3917b808d4da2820"},"parent_block_identifier":{"hash":"0x9e6cf500ead62b34abfd887f46bc4fb06ca2a3f6ab6128e2f1de602a7d23124b","index":87357},"timestamp":1669815794,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x617871776563)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":6000,"kind":{"data":{"args":["0x627463","0x617871776563"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400d5c6df928e2d295d44682c942c230f42ce64f56f000000000000000000000000000017700000d1db496883db73d1c35aff5888c039b5b54b2b29ec0c5fc05ea7a6b5dc9b870d586f782497dcdc83d75574faf19f7b9636fce8e44ea61c5779d8e1639a86970d010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006617871776563","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000007ca04686173680200000000086d657461646174610c00000004046e616d650200000006617871776563096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ad5c6df928e2d295d44682c942c230f42ce64f56f","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3AWDQWJHRPJJQA4D0P98B131X1CWS7NDW9X3S18","success":true},"operations":[],"transaction_identifier":{"hash":"0x6dc857eec4435d0a53557c1cbf8b042e7e9b0f4ad1200093a838f77dce5de726"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x7f81a0e03800f0718e2fa6765b4ae348eb6c4212028add1049e62a58deadaaba","index":87367},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000001b2e217482aa8428140f1759e1bdf160f1eadb2825e5dd588a","index":2409138},"confirm_microblock_identifier":{"hash":"0x636982798acafc39e2c8ae611d3ee5df1ffaaf57e16256e98bde40248e281730","index":2},"pox_cycle_index":389,"pox_cycle_length":1050,"pox_cycle_position":687,"stacks_block_hash":"0x57261b0e5645b1ad341d7e1737ab625fae17300bd80ed7ebc89c379a0957641e"},"parent_block_identifier":{"hash":"0x972b4e168d5faa654ad8f7e99e5bd2144bf9a546ef1fa5c01e021cfa063bc40e","index":87366},"timestamp":1669823277,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6e65776e6f6e6f)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":6000,"kind":{"data":{"args":["0x627463","0x6e65776e6f6e6f"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":3},"proof":null,"raw_tx":"0x808000000004000655085431e875f55cfa5b60581b22d9a623805800000000000000000000000000001770000062f528406a7159f46b4621bd694276dc89ebd89907551204285dcdc76e403532394acee7d8f012fc42d72530bb984dca71608539e5afb59889428a9f043c344f010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000076e65776e6f6e6f","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000007d404686173680200000000086d657461646174610c00000004046e616d6502000000076e65776e6f6e6f096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a0655085431e875f55cfa5b60581b22d9a6238058","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST35A22M67M7BXAWZ9DP0P0V4BCTC8W0B15WRXMP","success":true},"operations":[],"transaction_identifier":{"hash":"0x392dbd60a3320b66148ce75050312defe205ab42673e1167620076c5c2578daf"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xa2fd784f753dd275c69a60a51e36f4c1dcfb39f7fb759e6df0033bacfb0c571a","index":88293},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000048947af3b196adbb65c543a2bad71b8c1bcb11a53365b6fd5ae4","index":2410213},"confirm_microblock_identifier":{"hash":"0xc9e5818e1b46bc96a26eeed24c5c2cc689db75092d2b86f609efc582dcb8ab66","index":4},"pox_cycle_index":390,"pox_cycle_length":1050,"pox_cycle_position":712,"stacks_block_hash":"0x45a802dee1919813f742cc9634bb7eeb2912d9e54154a256fec4525a0743ac9b"},"parent_block_identifier":{"hash":"0x10f4545ece0473a43ecc22c573afecf655add3608b0b01108abe0af213085619","index":88292},"timestamp":1670419075,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x617378716364737861)","execution_cost":{"read_count":16,"read_length":44007,"runtime":167191,"write_count":2,"write_length":160},"fee":6000,"kind":{"data":{"args":["0x627463","0x617378716364737861"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":8,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400e2c8eca76a6f40a2e6c41c02c4333c353e8e88850000000000000008000000000000177000017a7473a58f8b407eec2fc6ded9ba0b76c2dd5d3a2fed2456bca7054707be3a6248b1c6c5f8b589f804a81d01aaa48a0af46c47d1d5e946e86ca6edfa5f482f69010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000009617378716364737861","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000007dd04686173680200000000086d657461646174610c00000004046e616d650200000009617378716364737861096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ae2c8eca76a6f40a2e6c41c02c4333c353e8e8885","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3HCHV57D9QM18Q6RGE05H1K7GTKX3M8GQZS28J6","success":true},"operations":[],"transaction_identifier":{"hash":"0x517421812cc1d3e7bd47d679c9f387792ea2324d1fc70f6e8a7e5e8ca3d055d7"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x52b9753abdd2bb9d18052f5359584024a99d2a0465996265b821f3e6aa4f6a00","index":88294},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000024f820e201aa815444fc46e638da9cc645e23b4bd17f741f1c","index":2410214},"confirm_microblock_identifier":{"hash":"0x25bc51f2515130e7ac60843efdc59c1ba23d4273a103ea49ffca4036a05c77e1","index":0},"pox_cycle_index":390,"pox_cycle_length":1050,"pox_cycle_position":713,"stacks_block_hash":"0x53c195a80b8c108fd59014445ca0287cd4ac9f1650c504e77a20093fc7f4aedb"},"parent_block_identifier":{"hash":"0xa2fd784f753dd275c69a60a51e36f4c1dcfb39f7fb759e6df0033bacfb0c571a","index":88293},"timestamp":1670420276,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6e65776e656e6f)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":3000,"kind":{"data":{"args":["0x627463","0x6e65776e656e6f"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004000655085431e875f55cfa5b60581b22d9a623805800000000000000040000000000000bb800016980ba2f59dd603e3261b578eb466a32da5b602eb60c55986b2e648ea2d063da192e88382f8f0e1c9a2487bc5fe8a9a3c1dd8573628a0dd8c5fb50eb7f19885b010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000076e65776e656e6f","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000007de04686173680200000000086d657461646174610c00000004046e616d6502000000076e65776e656e6f096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a0655085431e875f55cfa5b60581b22d9a6238058","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST35A22M67M7BXAWZ9DP0P0V4BCTC8W0B15WRXMP","success":true},"operations":[],"transaction_identifier":{"hash":"0x4736f394e161b9600bef1f30053f1b64ad2448fd7c25ca4c6a789aab7949e95e"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x5508175049479761ec12e2cb31ac5d08ae85748e0308ee847616b485725efa5c","index":88395},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000010add23de4c09b7a1f97f899ac174eb06bf08889fd25d251c1208","index":2410332},"confirm_microblock_identifier":{"hash":"0x26a134e2c579ba4cf479ca55160fc390d8aa589a8b92769c94e079143e5ce869","index":3},"pox_cycle_index":390,"pox_cycle_length":1050,"pox_cycle_position":831,"stacks_block_hash":"0x69dccb2f282e276b2c5d230181284c812762aa34643c7e7de09120cf19c1d717"},"parent_block_identifier":{"hash":"0xdebc8b50ec399d17d5a3a2f398699183013e545b38723b7fca4f1e712d391ce7","index":88394},"timestamp":1670481000,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7a78617371)","execution_cost":{"read_count":16,"read_length":43995,"runtime":167035,"write_count":2,"write_length":156},"fee":150000,"kind":{"data":{"args":["0x627463","0x7a78617371"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":1,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004004797b468fa8a216a901c8200c5800d3bfcf5a4d4000000000000000100000000000249f00001621742fa675a0a27d64573822b7aa36cfb9ae794ad431ea105e64b1edc29a1394c7c7d6254799e938ca20818d4fe442b644636a8709bbe764050dad4c05d17af010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000057a78617371","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000007df04686173680200000000086d657461646174610c00000004046e616d6502000000057a78617371096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a4797b468fa8a216a901c8200c5800d3bfcf5a4d4","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST13SFD38ZA522TMG3J101HC01MXZSXD4THEW0HF3","success":true},"operations":[],"transaction_identifier":{"hash":"0x4e9d86125227329aee81c4c57030cc14004dcc4eac821ea67e35f401f6edcf8c"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x1c67c432198fc71f26ce0b2450bf88f64e3364db4343c125eaacf0249cd62e5c","index":88521},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000079c43c2f30ee0b2c87c869a303a1534bb5fd30a82134888b1d47","index":2410470},"confirm_microblock_identifier":{"hash":"0x0411f56179eb2ef048691113742f90ea90df6ae9936800653d0173bd7462227d","index":1},"pox_cycle_index":390,"pox_cycle_length":1050,"pox_cycle_position":969,"stacks_block_hash":"0x014de78fbe8fb3159dce44e87b86980ca81de2ec82228b29ebff92924272814b"},"parent_block_identifier":{"hash":"0x447bd1e029b92122d15477094b311d82d58182a2049247f987366ac71ffcbae5","index":88520},"timestamp":1670565488,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x636f6c6479)","execution_cost":{"read_count":16,"read_length":43995,"runtime":167035,"write_count":2,"write_length":156},"fee":3000,"kind":{"data":{"args":["0x627463","0x636f6c6479"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":9,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004004797b468fa8a216a901c8200c5800d3bfcf5a4d400000000000000090000000000000bb80000c46aa34d091a94d8d8eee14a1da382e62867e34e000aad3e7e7fed72abb7acc90c8d9d7dec8d33d8a6f33eee87f266665215961619381e5ad14c8c9d4892bc0e030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000005636f6c6479","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000007e704686173680200000000086d657461646174610c00000004046e616d650200000005636f6c6479096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a4797b468fa8a216a901c8200c5800d3bfcf5a4d4","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST13SFD38ZA522TMG3J101HC01MXZSXD4THEW0HF3","success":true},"operations":[],"transaction_identifier":{"hash":"0xc74e707b9beee62eb72f79196f03511c391f31be593e8504f768de7fc4d015eb"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x7496ef2aee69b1cdc9b53c5828d8ed71d382f3f5b267d589be2200fce169cae2","index":88529},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000122e6e2b883c132d661cf094277ab40c665241fc77468f13d4","index":2410478},"confirm_microblock_identifier":null,"pox_cycle_index":390,"pox_cycle_length":1050,"pox_cycle_position":977,"stacks_block_hash":"0x7878010ef01f2695172c1cd48c2740a2c902340a18748455b6e74bdb67fc525e"},"parent_block_identifier":{"hash":"0xff7afa2f9b3c54d141349f5bf3097e738f9a85e66276efb0cb8988dcaa03e79c","index":88528},"timestamp":1670570106,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x706f75797472656466)","execution_cost":{"read_count":16,"read_length":44007,"runtime":167191,"write_count":2,"write_length":160},"fee":15000,"kind":{"data":{"args":["0x627463","0x706f75797472656466"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":11,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004008435c694e51024d978ea3fb42971d74b8ff3df35000000000000000b0000000000003a980001ce348ad3e5b51edf43697fa66f1b69fbd0d18005bb2a2fc9dfc84d0591c9772d0ff4a9aeaaeec0bb300d0cf6b96b4708b1b28f01fc160c24c6cb751f3e8ceb84010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000009706f75797472656466","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000007eb04686173680200000000086d657461646174610c00000004046e616d650200000009706f75797472656466096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a8435c694e51024d978ea3fb42971d74b8ff3df35","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST223BHMMWM829PBRX8ZV8ABHTX5RZWYZ6PTJCWC5","success":true},"operations":[],"transaction_identifier":{"hash":"0x4bb7099dbf56397b2357f1267ce2b9ea4343110810b80265b1364c859c6ae905"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xab0ca18885d4ca36360242af217bf92d39ca748602b22a97daac1ab7a0a1a33d","index":88537},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000002bf278f8745ff24b89bcb843b9d8c88f1bda30c364ba51a827","index":2410486},"confirm_microblock_identifier":{"hash":"0xe6dafd33969bd16123f33266709f0d9a3a35b18e04644ffb1eb0eec379e367d2","index":1},"pox_cycle_index":390,"pox_cycle_length":1050,"pox_cycle_position":985,"stacks_block_hash":"0x8f179e960580d9815f3e0149358e0004e79f80533f83b3690cb9468dfb1703b9"},"parent_block_identifier":{"hash":"0x319b9328cc849ec3b00f50d96f192eaadf3a2fc84ebcf3f7b2d7507694e16b39","index":88536},"timestamp":1670573614,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x657177646173637a7863)","execution_cost":{"read_count":16,"read_length":44010,"runtime":167230,"write_count":2,"write_length":161},"fee":15000,"kind":{"data":{"args":["0x627463","0x657177646173637a7863"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004005d35a7e8d4600d0285ec0b3a97f764c750e415d400000000000000040000000000003a980001bac2b28fb30179abbb0b62cbe0f6809481bd3a76df6901d2e2570907a42f9bef795059dbfca503682794b3840b0bf1d0066754050382bfb12419a9fb23da779f010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000a657177646173637a7863","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000007ee04686173680200000000086d657461646174610c00000004046e616d65020000000a657177646173637a7863096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a5d35a7e8d4600d0285ec0b3a97f764c750e415d4","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1EKB9Z8THG0T0M5XG5KN5ZQCK3N1S0NTJ3R9R4W","success":true},"operations":[],"transaction_identifier":{"hash":"0x4abeb515fd63d0121d4bb4419ef4d4f7601701c10feac14e132e9f397d555e92"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x41a60ec51a29de5da45fa8a6b2d45a82a3a051165b8744ee8a01a7c31c919e06","index":88542},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000001364b0745f378d1e59d2de6054d8f67ec4fb4d3e30ee979789","index":2410491},"confirm_microblock_identifier":{"hash":"0x2eb851788db2fe46e7cebab6044756c8b6c0e5e6774178931529c1e05fedc7ff","index":1},"pox_cycle_index":390,"pox_cycle_length":1050,"pox_cycle_position":990,"stacks_block_hash":"0x61362c2b84a75c77f5929bfe928fe687f2ac62dae83cb77b47d43fa17df9a316"},"parent_block_identifier":{"hash":"0xfefc1da7c556b809ebf2c91795fbb009da429918f0ed85ee84de72764229ddc7","index":88541},"timestamp":1670577257,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6f7069756f796968)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":3000,"kind":{"data":{"args":["0x627463","0x6f7069756f796968"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":12,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004004797b468fa8a216a901c8200c5800d3bfcf5a4d4000000000000000c0000000000000bb80000b680973848c73ab2b094b8bb5a9bfa6c671fdbe5a87074600c169b1652761338640b6aa7a06fe667b799fdde5733d918091ac9fffbf267006c3030fca11ed919010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000086f7069756f796968","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000007ef04686173680200000000086d657461646174610c00000004046e616d6502000000086f7069756f796968096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a4797b468fa8a216a901c8200c5800d3bfcf5a4d4","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST13SFD38ZA522TMG3J101HC01MXZSXD4THEW0HF3","success":true},"operations":[],"transaction_identifier":{"hash":"0xdd6502fc8fcd20c3c91480fcd640826b1085e2ba5d2b2658bca425623ff3e165"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xcf93ee58a4d3a14e7bd32d24a46a4fc850ddb7597606bb6581e4151b908db816","index":88548},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000003244d912409f5845722fb4a90a85e20bb0533d014fe2f87ae0e56f46","index":2410498},"confirm_microblock_identifier":{"hash":"0x61a95c4844cc1ce8f49fb9f17ab12dc63bbd59fdbefcba573520ceef6d01a114","index":2},"pox_cycle_index":390,"pox_cycle_length":1050,"pox_cycle_position":997,"stacks_block_hash":"0x21a9e5a0c8ae4b65a7fc06b184a8eb0093eb5a147c8c40903c60201b3f5593ac"},"parent_block_identifier":{"hash":"0x6e966f4f4df5935692fc14c599ce8f8ecef82df689ac98c30f51666ade4ceb86","index":88547},"timestamp":1670582548,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x646166727476)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":3000,"kind":{"data":{"args":["0x627463","0x646166727476"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":15,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004004797b468fa8a216a901c8200c5800d3bfcf5a4d4000000000000000f0000000000000bb80001fbc23b21b9a5036dd32c606494a90a094d9b9a7ead1ea6e8867bb0c63b343c284d32a373073a6f4d48b966eee59a41612e8ab887b8f7c600d55ab7654c36cff4010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006646166727476","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000007f404686173680200000000086d657461646174610c00000004046e616d650200000006646166727476096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a4797b468fa8a216a901c8200c5800d3bfcf5a4d4","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST13SFD38ZA522TMG3J101HC01MXZSXD4THEW0HF3","success":true},"operations":[],"transaction_identifier":{"hash":"0x1af9e43922b5161f28b7818c6833774c47fcdf3c4e51ce70424acd87f938cf8a"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x82ba20aaa96d6a1d377de58f73a9e3be9146ae9d96870588675455e95a780dfa","index":88921},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000316ebd6c83f1634a6152258bb38cd5754604f64f7bcdba2623","index":2410914},"confirm_microblock_identifier":{"hash":"0x7ec2c35a65d3b9a36ff467882f935b57ba9b4ca43b2a9a3b46eeb6791247aaf0","index":2},"pox_cycle_index":391,"pox_cycle_length":1050,"pox_cycle_position":363,"stacks_block_hash":"0x2219c9d089b784663f5e68245fa28350827f6ea6a429c032f4bc45840db0a4e4"},"parent_block_identifier":{"hash":"0x0de811cf7b4a35559fe6b02975531c3dfe5cf2b226869313e8484e796b6a5a54","index":88920},"timestamp":1670833217,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6d6b6f75796776)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":15000,"kind":{"data":{"args":["0x627463","0x6d6b6f75796776"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":8,"position":{"index":3},"proof":null,"raw_tx":"0x808000000004000655085431e875f55cfa5b60581b22d9a623805800000000000000080000000000003a980000950f85af54680fc3b1a0c9cae1993878b85ec8e7a6571899af2e10258fb860cb775531c888c7f02e56c0df6f8fc7a07c9b83828a1dbfc56356260ae838a559bd030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000076d6b6f75796776","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000007fa04686173680200000000086d657461646174610c00000004046e616d6502000000076d6b6f75796776096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a0655085431e875f55cfa5b60581b22d9a6238058","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST35A22M67M7BXAWZ9DP0P0V4BCTC8W0B15WRXMP","success":true},"operations":[],"transaction_identifier":{"hash":"0x6852b579119fa32ed0db0b9e06b969ed9c8ab959bbee3dd47f7229ed2e4c368d"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xb92737f93e49452ca6080fd5d355280f0fe6fdd220be8eda6c8253a8727ee1c2","index":89062},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000095d5d2e558ea381f43f82f3419a659f818f58fbecc34fec0d","index":2411067},"confirm_microblock_identifier":{"hash":"0x7924e72bfc153d14e3d8bf37f0fd2fcb9e875f8f594b315cdc7c52a1d59c5d7f","index":4},"pox_cycle_index":391,"pox_cycle_length":1050,"pox_cycle_position":516,"stacks_block_hash":"0xb4fdf28f6db611d46e9d8cdcc2479c7c5c03b9e34b3c190d756712edf5ee179a"},"parent_block_identifier":{"hash":"0x01ec1ef632e57a7367e596233090a47f2cfd93b1fdd28ed100993f0ac47c0685","index":89061},"timestamp":1670924164,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x697268746276)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":3000,"kind":{"data":{"args":["0x627463","0x697268746276"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":23,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004004797b468fa8a216a901c8200c5800d3bfcf5a4d400000000000000170000000000000bb800012ce88d86d6c5f27d81a5b7743bc6932be202f66fb21f82fedc5d0e2ea207524b77fe73bc34723cdaa46abcec4a404abadc84186e82adc6948d2dd698f1a65b16030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006697268746276","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000080104686173680200000000086d657461646174610c00000004046e616d650200000006697268746276096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a4797b468fa8a216a901c8200c5800d3bfcf5a4d4","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST13SFD38ZA522TMG3J101HC01MXZSXD4THEW0HF3","success":true},"operations":[],"transaction_identifier":{"hash":"0xacdbd3c35c918b5d6edcf73cae61fec5f2565dc67ad23d1d4e032ae4bfe1a997"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xd6c58fa18a63400704e9ae2055df1eab4db7dcd7943f571236b1f91054cbcd94","index":89092},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000001224d09ec45a75e9d878a15ec7ce7c0c747e4737def989116e31","index":2411100},"confirm_microblock_identifier":{"hash":"0xe8c87f15f760eeaae7720f87e1d57b079f982fee8001b0ee0c4bf91b0904f0c4","index":1},"pox_cycle_index":391,"pox_cycle_length":1050,"pox_cycle_position":549,"stacks_block_hash":"0x077d7465f9a67e488b03aa4a72e5b9414dcfec2e77b869141dbc6dad0a43be00"},"parent_block_identifier":{"hash":"0xb7c949c13015e98810253c7cea5eb944bf7fa5fd6f8856b4f70c422b443e6ac2","index":89091},"timestamp":1670947284,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6e657762696c616c646f6d61696e)","execution_cost":{"read_count":16,"read_length":44022,"runtime":167386,"write_count":2,"write_length":165},"fee":30000,"kind":{"data":{"args":["0x627463","0x6e657762696c616c646f6d61696e"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":7,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004007a4389649f07fd1bc0383216339055b5922005cb0000000000000007000000000000753000008fd6b8e5728ee2f36219ed37d35a3e061a45f9bd6a2a29a87b01f8b15dab7b7375a41bd246693fd6683cd0cfd7a4edfd4eae1f2b850f037e52cb0e408502cd25030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000e6e657762696c616c646f6d61696e","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000080604686173680200000000086d657461646174610c00000004046e616d65020000000e6e657762696c616c646f6d61696e096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a7a4389649f07fd1bc0383216339055b5922005cb","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1X472B4KW3ZT6Y070S1CCWGAPTS4805SCT6P4WG","success":true},"operations":[],"transaction_identifier":{"hash":"0xe2c5717743de13c6d6ce683518dffd0d16394391df4abbcab479c42e0d78b521"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x51544c355163f3e944eac4e5083d1be85bc36b1b44d3a138f5797457e1100080","index":89200},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000263abf535dab759b4453737c3eaec58e2cec67f36a0b82c2c0","index":2411221},"confirm_microblock_identifier":{"hash":"0x2c062c130c86a7ef6239301b7ce894e04e5a29d0c928dbb48bc83750093331ca","index":1},"pox_cycle_index":391,"pox_cycle_length":1050,"pox_cycle_position":670,"stacks_block_hash":"0xf17b6901f506efbb4ae835eb22203f86e3d57d0b159a112779a7f02f4af8078e"},"parent_block_identifier":{"hash":"0x50cd85fbef94bacb3de37a072f7f713a3af96c482e23ae3424d18c39c9113d7a","index":89199},"timestamp":1671010694,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x62696c616c61)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":3000,"kind":{"data":{"args":["0x627463","0x62696c616c61"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":14,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004007075c88ba7e72f517b90acd5d6bbc7835e17019d000000000000000e0000000000000bb8000189360a353c7e447a5fb3beb2e1e219c28947a4b3ffc3a807414e2a3930d79fd95ce157d0895138e397948692f7cc9f958365c69162014c02562adbeb92af45d0030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000662696c616c61","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000080804686173680200000000086d657461646174610c00000004046e616d65020000000662696c616c61096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a7075c88ba7e72f517b90acd5d6bbc7835e17019d","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1R7BJ4BMZKJYMBVJ2PDBNNVRY1NW5R1KPABFN83","success":true},"operations":[],"transaction_identifier":{"hash":"0xcd8e724084f18a943d0b3b8d81c883914964e0b469cb8929434f06e8205df88f"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x1c006b3d1a7d86d85b5ed624ef96b29f5fd80fc10af790279629ffd258ba22f8","index":89202},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000005ad47d00a34fa7991fddfbc92ebd0189b04509262ea0a474d","index":2411223},"confirm_microblock_identifier":{"hash":"0x7346c15f38f118b83b88c6457881374baeb97615a205e0521555cd6b4068d0ef","index":4},"pox_cycle_index":391,"pox_cycle_length":1050,"pox_cycle_position":672,"stacks_block_hash":"0xc8736351b3dc91cb5e79b23bb3997cf6e167a78ce2563f5023d078fc4b36d90f"},"parent_block_identifier":{"hash":"0xf892f3e5112b53593fe9b01876914602b8c4f02d8213cae97c7ae38744d256a1","index":89201},"timestamp":1671011339,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6b706e6a626876676a76)","execution_cost":{"read_count":16,"read_length":44010,"runtime":167230,"write_count":2,"write_length":161},"fee":3000,"kind":{"data":{"args":["0x627463","0x6b706e6a626876676a76"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":6,"position":{"index":4},"proof":null,"raw_tx":"0x80800000000400ff9d506e524ff4cae45a36639d29de9240829f1d00000000000000060000000000000bb8000022c764a01649fd1abfef7b1d2398bfab84cbc4f5348999c82c7c3e32002d2b1d5edc737ce36c9d05aa60db9d725f72582207c3ac233db7a596ef342a67a4a0dc030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000a6b706e6a626876676a76","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000080b04686173680200000000086d657461646174610c00000004046e616d65020000000a6b706e6a626876676a76096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aff9d506e524ff4cae45a36639d29de9240829f1d","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3ZSTM3EA97Z9JQ4B8V67799VT9410MZ3Q397GM2","success":true},"operations":[],"transaction_identifier":{"hash":"0x62705b572db33037422b9519ac1c40ad41ccf86f7c27ffddbb7c455d316d0784"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x69ae56efe8e09d2df4242d89c16ead997fc553731b04060ce92068881170fbb2","index":89313},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000002e9d779f404ae2a72537c627ab53188273e39d2ee889835c45ec","index":2411339},"confirm_microblock_identifier":{"hash":"0x9558e47609b5e6c8d642c4fdea3e4f82d0ec3bcf4e95fc3ce6a32c0d24848d77","index":2},"pox_cycle_index":391,"pox_cycle_length":1050,"pox_cycle_position":788,"stacks_block_hash":"0xf9a541abe4d6b52cfcd1a88498b1a886ed9b4f1296ce146a6ffb04daccff32bf"},"parent_block_identifier":{"hash":"0xd9a178d2b188ec0937ff4b10eb69f56127028e27b195adf7eb884fe1f0a7282a","index":89312},"timestamp":1671090438,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6272756365)","execution_cost":{"read_count":16,"read_length":43995,"runtime":167035,"write_count":2,"write_length":156},"fee":3000,"kind":{"data":{"args":["0x627463","0x6272756365"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":24,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400cf170cceaa11f1a9ea0766260a4bbf36385631a600000000000000180000000000000bb800015cdf3e103607b4bdb70915072755eab0b244186c9f6f45c9e0c7e5afe1a08214368016bfb07c8688a0fa5e9c0d138c8ff8fe77d841d94560952feda3eb8cee30030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000056272756365","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000081704686173680200000000086d657461646174610c00000004046e616d6502000000056272756365096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051acf170cceaa11f1a9ea0766260a4bbf36385631a6","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST37HE36EN88Z3AFA0XK2C2JBQWV3GNHHMRKD5W46","success":true},"operations":[],"transaction_identifier":{"hash":"0xedb62ed75e727ff37a7671dce2575258b5a1a52775d43cb99009963c7c00c447"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6272756365)","execution_cost":{"read_count":12,"read_length":43966,"runtime":131782,"write_count":0,"write_length":0},"fee":3000,"kind":{"data":{"args":["0x627463","0x6272756365"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":25,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400cf170cceaa11f1a9ea0766260a4bbf36385631a600000000000000190000000000000bb8000057698cd76d2b16ea6a69c4f0d0b8e99e0bcda4eb233e9d2a04cb22c294e9a5e300ea0c88eadc1c8c6027be4ba00f3161546bfabe97c143537b739736ebda907c030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000056272756365","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST37HE36EN88Z3AFA0XK2C2JBQWV3GNHHMRKD5W46","success":false},"operations":[],"transaction_identifier":{"hash":"0x44d29125c140ee8077a7832ba1e10f9d009bfe84483efb7aee7ca60ed8146c4b"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x2dae2c287e25d7da00cc48b694a7d169caa1a080f89cc4615a4e1e6f90439d8e","index":89840},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000024b166f1741bf0d3c5b0f6ae9e5a540f308f0feca345279370","index":2411899},"confirm_microblock_identifier":{"hash":"0xd73736a3666a200e912df97918754773df6eb1f866d0c3df29a0b32447baf360","index":6},"pox_cycle_index":392,"pox_cycle_length":1050,"pox_cycle_position":298,"stacks_block_hash":"0xcbeb1105623561eba3fded4a758d292a62be1e1acc6e1cac47f3bb7d8b895cf2"},"parent_block_identifier":{"hash":"0x7bbe63f9b87e24e768fddec7d2470f25f7d01386cd0bf5064c376401a40e753d","index":89839},"timestamp":1671464823,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6a666b6c64736a666b6c646173646a666b6c64)","execution_cost":{"read_count":16,"read_length":44037,"runtime":167581,"write_count":2,"write_length":170},"fee":3500,"kind":{"data":{"args":["0x627463","0x6a666b6c64736a666b6c646173646a666b6c64"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":33},"proof":null,"raw_tx":"0x808000000004003f67a76b82c8d4fd09755f64589142b2f0ad7f6900000000000000020000000000000dac0001f677f3800dd5b0b36b2a59370068502ddf000f3511d1ddaa377cabd8ec48457216fa7068c6ad030bdcf050cc337382450afe492e68b90fc1e40db1b3a78804c3030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000136a666b6c64736a666b6c646173646a666b6c64","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000082904686173680200000000086d657461646174610c00000004046e616d6502000000136a666b6c64736a666b6c646173646a666b6c64096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a3f67a76b82c8d4fd09755f64589142b2f0ad7f69","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STZPF9VBGB4D9Z89ENFP8P4H8ASF1BBZD67DASG2","success":true},"operations":[],"transaction_identifier":{"hash":"0x3b4e8b0fb8c59943e54492a9dade92aa199c94f1125983e85824e0279c987834"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xf1b40a494010645883d6b9913636c52bcb21ccdcd56a049004e09d26533477ce","index":89935},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000002fcf21067a0532a4b635fd62ae432bddcd768e055ea7c165d5","index":2412001},"confirm_microblock_identifier":{"hash":"0xdde8359556a9237a68e2b963951129ea1d55eeeaad172d6934dfb1992fe9a252","index":4},"pox_cycle_index":392,"pox_cycle_length":1050,"pox_cycle_position":400,"stacks_block_hash":"0x756fea7891439a64df659715c24e56e52f43fb6ec7fab61c7278a45ce1a1ce93"},"parent_block_identifier":{"hash":"0x30af72c54ed40dedc126a216c542ebf1752ea9cfcd39f8e20c8cc959920009f3","index":89934},"timestamp":1671537505,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x64657369676e7465737431)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167269,"write_count":2,"write_length":162},"fee":3500,"kind":{"data":{"args":["0x627463","0x64657369676e7465737431"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":4},"proof":null,"raw_tx":"0x80800000000400e7aa7e585937d78dc3ffc492f73857c54c676f6300000000000000020000000000000dac00010984c8c7433a02e8a955fac601423839377472be88483ef3df86a3c2dac08c2200a995326170dd3dd0c23c8105017c7c355924a24edb5c8ecdaf4f5a1b8ea88c030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b64657369676e7465737431","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000083504686173680200000000086d657461646174610c00000004046e616d65020000000b64657369676e7465737431096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ae7aa7e585937d78dc3ffc492f73857c54c676f63","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3KTMZJRB4VXF3E3ZZ295XSRAZ2MRSVFCC3DNC80","success":true},"operations":[],"transaction_identifier":{"hash":"0x4e13c54b8180f5887edf481cd455d189c3ef2bc132ab5e09ccb7e488d9bceb3a"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x31114b465f8453c3408b05211e010f551385df659a77631cd18f95310065af10","index":89943},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000c234e1d48db7fd7f3df6e9b56a8704a89bda958ca937557c77a4e5dc","index":2412009},"confirm_microblock_identifier":{"hash":"0xdbb507f2df8fc3cd38f61412523b9d8d46886a11a87a6a53487d03533c0d407b","index":5},"pox_cycle_index":392,"pox_cycle_length":1050,"pox_cycle_position":408,"stacks_block_hash":"0x8748c1e7b844eebd270f8ee639f8d66264c21a21ef47eef57617a1be2c728f9f"},"parent_block_identifier":{"hash":"0xaeb7b063b7a8a593fe59d53085173138d9099a3135a4693522f9226157244f3e","index":89942},"timestamp":1671543461,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x646e616d656661736466)","execution_cost":{"read_count":16,"read_length":44010,"runtime":167230,"write_count":2,"write_length":161},"fee":3000,"kind":{"data":{"args":["0x627463","0x646e616d656661736466"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":37,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004004797b468fa8a216a901c8200c5800d3bfcf5a4d400000000000000250000000000000bb800019fa36125bcfeeac25ee52ec6a78e0fb334d3879ad89f98a2ca05fbf4e10e480e75b9d90f03372681b3f4d996c89a1ffd631b1c540c67bf8d8e8732b6672c3d98030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000a646e616d656661736466","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000083904686173680200000000086d657461646174610c00000004046e616d65020000000a646e616d656661736466096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a4797b468fa8a216a901c8200c5800d3bfcf5a4d4","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST13SFD38ZA522TMG3J101HC01MXZSXD4THEW0HF3","success":true},"operations":[],"transaction_identifier":{"hash":"0x440a4415b59a78eca3c749751a1e97fe013877923dfcad2f5383dcbecae5a5a9"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7364666b6c6e73616e64666c6b73616e6466)","execution_cost":{"read_count":16,"read_length":44034,"runtime":167542,"write_count":2,"write_length":169},"fee":3000,"kind":{"data":{"args":["0x627463","0x7364666b6c6e73616e64666c6b73616e6466"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":15,"position":{"index":3},"proof":null,"raw_tx":"0x8080000000040024da0a91ab07e014ad63796cdba16372bfec1e8e000000000000000f0000000000000bb800008eed006519a10d24cb55407be07d7875ff9a756c3f3701b58d115c2ec20ddb3e36632f02de031a327cafe7c200aa733a464ef943f97a35ed3a7d4cced6fb1837030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000127364666b6c6e73616e64666c6b73616e6466","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000083a04686173680200000000086d657461646174610c00000004046e616d6502000000127364666b6c6e73616e64666c6b73616e6466096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a24da0a91ab07e014ad63796cdba16372bfec1e8e","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STJDM2MHNC3Y055DCDWPSPX1CDSBZV0YHVH4YHVW","success":true},"operations":[],"transaction_identifier":{"hash":"0xe5900fbe36a05d06a976b2408cf06098d037f435d47f0a08b3f98d6329bfd8a8"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xf56fb0d9a9e4621dc5c4ab34f459a04f646cb2d0f0cdbd748054a4cf526d5223","index":89945},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000441c5cc5595a63f4a5f4e2f13d410ea39142ef604ac03325b2c0e00b","index":2412012},"confirm_microblock_identifier":{"hash":"0xfaaaf652547b962111fe6582a91d5da9cd1ff29cdd685ef3081ee894d816dbe5","index":5},"pox_cycle_index":392,"pox_cycle_length":1050,"pox_cycle_position":411,"stacks_block_hash":"0x918d6d547665f6f63e545d5d88362dfaf8484448493f37d31609ff0e5a9f2bfd"},"parent_block_identifier":{"hash":"0xfa7694357069fdf5504b97e88b7ed3a9be54738227663c9ca7737330ce710d23","index":89944},"timestamp":1671544899,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x74657374646f6d)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":3000,"kind":{"data":{"args":["0x627463","0x74657374646f6d"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":14,"position":{"index":6},"proof":null,"raw_tx":"0x808000000004008435c694e51024d978ea3fb42971d74b8ff3df35000000000000000e0000000000000bb800000ac2d03f3fb8aea416393dfca767a2f054682e328518833424ba651df4a2388c00ecdbb03b9a5e63349e735d73e69666a0e4e93898bd3a99282c3faddb00cd4d030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000774657374646f6d","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000083d04686173680200000000086d657461646174610c00000004046e616d65020000000774657374646f6d096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a8435c694e51024d978ea3fb42971d74b8ff3df35","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST223BHMMWM829PBRX8ZV8ABHTX5RZWYZ6PTJCWC5","success":true},"operations":[],"transaction_identifier":{"hash":"0xcec99c4bac13d1e4840cf90dafc9da35b1a664d2f1ef6da9e1b334884d7a9569"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x64657369676e7465737432)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167269,"write_count":2,"write_length":162},"fee":3000,"kind":{"data":{"args":["0x627463","0x64657369676e7465737432"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":49,"position":{"index":7},"proof":null,"raw_tx":"0x80800000000400ef29ee95fc9093bd6d968fec5f005495939d86a800000000000000310000000000000bb80000a7c5cfb2ec7d679212559799def266f6ac64645d9daeb53368e2e56d0a76908a1556c4294e42abdbdc3b3d34548bff289f1fc367a5b9b810a169f938fc6c4e92030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b64657369676e7465737432","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000083e04686173680200000000086d657461646174610c00000004046e616d65020000000b64657369676e7465737432096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aef29ee95fc9093bd6d968fec5f005495939d86a8","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3QJKVMNZJ897FBDJT7YRQR0AJAS77C6N04SVV51","success":true},"operations":[],"transaction_identifier":{"hash":"0xbcfcef3c1fbd0022835670335edcc7f62a8e4ebe392d2d43a41594cc2d8f7943"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x60dba64f131d05ec1426eb4b6add3d90bbade3eaf7c3e3b982a9aecd81c40b44","index":90052},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000b9613d9bdeac35888adeb0049671a6a25f8aa6c9c6ee3e1df688b289","index":2412129},"confirm_microblock_identifier":{"hash":"0x61e74cb3ba44fef9b204ca8cda40939daca92e3601ca91e18984e29482c96242","index":3},"pox_cycle_index":392,"pox_cycle_length":1050,"pox_cycle_position":528,"stacks_block_hash":"0xc502787723885851bf0fa820536d0eeaef8e549371ae7dfe3cb2d3f0dddfa615"},"parent_block_identifier":{"hash":"0x853507e670e7426ddf3f1b5aeea1c36cf3368088dd5a76d04a0f57c0ee9b7948","index":90051},"timestamp":1671617833,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6b6c6a63667667626e)","execution_cost":{"read_count":16,"read_length":44007,"runtime":167191,"write_count":2,"write_length":160},"fee":3500,"kind":{"data":{"args":["0x627463","0x6b6c6a63667667626e"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":15,"position":{"index":3},"proof":null,"raw_tx":"0x808000000004008435c694e51024d978ea3fb42971d74b8ff3df35000000000000000f0000000000000dac000087a4b5adc2116d22dad9203c86cef328857aa713bf630459b5f99a63959783f1757af8a26e084e3110dde640ac7cca33e63b4e16d6e4f9182ba1f8f61967e320030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000096b6c6a63667667626e","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000084504686173680200000000086d657461646174610c00000004046e616d6502000000096b6c6a63667667626e096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a8435c694e51024d978ea3fb42971d74b8ff3df35","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST223BHMMWM829PBRX8ZV8ABHTX5RZWYZ6PTJCWC5","success":true},"operations":[],"transaction_identifier":{"hash":"0x23b2582803838e686b7016851e334efec4fce81c3100c1508e25e83f3ca4117e"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xfe299ccda5c36469b545feee3947e6ba8455fa7e6a1c56c27217c3ae2bbf4f25","index":90206},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000002bef68578e492616069f55021d8deb3ce445c56d4c53a56af2","index":2412304},"confirm_microblock_identifier":{"hash":"0xf11b508dd705930b367b4fa59442b153bbff7390150bbf3486db4a93cd95c939","index":3},"pox_cycle_index":392,"pox_cycle_length":1050,"pox_cycle_position":703,"stacks_block_hash":"0x942aa7a8423c0a64e95e9340f78581cd32080252a06b9e7ed70757fde847b2aa"},"parent_block_identifier":{"hash":"0xac366e6958ba6909bad94600a60bfbc859878c3181ab83c7afccb0732e8d3402","index":90205},"timestamp":1671703137,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x74657374646f6d33)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":3000,"kind":{"data":{"args":["0x627463","0x74657374646f6d33"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":16,"position":{"index":2},"proof":null,"raw_tx":"0x8080000000040024da0a91ab07e014ad63796cdba16372bfec1e8e00000000000000100000000000000bb8000116ef1a6df107ceb65c948f8b8782220ee388671a4924b53ed8db33c396db6071213da9cc565c452656378a59be1d0590d7ac494fec8a6385bd1ca5d787b1668a030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000874657374646f6d33","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000085104686173680200000000086d657461646174610c00000004046e616d65020000000874657374646f6d33096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a24da0a91ab07e014ad63796cdba16372bfec1e8e","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STJDM2MHNC3Y055DCDWPSPX1CDSBZV0YHVH4YHVW","success":true},"operations":[],"transaction_identifier":{"hash":"0x6ef63b0e95f6728db6e5b5b33d2fe4eb85e8166648179fb5bf091a37a2dd9621"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xd3becb4cef3b56adb6d6ce5b1e6db8405d72ff07a4cf3601426966550ec39e3f","index":90209},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000060030d9b1a9cd4525937020b991d2bc43858cb198ffa236728233","index":2412307},"confirm_microblock_identifier":{"hash":"0x8678809e9653c6ba16c3371da675a28108494e06599872da7e76f37237ea2fa5","index":5},"pox_cycle_index":392,"pox_cycle_length":1050,"pox_cycle_position":706,"stacks_block_hash":"0x605b438d1f96d94a861a96c84b988931b98339ef1110461ba9edb62da9c5e470"},"parent_block_identifier":{"hash":"0x54d3e422a2eaf7c2b63cc22cc4ec490ce8c65a5228f139c7a8e22b2177e36b21","index":90208},"timestamp":1671704937,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x736466736466)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":3500,"kind":{"data":{"args":["0x627463","0x736466736466"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":23,"position":{"index":5},"proof":null,"raw_tx":"0x808000000004007075c88ba7e72f517b90acd5d6bbc7835e17019d00000000000000170000000000000dac0001ab8ba55a1e5f3692a32948278d1e6173dd8b58c3722c706798b8153898d476622bf146029a150f6fcbe11123f7a0a9c6ebb8bcc2d88a4de5b3995e9a0a7f02c2030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006736466736466","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000085304686173680200000000086d657461646174610c00000004046e616d650200000006736466736466096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a7075c88ba7e72f517b90acd5d6bbc7835e17019d","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1R7BJ4BMZKJYMBVJ2PDBNNVRY1NW5R1KPABFN83","success":true},"operations":[],"transaction_identifier":{"hash":"0xa65b75ebe5572f423c7dbb1d3c58f3300332b3b5971be7441951ba3ca779480f"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x9ba589052e58ba1e9a9268ae7db2a7eb3dc3709a88cd96e09d3649cae68618b2","index":90337},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000775aa6c4ccce72025c237314bfdb7c43d608b7fad1d9d66f9f6f","index":2412442},"confirm_microblock_identifier":{"hash":"0xff96c0028fb9f403f96fa64b0c848ba93f53e866f43dc30f8ec18060062dd06b","index":3},"pox_cycle_index":392,"pox_cycle_length":1050,"pox_cycle_position":841,"stacks_block_hash":"0xd124554c5e9aaa67c315ff01b3e33e6b8e4c87aeaa69a732ed13e535b79ea167"},"parent_block_identifier":{"hash":"0xc9c9c2ee8c46f2ec203d03df28a4d59637d329f4e56b174a1899d5a7136be1f1","index":90336},"timestamp":1671784247,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x74657374646f6d32)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":3500,"kind":{"data":{"args":["0x627463","0x74657374646f6d32"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":1,"position":{"index":4},"proof":null,"raw_tx":"0x8080000000040050f802d54aad66d77d9e9b287d095c6880d92b4100000000000000010000000000000dac0001abc7e1080063b47c08fe19c06eee8214036dbef8662776263ff702570ad850187e1b338c16411dfa231d6e375aff300bfb77e8874cb6a8c04f821621eb394a9f030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000874657374646f6d32","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000085c04686173680200000000086d657461646174610c00000004046e616d65020000000874657374646f6d32096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a50f802d54aad66d77d9e9b287d095c6880d92b41","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST18FG0PN9APPDNVXKTDJGZ89BHM81P9B868PET19","success":true},"operations":[],"transaction_identifier":{"hash":"0x6838e23859587159045ae841bab253901dc384655fee78f38f985219e31ce631"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x71bc78903ce1a55d61adf99de68c3b376e03826f509932d418af67bb48d0c803","index":90359},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000249c20360a29741a97d09a2800488bc050c4f01bb4efe11c8e","index":2412467},"confirm_microblock_identifier":{"hash":"0x4b341eaf78e8850492a76eba79bb63bd778bfd95e21f6f499bfc8ae68c3999fc","index":5},"pox_cycle_index":392,"pox_cycle_length":1050,"pox_cycle_position":866,"stacks_block_hash":"0x5817ce6a23f0acc8f89a545116e027d8fda157e503894a529f9bf2fb58b9a0c7"},"parent_block_identifier":{"hash":"0xc0025dc32bcecf0334747f9cfda5e18c6da2e80c63ba11d09ea49612ed5c9382","index":90358},"timestamp":1671796311,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x73646673647678637662)","execution_cost":{"read_count":16,"read_length":44010,"runtime":167230,"write_count":2,"write_length":161},"fee":3000,"kind":{"data":{"args":["0x627463","0x73646673647678637662"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":1,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400a13d9a0b46eaf8ba12c036b9ed46e6783a72107a00000000000000010000000000000bb80001829b1e2bd5614685e74d2f839ed030bf21c49c714371b39dbfd5831547d40b441275857f6f51c3f7ce0b914adad423ff04b46854228d4f0ef6854932946d1f49030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000a73646673647678637662","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000086104686173680200000000086d657461646174610c00000004046e616d65020000000a73646673647678637662096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aa13d9a0b46eaf8ba12c036b9ed46e6783a72107a","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2GKV6GB8VNFHEGJR0VBKVA6WSW3MWGGFBGQGZES","success":true},"operations":[],"transaction_identifier":{"hash":"0x105eda31a487d6eda72234de5b408960a3bef0b5d64d40eb6b6f8b53b2785ebb"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xf2a1fd50411fbf9ced43314106d7f93ffacb093ddf6b5b4d180874fde8454f8f","index":90501},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000058812e9525debcf7a2caa9f66514c0b8ed38a10a1695b284d","index":2412627},"confirm_microblock_identifier":{"hash":"0x26f5a64baa5d011c794e80e7724c9094f7d4f422be310b721a071af545834118","index":2},"pox_cycle_index":392,"pox_cycle_length":1050,"pox_cycle_position":1026,"stacks_block_hash":"0xceddf517af88ed3d02ed89cbd4fcdc7772b2c256b91918ca6cff9795453ac9a8"},"parent_block_identifier":{"hash":"0x2fbcc35f1af6c648a4829df9b063895dd0bbe1b6c9d0ad715ca338b60b5f4e9d","index":90500},"timestamp":1671873468,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x61706974657374646f6d)","execution_cost":{"read_count":16,"read_length":44010,"runtime":167230,"write_count":2,"write_length":161},"fee":3500,"kind":{"data":{"args":["0x627463","0x61706974657374646f6d"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400a13d9a0b46eaf8ba12c036b9ed46e6783a72107a00000000000000030000000000000dac0000972a65bc2993cf2b6605dce1b52bfad4184b53d8854742d6f5a1a862026ba56715e93a9a155c1cda3be6e469b8866166ec76a80d1c9fbaa3f6bae351aca32fd2030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000a61706974657374646f6d","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000086604686173680200000000086d657461646174610c00000004046e616d65020000000a61706974657374646f6d096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aa13d9a0b46eaf8ba12c036b9ed46e6783a72107a","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2GKV6GB8VNFHEGJR0VBKVA6WSW3MWGGFBGQGZES","success":true},"operations":[],"transaction_identifier":{"hash":"0xf5b2da4126823b384cd38e778c934d52b342f4288844f936ac5dc228f23a3c77"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x3fd5f88c6d43b0f79e30722a21c95af498b4b37895c8261804a3fda2081c106f","index":90507},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000022366f5877375c35a4391d65b6aa490b40816aa0a3ebf19de9","index":2412635},"confirm_microblock_identifier":{"hash":"0x3ee447dd61816da0fd6a4e329c26db4b738b1378948cd244cfd3cead18dc9989","index":0},"pox_cycle_index":392,"pox_cycle_length":1050,"pox_cycle_position":1034,"stacks_block_hash":"0x8fef72e8e940c26a3054115bc326c01792479ae51461f187ba440ba714be8a54"},"parent_block_identifier":{"hash":"0x090c530e1de30b6d63163a590d03ec8e6914dd11b86737fd372de01a68c06bd8","index":90506},"timestamp":1671877469,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7465737461706933)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":3000,"kind":{"data":{"args":["0x627463","0x7465737461706933"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":12,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040057aedcf36e05d9414a98a20ba7a105821a3828d8000000000000000c0000000000000bb8000025714cfd08c6447f546c2bff05760c20153ca86e4f9af8dc9f007b9ca4ecc5a859e13047c163a8e5030aa3b26dcdbdd28ced6fffdd8099efa10c916236145136030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000087465737461706933","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000086b04686173680200000000086d657461646174610c00000004046e616d6502000000087465737461706933096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a57aedcf36e05d9414a98a20ba7a105821a3828d8","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1BTXQ7KDR2XJGAAK2H0Q9X10P11ME18V03S3KR2","success":true},"operations":[],"transaction_identifier":{"hash":"0xce99f1e2b6e6482c25c6a42fcd86d282169be3e8563acb501c244f2ed1063a35"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xe43b23a7948c2737debe2f917226c0c0af0395df663bce68db4479a1a171cab1","index":90798},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000002bdd8dca374fc1f630866c87d7d7770be80b2a8f0bb5d3c44f","index":2412954},"confirm_microblock_identifier":{"hash":"0xa6a07b6c011890d4deadcca36661fbfaceab42424f46055a52f8604a5fdf8ec0","index":4},"pox_cycle_index":393,"pox_cycle_length":1050,"pox_cycle_position":303,"stacks_block_hash":"0xb9e2494aada1120a6f494a5c43cc28f4285f87d42df97f61df89e8291e02add4"},"parent_block_identifier":{"hash":"0xddb46b327867cf6c04c1b0b5ed669dddca1a6ae7f650633819ee5355efa1fce9","index":90797},"timestamp":1672042858,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6170697465737435)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":3000,"kind":{"data":{"args":["0x627463","0x6170697465737435"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400a13d9a0b46eaf8ba12c036b9ed46e6783a72107a00000000000000040000000000000bb8000056bcdbe851fa9af77d7d82255a7759c33798084785a159b9a57e0f5fcf572e5b0026af654b6eed6c673fe744162f1dea5dc29be3d31d3dc3082904e2e5f53ec4030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000086170697465737435","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000086e04686173680200000000086d657461646174610c00000004046e616d6502000000086170697465737435096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aa13d9a0b46eaf8ba12c036b9ed46e6783a72107a","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2GKV6GB8VNFHEGJR0VBKVA6WSW3MWGGFBGQGZES","success":true},"operations":[],"transaction_identifier":{"hash":"0x35dbd08fb659ab13555e594521876a8783d4817bd93bebc5febe3b9bfc948b67"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xe3666756c4195375fc8bedd0c85c6c5daea033bb97c93e8cddf2522657bcedfb","index":91062},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000fc13a22bddf6c7046a02ddcfab1d6fab11800ef661baf1b48","index":2413236},"confirm_microblock_identifier":{"hash":"0x89b79e05654577ac38d31c1e834bc8926fa8954c58436467a8f06e88b5680b96","index":4},"pox_cycle_index":393,"pox_cycle_length":1050,"pox_cycle_position":585,"stacks_block_hash":"0x8f206af51700f1462d312d61436499070f0a980a4f1a36a2b3ebf7c3fdb455ee"},"parent_block_identifier":{"hash":"0x82e30d6044512466e6e10ea47f2edc3c99ef1f88ed9ae2933ce0593b63fbc0cb","index":91061},"timestamp":1672222060,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6e65776e696e69)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":3000,"kind":{"data":{"args":["0x627463","0x6e65776e696e69"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400218f918e1d7363c0e4cdf3f8cef078ba823cdb1000000000000000000000000000000bb800003a2a07a90712ee244babc2aa89ca9e75a760bbff16377f9566a6a08a0489ad7b36a94e77fa6f966a225d5af4782eaa21082d7cd787a8e47b6a54031083d46041030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000076e65776e696e69","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000087f04686173680200000000086d657461646174610c00000004046e616d6502000000076e65776e696e69096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a218f918e1d7363c0e4cdf3f8cef078ba823cdb10","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STGRZ4CE3NSP7G74SQSZHKQGF2X84F6V20JTCVB4","success":true},"operations":[],"transaction_identifier":{"hash":"0xda683ae4753ccca79a4b7d9566d892c7bee5889dddab3c8dc43be84ad9e3d5bc"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xcbe2092cb8e8b2178f4eec6f6c7b68ce11aee1f99978d6461622d48f3dfde19c","index":91075},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000d1d57c991f1d885eaf7219e34586869070bf6653699ace513c53","index":2413249},"confirm_microblock_identifier":{"hash":"0xc4d010a605a42b6b53e80171e328ace0873e12c3ecbf53096c5b5ba272134974","index":1},"pox_cycle_index":393,"pox_cycle_length":1050,"pox_cycle_position":598,"stacks_block_hash":"0xda4d7bb8be414a0ab248acd9aeb3a46c6bd12d8a7449846d83d274240690c4f4"},"parent_block_identifier":{"hash":"0x0463c024afacb46d665d80b418fac9674c9dc5df1518b2d1709aaa410c971130","index":91074},"timestamp":1672230321,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x74657374646f6d3738)","execution_cost":{"read_count":16,"read_length":44007,"runtime":167191,"write_count":2,"write_length":160},"fee":3500,"kind":{"data":{"args":["0x627463","0x74657374646f6d3738"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":23,"position":{"index":3},"proof":null,"raw_tx":"0x8080000000040057aedcf36e05d9414a98a20ba7a105821a3828d800000000000000170000000000000dac0000fa0b7afb2ffbc242d2c9f66c705c71fa7e097189d78d432954a69d9bf52724860c1224285754df05f2d812c71c94c4b498461fc1d9bfc557fcf1e8509e15bec6030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000974657374646f6d3738","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000088104686173680200000000086d657461646174610c00000004046e616d65020000000974657374646f6d3738096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a57aedcf36e05d9414a98a20ba7a105821a3828d8","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1BTXQ7KDR2XJGAAK2H0Q9X10P11ME18V03S3KR2","success":true},"operations":[],"transaction_identifier":{"hash":"0xa93a327e8ba6306ea53be848998c55fb3e24c6ec5cd798e222be9d75bf9ae93e"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x0e5d4741f44f00b0ff85707bb61b60f501486f68c192bc0a47b90207c1ae6e5e","index":91186},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000009020a5c4fc8468fabee13b71c5f0298300aac1432b948d31a40d","index":2413362},"confirm_microblock_identifier":{"hash":"0xe92fda0e90e3bcc1055000c5486e1f8a328b6c0c59d23d746a9fdbeaa135f904","index":2},"pox_cycle_index":393,"pox_cycle_length":1050,"pox_cycle_position":711,"stacks_block_hash":"0x9e1178060ad09b95307df9fd6af996e4b94243cd112488ca2e2d7a2081e49596"},"parent_block_identifier":{"hash":"0xe22c15f59b5335758060d20fb00a3eb8030acb230c7e762741bc489b2ebc2eb6","index":91185},"timestamp":1672309327,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x70696e6b6279746573)","execution_cost":{"read_count":16,"read_length":44007,"runtime":167191,"write_count":2,"write_length":160},"fee":3000,"kind":{"data":{"args":["0x627463","0x70696e6b6279746573"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":11,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040050f802d54aad66d77d9e9b287d095c6880d92b41000000000000000b0000000000000bb80001956da68a60a6624d5677f474fea0165b627b46fc6c0d02376fd1758e5529e69d6ebaf5af4d025492ee5e1a16bdefca8b3ccaa5aca6ef3937800113695b00a9cd030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000970696e6b6279746573","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000088804686173680200000000086d657461646174610c00000004046e616d65020000000970696e6b6279746573096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a50f802d54aad66d77d9e9b287d095c6880d92b41","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST18FG0PN9APPDNVXKTDJGZ89BHM81P9B868PET19","success":true},"operations":[],"transaction_identifier":{"hash":"0x7f27df7a15d4cb7ac53364babe93c50aac6723679194f5262a612590e0432f1b"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x79eff7cac6b31b581c81d7af09a5905e6a8159248e58d346c5674866c9f53645","index":91193},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000015e875bb1ac4da9ddac8152eae46bbeb9625c32e69bf21559f","index":2413371},"confirm_microblock_identifier":{"hash":"0x3cc73efdd5e7937afa0b5bdfddbaa6c7e10ab58bd9e16411227c09d67700c677","index":1},"pox_cycle_index":393,"pox_cycle_length":1050,"pox_cycle_position":720,"stacks_block_hash":"0xd484a617089d7a253ba5869f62f2d8f61498779f6569e413948292baf57db3b0"},"parent_block_identifier":{"hash":"0xa090fa83a2357830434f7394988a22603289efd8f71141b2fb93cb6b143745b6","index":91192},"timestamp":1672313715,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7265646279746573)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":3000,"kind":{"data":{"args":["0x627463","0x7265646279746573"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":15,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040050f802d54aad66d77d9e9b287d095c6880d92b41000000000000000f0000000000000bb80001a2785df1d0a5f29b3fb8b32f3cbe0e5c3e5bc68fda31d2349a71fe05670eaf1d0c6a4d9129184f0695d3b3dbf33044d3d7553ecb373e613c3cbd7fe3ab2b860d030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000087265646279746573","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000088b04686173680200000000086d657461646174610c00000004046e616d6502000000087265646279746573096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a50f802d54aad66d77d9e9b287d095c6880d92b41","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST18FG0PN9APPDNVXKTDJGZ89BHM81P9B868PET19","success":true},"operations":[],"transaction_identifier":{"hash":"0x0f50d4e73450471c3c97c8c47f25e4dd27c807d5f4705834290e71fa9a6ab0cc"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xee47cf3c75db256bf31f4a8c43b461bb29804399baa1dc6e891b56d018629c85","index":91196},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000000a5286fe2fed4f5fc67ccf4945da19fe563d5c0fd014b6d4f","index":2413374},"confirm_microblock_identifier":{"hash":"0xbe4d016ef7d86619eb86d9b874099926ef09054ca34496649f3709d0707bbbbf","index":0},"pox_cycle_index":393,"pox_cycle_length":1050,"pox_cycle_position":723,"stacks_block_hash":"0xc9f5b064402925e07590bfa44bf39fc9fa1c45d70593497ffaa0d38a5e47f400"},"parent_block_identifier":{"hash":"0xe15848360669eca1e1063ee29af4ea00cb2c450ca44452e51a3349ce4041c3cf","index":91195},"timestamp":1672316262,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x75797674636678636776)","execution_cost":{"read_count":16,"read_length":44010,"runtime":167230,"write_count":2,"write_length":161},"fee":3000,"kind":{"data":{"args":["0x627463","0x75797674636678636776"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":19,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040050f802d54aad66d77d9e9b287d095c6880d92b4100000000000000130000000000000bb80001a664205e85f11d1802f421d61260511c84e5f0ac97612cf242466bb0aca5966c51880694e64f60b261d8f43b3fbd9a544c64cfff02fa35e899075db0132aaa1f030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000a75797674636678636776","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000088e04686173680200000000086d657461646174610c00000004046e616d65020000000a75797674636678636776096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a50f802d54aad66d77d9e9b287d095c6880d92b41","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST18FG0PN9APPDNVXKTDJGZ89BHM81P9B868PET19","success":true},"operations":[],"transaction_identifier":{"hash":"0xec00bb19b0610b5ad670cf1496d86d05f8e0b38c9039041fbd4f916efa35eab7"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x1e4b378e8aa0fd53f2383412fc53e43e0690e44d07ef67a7f5295d314e7d9999","index":91201},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000002eb9040540c76e39bbd875540400be50f8c52e58056eb61423","index":2413379},"confirm_microblock_identifier":{"hash":"0xd32f30775ca83eeb72b6a4a60b78c3757df684418534e413ce4eaf2f8830478b","index":1},"pox_cycle_index":393,"pox_cycle_length":1050,"pox_cycle_position":728,"stacks_block_hash":"0xbf571f0b3b052805c98804207000da4b15462276c8ad92eb64f9983552effed9"},"parent_block_identifier":{"hash":"0xf72fcd573b749732d5312fd7052d73da1e1f89ce7481e587873dab54192aedf8","index":91200},"timestamp":1672319325,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6a6268766763667864)","execution_cost":{"read_count":16,"read_length":44007,"runtime":167191,"write_count":2,"write_length":160},"fee":3000,"kind":{"data":{"args":["0x627463","0x6a6268766763667864"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":23,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040050f802d54aad66d77d9e9b287d095c6880d92b4100000000000000170000000000000bb8000197661d0f39eebebb9801d3935f0b7f0595b28027caf03914ffa87819f2a510b17c4eefc4cc100346291db56886daf9642d2c4161ee681628d15c66c726d2198e030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000096a6268766763667864","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000089104686173680200000000086d657461646174610c00000004046e616d6502000000096a6268766763667864096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a50f802d54aad66d77d9e9b287d095c6880d92b41","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST18FG0PN9APPDNVXKTDJGZ89BHM81P9B868PET19","success":true},"operations":[],"transaction_identifier":{"hash":"0x0cad3b8dfa51215508a5543337e76f9428a7a81121f3aed60103a7427bcc8717"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x3433ec206caff6e7631b70fd11ad857bced6ae22febbea2bf5b104cf7fe335fe","index":91207},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000bc633545806d8a11e51e5b7703ac624c3c16e9d5ddc95d03b","index":2413385},"confirm_microblock_identifier":{"hash":"0x133a519f582d1bb07ae23bdce7b05953e7e15f9fdbf3dddc88b7ac95aea345f6","index":0},"pox_cycle_index":393,"pox_cycle_length":1050,"pox_cycle_position":734,"stacks_block_hash":"0xc746eff9f1299881a9b11a1158857fbc359b354463d40f3540074898f49dcf08"},"parent_block_identifier":{"hash":"0x4fb7b47af270632a110b4b479c34750cfb681a82b2e2e19c63f3fc63818d9532","index":91206},"timestamp":1672323426,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x67686a686e67626676)","execution_cost":{"read_count":16,"read_length":44007,"runtime":167191,"write_count":2,"write_length":160},"fee":3000,"kind":{"data":{"args":["0x627463","0x67686a686e67626676"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":27,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040050f802d54aad66d77d9e9b287d095c6880d92b41000000000000001b0000000000000bb80000520fef8a6c1242ff1444172e3794eb2821f7dfc373d599261a35749be9dce0d72176a5c53f1f28a35529bab7ed0297e3f6046fe15b921fc9300a986a9fb5bc15030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000967686a686e67626676","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000089404686173680200000000086d657461646174610c00000004046e616d65020000000967686a686e67626676096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a50f802d54aad66d77d9e9b287d095c6880d92b41","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST18FG0PN9APPDNVXKTDJGZ89BHM81P9B868PET19","success":true},"operations":[],"transaction_identifier":{"hash":"0x37b576d00d4d1d40d5b415aa1e74ac2ce3dd0af2adb3a328331516c6f5cc10c4"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x6fc332172cb96e730e304147d20b8d46dd7e84c4a68402a20d8086bf0ee5cf1e","index":91214},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000003171ff977345976f9caa10ca7443f40d6239529c6a3ccde69","index":2413393},"confirm_microblock_identifier":{"hash":"0xcccdddb332ed2bbe9707cc62154d56b54ad610027b56fbf8202afff3b4510695","index":1},"pox_cycle_index":393,"pox_cycle_length":1050,"pox_cycle_position":742,"stacks_block_hash":"0x231a2a09ae9c72be1790ee07dc0f05b0131adf911b25ef8e3638091fd07369af"},"parent_block_identifier":{"hash":"0xe3571f1e6148be92c323c03ec24c63be5fe2534406640fa6018873a89bdb0b17","index":91213},"timestamp":1672327788,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x79667467766862)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":3000,"kind":{"data":{"args":["0x627463","0x79667467766862"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":31,"position":{"index":2},"proof":null,"raw_tx":"0x8080000000040050f802d54aad66d77d9e9b287d095c6880d92b41000000000000001f0000000000000bb8000166fdc179bdad55e110b5472fd80dd0cdc4e54657abff78cd449254c8e0cc91697605553c280ec82e75242ee51e99b276b8a2372be42090b813e1b06ec3dd964c030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000779667467766862","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000089704686173680200000000086d657461646174610c00000004046e616d65020000000779667467766862096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a50f802d54aad66d77d9e9b287d095c6880d92b41","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST18FG0PN9APPDNVXKTDJGZ89BHM81P9B868PET19","success":true},"operations":[],"transaction_identifier":{"hash":"0x1bd79ff3707cf877a51b2c4e17abaa2b50f129629da644d3fdeede41a60285b0"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7074766e6a686a)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":3000,"kind":{"data":{"args":["0x627463","0x7074766e6a686a"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":8,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400c25beba5104f81c688de7a6a29da6d1ab881d40f00000000000000080000000000000bb8000012d79342124537fe52dca89e72ada6ca9a90398ea1d53fa8577a342ae4dfc9b137049213f95fddb05b2e65efb5e5b94d29f22b50609168491b5327d9fb1190bd030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000077074766e6a686a","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000089804686173680200000000086d657461646174610c00000004046e616d6502000000077074766e6a686a096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac25beba5104f81c688de7a6a29da6d1ab881d40f","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST315QTX5217R3HM8VSX6MAETDMDBH0EM1XN4G5KQ","success":true},"operations":[],"transaction_identifier":{"hash":"0x12ad07821a4e08b8a432a25ff83be10b4544c0578b261256ae39d46157138804"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xe546ca0d5e5c596354e2a9a0d0be937ca9a34da8a8cf1ad2238725beeaea595d","index":91241},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000002a4b61b3cace27518fe0ef9277ed2c00727dc2f77904f8577c","index":2413420},"confirm_microblock_identifier":{"hash":"0x134493c110c1d47377ab6600244223699a3dd664509a86b12a596f200152ca85","index":2},"pox_cycle_index":393,"pox_cycle_length":1050,"pox_cycle_position":769,"stacks_block_hash":"0xc66c4938452855ac10c0441a3a299957ceb643b670d25c3886fcdacad0b35559"},"parent_block_identifier":{"hash":"0x32d317b7b5ca77c73378171a9beb4923408753cc2432a6b35ff1965bf03822bf","index":91240},"timestamp":1672344961,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6466786263676e)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":3000,"kind":{"data":{"args":["0x627463","0x6466786263676e"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":12,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400c25beba5104f81c688de7a6a29da6d1ab881d40f000000000000000c0000000000000bb8000195adf3b3fa1710f185ec4b9c898ef5775e8b03c996373b6855294a250f1d75b72ba7913821c6183cec033e6f4a943fc1e7cbb8c3de6482ccd8916d890f539289030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000076466786263676e","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000089c04686173680200000000086d657461646174610c00000004046e616d6502000000076466786263676e096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac25beba5104f81c688de7a6a29da6d1ab881d40f","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST315QTX5217R3HM8VSX6MAETDMDBH0EM1XN4G5KQ","success":true},"operations":[],"transaction_identifier":{"hash":"0xe660d041e3a7466c38570758929ba49e06b5fbc1a170b34f63d2c69b288d93f8"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x667367676e)","execution_cost":{"read_count":16,"read_length":43995,"runtime":167035,"write_count":2,"write_length":156},"fee":3000,"kind":{"data":{"args":["0x627463","0x667367676e"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":34,"position":{"index":2},"proof":null,"raw_tx":"0x8080000000040050f802d54aad66d77d9e9b287d095c6880d92b4100000000000000220000000000000bb80001f1974a1446620a857f060cf228e5942c36d5e385e7721ff719e7becc429936b10bd43d7cb8148ce73804a24b90a66315cffe1427d31d97084a518d04821c9c7c030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000005667367676e","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000089d04686173680200000000086d657461646174610c00000004046e616d650200000005667367676e096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a50f802d54aad66d77d9e9b287d095c6880d92b41","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST18FG0PN9APPDNVXKTDJGZ89BHM81P9B868PET19","success":true},"operations":[],"transaction_identifier":{"hash":"0xf399621f65cec9e62467edfb7690675ad08a4e468826d03bf4a5a6498570979e"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xd7a82c35c5742ee9e3d802642a4a9e64d428f5111405f5f354de5cdc42d239ea","index":91245},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000022af0bc2641803f5f8b6d2b5057047649ed289472d728eaed0","index":2413424},"confirm_microblock_identifier":{"hash":"0xa2def32c871ff665991391d9c960dd69ce68c8887b45fb60d4ffbc65a1ae1e2b","index":2},"pox_cycle_index":393,"pox_cycle_length":1050,"pox_cycle_position":773,"stacks_block_hash":"0x62e4ea2c539408ed711c098193d1532bb93c93045134cb5e1e88d143c27f45f6"},"parent_block_identifier":{"hash":"0x891acb599711995b5372f57f615bc71505bc6103a81ab897311375f29cca7430","index":91244},"timestamp":1672347081,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6a6b76736261646b6a7662)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167269,"write_count":2,"write_length":162},"fee":3000,"kind":{"data":{"args":["0x627463","0x6a6b76736261646b6a7662"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":16,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400c25beba5104f81c688de7a6a29da6d1ab881d40f00000000000000100000000000000bb8000171650abdad9e30f4f4dd15c79326248ac00d17de189c88ddfd0aba5e7bf6bf020adac5f6643cebb0e47ed38aef8739079c4a4aaf3c6cf2a3df9c0992269bc944030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b6a6b76736261646b6a7662","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000008a104686173680200000000086d657461646174610c00000004046e616d65020000000b6a6b76736261646b6a7662096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac25beba5104f81c688de7a6a29da6d1ab881d40f","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST315QTX5217R3HM8VSX6MAETDMDBH0EM1XN4G5KQ","success":true},"operations":[],"transaction_identifier":{"hash":"0xbb0fb807276b70cb0ced9798d8306c91cbd9a90829f377cd918b0865349e70b9"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xedec099f1fe544d0705639ee9df088468b8f53cd57017e75d624849d8fe1cbdb","index":91246},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000002780313cb5fd3d1e200c4ec66c999f7dcedf585206ef74ec16","index":2413425},"confirm_microblock_identifier":{"hash":"0x378afe3b360b9467d484b9f3b22c095636c30b7b247b9074b6657c0ffa24c9ab","index":3},"pox_cycle_index":393,"pox_cycle_length":1050,"pox_cycle_position":774,"stacks_block_hash":"0x1d25561f6469773baa199a29cacfa7073a1c06c8b102fa7ec07f596a9b1bbdf5"},"parent_block_identifier":{"hash":"0xd7a82c35c5742ee9e3d802642a4a9e64d428f5111405f5f354de5cdc42d239ea","index":91245},"timestamp":1672347357,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6e6577706f696e74)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":3000,"kind":{"data":{"args":["0x627463","0x6e6577706f696e74"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":38,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040050f802d54aad66d77d9e9b287d095c6880d92b4100000000000000260000000000000bb80000638f1d85784ad8f06ad2bd102abb08fa9a8ce133733cfd9316c44999e1ac401875045103fcdb31bd7cc4b4ce726196fc7c93bfe614a02012f31ddaf2cfc4255f030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000086e6577706f696e74","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000008a304686173680200000000086d657461646174610c00000004046e616d6502000000086e6577706f696e74096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a50f802d54aad66d77d9e9b287d095c6880d92b41","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST18FG0PN9APPDNVXKTDJGZ89BHM81P9B868PET19","success":true},"operations":[],"transaction_identifier":{"hash":"0x974a9b2edc3a52570a8d93be452bf4042ad5887497f6593a40d19b57a735ea1d"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x158c6fef20834af754d6257c502e3e8740b6305593b5d55143484e2d22941e61","index":91248},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000013e5b825dc51123d000b9f9b8af1f17bc9882f15c20cffa7e1","index":2413427},"confirm_microblock_identifier":{"hash":"0xc40b0583a8a9156cf81298306b87e74d7a6a5dbb0ac77ced84d0231fbe1285ba","index":0},"pox_cycle_index":393,"pox_cycle_length":1050,"pox_cycle_position":776,"stacks_block_hash":"0x4fe2d48477a6c561f319dcb7fc5199b2c35510f909cce2746d4ea75df28ca410"},"parent_block_identifier":{"hash":"0x8e733968f54e41dbc26889253d943adb228ccca300c2a18e28ebe2b43755e0a7","index":91247},"timestamp":1672348809,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7366676462)","execution_cost":{"read_count":16,"read_length":43995,"runtime":167035,"write_count":2,"write_length":156},"fee":3000,"kind":{"data":{"args":["0x627463","0x7366676462"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":20,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400c25beba5104f81c688de7a6a29da6d1ab881d40f00000000000000140000000000000bb80000d7d1cc1b2292d061afbe20df54a8586943f0be3bce674f02b727fde8fa008fa718271b34db027b5cbe9429e5b466a75eea98a25c5774320c51fdf9b47193736b030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000057366676462","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000008a704686173680200000000086d657461646174610c00000004046e616d6502000000057366676462096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac25beba5104f81c688de7a6a29da6d1ab881d40f","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST315QTX5217R3HM8VSX6MAETDMDBH0EM1XN4G5KQ","success":true},"operations":[],"transaction_identifier":{"hash":"0xee35f9283ce00e7d7a7503bc73bb0d108017b93fe14a78e4a539fb1e91263789"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xa82ed0a4e79599edfdc584fcf1b93b3e145850e750cae7bd395c2c495ef91366","index":91318},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000cba8867ba177831bd96775aa2f16f57f003cb5a11401fa9afd60","index":2413502},"confirm_microblock_identifier":{"hash":"0xfc9a56fd504150aeb4981161f2bbee97690e17cf7ee4613e497bd783fa72e1e6","index":5},"pox_cycle_index":393,"pox_cycle_length":1050,"pox_cycle_position":851,"stacks_block_hash":"0x4e4ee2a7669997a298de1ac5e7b25d0c69984239155dcbeb33b0e51b73c62394"},"parent_block_identifier":{"hash":"0x348d51439f3cd5ed967e58cd4d8f308f16196c07d38c99c7ea9c46a273e09eb6","index":91317},"timestamp":1672392267,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7364667366736461667361)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167269,"write_count":2,"write_length":162},"fee":3000,"kind":{"data":{"args":["0x627463","0x7364667366736461667361"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":42,"position":{"index":6},"proof":null,"raw_tx":"0x8080000000040050f802d54aad66d77d9e9b287d095c6880d92b41000000000000002a0000000000000bb80001c67f1d95f5c41e70faa9edf29fb3e69e5520ddf6568051c6dbbf2a36bd9879b32f61e1ac87d689a98411d730538d8d59bdff1607c2301ee041903f4135abc6a8030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b7364667366736461667361","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000008a904686173680200000000086d657461646174610c00000004046e616d65020000000b7364667366736461667361096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a50f802d54aad66d77d9e9b287d095c6880d92b41","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST18FG0PN9APPDNVXKTDJGZ89BHM81P9B868PET19","success":true},"operations":[],"transaction_identifier":{"hash":"0x1c00b96df55008e724043df1b69ca25c46c279fbf87c1eed702267f9789ffdbd"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xe6832e220c5ea654f60015266572b5d3ef4c0b976bc0b827db64f191bb292804","index":91329},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000023f851eba3be870d1a2032b7ccdab646e5f971534773987b93","index":2413514},"confirm_microblock_identifier":{"hash":"0x178d8fdeb5d29c21c3a88ae13e93a33ea9a643271f43927657b3c83fcad90553","index":2},"pox_cycle_index":393,"pox_cycle_length":1050,"pox_cycle_position":863,"stacks_block_hash":"0x5eb47bc29afcc44ac5eb51800af08e75cbca3bc8a1a7829e574448c6ff39e934"},"parent_block_identifier":{"hash":"0xfc323ad875fc3e4374c9bec6f0d0ee1da56b668ac2bdd405a5fab074830f42c3","index":91328},"timestamp":1672399640,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6c6b6e6a6b6268)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":3000,"kind":{"data":{"args":["0x627463","0x6c6b6e6a6b6268"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":46,"position":{"index":2},"proof":null,"raw_tx":"0x8080000000040050f802d54aad66d77d9e9b287d095c6880d92b41000000000000002e0000000000000bb800013e9106c0ac49823e9c9d0b3c95226448a1efc754831a7dd84d6490b637abf8a04006cb37c33021b616236f5857150c7071bcab0180909c90e0c97a358d95b886030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000076c6b6e6a6b6268","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000008ae04686173680200000000086d657461646174610c00000004046e616d6502000000076c6b6e6a6b6268096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a50f802d54aad66d77d9e9b287d095c6880d92b41","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST18FG0PN9APPDNVXKTDJGZ89BHM81P9B868PET19","success":true},"operations":[],"transaction_identifier":{"hash":"0x94933998ba897717ff4c59d38167d13df86937dda0ed08665c434e9470106ad5"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6173637a7876)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":3000,"kind":{"data":{"args":["0x627463","0x6173637a7876"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":24,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400c25beba5104f81c688de7a6a29da6d1ab881d40f00000000000000180000000000000bb80001f5c1b9eb62874e740766dd988aa13459db7e989d12f3ceb881ebc60ad761c74001fdd8a77af4e28e6caf6263e77fe0a2a0a84e82ab5f5a12a71c86585f7b7dca030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000066173637a7876","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000008af04686173680200000000086d657461646174610c00000004046e616d6502000000066173637a7876096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac25beba5104f81c688de7a6a29da6d1ab881d40f","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST315QTX5217R3HM8VSX6MAETDMDBH0EM1XN4G5KQ","success":true},"operations":[],"transaction_identifier":{"hash":"0x2e69c5e50abd5e144b85f696351fa701cc2c4f4951445614a14eef6d698e3c7c"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x1b6f5593f1b3c33f300bc91c26364f636b0b8da750327178e729b93c01fc5099","index":94592},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000c6a76fb57a3f8672abbabe760976cd42f226c70c1e6a60c130430daf","index":2417180},"confirm_microblock_identifier":{"hash":"0x773b03d7808b3a3d92711e8bcec05590a2a0fa21327451230d0bdad18a3bdbd2","index":3},"pox_cycle_index":397,"pox_cycle_length":1050,"pox_cycle_position":329,"stacks_block_hash":"0xa415db188b35e570cf3615f45b4e34230abd80caa59908af233efac58c2f506b"},"parent_block_identifier":{"hash":"0x0a75734a1f5f2bce262c529aefb48fe304cb85a64e44a932e684ee5f3302e70a","index":94591},"timestamp":1674193073,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x74657374646f6d38)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":3000,"kind":{"data":{"args":["0x627463","0x74657374646f6d38"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":4},"proof":null,"raw_tx":"0x80800000000400714eb6c48636eb734c823bd4cee142b82835677800000000000000020000000000000bb80001dc1ee70efa991b228ed216b4400a41a0a8e1d9647f4201b01c03218398207b0f2f0ab99296557be93f3f401bf25b6fa4a0fb33927e96bd50ca346a55749fa57b030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000874657374646f6d38","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000008c304686173680200000000086d657461646174610c00000004046e616d65020000000874657374646f6d38096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a714eb6c48636eb734c823bd4cee142b828356778","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1RMXDP4GRVEPWTCG8XX9KQ18AW2GDB7F1ZDHQQQ","success":true},"operations":[],"transaction_identifier":{"hash":"0x7bbd6cc7ee83aa451d7d1cde7e7ad9ea6f09be5e1e8ec9e31a447b857bbd58e5"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x4f4d477c76cedbe8a5bb779b5dba430a10486b2062c14f35b2f1ec9b869723ac","index":94595},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000014b20ef449f75f3c015bcef0e19d302e440f9ecb4c183300dc","index":2417183},"confirm_microblock_identifier":{"hash":"0xa95ca4924b7c7200a6b187b12cd5b2b197cb6d87d4998b07969df46fff335c40","index":0},"pox_cycle_index":397,"pox_cycle_length":1050,"pox_cycle_position":332,"stacks_block_hash":"0xfaef028fc97dffd90ed4f7b9bb60a147ef1a03b5d268134ebccc655486c33d2b"},"parent_block_identifier":{"hash":"0xdab6763a3d12739e2c16023715cc98e83e3e4a1a37cc82fa3fc0d4b28615103b","index":94594},"timestamp":1674195177,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x64646f6d61696e)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":3500,"kind":{"data":{"args":["0x627463","0x64646f6d61696e"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":53,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040050f802d54aad66d77d9e9b287d095c6880d92b4100000000000000350000000000000dac00019ec00a84b3733ef15d2eed368365d491066ace0205dca1b5616e266bffccc3d84e4d77259790f9337fe2fa289204c8eb1f9eb0132ff2b14d84634814b13ff43b010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000764646f6d61696e","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000008c504686173680200000000086d657461646174610c00000004046e616d65020000000764646f6d61696e096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a50f802d54aad66d77d9e9b287d095c6880d92b41","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST18FG0PN9APPDNVXKTDJGZ89BHM81P9B868PET19","success":true},"operations":[],"transaction_identifier":{"hash":"0x50cf8cc1fd204cdcf96b4d604233667bf0a0003ddc3faee4eabf0115c244ea35"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xe170bd05c3241a4486348e82c6f1c545068c7ba89284c7c7eae563c93e3a28fa","index":94606},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000159cb9f6c589c85140f551c2365ea5d33dd402945df5a7ef68","index":2417196},"confirm_microblock_identifier":{"hash":"0x17423a44d03a8a9ad591b6447c50fe06123b025728d0c1d8195020f290b4a9af","index":0},"pox_cycle_index":397,"pox_cycle_length":1050,"pox_cycle_position":345,"stacks_block_hash":"0xe7f5ee37a31875b47fbb3e09bb4a4ac737363cec4771dc385254aac5e9ce8708"},"parent_block_identifier":{"hash":"0xeb31e637e6025a0a517c63b8b467e5fbaa098b6746a6e9d23e3fd2e142ba98a1","index":94605},"timestamp":1674201871,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x636a6b736c646a6e63)","execution_cost":{"read_count":16,"read_length":44007,"runtime":167191,"write_count":2,"write_length":160},"fee":375000,"kind":{"data":{"args":["0x627463","0x636a6b736c646a6e63"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":57,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040050f802d54aad66d77d9e9b287d095c6880d92b410000000000000039000000000005b8d800008683e328ef382d30d127ae1ac75d36122acb7bc8864c7d55416395eeb47872986aca04d8bde19b47d99dec1f1ebd0395cfad192c1f8afd8a7372d901542b0904010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000009636a6b736c646a6e63","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000008c804686173680200000000086d657461646174610c00000004046e616d650200000009636a6b736c646a6e63096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a50f802d54aad66d77d9e9b287d095c6880d92b41","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST18FG0PN9APPDNVXKTDJGZ89BHM81P9B868PET19","success":true},"operations":[],"transaction_identifier":{"hash":"0x35441b3c77b3ba2184d81771183b4f0080392583d420de5d74bdb25554f62e75"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x87b4c9f84509174cc325a07312e6bfdcb698307210693cc30c82434ccd2ef1b1","index":94931},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000008149db6fdeb66545a76d2803fc514992a063ba3dd2b6b0cc865","index":2417534},"confirm_microblock_identifier":{"hash":"0xfabc256b770a0c6bdb0410b31b7d36fb26b0a6e44f7ed0b6f8c9773e08ffe637","index":2},"pox_cycle_index":397,"pox_cycle_length":1050,"pox_cycle_position":683,"stacks_block_hash":"0xe7c1012104e83c3f2b2c0c5895f3807489bc6706895921c5534e5d50bf64dc38"},"parent_block_identifier":{"hash":"0x02dd71e1c72c0b8d830b848345b7341b891b97e89c7216d6c57f8c13ff282602","index":94930},"timestamp":1674472017,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x646664626462)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":75000,"kind":{"data":{"args":["0x627463","0x646664626462"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":63,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040050f802d54aad66d77d9e9b287d095c6880d92b41000000000000003f00000000000124f8000081bb46f078433ef23cd1a5919019d81870500995261e55ea1390b87847ffbbfe614eebf4d6a97343c03f6b594e1bf5caeb821b886ff7c29036acddbc1e8a2cea010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006646664626462","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000008d304686173680200000000086d657461646174610c00000004046e616d650200000006646664626462096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a50f802d54aad66d77d9e9b287d095c6880d92b41","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST18FG0PN9APPDNVXKTDJGZ89BHM81P9B868PET19","success":true},"operations":[],"transaction_identifier":{"hash":"0x125c862fbda42730910cc61d84e2b6af4c59466373650b3e37f1ca1137366e90"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xe706379aa49e62c1e536c962c3b608abeb8655bd140bc828d4d2fe1d56474e70","index":95022},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000acd32c2780094b160b5244cb51c418effa439d2938ad2d32f","index":2417629},"confirm_microblock_identifier":{"hash":"0xf8a5c863461753dd0af684a10b212d3fb2693619b6a2f6d658f26f764b398bb5","index":1},"pox_cycle_index":397,"pox_cycle_length":1050,"pox_cycle_position":778,"stacks_block_hash":"0xc11bdb32a6388eb2c762ae1b2cb995a4e3f1c9d66fcdd7d6808126f9c142bc3a"},"parent_block_identifier":{"hash":"0xb62dc5d76a4faa40ac32de1e308b4452bae904556ff57d42de10ef1d5393e3cb","index":95021},"timestamp":1674551814,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6c6b666e76646c6b666e76)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167269,"write_count":2,"write_length":162},"fee":6000,"kind":{"data":{"args":["0x627463","0x6c6b666e76646c6b666e76"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":71,"position":{"index":3},"proof":null,"raw_tx":"0x8080000000040050f802d54aad66d77d9e9b287d095c6880d92b41000000000000004700000000000017700000ea57db96e81f717ef19556cf48cb9bb3e28ecd9e3e14207f0dc09b36d0d54a4126de056b92f91fd4fcdfb4aed12073ab69d957f5d2e182720499f6cec8157199010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b6c6b666e76646c6b666e76","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000008dc04686173680200000000086d657461646174610c00000004046e616d65020000000b6c6b666e76646c6b666e76096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a50f802d54aad66d77d9e9b287d095c6880d92b41","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST18FG0PN9APPDNVXKTDJGZ89BHM81P9B868PET19","success":true},"operations":[],"transaction_identifier":{"hash":"0xaa77a9ebe1f5d0a98e7bc757dc663b0a882f49b43fc22e90d3146df31759d615"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x46ac216c096e8b52f71c215ce11f65b358750bdae2477c1b65c33b3b771332ba","index":95760},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000003b2415d394e8298e91f443878ef10f5e170304cc9cac57c2140c","index":2418408},"confirm_microblock_identifier":{"hash":"0x07911fa69f1e5646d9a0e05a63dafcde5a8e1e82c981933ea86a42b71d6a0bd9","index":4},"pox_cycle_index":398,"pox_cycle_length":1050,"pox_cycle_position":507,"stacks_block_hash":"0x1fa2ac92ef599058737187faecd5703857c02aec5343fed938ea1813f3060b20"},"parent_block_identifier":{"hash":"0x1e2cb585595c3ae6c27250342eea04c78416a2c1a7c6b7f915bd69f78c69da39","index":95759},"timestamp":1675151187,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6f69757974726577617a78)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167269,"write_count":2,"write_length":162},"fee":3000,"kind":{"data":{"args":["0x627463","0x6f69757974726577617a78"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":29,"position":{"index":5},"proof":null,"raw_tx":"0x80800000000400c25beba5104f81c688de7a6a29da6d1ab881d40f000000000000001d0000000000000bb800019859b8a10951f42a5547e4459c87ff2386d816677c6d988721463fa2ea132c7661d17625acd05e8ed6f5e89b0f54da6f1ab0fae88aed5a87e65a12131e3f30db030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b6f69757974726577617a78","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000008f304686173680200000000086d657461646174610c00000004046e616d65020000000b6f69757974726577617a78096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac25beba5104f81c688de7a6a29da6d1ab881d40f","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST315QTX5217R3HM8VSX6MAETDMDBH0EM1XN4G5KQ","success":true},"operations":[],"transaction_identifier":{"hash":"0xd8536148bc13bd919140487a043d542a22237bf90b0470ef159dba60cc1ae6c9"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x57e77d072bc2f784563f59e77b6d7186bf69a8273915b3804b6151fd26842257","index":95792},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000367e96faed24c5e6980ceeb65f2ac6049603c8208976abc10","index":2418441},"confirm_microblock_identifier":{"hash":"0xffcd609da55bd503abf3638b0daf48d9e742b10dda1b84a0179a855e16b2c203","index":0},"pox_cycle_index":398,"pox_cycle_length":1050,"pox_cycle_position":540,"stacks_block_hash":"0x4b6377bc81d179a589661f86221784a80e187b35da292c1eb676b2d727e0d448"},"parent_block_identifier":{"hash":"0xdee7de27cd6e7a163d811f36ddb540e9fd05fcbe18501973cdcf017faf7ef2de","index":95791},"timestamp":1675179580,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6173636163767a)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":3000,"kind":{"data":{"args":["0x627463","0x6173636163767a"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":19,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004008435c694e51024d978ea3fb42971d74b8ff3df3500000000000000130000000000000bb800014773a1c06f82cc4c265096d4d54d84b1a99dc868d0c6f777e06a028a54dac849061ef4124a9aff8ff8057a8550bb2ca15a1e9df736bf6f168dc8201c8a6d72c1030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000076173636163767a","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000008f704686173680200000000086d657461646174610c00000004046e616d6502000000076173636163767a096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a8435c694e51024d978ea3fb42971d74b8ff3df35","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST223BHMMWM829PBRX8ZV8ABHTX5RZWYZ6PTJCWC5","success":true},"operations":[],"transaction_identifier":{"hash":"0x5b1ee33c5101430fb6eae9bf355f0ef4051ac2dbae33740a6dc38a0a9857baf2"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x61f363b7181069832a2a05db36fe1fbc20b4b286c6fbc7a607d8e3e6f6596099","index":95864},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000060f86924c35449dcccb9dba24f2aba272590b3b6f5d42ad338c7","index":2418519},"confirm_microblock_identifier":{"hash":"0xe0cfeaf45bac60bc962e4eb9d49cb8fbc4d3f1e98da47fb4d502412e6ed9a141","index":2},"pox_cycle_index":398,"pox_cycle_length":1050,"pox_cycle_position":618,"stacks_block_hash":"0xcb79e2b8422c4fb0d63566b78a11ec2b268823d379eacd3ef7628b32c48796ac"},"parent_block_identifier":{"hash":"0x20d3d56b946f887324325b05a4e5489060870b17f603e54f94735c2ed46bb93b","index":95863},"timestamp":1675236735,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6361736463766173)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":3000,"kind":{"data":{"args":["0x627463","0x6361736463766173"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":10,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400714eb6c48636eb734c823bd4cee142b828356778000000000000000a0000000000000bb8000081445b5cf992c23bd807acbae9ed17c6c1be82f2b0e5e8a23db748c0db6d940f0291500f0f4226d46e7898301c6ea904b718f5e0b4644c7d04d2d6e2badabb2c030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000086361736463766173","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000008fc04686173680200000000086d657461646174610c00000004046e616d6502000000086361736463766173096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a714eb6c48636eb734c823bd4cee142b828356778","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1RMXDP4GRVEPWTCG8XX9KQ18AW2GDB7F1ZDHQQQ","success":true},"operations":[],"transaction_identifier":{"hash":"0x0f8779a83dfcdb9c9bb10c33727b6ed404e6f9ddc337a78d4250a54aee7796e5"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x39c31d52d72572ec4c1566fdadc5b94f128c2bbb443a157b7106dc55deb1f965","index":95904},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000e65c1ad2deae3b04ef920caee221b0f0a8dbe8cdd986063aa","index":2418560},"confirm_microblock_identifier":{"hash":"0x805449977a15f1831c7e5725b9f841e0dd0f9107f406d94f14e9c0cc1d37ac11","index":1},"pox_cycle_index":398,"pox_cycle_length":1050,"pox_cycle_position":659,"stacks_block_hash":"0xe1dcf739296c9c993427b8decfbbd24d3e1d366647f2be26ad49ab931ec3cd74"},"parent_block_identifier":{"hash":"0x4e031984836a7923051399076b856d248f506cb21fbbe3c33945b729f5e3d8b7","index":95903},"timestamp":1675270947,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x78686664677864666768)","execution_cost":{"read_count":16,"read_length":44010,"runtime":167230,"write_count":2,"write_length":161},"fee":3000,"kind":{"data":{"args":["0x627463","0x78686664677864666768"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":5,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400fd07ac2bb4feefb4fc6e37c6c8dae3bd0a25430400000000000000050000000000000bb8000034cd6959694fdd7ab0cd0b54c730bec2761be9ab5ba2ae62f733d6a3eb95761a6d64bcb9ab721d363aea2144f687508821d6550805d9b7b3d46d54bfe7cf4f67030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000a78686664677864666768","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000008ff04686173680200000000086d657461646174610c00000004046e616d65020000000a78686664677864666768096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051afd07ac2bb4feefb4fc6e37c6c8dae3bd0a254304","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3YGFB1BPKZEZD7WDRVWDJ6TWEYGM9A30H4Q0PHZ","success":true},"operations":[],"transaction_identifier":{"hash":"0x653ca3ab34b4490b19e812fc8b48d9f967643b0fb6514fc8dcb90b44f633b587"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x1adbfa9519ff2595f196a9e08c7c6436bd7d6a61fed741dbae216573c83cd1b0","index":95905},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000956eeffcb509066ad7c1f704fb6820c15845e938da9382e2f","index":2418561},"confirm_microblock_identifier":{"hash":"0x84fdb719408371e3f8b4f2e0401e795652dfdf6104ddd2bf7be78cf0345547e7","index":2},"pox_cycle_index":398,"pox_cycle_length":1050,"pox_cycle_position":660,"stacks_block_hash":"0x5ba7954e7febfb65434d6950acfae36b004e23bb2663e3478801e2c691f365d3"},"parent_block_identifier":{"hash":"0x39c31d52d72572ec4c1566fdadc5b94f128c2bbb443a157b7106dc55deb1f965","index":95904},"timestamp":1675271230,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x66676763686a646a)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":3000,"kind":{"data":{"args":["0x627463","0x66676763686a646a"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004006b03eee67ea59d3aad6e1d7938744b195f8d3e2f00000000000000030000000000000bb8000152e18e43f4dc264ace13f821f106d35f886464a8d759a4bbed3e0d7016daeada266801af4cfcdbf49a1fbcbd12d97cf8bfcd3694e3c82b66f72d083d7623c82d030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000866676763686a646a","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000090004686173680200000000086d657461646174610c00000004046e616d65020000000866676763686a646a096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a6b03eee67ea59d3aad6e1d7938744b195f8d3e2f","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1NG7VQ6FTJSTENDDREQJE3M9CCNZ39Y5ZC7MJBY","success":true},"operations":[],"transaction_identifier":{"hash":"0x4fc9e3b951b848a23bd20df4f8951d761c003c448783c5fbb1e62af0cc690839"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x4d7c16c4aaab6aecc07983c8add0211b082bcfa0df308a0d975858c277524032","index":96001},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000001d6c092900a4c762ed5e388fa0de520db477afe047531c155f","index":2418663},"confirm_microblock_identifier":{"hash":"0xe42d6865eb1d0bff777873b5f03aa4af147c01d8901b72d31ddadba848d702bb","index":4},"pox_cycle_index":398,"pox_cycle_length":1050,"pox_cycle_position":762,"stacks_block_hash":"0x8641a3188272e7287d94d50db5d0d18f2462f041fceae68c75b7d2529bfedc6d"},"parent_block_identifier":{"hash":"0xafad405c08d18304726f0231d71003fafacb9d914447939d9813e80f1ba6ada1","index":96000},"timestamp":1675356069,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x61617765)","execution_cost":{"read_count":16,"read_length":43992,"runtime":166996,"write_count":2,"write_length":155},"fee":3500,"kind":{"data":{"args":["0x627463","0x61617765"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":15,"position":{"index":6},"proof":null,"raw_tx":"0x80800000000400e14cac7d41bd3c6e0a823ae48274f018c9693ef9000000000000000f0000000000000dac00009e2861cd05d28f6af2df4e5bf016ab41a205c3a85848cba6530655dd4f66a631152785ad65433d10fc11b7072f46738f6760833fda9d27580162700265ace11e030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000461617765","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000090f04686173680200000000086d657461646174610c00000004046e616d65020000000461617765096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ae14cac7d41bd3c6e0a823ae48274f018c9693ef9","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3GMSB3X86YKRVGAG8XE90KMY0CCJT9YZ723KYKA","success":true},"operations":[],"transaction_identifier":{"hash":"0xa3af533f0f21787daa03871ba70f0778414c20d635f5c4951ef97bf52b57ee96"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x41f01d6ec80d4fad9f5db1fa75d1db900510b4e4a97b786d031e73b42df3fdd6","index":96077},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000003cddaf34f6d99690dfb3a5f9572e5ee2062a80286a6d919ac","index":2418739},"confirm_microblock_identifier":{"hash":"0xdaba05bf193c5aca7d874aeca8084ceb426887dab20260cd03341b5760496657","index":2},"pox_cycle_index":398,"pox_cycle_length":1050,"pox_cycle_position":838,"stacks_block_hash":"0xbc0f8f2f45f5abdd560de0cfc4fd3d999150d62308c1649eebb76c9ad2bf1c08"},"parent_block_identifier":{"hash":"0xdb87589fd851fb382c0956298609bbcd88d26bdd7d100bd4acf800c0c38719a4","index":96076},"timestamp":1675412662,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6466736766677468)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":3500,"kind":{"data":{"args":["0x627463","0x6466736766677468"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004003535178d22e32b633587174d97ed4fa21642c4a200000000000000030000000000000dac0000a151c1b7a3e0ef442ba4fff30a9b88896db37cf0b09cf35623a645b28a585ef503c486b584999736b35196b21fe6230ea385bc92f8ce26073801ad4b727c6d21030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000086466736766677468","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000091504686173680200000000086d657461646174610c00000004046e616d6502000000086466736766677468096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a3535178d22e32b633587174d97ed4fa21642c4a2","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STTKA5WD4BHJPRSNGWBMV5ZD9YH1CGP4M9PRAVVX","success":true},"operations":[],"transaction_identifier":{"hash":"0x5d54660640a497e08d50ad79eb69d31239746442ef4a73c6391f0f9874d3f629"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x39449dfb5107b7b8e79fbef8b5aa2a80657dfc87f422e69686cc81a8cf333dcf","index":96091},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000001bc1a718340ef4743a8085cede5fee073552c4cd59a911dfbd32e415","index":2418755},"confirm_microblock_identifier":{"hash":"0x4442a58a27507b7a7b5126880fce3aeb564bf57afd2660462249d0533ce2f554","index":2},"pox_cycle_index":398,"pox_cycle_length":1050,"pox_cycle_position":854,"stacks_block_hash":"0xf44415ee29693438ea857b91b3a647ba20b730e3831899c279cf6bea4248fbf7"},"parent_block_identifier":{"hash":"0x6afcdb07ed5ad072c71ae9fd740e97d7a0c849970dd7b552228589e9cf2c8382","index":96090},"timestamp":1675425917,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6f6c616c6c616c)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":3000,"kind":{"data":{"args":["0x627463","0x6f6c616c6c616c"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":35,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400e7b3490e967732af9f66600fa6177adfa987601000000000000000230000000000000bb80001e5f9d9cd22de4eb4f7d79a54f977b15b4f5d525374c05ed687ed337973cecae506e4b7d5b80efa6856975978e332954f060045e2088f1e4b66d442e2e6ed8e20030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000076f6c616c6c616c","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000091f04686173680200000000086d657461646174610c00000004046e616d6502000000076f6c616c6c616c096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ae7b3490e967732af9f66600fa6177adfa9876010","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3KV6J8EJSVK5BWZCSG0Z9GQFBFTK1V0231DJR93","success":true},"operations":[],"transaction_identifier":{"hash":"0x5b6b61dd3ce1562653bfbef142fd6bedba511a70c30cbcb44eb75383596984af"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xaf8b28974ebb5bb155a9a6c8bfcb502d8172949d3d347628626bbe18e2906721","index":96399},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000010d569d76f8d9e23aa518bb5b95c18158b02d47cf3f6f7739c","index":2419076},"confirm_microblock_identifier":{"hash":"0x115382c1d8ee96fa98cb1efc2873db9e29fcd05d2a9b94a71d7977c9c998f50e","index":3},"pox_cycle_index":399,"pox_cycle_length":1050,"pox_cycle_position":125,"stacks_block_hash":"0xda3c4048f56c016f0e5b342279ff5271411cd992ab91462214aab6db54e2ccfa"},"parent_block_identifier":{"hash":"0x32d5d92fdfd9f1fbc8ba54a1d499d39d7d3923ecac030650407e3b65600d3454","index":96398},"timestamp":1675665617,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x77646673667373)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":3500,"kind":{"data":{"args":["0x627463","0x77646673667373"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":5,"position":{"index":4},"proof":null,"raw_tx":"0x80800000000400cff965b6b4553644f65ae11651fbf743f3153c1b00000000000000050000000000000dac000010ef6a76926f11dc2ea3c0de9dc8513aa1c2613779bcbf862d6e8e519aecc0ee2f2457e3c7af43e6f386065477af2a647c542c56b11c1a9f594f5cee0b5d4375030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000777646673667373","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000092404686173680200000000086d657461646174610c00000004046e616d65020000000777646673667373096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051acff965b6b4553644f65ae11651fbf743f3153c1b","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST37ZJSDPPHAKCH7PBBGHCMFVYX1Z659W3CY0426D","success":true},"operations":[],"transaction_identifier":{"hash":"0x60a6d67d646f1b11c26e5ce39eafbb764d57bf08999ead8e718c6fc6621e8584"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x0e4f04f780093b360e4868879e535f6f3cfc871d323e01350523b220d3c2e169","index":96410},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000004f36e00a359fbfae2862548a6da0764820834d40b06a4dc6c685c","index":2419088},"confirm_microblock_identifier":{"hash":"0x756e98ee0207847b5217e7313f03bf4840fab554a9d99b7c20260a6b6ed322e4","index":6},"pox_cycle_index":399,"pox_cycle_length":1050,"pox_cycle_position":137,"stacks_block_hash":"0x45f71f03e13a393c08a3c1c1528627ff10ea3e6eaf1f03d5edf8034bf88814aa"},"parent_block_identifier":{"hash":"0x134e18167336fab13abfac38541557b4f782fd4be0042093a82f07fa099bbba4","index":96409},"timestamp":1675676074,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6a626b686e6b6a)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":3000,"kind":{"data":{"args":["0x627463","0x6a626b686e6b6a"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":16,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400714eb6c48636eb734c823bd4cee142b82835677800000000000000100000000000000bb80000b69c41fc9b351c36bdeae57b2c1a92be14010c7f213902d8f4909af86c80755e1115d0c998f61fc25a1b6ecbb0f4597cfe7b3301fdc73c00fccae2f8fb322ded030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000076a626b686e6b6a","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000092704686173680200000000086d657461646174610c00000004046e616d6502000000076a626b686e6b6a096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a714eb6c48636eb734c823bd4cee142b828356778","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1RMXDP4GRVEPWTCG8XX9KQ18AW2GDB7F1ZDHQQQ","success":true},"operations":[],"transaction_identifier":{"hash":"0x413fcbec444fbb73ef840e1d3e4dc41783966866e77802ca262ce231ae940b71"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x44d377e8074b1473d1d89c87a4e86d837384255c9a8102fe670479a141b30aa5","index":96412},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000004f8607378bf5f3baa0e709751afbd8f9d673e49063fb7a49f52","index":2419091},"confirm_microblock_identifier":{"hash":"0xadbee9cc9f48154bfbce1ca7a7a3c1d9fb06e9022882aa29e7ac091c676487fb","index":4},"pox_cycle_index":399,"pox_cycle_length":1050,"pox_cycle_position":140,"stacks_block_hash":"0x2bc5ec8b3881f26c5523a6ff4d61442b810fef5c844b023eec1e3d855f38437a"},"parent_block_identifier":{"hash":"0x1cfc7c1c8d702f097dd7d7a100175d4b2f1f43446d520720a3cf3ae38137dfff","index":96411},"timestamp":1675677901,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6a76637276)","execution_cost":{"read_count":16,"read_length":43995,"runtime":167035,"write_count":2,"write_length":156},"fee":3000,"kind":{"data":{"args":["0x627463","0x6a76637276"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":7,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400be72b3bf0c3ea8f18ce0b6813f0f909631782bb900000000000000070000000000000bb800011d3cd431fe2dc9cb02111521c272e8d2e9db549a5078a1b842443dab962621061e6c248d996780e4983e657455b1471c873c06c3f5833d52f36cf5c3a982f9a9030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000056a76637276","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000092a04686173680200000000086d657461646174610c00000004046e616d6502000000056a76637276096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051abe72b3bf0c3ea8f18ce0b6813f0f909631782bb9","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2Z75CXZ1GZAHWCCW2V82FRFJ2B32Y1BQ7FBNPYF","success":true},"operations":[],"transaction_identifier":{"hash":"0x82c2a2231032973108f5e36772d3e4c703f9978cc697e18d4fa0e85a7b44e5a5"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6a76637276)","execution_cost":{"read_count":12,"read_length":43966,"runtime":131782,"write_count":0,"write_length":0},"fee":3500,"kind":{"data":{"args":["0x627463","0x6a76637276"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":8,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400be72b3bf0c3ea8f18ce0b6813f0f909631782bb900000000000000080000000000000dac0001af5a6fa55c010d39d4d4ec0050b5a54f7b23c612aeaf97d9abfa0b43301791445f427b6c3ba8353bbeb4471713665ec4cb68f3d89c261e3066b2404902d39c9f030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000056a76637276","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST2Z75CXZ1GZAHWCCW2V82FRFJ2B32Y1BQ7FBNPYF","success":false},"operations":[],"transaction_identifier":{"hash":"0x40a7dfc7b5d8033c635d11fd39d7d4a58f191b5bc0836aadbf9aa44ebca2381a"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x77cf10c16c916311b6295dc7e4fa4eb948112d7271c522c6208c6bcfe3868691","index":96453},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000001ab128735d0549a43be46d71678369c8e8badd81dc95de0f86964","index":2419134},"confirm_microblock_identifier":{"hash":"0x84d6ae79e3f5372e7a7638c83fe327294faf61ff52bebef0bbfb2577f335eca2","index":6},"pox_cycle_index":399,"pox_cycle_length":1050,"pox_cycle_position":183,"stacks_block_hash":"0xfb9e65f1fda1c551bba554ef67f3bdc6d5ddc9d78bad56b28de6491d092e9644"},"parent_block_identifier":{"hash":"0x79d06882d9266d19f0b0437255629d210a84cb8900b53164d7f191cc8cc46a3b","index":96452},"timestamp":1675719533,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x, 0x)","execution_cost":{"read_count":4,"read_length":41790,"runtime":48227,"write_count":0,"write_length":0},"fee":3000,"kind":{"data":{"args":["0x","0x"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":40,"position":{"index":8},"proof":null,"raw_tx":"0x808000000004003aa67c55c8c978f19454c3b15e5307566e50d52a00000000000000280000000000000bb80000f02e9e387aff1f40e7aba9c32d93092c03c9a0f0b9d03d901968b2ae67e8d6d34b3a1bbc1283d647f0aecce6fbfe3a097ae84e08b68ead492eb7e7cdca902a80030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000000200000000","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2013)","sender":"STXACZ2NS34QHWCMAK1V2QJK0XB6WM6N5AHY0TJY","success":false},"operations":[],"transaction_identifier":{"hash":"0xaf0206e6502e9b5e296d866ab8166e42203b2f7d5cb2045492b86219907452e0"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xf19cede06053ce090530af19a67d908b009fadefd4c3a89bcddc61accedd1ffb","index":97270},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000acbea0b2c70ad14020d4687d353720bd0653f6a9d006cd2e33ae82c6","index":2420005},"confirm_microblock_identifier":{"hash":"0xdcd3fa9fe20a0a92eff4659f852a1c1b7f6a84b5be03d71a112118e63a63b592","index":5},"pox_cycle_index":400,"pox_cycle_length":1050,"pox_cycle_position":4,"stacks_block_hash":"0x6ff12243842b80ed06a086b9498d5fb1ee2658d5fea0caed151e2366568d194f"},"parent_block_identifier":{"hash":"0x4fce9b25c2b8bfe38656a25f730de1f3882aac81ea75625f3429aae72b2dd3e5","index":97269},"timestamp":1676372112,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6162636465666768)","execution_cost":{"read_count":16,"read_length":44004,"runtime":167152,"write_count":2,"write_length":159},"fee":3000,"kind":{"data":{"args":["0x627463","0x6162636465666768"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":11,"position":{"index":4},"proof":null,"raw_tx":"0x808000000004005d35a7e8d4600d0285ec0b3a97f764c750e415d4000000000000000b0000000000000bb800014fbf78f90744b2edac2ff16e2edffbfdf8c72e4226f430c9afa39682f95c7aca7d92253ea9c4617715c6eb997ca867f82a9f1881290e5fce718c96ff0905726d030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000086162636465666768","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000094804686173680200000000086d657461646174610c00000004046e616d6502000000086162636465666768096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a5d35a7e8d4600d0285ec0b3a97f764c750e415d4","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1EKB9Z8THG0T0M5XG5KN5ZQCK3N1S0NTJ3R9R4W","success":true},"operations":[],"transaction_identifier":{"hash":"0xe3b5778380d71d29240107af10770a901dc0c854c09031415e5c94ef03aa2887"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x1e888f6745b152d0c7a938ce1b7e925d16d7c94931b7dfabb60cb5fdb6130524","index":97348},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000353ac32d100c0db3f3559619dd925369bb4e937f8b942ab7ff3e","index":2420086},"confirm_microblock_identifier":{"hash":"0xf7382d369ad6751be53df99169f5232cc79f68151db27a6ca6f259637d58d201","index":5},"pox_cycle_index":400,"pox_cycle_length":1050,"pox_cycle_position":85,"stacks_block_hash":"0x91956e0dc1e60a252db792b9841c474a5277c46cba15af744d1a8a6be311b5f6"},"parent_block_identifier":{"hash":"0xca62d4d1b4f02bd719e02ef12759257bbaec31d1fa69050e351a4bb51ff7a04f","index":97347},"timestamp":1676436177,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x73646667)","execution_cost":{"read_count":16,"read_length":43992,"runtime":166996,"write_count":2,"write_length":155},"fee":3500,"kind":{"data":{"args":["0x627463","0x73646667"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":5,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004006eae96ccc5f772aea645fd31ec4101cddcb0882200000000000000050000000000000dac000194f47668ad250f86fc36cfcec24ee50f74e0b22a50595d4ea6032ec9d325e11a7642bff6f5868ff366906c7b7f31ac8f4c8df18e8c6923bf70998d11c5c88c0f030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000473646667","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000094c04686173680200000000086d657461646174610c00000004046e616d65020000000473646667096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a6eae96ccc5f772aea645fd31ec4101cddcb08822","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1QAX5PCRQVQ5BN68QYK3V21076XSC484AA9ME7P","success":true},"operations":[],"transaction_identifier":{"hash":"0xef4f1f8db828a2673079f44caa5e4dc23e79840b48e45e078cb13b488ab27cd7"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xef47886a5d8999cb29755d5b9f99741a73f0bc3772b82af8a0226d0948e46d6a","index":97358},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000003baee03f66f5ac87136afe54ce6bee4a0506671a6d7f411b0","index":2420096},"confirm_microblock_identifier":{"hash":"0xbaef5005973324614fc8b538c63beeaf740a3735a847ce964b413e2fafff9bca","index":4},"pox_cycle_index":400,"pox_cycle_length":1050,"pox_cycle_position":95,"stacks_block_hash":"0x9ac00646364e69d23909c2c83964425eebb268f5050bae8fdbe33af899812b8b"},"parent_block_identifier":{"hash":"0xe520a1dd878d21de75d297a93efc69d3ab9906749057c39fc2ec275b3c587bf0","index":97357},"timestamp":1676444404,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x646668737268)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":3500,"kind":{"data":{"args":["0x627463","0x646668737268"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":8,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004006eae96ccc5f772aea645fd31ec4101cddcb0882200000000000000080000000000000dac0001a8f9bfd74bbcb51bc6166f89926de7bb6ae9c4caf5f3904a098bd393b1b46de506bdb5da4c96a44471161c546e250cf9527b50ff3de37a6c8a2a7bafdcfcfba6030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006646668737268","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000095104686173680200000000086d657461646174610c00000004046e616d650200000006646668737268096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a6eae96ccc5f772aea645fd31ec4101cddcb08822","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1QAX5PCRQVQ5BN68QYK3V21076XSC484AA9ME7P","success":true},"operations":[],"transaction_identifier":{"hash":"0x55fc4acdcbabaf7f3f294c62827a1637ba3348b61cea44c3e8fe99cba9fde36d"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x4f2736cc2bcaedf50b4b61bed0481b37f26c17884e04dbb8a9fd8f37f2b2e3ba","index":97369},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000048e709b94d73d60a9bb6bd9bda4beb91bea76fc68d94c4e3a4c0","index":2420107},"confirm_microblock_identifier":{"hash":"0x7fe05fe6481d76030f1cfd878607fae216459110d1f71550173b3374372d41b7","index":5},"pox_cycle_index":400,"pox_cycle_length":1050,"pox_cycle_position":106,"stacks_block_hash":"0x31e26a860964a8abbeca0a6db24ec1cd6900f8053c1ca9da201ed736007eaf1e"},"parent_block_identifier":{"hash":"0x63dda231387c8e862dde09e05857a2eebd4303b35333a89038ea8707ce5fa4d0","index":97368},"timestamp":1676453109,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x626276627662)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":3000,"kind":{"data":{"args":["0x627463","0x626276627662"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":5},"proof":null,"raw_tx":"0x80800000000400b9de3832789df896a8f95f34a42ab103bdd5b27e00000000000000000000000000000bb80000fcdcc0791a77eb32a0029a368483f7cb0717547311dea6519ed9630b3bb6ea81131d4785520c831de5d95263e0ac0ab09b023f4e7b3883390286ee91b0c66ad1030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006626276627662","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000095604686173680200000000086d657461646174610c00000004046e616d650200000006626276627662096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ab9de3832789df896a8f95f34a42ab103bdd5b27e","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2WXWE1JF2EZH5N8Z5FK991AP41VVNDJFRM9P9KM","success":true},"operations":[],"transaction_identifier":{"hash":"0xaa4f711666e41809c1092c4b1706405ac483b366c37e8cd3dcadb4ca9a0578e0"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xcb68634667180af74a705ee8bd2301c5e286be40594c64161d9cd5b3aec2e92c","index":97463},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000007c4b93244b22b97d16a8340d6d1b156cbbd506700a25ec5626688ef1","index":2420214},"confirm_microblock_identifier":{"hash":"0xbcd339b09764fea2e871d13419371cb789c711fe7e1628917f01223295c70c76","index":2},"pox_cycle_index":400,"pox_cycle_length":1050,"pox_cycle_position":213,"stacks_block_hash":"0x4aab22a829fb697ec014f57abbdeec7fba93e38526f945fb78fc5c78130c2d67"},"parent_block_identifier":{"hash":"0x1886a2bf1c843f59d93d90cfc21d9937b336697c0a39daa87ea4574523bd5305","index":97462},"timestamp":1676525537,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x5f)","execution_cost":{"read_count":16,"read_length":43983,"runtime":166879,"write_count":2,"write_length":152},"fee":3500,"kind":{"data":{"args":["0x627463","0x5f"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400d6462b51d347951dcc22875b768058bf63e839e900000000000000020000000000000dac0001f4315a1a795eaabffe85501104c6ab913ff5a434f028a3cea5083347c4080ff45615ef6da026bf06360f1f8e81076699c890e5f63d37556ea3bf0c7ba014c3cd030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000015f","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000095d04686173680200000000086d657461646174610c00000004046e616d6502000000015f096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ad6462b51d347951dcc22875b768058bf63e839e9","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3B4CATHTD3SA7EC4A3NPXM0B2ZP7T1SX52X7SRG","success":true},"operations":[],"transaction_identifier":{"hash":"0xa646bf8374039f86a079545321784df487b6a0d10b62a0da9474019ba49bec59"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xbc107bea02208757328fbfd5b3ae39c2584d9451c0844cdb56ec6b2b712b4b03","index":97478},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000002b5a16ac196a27158dc41768e82642106eb5003513ffbcffe7","index":2420233},"confirm_microblock_identifier":{"hash":"0x413cf590b1e0bd6c1a83d31bc2ac9b1bbf4ddb5a5cbfeaf2f90af65781ccfbb4","index":4},"pox_cycle_index":400,"pox_cycle_length":1050,"pox_cycle_position":232,"stacks_block_hash":"0xc59e0113811ea289e7eda88d64d8dbd05c770c21b8efcfefeaba6600c5fcbbcf"},"parent_block_identifier":{"hash":"0xd40f9d739fe4a7dd568d1ba1f63326b3b2861e64e5319fbd1fe1510519c3e3b3","index":97477},"timestamp":1676537782,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7866636776686b626a)","execution_cost":{"read_count":16,"read_length":44007,"runtime":167191,"write_count":2,"write_length":160},"fee":3000,"kind":{"data":{"args":["0x627463","0x7866636776686b626a"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":7,"position":{"index":5},"proof":null,"raw_tx":"0x80800000000400d5c6df928e2d295d44682c942c230f42ce64f56f00000000000000070000000000000bb80001723f8ea56467a28377b408923c73af69f06ba65d691da117c473d49a726ad28477a09f34f60639893e41a22979becccddb26eccd5364f4acf0b430304b2e6a2b030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000097866636776686b626a","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000095e04686173680200000000086d657461646174610c00000004046e616d6502000000097866636776686b626a096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ad5c6df928e2d295d44682c942c230f42ce64f56f","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3AWDQWJHRPJJQA4D0P98B131X1CWS7NDW9X3S18","success":true},"operations":[],"transaction_identifier":{"hash":"0x93186ed616fc3f2f753a2b7665b934a73282d732e4dd9ac0b42d75baa7ac72af"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x3866d823680b0b059999e9af5828618ce56aa5708fc21de394cbdf6ef4d1eae3","index":97488},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000001d2c07c1d52fe05f2419afbde21b1a2a25dc17d6ae283c7735","index":2420244},"confirm_microblock_identifier":{"hash":"0x1297c45568b01ac9630a41d11f3fefa9e1e429a99f8019acb35ad9ae86833f0d","index":1},"pox_cycle_index":400,"pox_cycle_length":1050,"pox_cycle_position":243,"stacks_block_hash":"0x4d0989f15a9be78d693b85e0b022fca1a58ac85a582fdb38cafc8b50ed376923"},"parent_block_identifier":{"hash":"0xdad5eaef72e3643018d75df66060ee4eceff2d2fbbcd9ba76a27927b0abb58f9","index":97487},"timestamp":1676546387,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x616b6a63626173636b6a62)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167269,"write_count":2,"write_length":162},"fee":3000,"kind":{"data":{"args":["0x627463","0x616b6a63626173636b6a62"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":10,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400d5c6df928e2d295d44682c942c230f42ce64f56f000000000000000a0000000000000bb800008f4182e2700374b86cad9453cd7232f9ed51a48437f71320b99bd8b1ec5e605666c3b5debd56192a518ff75ed256d212f7fa45ba19cafe41720684d62a7b7fca030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b616b6a63626173636b6a62","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000096004686173680200000000086d657461646174610c00000004046e616d65020000000b616b6a63626173636b6a62096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ad5c6df928e2d295d44682c942c230f42ce64f56f","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3AWDQWJHRPJJQA4D0P98B131X1CWS7NDW9X3S18","success":true},"operations":[],"transaction_identifier":{"hash":"0x3ae9772c13a021dcbafbc986ae43436e97c0e9829687e798f1d96517fb64c12f"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x41baee773ad7891b956dffc76f8d41cafb1f5d9d4c371a9ae47bfe6a677a1419","index":97494},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000a7081d75f996e3488e52ca018a6e7d5a78ff064e9395a1080","index":2420250},"confirm_microblock_identifier":{"hash":"0xa808e1d9613f14b9f5c2e01fd9803e078810a92c540432f0ddcdee1a9ce2e582","index":5},"pox_cycle_index":400,"pox_cycle_length":1050,"pox_cycle_position":249,"stacks_block_hash":"0x27c7b80ca73a4ce754f3a50f6633ab8efbd802066f95ee34374e4391917311d8"},"parent_block_identifier":{"hash":"0xf3b1d830fafc451d27f6ea6d8bf25bb2e40760279643ba667b3134147541dae1","index":97493},"timestamp":1676549710,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6a646276736c6b6a646276)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167269,"write_count":2,"write_length":162},"fee":3000,"kind":{"data":{"args":["0x627463","0x6a646276736c6b6a646276"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400182d6d4255f279581bb31b28d0c184e300a46b5100000000000000000000000000000bb8000144ea438596668ef5706af34ea93d515cd9df263f31dfef07455bc0a1f9ff87336a9c2cca9c984d4a5fdf5acd629ef624f4482ad97341ed76497293270009193c030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b6a646276736c6b6a646276","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000096404686173680200000000086d657461646174610c00000004046e616d65020000000b6a646276736c6b6a646276096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a182d6d4255f279581bb31b28d0c184e300a46b51","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STC2TVA2AQS7JP0VPCDJHM61GKHG193BA5VMDWTR","success":true},"operations":[],"transaction_identifier":{"hash":"0x0d4380ccbc88349df2702869d62aa33d3a32ff7dab275449c7bdcd0ee6c68f8b"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xa92a874e1faad057a880c5df6bde1ab70c8f00fd2f6e778718ed128f1d0a1ed2","index":97497},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000597664ea3d82151d03b7aef878ae38dceb78004202ea56652","index":2420253},"confirm_microblock_identifier":{"hash":"0x42c27dbcc54953e26e88dec03a23d50a2c7e3b613a9cea55a6320210deb50fb0","index":3},"pox_cycle_index":400,"pox_cycle_length":1050,"pox_cycle_position":252,"stacks_block_hash":"0x4704b8c15d0ccfc720d2b1e633a42ea942830fb7660dc7fd8e78c7c09bbd9a2c"},"parent_block_identifier":{"hash":"0x2b1200581b82407b65893ddce5417334561902997734b511c386074d2dba5107","index":97496},"timestamp":1676550830,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x73646a76)","execution_cost":{"read_count":16,"read_length":43992,"runtime":166996,"write_count":2,"write_length":155},"fee":3000,"kind":{"data":{"args":["0x627463","0x73646a76"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":4},"proof":null,"raw_tx":"0x80800000000400182d6d4255f279581bb31b28d0c184e300a46b5100000000000000030000000000000bb800012b1e8b5e5eab371348657f4061afbd68add5ad73379794c20815e0a3142205ee2d13e966876152e833171f71a68220b7500dacb23677b6a399f57ce9c742a2ed030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000473646a76","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000096604686173680200000000086d657461646174610c00000004046e616d65020000000473646a76096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a182d6d4255f279581bb31b28d0c184e300a46b51","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STC2TVA2AQS7JP0VPCDJHM61GKHG193BA5VMDWTR","success":true},"operations":[],"transaction_identifier":{"hash":"0x112dc72a1c2ad817e88eb14a0a5cd44a26d509b89ef9358574a1a2ed959a707b"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xc50ee516fa6f6303474f3629841cd67d123f6896bc9e458b6c0925a3a6e44620","index":97499},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000814e6f7734c9ef543dbedba876dac6724d6bf016b2e9e72b5088cf6c","index":2420255},"confirm_microblock_identifier":{"hash":"0xaadb094016eb1e3dc430a1dbb832e219017687a02ce14758b60e06b0318ba133","index":5},"pox_cycle_index":400,"pox_cycle_length":1050,"pox_cycle_position":254,"stacks_block_hash":"0xd361d5ed29c96fc617f7eb7b978339e8d1fd7e282708a62578e454c225658aa9"},"parent_block_identifier":{"hash":"0xaebff3f468522b9009ff7885ad0be535eb90ef772561928c8aeb1859c7af31f2","index":97498},"timestamp":1676551611,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6e6f6e6f6e6f)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":3000,"kind":{"data":{"args":["0x627463","0x6e6f6e6f6e6f"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":4},"proof":null,"raw_tx":"0x808000000004006684c7aac54fb4eb6ce79b232102f1522560ffa000000000000000030000000000000bb8000096c5313b5a783bddaa414091c463eaf087626ece1cfff05cf0844d2a518715432dd109c723918c1758fafe7195ce76b578db297c83d5de3dca8ad1a1ca516f89030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000066e6f6e6f6e6f","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000096904686173680200000000086d657461646174610c00000004046e616d6502000000066e6f6e6f6e6f096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a6684c7aac54fb4eb6ce79b232102f1522560ffa0","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1K89HXARN7V9TVCWYDJ6882Y592AR7ZM0WDV711","success":true},"operations":[],"transaction_identifier":{"hash":"0xcb96c0e600f0959101b0be521b31475bc0a66ebee282946247384f9fe290d74b"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x26dec9f35559e6617d9c63a3943ce389e648889ea6a67bbc28ce6211f95883f4","index":97614},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000009bb8b1f83a78437a67bd5a53086aa69f8bc2c048cfb53cb802b53d1d","index":2420379},"confirm_microblock_identifier":{"hash":"0x90507655169ddb1f6654226fa24409202eb3b61cb0dbbbeff32f9726a0f78380","index":3},"pox_cycle_index":400,"pox_cycle_length":1050,"pox_cycle_position":378,"stacks_block_hash":"0xb77693c2af721e7de16cc12db27b2f712c5efdc0c58d2fb16cf624ed950eba8c"},"parent_block_identifier":{"hash":"0x101ac93d3af1e8b43d4a67b50902c66d645926c670437ab334d15d7ec1d6f6b8","index":97613},"timestamp":1676630625,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6a6b6e7667686478667a7364)","execution_cost":{"read_count":16,"read_length":44016,"runtime":167308,"write_count":2,"write_length":163},"fee":3000,"kind":{"data":{"args":["0x627463","0x6a6b6e7667686478667a7364"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":6,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004006684c7aac54fb4eb6ce79b232102f1522560ffa000000000000000060000000000000bb80000122fa611604b6cd7961102d33152578fa8e6b1a830307e5094802f161189f5444b656d841fbf0cc52997dbaebd9835684db20c9d128984262dc333fb93745f91030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000c6a6b6e7667686478667a7364","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000097304686173680200000000086d657461646174610c00000004046e616d65020000000c6a6b6e7667686478667a7364096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a6684c7aac54fb4eb6ce79b232102f1522560ffa0","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1K89HXARN7V9TVCWYDJ6882Y592AR7ZM0WDV711","success":true},"operations":[],"transaction_identifier":{"hash":"0xba2af731b03fab9dd0942bf274c18e3a98d1c54e67ed04c224b885d2ad31aeff"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x75d3d37322f9afb975fd07930a6bbb7e25fbb41c4e51bb4bd24e82f1a7cd933f","index":97622},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000213ded2dd8bcaf436321704d08887878582addb17d6559657d","index":2420387},"confirm_microblock_identifier":{"hash":"0x3b19f4dff8083a2d8361a89fb18cc17baef551969c1a8b118e07ae6d0803f18f","index":1},"pox_cycle_index":400,"pox_cycle_length":1050,"pox_cycle_position":386,"stacks_block_hash":"0x3ca09da4e96b8401f3cee7019080664b6a7c9b29508684c1330c453833343e6e"},"parent_block_identifier":{"hash":"0x0b11fb684da82dcad09e6bab062cce9cf2e119af06335e3292b8e8a8398914c8","index":97621},"timestamp":1676634734,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x706f6975797472657771)","execution_cost":{"read_count":16,"read_length":44010,"runtime":167230,"write_count":2,"write_length":161},"fee":3000,"kind":{"data":{"args":["0x627463","0x706f6975797472657771"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":12,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004009eb1c9dc5a00931d4513a495cc213a1662b2b7d9000000000000000c0000000000000bb80000b95a45ab5779555feda17c09ea83344f18e601a20f1ee6a38ffdca3eebbf41fa30f9ef1387238c55e18667c825da6cfc874f1d5d92e2b98551e5790fcd896f04030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000a706f6975797472657771","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000097904686173680200000000086d657461646174610c00000004046e616d65020000000a706f6975797472657771096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a9eb1c9dc5a00931d4513a495cc213a1662b2b7d9","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2FB3JEWB80967A52EJ9BK1178B65CNQV6YR5B3R","success":true},"operations":[],"transaction_identifier":{"hash":"0xb51eef3b5fd20b895b055aec9dfd6e1b1dab4d6461544a3e0b05f231d6d7dee5"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xb961c6be8d37f4db51c8162a8f9c191e0eb5ffb3e0f3eaa4d999b62d81a84b86","index":97892},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000128c251c3bc7177df14ab069869f9b3440a0e31d9756c4167e","index":2420702},"confirm_microblock_identifier":{"hash":"0x4f79a19da8c9b360799a2acd9334813d0f5e35ed3291bef1ddf94a98ded01e40","index":4},"pox_cycle_index":400,"pox_cycle_length":1050,"pox_cycle_position":701,"stacks_block_hash":"0xa0bc4cf3f3c5575365a39d8ff0692f7551e25946ec696c89155997fccb263468"},"parent_block_identifier":{"hash":"0x23302ae2195c9469de3c551c63f751dc130774b6b69c82086347d4ca282e13b5","index":97891},"timestamp":1676843044,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x312d74782d34)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":3000,"kind":{"data":{"args":["0x627463","0x312d74782d34"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":6,"position":{"index":5},"proof":null,"raw_tx":"0x80800000000400c04fc57bccee4ed146d79a4be5bbbbffe067735d00000000000000060000000000000bb80001607e732622dff356e626fa6bbeb65c1b5b38322e324a1e82ced6268b9ac511a9467880b5c6e594bd104599e3b77e1dbeee61e98e5e70ec05b44efedec8dcb84c030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006312d74782d34","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000098f04686173680200000000086d657461646174610c00000004046e616d650200000006312d74782d34096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac04fc57bccee4ed146d79a4be5bbbbffe067735d","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST304ZHBVSKQ4XMA6TYD4QSDVQFZY0SVKBNNKPQB0","success":true},"operations":[],"transaction_identifier":{"hash":"0x2a0890c80f1ec80f2ad6eb77465e0b5841d95f73199f92f8b07151b431080d2b"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x9fb4a38594d91354b9bba5abfbcf587f02ed63bf5fe2e9ac130a851dbbc7b3de","index":97947},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000094c26e4be8051559b9c6f78ad1d2a470d868122ce6c5c9be8dd9b3f8","index":2420758},"confirm_microblock_identifier":{"hash":"0x97c9b47fa510c97002e133fd88471ae090dd2fb3139d5a7003eda32efba6cb25","index":4},"pox_cycle_index":400,"pox_cycle_length":1050,"pox_cycle_position":757,"stacks_block_hash":"0xe3d170ea05de2be537c6c62702e6151d981e27eff23df325328558ab8e0139bf"},"parent_block_identifier":{"hash":"0xcf8d24d906bb3de500c7b92e0357e32ac6bc501ba14500ffcae9c845df3cd290","index":97946},"timestamp":1676878576,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6b6a62686a766763667864)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167269,"write_count":2,"write_length":162},"fee":3000,"kind":{"data":{"args":["0x627463","0x6b6a62686a766763667864"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":6},"proof":null,"raw_tx":"0x80800000000400234be811e63690e480f7cab613abc826d0f4afa800000000000000000000000000000bb80000dc307fce3ffb2e73835c0e90c897939fe697f379b46984ddb8065d796b018a066d48e8b850d42c3f22b30afd45bae5f46b1932b66e4e1fd060398dbec9835be9030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b6b6a62686a766763667864","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000099b04686173680200000000086d657461646174610c00000004046e616d65020000000b6b6a62686a766763667864096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a234be811e63690e480f7cab613abc826d0f4afa8","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STHMQT0HWRV91S40YZ5BC4XBS0KD1X5FN165QNV6","success":true},"operations":[],"transaction_identifier":{"hash":"0xd25cf3b28007747fb8fbb33fabb0f6623acbc6e3475c07d78ada36a6abb722a3"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x2cb8ca8284d78ac3d9a7563e134de104f8f9618091820b0dd6cc215011ce9971","index":97972},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000245e4be5a39b42bc2b13599dc91d9a9bfb5e92639c47d55293","index":2420788},"confirm_microblock_identifier":{"hash":"0x007a23ef197f5d2c56d529b53acf6f22534b11faf68a81879175ecb5fdce1424","index":4},"pox_cycle_index":400,"pox_cycle_length":1050,"pox_cycle_position":787,"stacks_block_hash":"0xabe9a76e8c564f2a718478af0928d8d214b9ff8e3300c2fcdd5cbc4513dca142"},"parent_block_identifier":{"hash":"0xa8ccd6419e03552fd0697ffcd09188cd58314de3fae4cf8ea8c238a0631df21c","index":97971},"timestamp":1676897779,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6d6c706e6b6f626a69)","execution_cost":{"read_count":16,"read_length":44007,"runtime":167191,"write_count":2,"write_length":160},"fee":3000,"kind":{"data":{"args":["0x627463","0x6d6c706e6b6f626a69"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":39,"position":{"index":4},"proof":null,"raw_tx":"0x808000000004009eb1c9dc5a00931d4513a495cc213a1662b2b7d900000000000000270000000000000bb800009403611874eb6bd8e755c50b81a0fee123515743dba500e9f5e6c52a616f51363d7c3c23bdca0872ae8b4b396ad45939f1b7393595416584946fe64b76eadffc030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000096d6c706e6b6f626a69","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000009a504686173680200000000086d657461646174610c00000004046e616d6502000000096d6c706e6b6f626a69096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a9eb1c9dc5a00931d4513a495cc213a1662b2b7d9","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2FB3JEWB80967A52EJ9BK1178B65CNQV6YR5B3R","success":true},"operations":[],"transaction_identifier":{"hash":"0xd5a26a5edaa55c00f6c4ca5f0490c007c84505364a10b5dd14c6f584ce5a2b7e"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xd80d6136c949e573499b7cb461c056dbd921e8625d144a5cba71054af633e32b","index":97990},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000025c1e60e2f5e7ab2e35c5c3e65e80ef50d63696f9b63c8f6bb","index":2420807},"confirm_microblock_identifier":{"hash":"0x5ccf4aac6f6c0a5a0d9f0056b4c2553079aee933d7717c99fdd5096a433522ed","index":1},"pox_cycle_index":400,"pox_cycle_length":1050,"pox_cycle_position":806,"stacks_block_hash":"0x34997d078e40e90100bb77c149dca100e0bcf5b32cf501b9e2ba49cd3f6eb80b"},"parent_block_identifier":{"hash":"0xb22789f0cf6e1c7945313f8a0ff092a61a1d486190efd7608ad08379cc8a406f","index":97989},"timestamp":1676911064,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x78636d766e78766c6c)","execution_cost":{"read_count":16,"read_length":44007,"runtime":167191,"write_count":2,"write_length":160},"fee":3500,"kind":{"data":{"args":["0x627463","0x78636d766e78766c6c"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400b9de3832789df896a8f95f34a42ab103bdd5b27e00000000000000030000000000000dac0000da018ce611a65c81ce5b8ea2bfd0f0df82afc45e4d8bb93b119f46c789bfc0872d5ada559b3c16f67939a9be491d5968d90a8833846008a7fc4cdda16b548af6030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000978636d766e78766c6c","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000009a804686173680200000000086d657461646174610c00000004046e616d65020000000978636d766e78766c6c096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ab9de3832789df896a8f95f34a42ab103bdd5b27e","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2WXWE1JF2EZH5N8Z5FK991AP41VVNDJFRM9P9KM","success":true},"operations":[],"transaction_identifier":{"hash":"0xb246d4cbc714346a12d064aa8e3d5cdd63b30369df1991d64a6c0977b573923c"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xbfc59607da61969a7c02f3654f699e0c016f58c20b548616c24bf58f574d20c3","index":98065},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000252e8c09da04db485f4add6bd090dec234ca81829463ebc082","index":2420886},"confirm_microblock_identifier":{"hash":"0x5484ab96bf312754f0dba74974fb41b6c1a8ea6e38ae728a1cda0f4d8dddab0e","index":1},"pox_cycle_index":400,"pox_cycle_length":1050,"pox_cycle_position":885,"stacks_block_hash":"0xe80d93c4e89c7e9492a9d2b3c501b0dfb14b8525d3b08dbaae4c16f9dd4d4063"},"parent_block_identifier":{"hash":"0xa92a7d01c2dbfb581a8b36414c7530d07759ad8fcab714ddc552dfe3ad9b2edf","index":98064},"timestamp":1676961297,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x68626a697574726473786376626e)","execution_cost":{"read_count":16,"read_length":44022,"runtime":167386,"write_count":2,"write_length":165},"fee":3500,"kind":{"data":{"args":["0x627463","0x68626a697574726473786376626e"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":12,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400b9de3832789df896a8f95f34a42ab103bdd5b27e000000000000000c0000000000000dac000055a273dedd2d45c4f9cb4e24b6379aa4bcb55cc470464a341f67a959bb047aea7e59f98e3e86764883c5426f1e22ba34889fbf226ad389df364099e2c6549c51030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000e68626a697574726473786376626e","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000009b004686173680200000000086d657461646174610c00000004046e616d65020000000e68626a697574726473786376626e096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ab9de3832789df896a8f95f34a42ab103bdd5b27e","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2WXWE1JF2EZH5N8Z5FK991AP41VVNDJFRM9P9KM","success":true},"operations":[],"transaction_identifier":{"hash":"0x7db7b5723ff63f6f1afe9769d7f3cf9a75ed911084559f7e299c9cc1dec57f7d"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xfbbc1ffa959095c2630bf73f2839dace1b1394059ebae4a389c0b3d0ece1975e","index":98078},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000019c2ac099f8051f2bfd84cebd4b8b6bef29fe742db874b8013","index":2420900},"confirm_microblock_identifier":{"hash":"0xf8a1d4b03dbe9bd2b56ac6c5bbc2b6bea1bef1066a88900afd03bf09fbe5e446","index":4},"pox_cycle_index":400,"pox_cycle_length":1050,"pox_cycle_position":899,"stacks_block_hash":"0x3a702f70f39d46fa6e3b0d0842883e008e28a17e440f96c064d73258e6d4819f"},"parent_block_identifier":{"hash":"0x5bdeb187f48981cbdec42f7767df47862b4a72eb1fc9f7139dc0d34eea57c3fa","index":98077},"timestamp":1676966093,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x736a646b766273616b6a76626276)","execution_cost":{"read_count":16,"read_length":44022,"runtime":167386,"write_count":2,"write_length":165},"fee":3000,"kind":{"data":{"args":["0x627463","0x736a646b766273616b6a76626276"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":18,"position":{"index":7},"proof":null,"raw_tx":"0x80800000000400b9de3832789df896a8f95f34a42ab103bdd5b27e00000000000000120000000000000bb8000088854118aee8222175f95768111d24da8c3d0803a87642b2bb94bd9d7df16d5f489a41a657744fa6341c9180bec7b495c7764f7818dbb6927ef711cce9b1cb6f030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000e736a646b766273616b6a76626276","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000009b504686173680200000000086d657461646174610c00000004046e616d65020000000e736a646b766273616b6a76626276096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ab9de3832789df896a8f95f34a42ab103bdd5b27e","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2WXWE1JF2EZH5N8Z5FK991AP41VVNDJFRM9P9KM","success":true},"operations":[],"transaction_identifier":{"hash":"0x032a13d2cc6a63ad03ec3cbc86632c6531d4165e50943270b0a066e0ae379d9f"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xe36d5f33b51f96cc9df304eafdac36a0036f56bea11d9a5a2085868a45193eb4","index":98100},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000008b6bb1b5d78b56f97e08dd243c0361099e4a3acbd9c40cb63","index":2420922},"confirm_microblock_identifier":{"hash":"0x3ed6d13d3a8f7f2de49e5a57453c11697c1b568b277ae413d7a535494e1c9c67","index":2},"pox_cycle_index":400,"pox_cycle_length":1050,"pox_cycle_position":921,"stacks_block_hash":"0xd974dd1f8d65def25a372e3544a5797cd70b7edea9164e3f1d636bed59a9fb26"},"parent_block_identifier":{"hash":"0x6b4b199c598bf9da324b0105247ad7ccd3af69a3d51d061a6aa2e90257b10ec0","index":98099},"timestamp":1676978926,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x626876676366)","execution_cost":{"read_count":16,"read_length":43998,"runtime":167074,"write_count":2,"write_length":157},"fee":3000,"kind":{"data":{"args":["0x627463","0x626876676366"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":7,"position":{"index":5},"proof":null,"raw_tx":"0x808000000004003092ae481d8cdccca6680519d75151f801c98d6800000000000000070000000000000bb80001f7f00c7b32da18d397a3199ec22be06175d1e005f918b99f59b70a82e64923100df886ace3620c7e43096aeeb3ff1a53a12a0527c7bddfb62cfdd73203054ac0030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006626876676366","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000009c704686173680200000000086d657461646174610c00000004046e616d650200000006626876676366096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a3092ae481d8cdccca6680519d75151f801c98d68","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STR95BJ83P6DSK56D02HKNTHA7W03JCDD1F13X9H","success":true},"operations":[],"transaction_identifier":{"hash":"0xd0bbbb3f68bf4475ebd52d13a41cddcf233a15b808967321f3d35f54694a2d5a"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x08b902ff85f8ccaf63f80c51e5a5058d790c10a734034e5babfb07a791c7e7a0","index":98222},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000097829cf5920670f357f5def5b64765d27505b1a1d07ff0574","index":2421051},"confirm_microblock_identifier":{"hash":"0xf6e2ec6edf6a8554a41fda1a90c33cf03ea4f27fd00bdda237c9a2e597edca0f","index":2},"pox_cycle_index":401,"pox_cycle_length":1050,"pox_cycle_position":0,"stacks_block_hash":"0x67754b1b6d21df866423f3c938701f4554de58a893dca41057e7bf157553d1d5"},"parent_block_identifier":{"hash":"0x726a64b090d372d25298607d3d6958a469ea08a34a234654fbbd5eda6323b623","index":98221},"timestamp":1677069009,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6c6b6a686766647361)","execution_cost":{"read_count":16,"read_length":44007,"runtime":167191,"write_count":2,"write_length":160},"fee":3000,"kind":{"data":{"args":["0x627463","0x6c6b6a686766647361"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":9,"position":{"index":3},"proof":null,"raw_tx":"0x808000000004006684c7aac54fb4eb6ce79b232102f1522560ffa000000000000000090000000000000bb80000e8882390556d506fea237d2a8e7e1024f8d8d34b851f11ca8529698579a4f3c55dd3add7b13e479fc21423248c1c4c3bc6170eef231cf7b2491701a09baaeaf0030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000096c6b6a686766647361","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000009cd04686173680200000000086d657461646174610c00000004046e616d6502000000096c6b6a686766647361096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a6684c7aac54fb4eb6ce79b232102f1522560ffa0","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1K89HXARN7V9TVCWYDJ6882Y592AR7ZM0WDV711","success":true},"operations":[],"transaction_identifier":{"hash":"0xec73248fed91a5f71b8779961ed433ffe3202ad13963efece699e9fa3ac8e7c1"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x12b983627efc13f52a45fdfc36b92024a84fcc557df750d3956172f2394ca56d","index":98346},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000059bd8dd9049303c8c3ce520c4540152c399886c0f4219868a1c94103","index":2421186},"confirm_microblock_identifier":{"hash":"0x31892ac3e47325ef576607f6c25acda7753577d51cb2ca0affa03ee94e8205ea","index":5},"pox_cycle_index":401,"pox_cycle_length":1050,"pox_cycle_position":135,"stacks_block_hash":"0x0dce1bbe808fab0908fac77492662f678b95e95c9fe757947ea2cb46590c3cde"},"parent_block_identifier":{"hash":"0xceaf21f42a04d6e6cd2f2f5c6e144f0206b10b8ea2ce588dd906c83531025c4e","index":98345},"timestamp":1677158976,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x71776572617364667a786376)","execution_cost":{"read_count":16,"read_length":44016,"runtime":167308,"write_count":2,"write_length":163},"fee":3000,"kind":{"data":{"args":["0x627463","0x71776572617364667a786376"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":4},"proof":null,"raw_tx":"0x80800000000400234be811e63690e480f7cab613abc826d0f4afa800000000000000040000000000000bb800001990e2333b11afeed29f300d8c1262a193d4f39d63124b8d88ca71b618d301aa7dc486c8637a5a56e411578e9539e6e99a8d8965a13489d28c766402180f9e51030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000c71776572617364667a786376","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000009d204686173680200000000086d657461646174610c00000004046e616d65020000000c71776572617364667a786376096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a234be811e63690e480f7cab613abc826d0f4afa8","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STHMQT0HWRV91S40YZ5BC4XBS0KD1X5FN165QNV6","success":true},"operations":[],"transaction_identifier":{"hash":"0x2a43caa3f2255a4907c8dc36ebb5aef6b049052c2af305b28834e07e63f861e0"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x733cfc2667dd25b5636bbc9c6a1d281c0483092ac7cbe4f385395e9f56ecf613","index":98456},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000253ca50e50cde68f44b6a04b46b1d720aa742e352d62481f1b","index":2421301},"confirm_microblock_identifier":{"hash":"0xf0b6b6c1134371a37d84202c43bf8bab9bd782d7a48b56dfb4f7661de2be19dc","index":5},"pox_cycle_index":401,"pox_cycle_length":1050,"pox_cycle_position":250,"stacks_block_hash":"0xe96494d29c999d91475af2ac6da16dcc41dcd56c9311ac5537af5af893c64258"},"parent_block_identifier":{"hash":"0x04d87818cb0e2c6400b10035f26561947690f80cc17c41c99dcead602fc3fa82","index":98455},"timestamp":1677235917,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x61736b636c616276616c6f6e76)","execution_cost":{"read_count":16,"read_length":44019,"runtime":167347,"write_count":2,"write_length":164},"fee":3000,"kind":{"data":{"args":["0x627463","0x61736b636c616276616c6f6e76"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":7,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400234be811e63690e480f7cab613abc826d0f4afa800000000000000070000000000000bb800014900b5cbb775cb010966cd06b3e7082e6e20fba9f075529ec1b43212d5b7a82434fb02a45bee29e6ae90550363d77492bbea9bed97f6345838917526399075d5030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000d61736b636c616276616c6f6e76","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000009d604686173680200000000086d657461646174610c00000004046e616d65020000000d61736b636c616276616c6f6e76096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a234be811e63690e480f7cab613abc826d0f4afa8","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STHMQT0HWRV91S40YZ5BC4XBS0KD1X5FN165QNV6","success":true},"operations":[],"transaction_identifier":{"hash":"0xd3b1ea15320d5ea4750cca35daafc20b54b54f89dd68305510c1a97b016bf64d"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x795bee62f023990ffe8cc9d98ba57315188305a8c67a0f8a4c9ceffc2042c4a6","index":98458},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000002a1594e3839f0c603d46fbe3d3ad70c210ceb8268ff220d59d","index":2421303},"confirm_microblock_identifier":{"hash":"0x62d984420fd8a57e6f45f1e15acf972cdbc62384a9c2ac2bc681aea42e47ac53","index":4},"pox_cycle_index":401,"pox_cycle_length":1050,"pox_cycle_position":252,"stacks_block_hash":"0xa738f7ef9f1dde50ba442f511461a056705c7e3bd17bfbadb4a3ac3b083b96cd"},"parent_block_identifier":{"hash":"0xd88081f482a6049ad2a342ed0b73baac96d1e9b5744c2d52ad40f18f17199d35","index":98457},"timestamp":1677238097,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6d6e6b6a6268766763666768766a6862)","execution_cost":{"read_count":16,"read_length":44028,"runtime":167464,"write_count":2,"write_length":167},"fee":3000,"kind":{"data":{"args":["0x627463","0x6d6e6b6a6268766763666768766a6862"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":10,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400234be811e63690e480f7cab613abc826d0f4afa8000000000000000a0000000000000bb80000cf59bf28e76af7293a85b7712de821958e07a62c735350ec1ff7237eb8f9b6644bd56c35f6ac165a71150eef392d4c5708502b806c016f44ac93ae04944c0571030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000106d6e6b6a6268766763666768766a6862","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000009d904686173680200000000086d657461646174610c00000004046e616d6502000000106d6e6b6a6268766763666768766a6862096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a234be811e63690e480f7cab613abc826d0f4afa8","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STHMQT0HWRV91S40YZ5BC4XBS0KD1X5FN165QNV6","success":true},"operations":[],"transaction_identifier":{"hash":"0xf6a91dba9cb2d54957d45e11de46d98a1cf9d63e59942d5e58edf60281ed52f9"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xd0d0563491e185e62d64525c4393666abb014303d20abb759dbb8ebd4e8d593a","index":98459},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000002459da95deba61898126bd3aeaf96d6d1ee8cd286ad6a53860","index":2421304},"confirm_microblock_identifier":{"hash":"0x232bbb0ec673d53fcf640062e28225fc6c9132a7b7fdb339399fe64e52414187","index":5},"pox_cycle_index":401,"pox_cycle_length":1050,"pox_cycle_position":253,"stacks_block_hash":"0x1c011d2ded436c65c8305c3000e88067bab00dc4fd472da6bfde30802b6f990e"},"parent_block_identifier":{"hash":"0x795bee62f023990ffe8cc9d98ba57315188305a8c67a0f8a4c9ceffc2042c4a6","index":98458},"timestamp":1677238708,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x636c736b646e76736c6e646b76)","execution_cost":{"read_count":16,"read_length":44019,"runtime":167347,"write_count":2,"write_length":164},"fee":3000,"kind":{"data":{"args":["0x627463","0x636c736b646e76736c6e646b76"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":31,"position":{"index":4},"proof":null,"raw_tx":"0x80800000000400b9de3832789df896a8f95f34a42ab103bdd5b27e000000000000001f0000000000000bb800002f897f4702150683a1fe853822f428415b66f35add9ea03fad51d18cd49d28ab2d9e76db8c5ad0bff0474afededb3c23259f96ce49c492843dcb4a6fd75befda030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000d636c736b646e76736c6e646b76","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000009dc04686173680200000000086d657461646174610c00000004046e616d65020000000d636c736b646e76736c6e646b76096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ab9de3832789df896a8f95f34a42ab103bdd5b27e","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2WXWE1JF2EZH5N8Z5FK991AP41VVNDJFRM9P9KM","success":true},"operations":[],"transaction_identifier":{"hash":"0x9cbcbf564c5e058b3018f4b81b9c48bfb85759b3562538971adfd67ede0e6b1e"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x7f6e97916c7b2c066c33ab05063fbadf5cfa014aa277b4363fa0ae3dfdce6cf2","index":98462},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000022f9cbe8ff5ad18ad8f4a885bf933202e2989ff4d6b761a7e5","index":2421307},"confirm_microblock_identifier":{"hash":"0x48726d5d74a7025736f75801f4e797f5cb72b45e907fb302aab0c1f343f32800","index":4},"pox_cycle_index":401,"pox_cycle_length":1050,"pox_cycle_position":256,"stacks_block_hash":"0x90598184b94cf2fd5e418ab9b8d6d9607b1c66f235e6a52975565754a56cdfbf"},"parent_block_identifier":{"hash":"0x057237ef3a560d43eff0b2bb3fcd73f7e28ea25ac10ed71f7069b46784cbbd29","index":98461},"timestamp":1677240649,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6e62686a6776666364787479)","execution_cost":{"read_count":16,"read_length":44016,"runtime":167308,"write_count":2,"write_length":163},"fee":3000,"kind":{"data":{"args":["0x627463","0x6e62686a6776666364787479"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":23,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400714eb6c48636eb734c823bd4cee142b82835677800000000000000170000000000000bb80000a5486bfe0fca3cd69c82f3b9553e74906eb507929ff071b233fe290202fd7ceb3824a570ecdd9d5c44e50aa551a5a91e36ab64c68665f15e8dd19ac93a2b804a030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000c6e62686a6776666364787479","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000009df04686173680200000000086d657461646174610c00000004046e616d65020000000c6e62686a6776666364787479096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a714eb6c48636eb734c823bd4cee142b828356778","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1RMXDP4GRVEPWTCG8XX9KQ18AW2GDB7F1ZDHQQQ","success":true},"operations":[],"transaction_identifier":{"hash":"0xc001c1c6d1bd39d4846e3b000fcce5d12fe24c951d0ab501e790c0bdf4c220c1"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x17d6f1e390a24af58044b7a43405d4bacbab1ab456031aadd98858bab180a852","index":98818},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000017f41e5ae5e69d1324ed62fd4082ee626fb24ee252da592813eb2ea","index":2421723},"confirm_microblock_identifier":{"hash":"0x074c6c0f6bf964865252a5d89063542d6b76c711af8efb7b5562e0122005fcd3","index":2},"pox_cycle_index":401,"pox_cycle_length":1050,"pox_cycle_position":672,"stacks_block_hash":"0xe4840835ac28d3fa98a3ee76756ef4d27ebc6aed41c1ab7e578413e478534d5b"},"parent_block_identifier":{"hash":"0x6cbeb64088a64afd1ce170241aa696b1fc765d913c6ebab6f7cb7d7772155e90","index":98817},"timestamp":1677467737,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7364766c73646e766c6b73646e76)","execution_cost":{"read_count":16,"read_length":44022,"runtime":167386,"write_count":2,"write_length":165},"fee":3000,"kind":{"data":{"args":["0x627463","0x7364766c73646e766c6b73646e76"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":26,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400714eb6c48636eb734c823bd4cee142b828356778000000000000001a0000000000000bb800009159f2ada65f80e809eb042d105fd8f7ada3cd648f8b15b948c224b8df8708ff0b08bdb15b4930177d5b4911ef3422fea9c4c2810a4f99ac5ddae25ec1250d0a030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000e7364766c73646e766c6b73646e76","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000009e204686173680200000000086d657461646174610c00000004046e616d65020000000e7364766c73646e766c6b73646e76096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a714eb6c48636eb734c823bd4cee142b828356778","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1RMXDP4GRVEPWTCG8XX9KQ18AW2GDB7F1ZDHQQQ","success":true},"operations":[],"transaction_identifier":{"hash":"0x689ac8c95e9529aa15335874d2af22bf77ec4a419e38f729d52738a63741d9e4"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x0c20d6626905fec1e9541d52568e343fac2a45b66ca578862abbc0a9ed4ead71","index":98827},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000215e5d2abccd229fc6f49b4fdc5568c07f89d7bde033814ed","index":2421733},"confirm_microblock_identifier":{"hash":"0x0849670dee273db32d14fd91c7631be4c989548e24d2133a984531ad53a901a8","index":1},"pox_cycle_index":401,"pox_cycle_length":1050,"pox_cycle_position":682,"stacks_block_hash":"0x27c491fa92a159ce41460a54df9faf5ebbf4f4c47ad8d651bfd624147142e264"},"parent_block_identifier":{"hash":"0x803959483d56943ba945de8b068ffdbf27d0d01d0799afd50b99c90a528bb501","index":98826},"timestamp":1677473133,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x33316e6a616b736662)","execution_cost":{"read_count":16,"read_length":44007,"runtime":167191,"write_count":2,"write_length":160},"fee":3000,"kind":{"data":{"args":["0x627463","0x33316e6a616b736662"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":10,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004002c4673bcc1fcf2bacdae24385dddd9a85d88175a000000000000000a0000000000000bb800010193481a34cad0cc1472d8b2a947c23ef44f4645c6b07d8e219b2a20f3f7bce66eca436e937a3f69675ac0ddaf3bce29d44748872c74c1f2d797be488c101b93030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000933316e6a616b736662","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000009e404686173680200000000086d657461646174610c00000004046e616d65020000000933316e6a616b736662096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a2c4673bcc1fcf2bacdae24385dddd9a85d88175a","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STP4CWXWR7YF5EPDNRJ3GQEXV6M5V20QBBRY5215","success":true},"operations":[],"transaction_identifier":{"hash":"0xa99203b4452472ca915e673d107a19bacb23201be49fc95376c43efccdd440a0"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x51cf3f804720b5657c012e3a2073a1bb1a02be8b42a7af9b5debb312ef1dc3d5","index":98992},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000207b729f659cdee6d0c6910abeae10d123f12efc5061d50864be281","index":2421949},"confirm_microblock_identifier":{"hash":"0x705831bd44579b09c3e4d5e512e9acc37ec7bf8d3a9402cbbc41aa23a8e1f77c","index":4},"pox_cycle_index":401,"pox_cycle_length":1050,"pox_cycle_position":898,"stacks_block_hash":"0x684cb592f567e6c44400cb8a126960ac69c92520b2c50589c89414ca7331e563"},"parent_block_identifier":{"hash":"0xa653626dda03ed5806aa11651a5797f103c9b63626456c1bf1509c67f4bc34bb","index":98991},"timestamp":1677566688,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6a6876676a6867)","execution_cost":{"read_count":16,"read_length":44001,"runtime":167113,"write_count":2,"write_length":158},"fee":3500,"kind":{"data":{"args":["0x627463","0x6a6876676a6867"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":12,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004006eae96ccc5f772aea645fd31ec4101cddcb08822000000000000000c0000000000000dac0001d2babfeabffaecbeedd5f291831c1981787ffad541c1e2791ee58d28bbbaed96710177a3e32ecf8872c97b4c333f6a017960b17b2a6ca06db89ba8965a8bc793030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000076a6876676a6867","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000009f004686173680200000000086d657461646174610c00000004046e616d6502000000076a6876676a6867096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a6eae96ccc5f772aea645fd31ec4101cddcb08822","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1QAX5PCRQVQ5BN68QYK3V21076XSC484AA9ME7P","success":true},"operations":[],"transaction_identifier":{"hash":"0x4f1921f5ae5dceddf077428d4bf5a46f2eddd2e53e5dbf0ed42ccac23ceddb53"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6b6a6268766763667863666867766a62)","execution_cost":{"read_count":16,"read_length":44028,"runtime":167464,"write_count":2,"write_length":167},"fee":3000,"kind":{"data":{"args":["0x627463","0x6b6a6268766763667863666867766a62"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":37,"position":{"index":4},"proof":null,"raw_tx":"0x80800000000400b9de3832789df896a8f95f34a42ab103bdd5b27e00000000000000250000000000000bb8000023420c2e760e9141de2921e20638695740187367a7a0f044757d4876945bb37c04c103289237c2cdcf8bd9c34ed0e0b48b09c296b88827fa3660381f1cec8119030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000106b6a6268766763667863666867766a62","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000009f104686173680200000000086d657461646174610c00000004046e616d6502000000106b6a6268766763667863666867766a62096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ab9de3832789df896a8f95f34a42ab103bdd5b27e","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2WXWE1JF2EZH5N8Z5FK991AP41VVNDJFRM9P9KM","success":true},"operations":[],"transaction_identifier":{"hash":"0xb527312041093946ec7f66ec9ea12982d6d237fa7af448275c45e2f04190d48d"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x85fe15fbc0a9166844aa4b0808bd1794e76ca2cb4c3597ee3aa683a075b88e64","index":99009},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000019694f1effff7a142d391d77e827d6ac68682510c680e017193b0df","index":2421968},"confirm_microblock_identifier":{"hash":"0xc71d4cdbc9a2a2137a5d2a8759aaa6f944f9c17be4762264bcb85a89529055a3","index":2},"pox_cycle_index":401,"pox_cycle_length":1050,"pox_cycle_position":917,"stacks_block_hash":"0x31f2543f2cd1897ae0fe8de5040d0665a80428fef8a12710ec00450e6d035b7f"},"parent_block_identifier":{"hash":"0x5012d2f0f864ba3052e6b13a84f2abfda146ea93ee44986495eb9ebc0967d1be","index":99008},"timestamp":1677575152,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7265747279746573743232)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167269,"write_count":2,"write_length":162},"fee":3500,"kind":{"data":{"args":["0x627463","0x7265747279746573743232"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":7,"position":{"index":3},"proof":null,"raw_tx":"0x808000000004003f67a76b82c8d4fd09755f64589142b2f0ad7f6900000000000000070000000000000dac000185957a911ccf35f241e0bd145e9b48a15c242e4ac1335e1bb92355724e7fd1bb2704aae4f1f98c4ed94f4addacef7f58b5e6d9f1dcee490ac1ae01f248d1317e030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b7265747279746573743232","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000009f304686173680200000000086d657461646174610c00000004046e616d65020000000b7265747279746573743232096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a3f67a76b82c8d4fd09755f64589142b2f0ad7f69","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STZPF9VBGB4D9Z89ENFP8P4H8ASF1BBZD67DASG2","success":true},"operations":[],"transaction_identifier":{"hash":"0x044b9e3944023223da0f64f38e727910e37d512d902e7eab54c0f21efda6700e"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xca6783694802bc08731ee7e9d27e07be02d9ecbbe2b9375ffbb32ef71da9eb78","index":99050},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000091835f5ae294119e73cf4eb326e3402ad06ca1d5105ad8bfb468f34c","index":2422014},"confirm_microblock_identifier":{"hash":"0x64266688ae3641c4654b4e2e8b15685f56036e45d0a8cee07367303c2eed3eef","index":2},"pox_cycle_index":401,"pox_cycle_length":1050,"pox_cycle_position":963,"stacks_block_hash":"0xa5885b7f40e09c12feb54c79dc299f8cafa0138f626c5db8c32b9c41e80fc9ed"},"parent_block_identifier":{"hash":"0x06cf9577c10644a97e862d8775ba764b660eb31be4c1d6557902b55b1ca3cd4a","index":99049},"timestamp":1677595437,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6572726f6f7272722d3930)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167269,"write_count":2,"write_length":162},"fee":3000,"kind":{"data":{"args":["0x627463","0x6572726f6f7272722d3930"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004005288e06efa46255031be51eb3aaf87d893fa883000000000000000020000000000000bb80000d7d4890f43acdc9b49635f51e48ae08e6a8d02ad3130d06e84b5b60488ed3e830dc10df3ce15930554112f03eb4923b7d910f17deef1ac7fae9b7384b147513b030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b6572726f6f7272722d3930","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e64657801000000000000000000000000000009fd04686173680200000000086d657461646174610c00000004046e616d65020000000b6572726f6f7272722d3930096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a5288e06efa46255031be51eb3aaf87d893fa8830","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST198HR3EZ932AM1HQS8YPENFGZC97YM8603JD88X","success":true},"operations":[],"transaction_identifier":{"hash":"0x9a456401a6ebfa7df557d50e2f8b0c4111c8232f070dc2aeea2f7af851605ad1"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x11a4b27d4c38431759a0949124a29feef3154c819da87b364b4388c84dbff617","index":99122},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000002d7288b315f54ec44a2527dbc41fc0cfff4279e299565eba96","index":2422154},"confirm_microblock_identifier":null,"pox_cycle_index":402,"pox_cycle_length":1050,"pox_cycle_position":53,"stacks_block_hash":"0x1d09701b2d47b0807dc3e941fe9faa4a7399b903af3d81327cd4fd5205b27d7d"},"parent_block_identifier":{"hash":"0x7215cf49608b3ff9ab0946c993117470c950720791ec36909561731ba4328ffe","index":99121},"timestamp":1677681066,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x74657374646f6d31)","execution_cost":{"read_count":16,"read_length":44004,"runtime":166903,"write_count":2,"write_length":159},"fee":71200,"kind":{"data":{"args":["0x627463","0x74657374646f6d31"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":16,"position":{"index":11},"proof":null,"raw_tx":"0x80800000000400a13d9a0b46eaf8ba12c036b9ed46e6783a72107a00000000000000100000000000011620000009cd5de3830f988465066329255d50846b6ea5bddc123717e0a0ba1340386d483f5848484e9d02d670c100e6000c49e11fed16fde72062af2f2e1606d5f89985010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000874657374646f6d31","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000a0604686173680200000000086d657461646174610c00000004046e616d65020000000874657374646f6d31096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aa13d9a0b46eaf8ba12c036b9ed46e6783a72107a","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2GKV6GB8VNFHEGJR0VBKVA6WSW3MWGGFBGQGZES","success":true},"operations":[],"transaction_identifier":{"hash":"0x6555cd008c555aa78636872dc0738646fdf32172f4427d09d1d22b68e9cf3393"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7a786376626e6d)","execution_cost":{"read_count":16,"read_length":44001,"runtime":166852,"write_count":2,"write_length":158},"fee":70800,"kind":{"data":{"args":["0x627463","0x7a786376626e6d"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":15,"position":{"index":12},"proof":null,"raw_tx":"0x80800000000400182d6d4255f279581bb31b28d0c184e300a46b51000000000000000f000000000001149000000b8882af530a2d7591ffed9328536fdc4ac4b4f2782ea6853c3632856b68da665612bbbd40b51d32e329dfe53fbe356a783730fe3eb3bcda663928785a766390010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000077a786376626e6d","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000a0704686173680200000000086d657461646174610c00000004046e616d6502000000077a786376626e6d096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a182d6d4255f279581bb31b28d0c184e300a46b51","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STC2TVA2AQS7JP0VPCDJHM61GKHG193BA5VMDWTR","success":true},"operations":[],"transaction_identifier":{"hash":"0x3298355dc9d43b5457c23d91429e856be4311988c82352809329f0f6a14ad776"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x4215531d357b7b0f4f26edc3346b6da57089142a59858600b758e54dac0c5525","index":99123},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000e485afdafb8e88b352f9771c4c3f78d43c8eda047cd2fa505a866ba1","index":2422155},"confirm_microblock_identifier":{"hash":"0x7b45f06aaa7fc2823683803e095b64169b890a0ecd1670220fde270ae5b059d5","index":4},"pox_cycle_index":402,"pox_cycle_length":1050,"pox_cycle_position":54,"stacks_block_hash":"0xc0a6e0039e43b3050dda98d3e272e090854cf1e98a6080bc814a342fb2a9b042"},"parent_block_identifier":{"hash":"0x11a4b27d4c38431759a0949124a29feef3154c819da87b364b4388c84dbff617","index":99122},"timestamp":1677681677,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6172666761676466736667)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167056,"write_count":2,"write_length":162},"fee":3500,"kind":{"data":{"args":["0x627463","0x6172666761676466736667"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":4},"proof":null,"raw_tx":"0x80800000000400909b3b63ac083b69d76f08df2a013f299a36599500000000000000040000000000000dac0000a099b7feb66fc8fce1b336b4729b28c8302c0bede2535f6ae39a95539db5fc1a1e4dae1fbaca885b5b8784e0ec830a2bf7c26435cc27a477fdcf044fc0015ecf030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b6172666761676466736667","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000a0904686173680200000000086d657461646174610c00000004046e616d65020000000b6172666761676466736667096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a909b3b63ac083b69d76f08df2a013f299a365995","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST289PEV3NG43PTEQDW4DYAG17WMSMDJSJQ8P2KND","success":true},"operations":[],"transaction_identifier":{"hash":"0x1ba960d3a767448ee6c784369947e95947238a8697e7a52e56b9a6bd8f2c2124"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7365667766)","execution_cost":{"read_count":16,"read_length":43995,"runtime":166750,"write_count":2,"write_length":156},"fee":3000,"kind":{"data":{"args":["0x627463","0x7365667766"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":7,"position":{"index":5},"proof":null,"raw_tx":"0x808000000004003535178d22e32b633587174d97ed4fa21642c4a200000000000000070000000000000bb80001e7526c70f6ec79d5151ac17923ae40fc10419626be3a8841ba1daabbdefe4d3b5fe73bb7070ddb4ae4071b78778c22036f945acc98180cbd15a383fb9cffce7a030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000057365667766","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000a0a04686173680200000000086d657461646174610c00000004046e616d6502000000057365667766096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a3535178d22e32b633587174d97ed4fa21642c4a2","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STTKA5WD4BHJPRSNGWBMV5ZD9YH1CGP4M9PRAVVX","success":true},"operations":[],"transaction_identifier":{"hash":"0x18cc84021971787d4656a4cc42837c4d8f275af0640025ee8953b249ae3d80d6"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xbcf4767f880da00ca56187a79df010c5c8afad9bb74536956f3a197401393805","index":99245},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000a42c50ca94bd0471917870b85b0acbe22ad17ad3adf4fce5a","index":2422326},"confirm_microblock_identifier":{"hash":"0xb7b950c7d6841b1272ab28451a21b1848bd1ef1f554f501e9610e7794421969e","index":2},"pox_cycle_index":402,"pox_cycle_length":1050,"pox_cycle_position":225,"stacks_block_hash":"0xacf0f04d237b93de3f52f2db740b5e00aad2982c7c5a49fb9653ca232810e1f2"},"parent_block_identifier":{"hash":"0x0602268fed345be93b008ef2475cec59f886b86af89d8e8f2f12e8c3c9f41577","index":99244},"timestamp":1677748935,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x61736b6c666e616c6b7366)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167056,"write_count":2,"write_length":162},"fee":3000,"kind":{"data":{"args":["0x627463","0x61736b6c666e616c6b7366"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":22,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400182d6d4255f279581bb31b28d0c184e300a46b5100000000000000160000000000000bb80001ba11fad4a21041f97505708c9aba9fc8c1fce0c9133020896421a061e97976f73d02173412134efb6487ac0cbe777edb75da7da8a386af3c9958666261f9a24d010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b61736b6c666e616c6b7366","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000a1c04686173680200000000086d657461646174610c00000004046e616d65020000000b61736b6c666e616c6b7366096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a182d6d4255f279581bb31b28d0c184e300a46b51","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STC2TVA2AQS7JP0VPCDJHM61GKHG193BA5VMDWTR","success":true},"operations":[],"transaction_identifier":{"hash":"0xf050a0fc0d378f9344617ad82c0e136641c1217a74b943328270fd9b4de403ee"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x511178284926a9b20e56f832130d69b3084b76cb7bb28bb5f4910f69b7ed638f","index":99260},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000002fb7080873589b5bd15a1d19004d3ab3094616f206583cb1ba","index":2422357},"confirm_microblock_identifier":{"hash":"0x080370e8d24a39572ef98b6de934898177c721caae18b3cfb372d0fc003500f9","index":4},"pox_cycle_index":402,"pox_cycle_length":1050,"pox_cycle_position":256,"stacks_block_hash":"0x7a7f6b6f01b491a006ea88112148ff9b0a949bc7910fec7fd3ea1d11f2484769"},"parent_block_identifier":{"hash":"0xdecb9cef44f0c2c44f23a99976b3c11650b93de28a13bf6f8cb7c0bf05bd3c77","index":99259},"timestamp":1677757252,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x73696668736b6a64666261736b6a)","execution_cost":{"read_count":16,"read_length":44022,"runtime":167209,"write_count":2,"write_length":165},"fee":12000,"kind":{"data":{"args":["0x627463","0x73696668736b6a64666261736b6a"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":25,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400182d6d4255f279581bb31b28d0c184e300a46b5100000000000000190000000000002ee0000090877f3f3cb9e641ec4eed205fc04f027a01802834fcaf1d65486e3021a2b8f24f42dbf16cf6110761768264938eb9a8b09f2bd7ed6d8ab373cd73e71a9978a5010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000e73696668736b6a64666261736b6a","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000a1e04686173680200000000086d657461646174610c00000004046e616d65020000000e73696668736b6a64666261736b6a096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a182d6d4255f279581bb31b28d0c184e300a46b51","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STC2TVA2AQS7JP0VPCDJHM61GKHG193BA5VMDWTR","success":true},"operations":[],"transaction_identifier":{"hash":"0xbc0149622c9a5d506c5d9524681817320107f0bbf6d032de7aa630b3f4ffbaec"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x75f371bf5447392aa22ed6c4a775a798c367a12a9897dafc9f2eb892d8e1d0db","index":99342},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000024c0fdbdbe2f3a23b7513b137cb84966e404733ff8a0f25cdf","index":2422586},"confirm_microblock_identifier":{"hash":"0x7ce0b67b98c95be8c29f65b8fd3efdc0e5a4d405df69f6b379e3ff054990a28a","index":15},"pox_cycle_index":402,"pox_cycle_length":1050,"pox_cycle_position":485,"stacks_block_hash":"0x53debea94ddec69e7234302798d1e8f9864b423e13a3afb034392d6ed3b6b665"},"parent_block_identifier":{"hash":"0xa05fe34d3bb2daf0f4343b046feb89913a243325e081d84365e7b18ca2971362","index":99341},"timestamp":1677828657,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6867766a66)","execution_cost":{"read_count":16,"read_length":43995,"runtime":166750,"write_count":2,"write_length":156},"fee":3000,"kind":{"data":{"args":["0x627463","0x6867766a66"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":10,"position":{"index":5},"proof":null,"raw_tx":"0x808000000004003535178d22e32b633587174d97ed4fa21642c4a2000000000000000a0000000000000bb8000050cf05a0363690a50c9b935d6cfd76ec187c1d0a2c4bdd21907b6a2619a833c15523ff50c553e94dfc851b62efb455e098cfa5afe71c2faab143b29c6cce885e030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000056867766a66","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000a3304686173680200000000086d657461646174610c00000004046e616d6502000000056867766a66096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a3535178d22e32b633587174d97ed4fa21642c4a2","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STTKA5WD4BHJPRSNGWBMV5ZD9YH1CGP4M9PRAVVX","success":true},"operations":[],"transaction_identifier":{"hash":"0xac5620ef01ddad09463d82eb9dfb962d398feff63f4c5dcdb9c9d37d50f7637a"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x69dc6bbc219df5f49406e76539b27185a4b22aadb8998cde6bb557a2f04fa21f","index":99351},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000001fcc45d41853c82422524e73899a395d75c29ce86a22270338","index":2422607},"confirm_microblock_identifier":{"hash":"0x6c971107eb34a635e1c97533e071e0e7449d8d46fc481f5ae478c709fa5ae2e1","index":14},"pox_cycle_index":402,"pox_cycle_length":1050,"pox_cycle_position":506,"stacks_block_hash":"0x38b1477fac0edd3bfee1792ff12683c56a148b4b3ab8acdbdd73a09b9b0b1708"},"parent_block_identifier":{"hash":"0xfc117ab882aeecaa28e0e33cb0d1a383f14fb710b638e4208cbfd52629d0c680","index":99350},"timestamp":1677842673,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x66696162696c61)","execution_cost":{"read_count":16,"read_length":44001,"runtime":166852,"write_count":2,"write_length":158},"fee":3000,"kind":{"data":{"args":["0x627463","0x66696162696c61"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":1,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400a05751fddab7e6fca2a007e66c293c601ae75be000000000000000010000000000000bb8000005d25562ece1c0660d7f94a2d2e6db56d5cf9b450e36dd315b220a1003a4a95d73db4ef44fe1ec415049aeccbacae40a400135a22b7e73a715f427f79a28c288010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000766696162696c61","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000a3c04686173680200000000086d657461646174610c00000004046e616d65020000000766696162696c61096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aa05751fddab7e6fca2a007e66c293c601ae75be0","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2G5EMFXVAVYDZ52M03YCV197HG1NSTVW2DZA51D","success":true},"operations":[],"transaction_identifier":{"hash":"0xaf60c46bdf7ff4ace7c987b3178416221aba2dec3391e0740e4a7f29e4e58bf3"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x686d6a676b383738)","execution_cost":{"read_count":16,"read_length":44004,"runtime":166903,"write_count":2,"write_length":159},"fee":3500,"kind":{"data":{"args":["0x627463","0x686d6a676b383738"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":15,"position":{"index":24},"proof":null,"raw_tx":"0x808000000004003535178d22e32b633587174d97ed4fa21642c4a2000000000000000f0000000000000dac0001eeacf387326c4cd88979a2b27f490f649840658a85e847917b98e293ac595652527dee23fa87b334634c32165f2f4611daa0227d2a79c33b94fcde2db2dee8a4030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000008686d6a676b383738","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000a3904686173680200000000086d657461646174610c00000004046e616d650200000008686d6a676b383738096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a3535178d22e32b633587174d97ed4fa21642c4a2","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STTKA5WD4BHJPRSNGWBMV5ZD9YH1CGP4M9PRAVVX","success":true},"operations":[],"transaction_identifier":{"hash":"0xbcb6ffc13975a28e00b3c4321edf04db5aef1fcaabc2b0eea4ae88ce8f646af3"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x5aaedb185e06e6711cc3665361ab18c9d930a7d7b022a4ef9790cde186f051f1","index":99355},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000001f69031976cdd95a059d265792b62239177ca0213a4130456d","index":2422621},"confirm_microblock_identifier":{"hash":"0x077996c937a2ae208db1da9432c51c1bec20fb55ab1882995141b554d38a98fd","index":16},"pox_cycle_index":402,"pox_cycle_length":1050,"pox_cycle_position":520,"stacks_block_hash":"0xaf65f177a2def033e5deb9d961bb095e3ad69ae4f8f972a2475f295bef48b45e"},"parent_block_identifier":{"hash":"0xc15597385f2c9883ca064c8ad2426e70bef376da449e1e7104675180441e2402","index":99354},"timestamp":1677847309,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x707169776e766b6c646e76)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167056,"write_count":2,"write_length":162},"fee":3000,"kind":{"data":{"args":["0x627463","0x707169776e766b6c646e76"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":16,"position":{"index":7},"proof":null,"raw_tx":"0x808000000004005d35a7e8d4600d0285ec0b3a97f764c750e415d400000000000000100000000000000bb80001b8a6f16fe3a349aedb73ef1cb3061ac1a773d5db35585568cc4057e228cf9b1972abdb932b5787ca5bd69ac822e285a8753c1b9d14436cfd36cc20c92f90bad5030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b707169776e766b6c646e76","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000a4204686173680200000000086d657461646174610c00000004046e616d65020000000b707169776e766b6c646e76096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a5d35a7e8d4600d0285ec0b3a97f764c750e415d4","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1EKB9Z8THG0T0M5XG5KN5ZQCK3N1S0NTJ3R9R4W","success":true},"operations":[],"transaction_identifier":{"hash":"0x9e38ef6e57bec36730c6b138c361949b24bf66879ee34a62020c3c0a777e2800"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x0c1aa4483662a741b244ea6f29c36493e2bea42e2c24452fc4c378db6ef81f67","index":99643},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000c0c71894310d59013b31867b3904cfcfe5457ca845ffafd34c0283a","index":2423206},"confirm_microblock_identifier":{"hash":"0xab914b47947c5ea0afbb409d3f4e9ca04a624673985d9d9186cbd09617553485","index":1},"pox_cycle_index":403,"pox_cycle_length":1050,"pox_cycle_position":55,"stacks_block_hash":"0x6db2b6c82ff7c126db21819854c6837a77afc271ff460acb4ff93bc0a126c803"},"parent_block_identifier":{"hash":"0xf4ab83f0495f1c58c3658730c120393d360976714aa4f7bab146de017298faed","index":99642},"timestamp":1678142404,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6372617a7979797979797979)","execution_cost":{"read_count":16,"read_length":44016,"runtime":167107,"write_count":2,"write_length":163},"fee":3000,"kind":{"data":{"args":["0x627463","0x6372617a7979797979797979"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":6},"proof":null,"raw_tx":"0x8080000000040099d6b63368b4064cf7f41e40e4102848cdf0204b00000000000000040000000000000bb80001638a4cab5f3b1dde24753b828c007d53e1a6824a9816a1069902943ba11471a76e5349afdaec2955b7874402a90174fabd04f37f91879df496a306f147680f07030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000c6372617a7979797979797979","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000a5104686173680200000000086d657461646174610c00000004046e616d65020000000c6372617a7979797979797979096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a99d6b63368b4064cf7f41e40e4102848cdf0204b","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2CXDDHKD2T0CK7QYGF41S0G514CVW109E299EDG","success":true},"operations":[],"transaction_identifier":{"hash":"0xd6eb2bc0edf27b0210f404f35ccce6f027421f2da64e9917aec6bc035d693a09"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x2ddfd4c1583fb2584b6ef94b905bc6d9a8b70ca38a621870820ca1393466b4f4","index":99674},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000005eb534dbf686ea758d0f1bfb4bdf93e85c6eda5335ec4947a","index":2423250},"confirm_microblock_identifier":{"hash":"0x9ae42e0a20328e2b7c374788c6a24afbdac4b64b451a996d452f5db35a04fdda","index":1},"pox_cycle_index":403,"pox_cycle_length":1050,"pox_cycle_position":99,"stacks_block_hash":"0x2c86bbf42bb90e64e90db399c50d16bde1aaeddcc8c06d49021e7f0b4dde51a9"},"parent_block_identifier":{"hash":"0x6521817528e74bdeefbe58080e6c414ea36f14004bd471082099fe5001be3de3","index":99673},"timestamp":1678170882,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6d616e6167652d31)","execution_cost":{"read_count":16,"read_length":44004,"runtime":166903,"write_count":2,"write_length":159},"fee":3000,"kind":{"data":{"args":["0x627463","0x6d616e6167652d31"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":1,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400b40025714a64d3e84a98768e0e34a716eedaffce00000000000000010000000000000bb80000305f9c9da8ba96680dae7f1c14f763249f3c0e03af872fcf762f4bcd048d38466e8e414d6f06ad52d0f3d423dba16fee30dd3a5be1d51ff2a526eb9e6100743b030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000086d616e6167652d31","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000a5304686173680200000000086d657461646174610c00000004046e616d6502000000086d616e6167652d31096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ab40025714a64d3e84a98768e0e34a716eedaffce","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2T009BH99JD7T2AK1V8W3HMMWBEXPQZSV808DH9","success":true},"operations":[],"transaction_identifier":{"hash":"0xfd9b2716ade692c82c5b101c2561f234f2129347ea3ab50866f74f4fdea13dda"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x2d981f72cd0c50bb29c7a177de9d0f4c5981092a18ee1213ae060ec21a741c74","index":99676},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000bc91e7f37b3365433fc58b4ce604f9ac60aba3f4cfb0dc686","index":2423252},"confirm_microblock_identifier":{"hash":"0xfc1267434a999f0dabfbc125f784e611767b1a6d61a082744fd302e02a903d6b","index":1},"pox_cycle_index":403,"pox_cycle_length":1050,"pox_cycle_position":101,"stacks_block_hash":"0xb91c6e5c9ac308eca34c7889579fa74c58d3aa80011ef33da7011f9919b38c10"},"parent_block_identifier":{"hash":"0xe7e348eac453219325a62b1bc328adc50084bc9ae93dd9ae6ad5f5d3c32cb220","index":99675},"timestamp":1678171648,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6d616e6167652d2d70616765)","execution_cost":{"read_count":16,"read_length":44016,"runtime":167107,"write_count":2,"write_length":163},"fee":3000,"kind":{"data":{"args":["0x627463","0x6d616e6167652d2d70616765"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400b40025714a64d3e84a98768e0e34a716eedaffce00000000000000030000000000000bb80000cf2ee87c4158fd3bc9962206b3679073e8c68fbf1bbf234dff8a7bb4696de9685abafff97bc57b14e6d2984eb6b3e0c6e016036d027e5646d747fdeef5481006030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000c6d616e6167652d2d70616765","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000a5504686173680200000000086d657461646174610c00000004046e616d65020000000c6d616e6167652d2d70616765096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ab40025714a64d3e84a98768e0e34a716eedaffce","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2T009BH99JD7T2AK1V8W3HMMWBEXPQZSV808DH9","success":true},"operations":[],"transaction_identifier":{"hash":"0x681600e7c4d318edb009bf66983c2ba05d0f4b9bfbb72c7ad031a43d1948fc05"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x34522707320d8526e23654e93f3f98e1dbe7798139ab1c45e65aa9d1fb268e56","index":99680},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000003a0a77c981f0102db2d9d54d766af0149282a27670118fafd9e","index":2423256},"confirm_microblock_identifier":{"hash":"0xfac18c1639fcee944f838b67b00fbb0377b26584800127500182412e3edc4b8a","index":3},"pox_cycle_index":403,"pox_cycle_length":1050,"pox_cycle_position":105,"stacks_block_hash":"0x217544798d5cbd7f137b3a59fd2e053d2d403a8b7a573ab774f66741f99c3c4e"},"parent_block_identifier":{"hash":"0x6424f8031ad029e6daba4c23a8cc5e4dda4d7425894027e4b1802434efe53a38","index":99679},"timestamp":1678175035,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6d616e6167652d2d706167652d31)","execution_cost":{"read_count":16,"read_length":44022,"runtime":167209,"write_count":2,"write_length":165},"fee":3000,"kind":{"data":{"args":["0x627463","0x6d616e6167652d2d706167652d31"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":5,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400b40025714a64d3e84a98768e0e34a716eedaffce00000000000000050000000000000bb80000e3a3c48c14139355d0c9832971b08a541e04d0984b134c3294ca4be83adc30a4252f2f78fdf26660e70a1fa408cc9167d631b6bf68086dded4ee2ff5af641d44030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000e6d616e6167652d2d706167652d31","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000a5704686173680200000000086d657461646174610c00000004046e616d65020000000e6d616e6167652d2d706167652d31096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ab40025714a64d3e84a98768e0e34a716eedaffce","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2T009BH99JD7T2AK1V8W3HMMWBEXPQZSV808DH9","success":true},"operations":[],"transaction_identifier":{"hash":"0xee68b1c77ceeb98f91e300a18c6c9d4b570274212392b0095917722dd2b94f76"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x3e3b4a43bed41a24b98891994069fad9ec0d704ab44ff168217e53c7260aec78","index":99692},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000014eddb5c9f3cb71833f278988c1808f19fbd99526f2b826fe75e","index":2423268},"confirm_microblock_identifier":{"hash":"0xf1b50f6c6672ececbcb008ccf6c4db207133ea9f46d82f2a3687829fec98f1c1","index":4},"pox_cycle_index":403,"pox_cycle_length":1050,"pox_cycle_position":117,"stacks_block_hash":"0xdc3b4c760694372f698e7faa6626512eaa52c9cea8464e9a35b56afc39dfe448"},"parent_block_identifier":{"hash":"0xd3eb05568b2e7d51786ff7305767d74668d249b27b512b741021340035d643b9","index":99691},"timestamp":1678186157,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6d616e6167652d706167652d323232)","execution_cost":{"read_count":16,"read_length":44025,"runtime":167260,"write_count":2,"write_length":166},"fee":3000,"kind":{"data":{"args":["0x627463","0x6d616e6167652d706167652d323232"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":1,"position":{"index":6},"proof":null,"raw_tx":"0x80800000000400aebc06a71f77718e7bd3196f75e11cb223889e0b00000000000000010000000000000bb80000707f19035812c27fd5885d985825f4bdfb151c14ac54f87379e58d61a731ce313a1a537ec5e26f1ace9e3d0deee8d6f4fa78712c999a5c721cbd6cdb393c1033030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000f6d616e6167652d706167652d323232","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000a5b04686173680200000000086d657461646174610c00000004046e616d65020000000f6d616e6167652d706167652d323232096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aaebc06a71f77718e7bd3196f75e11cb223889e0b","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2QBR1N73XVQ33KVTCCPYXF13JS2724Y1C408TTC","success":true},"operations":[],"transaction_identifier":{"hash":"0x01a93b837202d778f14920fb68bbb1993e2b2e3422989a36324e33f145028b92"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xb02c2bf1a3636a407c5a1ebdee0e7b86dfc229b80e80b248a161c22d66bd5634","index":99697},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000009add397bb456f6733b8c13ccfa88f4f86543a324be7664afe","index":2423273},"confirm_microblock_identifier":{"hash":"0xed04a62f814dae46ecce94943a9e68d8d0c46ae22e0d2e2224febdcf0c6b8aec","index":0},"pox_cycle_index":403,"pox_cycle_length":1050,"pox_cycle_position":122,"stacks_block_hash":"0xfce5468364f5c24d852688a5ab3898c5496180d2f4d56dc2b67baf95192b061a"},"parent_block_identifier":{"hash":"0x87445ef7ea2f20ceb40c1b28e12bead48d2ef5421031d1c2a25fad1171d3bd8a","index":99696},"timestamp":1678190321,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6d616e6167652d706167652d32323232)","execution_cost":{"read_count":16,"read_length":44028,"runtime":167311,"write_count":2,"write_length":167},"fee":3000,"kind":{"data":{"args":["0x627463","0x6d616e6167652d706167652d32323232"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400aebc06a71f77718e7bd3196f75e11cb223889e0b00000000000000040000000000000bb80001906291b105297f31efe2292c2b14ee4c2137d124242c5ce974cf24fa5d0216f177aec8b4c43813c8c0098824d58e4499a08182d260da397d31e68bec4482814d030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000106d616e6167652d706167652d32323232","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000a5e04686173680200000000086d657461646174610c00000004046e616d6502000000106d616e6167652d706167652d32323232096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aaebc06a71f77718e7bd3196f75e11cb223889e0b","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2QBR1N73XVQ33KVTCCPYXF13JS2724Y1C408TTC","success":true},"operations":[],"transaction_identifier":{"hash":"0xdc65ab1b3cfaab7f213359b33b6f9d53e8c12e46c38ae628b6aa9c8058616a42"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x5477d15508ea1a2d0c3d8b9d2b6f28a4a71b7751e4c9150348162a2572a3c59b","index":99702},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000571ff5925fe9ccc2c4fffe3be9d94e6600a081c7207c50c42f237dfd","index":2423278},"confirm_microblock_identifier":{"hash":"0xbaf9a0e20893d6e3a826dc71dce4100a1371b23cf8e7e8e04d815ec55856c862","index":1},"pox_cycle_index":403,"pox_cycle_length":1050,"pox_cycle_position":127,"stacks_block_hash":"0xb3c68c8f0358c3104738e1095dfbebcf2f56b1aa6f200009b8fff7c112d8a94e"},"parent_block_identifier":{"hash":"0x0c00afa8219c52877d0b7d20ed2a28e1ab631346fe6219d365a312e2201875ba","index":99701},"timestamp":1678193670,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x66616b686172)","execution_cost":{"read_count":16,"read_length":43998,"runtime":166801,"write_count":2,"write_length":157},"fee":3000,"kind":{"data":{"args":["0x627463","0x66616b686172"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":6,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400aebc06a71f77718e7bd3196f75e11cb223889e0b00000000000000060000000000000bb800001b07a6354bdd826cddfd217e5e8b286bd5e162a2980bf173eedb591a8361f6e34b5e2b3cc61eae43097103cebaeca2632a20c9cad8c211b0a15d167833d442db030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000666616b686172","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000a6004686173680200000000086d657461646174610c00000004046e616d65020000000666616b686172096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aaebc06a71f77718e7bd3196f75e11cb223889e0b","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2QBR1N73XVQ33KVTCCPYXF13JS2724Y1C408TTC","success":true},"operations":[],"transaction_identifier":{"hash":"0x0648c430916af567cbc14d62a07594bfc6bb4588999d1248fee289be0a30640d"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x5eb4a14cd5cf4b769bdcd73daca246807bedaae1e661ea8ad1eefd06f92c82ab","index":99704},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000441c12b1b41acd1b445f0e5342f972a3dc7aa6a550e5ca172","index":2423280},"confirm_microblock_identifier":{"hash":"0x0952818aa2a55ef10e6d5734f0fc8be5f8255506462869d3b85275dea7a1be75","index":2},"pox_cycle_index":403,"pox_cycle_length":1050,"pox_cycle_position":129,"stacks_block_hash":"0x70f6d99a7f1b63a5e6ba334b90f6fe1cfbc1cc83015cf731ed804f6cd51626ec"},"parent_block_identifier":{"hash":"0x7292104f4a4e6183a2ddf535adcc0032c4a276b89d4ec85caa69bd20fcb61c30","index":99703},"timestamp":1678196081,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6d616e6167652d2d706167652d32)","execution_cost":{"read_count":16,"read_length":44022,"runtime":167209,"write_count":2,"write_length":165},"fee":3000,"kind":{"data":{"args":["0x627463","0x6d616e6167652d2d706167652d32"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":3},"proof":null,"raw_tx":"0x808000000004006e32e39d293009c471010cd9dada98ecaed4000d00000000000000030000000000000bb80000c9b5fe2f6e61dc7fe95c58b0462be9d90c7f3b8093449bb8361c25b0922028d763f4259e9e7659d1e3e1c8db5d5a5ad0b7eaea49d14e1fac4d974532e40e0c85030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000e6d616e6167652d2d706167652d32","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000a6204686173680200000000086d657461646174610c00000004046e616d65020000000e6d616e6167652d2d706167652d32096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a6e32e39d293009c471010cd9dada98ecaed4000d","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1Q35RWX54R0KH3H046DKPPTK3PAXN001QENC5FS","success":true},"operations":[],"transaction_identifier":{"hash":"0xf64c3a991009119142dc8719f7da81e5c18a66caf890dc91f75ad2f9621dd658"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xb2e653457af45d79b131f0d50bf11569b1e70393650a298aa4d525c59d621c1b","index":99706},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000279427d7e63fd11ecd59fba87cbf99a98a17ade6b06bdf2806","index":2423282},"confirm_microblock_identifier":{"hash":"0x79177542808e927f283ab8affe11f4cf5b3117cdf8ea5d23029a3478782e7583","index":1},"pox_cycle_index":403,"pox_cycle_length":1050,"pox_cycle_position":131,"stacks_block_hash":"0x5025033d978ae4b0ced28cbfffcd3d740902008f63bf3febe7ef5c85415c3c9b"},"parent_block_identifier":{"hash":"0x5a38b20ede71261f211ac7b25707aa7e74834e43baf98fa0860e9f44642f0a2f","index":99705},"timestamp":1678197936,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x66696e616c64656d6f7632)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167056,"write_count":2,"write_length":162},"fee":3000,"kind":{"data":{"args":["0x627463","0x66696e616c64656d6f7632"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":4},"proof":null,"raw_tx":"0x808000000004003d3c45b9868e8fe5d51a5ac946c37d851219139400000000000000000000000000000bb800003d41dbb147ad70819e5ad38f9b768310f8f0d22d7505fab2be7b37606cb065942740b7b1c78f96fb90e425e221668f0aa83b41a0e1889fa65858d92276fe10c3030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b66696e616c64656d6f7632","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000a6304686173680200000000086d657461646174610c00000004046e616d65020000000b66696e616c64656d6f7632096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a3d3c45b9868e8fe5d51a5ac946c37d8512191394","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STYKRHDSGT78ZSEN39DCJHP3FP2H468KJHBXTR1W","success":true},"operations":[],"transaction_identifier":{"hash":"0xce585afb72be4e3c8da255d25a716949c9b54fe5ce8cf79807fa64214d9e3404"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x373c5c642058859b365b5d80a2ea791f0d3b26f4d5e4d2d85e342d208fea5b5b","index":99767},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000244fed3cb8e6ea9f1b55fdeec307c5930ad959ec55e36387b0","index":2423375},"confirm_microblock_identifier":{"hash":"0x389dc030dea60c977e5c1262a8fbf072a3de0b974c3bdfbfd9b8cfe3a0b67862","index":2},"pox_cycle_index":403,"pox_cycle_length":1050,"pox_cycle_position":224,"stacks_block_hash":"0xb105b07406f0278ee0eb7d4f7a9c0f8d297941e20dd9ee5053e03e7e1bc9ee06"},"parent_block_identifier":{"hash":"0x593b1059876c2a51bea270cba3854f16e318e668d842ed1fe64235500ba547c9","index":99766},"timestamp":1678256624,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x73646166617373)","execution_cost":{"read_count":16,"read_length":44001,"runtime":166852,"write_count":2,"write_length":158},"fee":3500,"kind":{"data":{"args":["0x627463","0x73646166617373"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":20,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004006eae96ccc5f772aea645fd31ec4101cddcb0882200000000000000140000000000000dac0001c9c98586b42634965448aa3d824d21fd545033eef2211f092ce1f1a6014a08eb762429c275c92ab0a38c033498a5ff15711564e7c4b8e5066a3f919826cffe18030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000773646166617373","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000a6604686173680200000000086d657461646174610c00000004046e616d65020000000773646166617373096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a6eae96ccc5f772aea645fd31ec4101cddcb08822","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1QAX5PCRQVQ5BN68QYK3V21076XSC484AA9ME7P","success":true},"operations":[],"transaction_identifier":{"hash":"0x024f34e1caac870f58404c4183682c249a3353b4bf48378b171264d17dcc25b0"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xa4356f54e47534aebbc18ddd14a485a667b74a5b66ac15a6c520ee758da7c896","index":99774},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000007ba0091a37f59366443f11ddef250385362ce2fe96f9bf81331a550d","index":2423382},"confirm_microblock_identifier":{"hash":"0x66fd984da9dc43f774473413d658a72fc85df39be25dcdf8f532be47d42a143d","index":1},"pox_cycle_index":403,"pox_cycle_length":1050,"pox_cycle_position":231,"stacks_block_hash":"0x0d72dfc7c2c089b3c05c0ee76bb24bd24eea28d2468ad3b562cb3b1b2ea7c71d"},"parent_block_identifier":{"hash":"0x3d32978f6aa9ba0038110935d70e02caafb3e3fef93bf6d7919f9cfc878ca667","index":99773},"timestamp":1678261124,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x647673647661736476)","execution_cost":{"read_count":16,"read_length":44007,"runtime":166954,"write_count":2,"write_length":160},"fee":3000,"kind":{"data":{"args":["0x627463","0x647673647661736476"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":46,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004004797b468fa8a216a901c8200c5800d3bfcf5a4d4000000000000002e0000000000000bb80001802274eff4db6e0bc6947a3189a7ab5eff4967bf8ff804c037ba85971c34d29158302b25c40b47c917fc427071f578493ce6b9267f8e96c42f5a6e3b72e45f78030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000009647673647661736476","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000a6904686173680200000000086d657461646174610c00000004046e616d650200000009647673647661736476096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a4797b468fa8a216a901c8200c5800d3bfcf5a4d4","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST13SFD38ZA522TMG3J101HC01MXZSXD4THEW0HF3","success":true},"operations":[],"transaction_identifier":{"hash":"0x1e60e5e76aea317f848bdb82a7ceaa06dcf4171ce9ce3bfa1430c249f99a46a8"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x7a38b028ee35659f1d784ce6d672ed4ed55e6dc2c3d70cfb9b2e7c414b3e20fa","index":99776},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000002189df4ec60c012d4334a8ba9b2f63f403efb570c95b857ed3","index":2423385},"confirm_microblock_identifier":{"hash":"0x1459b56dccce6fb56a24dd02978b0693fca031c870779fc7d3c0f1964cd6020f","index":2},"pox_cycle_index":403,"pox_cycle_length":1050,"pox_cycle_position":234,"stacks_block_hash":"0xdb66f6ac9701712d27a2b74d5549fc55a7fad200eaeea7c57b02f668e2b01522"},"parent_block_identifier":{"hash":"0xcd35b969e6656bb0e3dcb9741bffd84cfba0388ba053bd8e06aab3e7d51c81f1","index":99775},"timestamp":1678262523,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6e6577646f6d74657374)","execution_cost":{"read_count":16,"read_length":44010,"runtime":167005,"write_count":2,"write_length":161},"fee":3000,"kind":{"data":{"args":["0x627463","0x6e6577646f6d74657374"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":28,"position":{"index":6},"proof":null,"raw_tx":"0x80800000000400182d6d4255f279581bb31b28d0c184e300a46b51000000000000001c0000000000000bb80001ecc2c634bcf14de53223f6267689f26ad6ff3813d0b2d9da155c4a50a9e040b03f329d3258f545b74361c03dcec615552ee7ebdf2d02440fabbb16af293784bc030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000a6e6577646f6d74657374","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000a6b04686173680200000000086d657461646174610c00000004046e616d65020000000a6e6577646f6d74657374096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a182d6d4255f279581bb31b28d0c184e300a46b51","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STC2TVA2AQS7JP0VPCDJHM61GKHG193BA5VMDWTR","success":true},"operations":[],"transaction_identifier":{"hash":"0xf29dce903884c580f199ba4d2541ab0a7d7844bb087546d640df9431243f91f1"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x11300652ddca2d8e79fc5a200fd497adda35ae2f884c204518f39a141373fad0","index":99786},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000206311083204750da29f5a4888e830eb8137a62defd706db03","index":2423395},"confirm_microblock_identifier":{"hash":"0xa254f7c1c124e2410c40e4f9cac5ec3b44ec9df24340dd60613014967fbc5324","index":3},"pox_cycle_index":403,"pox_cycle_length":1050,"pox_cycle_position":244,"stacks_block_hash":"0x9c652764c1be825264a7b3547eab14f135da39fe2998a286f22021f0e8888c22"},"parent_block_identifier":{"hash":"0xcac349a80dd13f66ecd31d7f2b863d52ef32ee0e2504b7907f1f052e176066ba","index":99785},"timestamp":1678271139,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x736c6b666e616c736b6e66)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167056,"write_count":2,"write_length":162},"fee":3000,"kind":{"data":{"args":["0x627463","0x736c6b666e616c736b6e66"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":15,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400c29f2bc04c3a559f50d45767e3b8c3978952032b000000000000000f0000000000000bb8000090cf827565bd18d86f094cc3d107f1f8d1479521a2902ee67263cea514f2310f24a496e289107a649a3917f179d308640025b4494a593bdf8f11b8faf1869677030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b736c6b666e616c736b6e66","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000a7a04686173680200000000086d657461646174610c00000004046e616d65020000000b736c6b666e616c736b6e66096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac29f2bc04c3a559f50d45767e3b8c3978952032b","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST319YAY09GX5B7TGTHBPFRXRREBRJMG35D7B28QY","success":true},"operations":[],"transaction_identifier":{"hash":"0x1a9c22c7481c6be8cf6df358525b2fca3f13f8862d11be156d1d68c238e5632a"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6b6e6a6276747974)","execution_cost":{"read_count":16,"read_length":44004,"runtime":166903,"write_count":2,"write_length":159},"fee":3000,"kind":{"data":{"args":["0x627463","0x6b6e6a6276747974"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":15,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004006684c7aac54fb4eb6ce79b232102f1522560ffa0000000000000000f0000000000000bb800005a386572a99ddc51bd741fa702fa8471ce9b048a6f5735b5289afc42e4a9aa6b5fd2998d5a01ea32c50a07567e22919ee79a35f0f2d47cc14047d0215608568d030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000086b6e6a6276747974","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000a7b04686173680200000000086d657461646174610c00000004046e616d6502000000086b6e6a6276747974096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a6684c7aac54fb4eb6ce79b232102f1522560ffa0","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1K89HXARN7V9TVCWYDJ6882Y592AR7ZM0WDV711","success":true},"operations":[],"transaction_identifier":{"hash":"0x0aebd51bcfe1fd397a446b4b47648b4f008b42cdc031335c7a35c91d550dc676"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x646f6d61696e7465737437)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167056,"write_count":2,"write_length":162},"fee":3000,"kind":{"data":{"args":["0x627463","0x646f6d61696e7465737437"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":10,"position":{"index":3},"proof":null,"raw_tx":"0x8080000000040093848da413b5311e1efe84e9f1bcfb1c09778776000000000000000a0000000000000bb80001a874e4cb1b754a9ad64b7a0e6b9c3e82eddae030625b14b791fd30f59447b12c243414486a9495b0d07d70c67b2704ad9193e72998691db96425595359508562030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b646f6d61696e7465737437","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000a7c04686173680200000000086d657461646174610c00000004046e616d65020000000b646f6d61696e7465737437096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a93848da413b5311e1efe84e9f1bcfb1c09778776","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST29R93D42ETK27GYZT2EKWDWZCE0JXW7ERS23XG9","success":true},"operations":[],"transaction_identifier":{"hash":"0x82e34b9124fffac169c77949b5ed3c2ce131c9b5e65ce61ef5aba28b74a7ebf5"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x6c7764444d74d93e31acb7ff3eae26e95193f0ebbd530b1a3cc80f0aeab06e22","index":99788},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000046026e15b0dc4aedd826f3488f6cbac7175fd7c61ba1fa5b53f1","index":2423397},"confirm_microblock_identifier":{"hash":"0xecdd40cd6b19d1e77f94b6fb943ca797be1f00218458dd2dbeaa43973c46da67","index":4},"pox_cycle_index":403,"pox_cycle_length":1050,"pox_cycle_position":246,"stacks_block_hash":"0x96444bdb4670b27bdece8fe710de4b3220ca9a852db6ab73f3274f07eba8793b"},"parent_block_identifier":{"hash":"0x6453faab796a15a000a792f691effe620d32c41a165a6ba980fa2e6e546560ee","index":99787},"timestamp":1678272937,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x736b6a646e76736b6a646e76)","execution_cost":{"read_count":16,"read_length":44016,"runtime":167107,"write_count":2,"write_length":163},"fee":3000,"kind":{"data":{"args":["0x627463","0x736b6a646e76736b6a646e76"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":20,"position":{"index":6},"proof":null,"raw_tx":"0x808000000004005d35a7e8d4600d0285ec0b3a97f764c750e415d400000000000000140000000000000bb80001afd42b64db3f0dae526d582890fad2cd37808b1ef200c344e30f5e13f19b2df10575c6a9e18d6f69cac02aa9c57d5bc945245a6fd4c5d719a56466fac3b35de9030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000c736b6a646e76736b6a646e76","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000a7e04686173680200000000086d657461646174610c00000004046e616d65020000000c736b6a646e76736b6a646e76096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a5d35a7e8d4600d0285ec0b3a97f764c750e415d4","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1EKB9Z8THG0T0M5XG5KN5ZQCK3N1S0NTJ3R9R4W","success":true},"operations":[],"transaction_identifier":{"hash":"0x0d716e0748b32b419b53caa2c435c95c003a97ae3bcb3eac5cb16f864ef0775b"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x1c317bcbb94591dd1a2b1ade7d0ef46ce9ef00f9795a52f5270fe50ce2ac1188","index":99790},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000001a3d130eb7a3c8bb7ad6ac77af85933e888e5aaa9f51cf85bc2e","index":2423399},"confirm_microblock_identifier":{"hash":"0x5c431b9fe31cb5cd3e41d21ed3345d8f51a362d539d7ec230912b822daf62b33","index":2},"pox_cycle_index":403,"pox_cycle_length":1050,"pox_cycle_position":248,"stacks_block_hash":"0xb23096010d605139172fa94853612b8324fccff737c4d512f6bc6ee79c75b982"},"parent_block_identifier":{"hash":"0xc2c28c2578574f90e401a31adc68f3f89d521d4436b5c711210624679b6ee1ec","index":99789},"timestamp":1678275350,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x62696c616c77616865656474657374)","execution_cost":{"read_count":16,"read_length":44025,"runtime":167260,"write_count":2,"write_length":166},"fee":3500,"kind":{"data":{"args":["0x627463","0x62696c616c77616865656474657374"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":40,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400e7b3490e967732af9f66600fa6177adfa987601000000000000000280000000000000dac00002182ebfeba28924c602551866d786d7ba9f477ce575952884ea48b4e8fb4555a171abc3b87bd841f91ab20210de3ec5eebca5972f4272df22c003196c2a020e2030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000f62696c616c77616865656474657374","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000a8004686173680200000000086d657461646174610c00000004046e616d65020000000f62696c616c77616865656474657374096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ae7b3490e967732af9f66600fa6177adfa9876010","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3KV6J8EJSVK5BWZCSG0Z9GQFBFTK1V0231DJR93","success":true},"operations":[],"transaction_identifier":{"hash":"0x7e697fdbcc8d75332cbea90e4a22fe67f54fea89721168a4028f166da1110e35"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x8c7593f0d2708fbe09403dd7c2e14f53fb284e78a1c89618b9f2dadbd9bdc89b","index":99885},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000001caad663661b57914736f0afa77fc262e23a31b11e3c90bc8ddf","index":2423530},"confirm_microblock_identifier":{"hash":"0x636b3a8356e434eff659fecc1af15f27f18c6fecb75eb6cb2d4836ae1a299309","index":3},"pox_cycle_index":403,"pox_cycle_length":1050,"pox_cycle_position":379,"stacks_block_hash":"0xf1c49a100afbb21f4a4a709a93de378b29f0073484886e14e60f7aea5421584e"},"parent_block_identifier":{"hash":"0xd82bd92ae35bd34e81b45259ad4d8a8a70fa44f146fd8506775a18712264e2fe","index":99884},"timestamp":1678357444,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x646f6d61696e7465737438)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167056,"write_count":2,"write_length":162},"fee":3000,"kind":{"data":{"args":["0x627463","0x646f6d61696e7465737438"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":12,"position":{"index":2},"proof":null,"raw_tx":"0x8080000000040093848da413b5311e1efe84e9f1bcfb1c09778776000000000000000c0000000000000bb800008fba52f89cdec2ccf6b1cac66118a861784352d1c0225fd88abaeb544f2518f93544851463194126f4dcbb063e867d8444732fc1fbfc36cab1c428e171a74c66030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b646f6d61696e7465737438","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000a8704686173680200000000086d657461646174610c00000004046e616d65020000000b646f6d61696e7465737438096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a93848da413b5311e1efe84e9f1bcfb1c09778776","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST29R93D42ETK27GYZT2EKWDWZCE0JXW7ERS23XG9","success":true},"operations":[],"transaction_identifier":{"hash":"0xddb8d8a0e0b3b31c56bfe8562f6bfe1f59ce9c0236570ec75b47a8ac9bc0736d"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xfe63d9a6573b0c0b250e090a7719037275d02f368823da02c2f5e7f2ba9392d0","index":99886},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000e3421d738b27d2d3be53b24b40af040a15d226ad9fb506f4a","index":2423531},"confirm_microblock_identifier":{"hash":"0x38616c97155651938325d5b083bf0db8f717edb27ecabcc698e75a0ff0bb5de7","index":2},"pox_cycle_index":403,"pox_cycle_length":1050,"pox_cycle_position":380,"stacks_block_hash":"0xe8f5ea28fb2b9578b3370df74fc424a17aa6a12989a1318cff5dc5198257c62c"},"parent_block_identifier":{"hash":"0x8c7593f0d2708fbe09403dd7c2e14f53fb284e78a1c89618b9f2dadbd9bdc89b","index":99885},"timestamp":1678358670,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x73646c636b6e73646c6b636e)","execution_cost":{"read_count":16,"read_length":44016,"runtime":167107,"write_count":2,"write_length":163},"fee":3000,"kind":{"data":{"args":["0x627463","0x73646c636b6e73646c6b636e"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":7},"proof":null,"raw_tx":"0x80800000000400b3da287721fa4da8bd83f475051f1b14deae1a4f00000000000000020000000000000bb80000f5d77114014615c142e3db46f25346da1456210d1c6936be7c85f85ebaed0731327640f25f26df7cd9c9dff1e78fc9372aa51487cd1e99c66e22bddd7e78146d030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000c73646c636b6e73646c6b636e","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000a8804686173680200000000086d657461646174610c00000004046e616d65020000000c73646c636b6e73646c6b636e096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ab3da287721fa4da8bd83f475051f1b14deae1a4f","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2SXMA3Q47X4VA5XGFT7A18Z3CADXBGT9WWQ3TF5","success":true},"operations":[],"transaction_identifier":{"hash":"0x30fc598f6bb47d16580667c80de29349b827b85a5a2db72c26dff1e2d23adac0"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x304097c427951d217ff6c555c88b1add9163e1e5b6436fe45a3cf12144cf8ffd","index":99889},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000013b685a018720c7495f692da52b40244869752a0c03d4947d4","index":2423534},"confirm_microblock_identifier":{"hash":"0x9158052797945cfc2f2042527ff3d0c88d11f968e8cb304f720fdec6f7bdc200","index":2},"pox_cycle_index":403,"pox_cycle_length":1050,"pox_cycle_position":383,"stacks_block_hash":"0xb45a6f756c5556739b19f6c671c356310960882f943b6e8ab8994c8ffee7e232"},"parent_block_identifier":{"hash":"0xf03402bb6c8da3bef1ae2f25aa84378576e2e1ee3b88c068ed421a10112ce69a","index":99888},"timestamp":1678360258,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x69776568666f7765696866)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167056,"write_count":2,"write_length":162},"fee":3000,"kind":{"data":{"args":["0x627463","0x69776568666f7765696866"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":16,"position":{"index":3},"proof":null,"raw_tx":"0x8080000000040093848da413b5311e1efe84e9f1bcfb1c0977877600000000000000100000000000000bb800006944b73301efaff380ebc56c49d94e47729abcf5339edfedbb6bb1e340a496594627f2ccc9afa75104409f36ce5889c8167ac258ce342b34037f079c177a2341030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b69776568666f7765696866","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000a8d04686173680200000000086d657461646174610c00000004046e616d65020000000b69776568666f7765696866096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a93848da413b5311e1efe84e9f1bcfb1c09778776","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST29R93D42ETK27GYZT2EKWDWZCE0JXW7ERS23XG9","success":true},"operations":[],"transaction_identifier":{"hash":"0x1cc62267ea588f733d4aabe7828838d07d1f790c5a8b94a22c197d014727c29d"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x40cb03684b5f322ec264b34edb198e8514cadbed60b2834bc3db1ef61bc660af","index":99904},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000031bbc2ac258d2a3bbf4e96f891650ceb2759a8fe498927f06","index":2423549},"confirm_microblock_identifier":{"hash":"0xe05cd6a61455f9e1e491153012dd44cef896eb56375efb44acecba0c92ea7e39","index":1},"pox_cycle_index":403,"pox_cycle_length":1050,"pox_cycle_position":398,"stacks_block_hash":"0x2c7003b12bb09ca00f35abf03d776464a8442c15d26c7fe7fc0b4fc59919c99e"},"parent_block_identifier":{"hash":"0x40d395104bb911d1582a0c08fb377e8de6edd30f330e912abacc12b1744a85d6","index":99903},"timestamp":1678368778,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6b616c736e6e76716f7769626e76)","execution_cost":{"read_count":16,"read_length":44022,"runtime":167209,"write_count":2,"write_length":165},"fee":3000,"kind":{"data":{"args":["0x627463","0x6b616c736e6e76716f7769626e76"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":21,"position":{"index":2},"proof":null,"raw_tx":"0x808000000004002c4673bcc1fcf2bacdae24385dddd9a85d88175a00000000000000150000000000000bb80000d8a9b1a41be52fd952559a04a91b99fcfeb45f63cf3a63176af2d405134b8d11496b6a913534ad4cfa1e0f6805357ff8d791adfe1600dbd6777f00a8747fb784030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000e6b616c736e6e76716f7769626e76","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000a9004686173680200000000086d657461646174610c00000004046e616d65020000000e6b616c736e6e76716f7769626e76096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a2c4673bcc1fcf2bacdae24385dddd9a85d88175a","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STP4CWXWR7YF5EPDNRJ3GQEXV6M5V20QBBRY5215","success":true},"operations":[],"transaction_identifier":{"hash":"0xa0c27fc125524c6dbe90f040ebc32fc6e047600cb6970be6546cb2407ff08fc2"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xeb738b7806ca38ceef610122237d04c1e38068b29578e384869df28d4c7aba33","index":99907},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000221f3ae243dea7c2107801c62fff4959b5d89ebe5a685f90d1","index":2423553},"confirm_microblock_identifier":{"hash":"0x2ce24463778ae4cc7f0adf74807ce6d7ab364b54c4ead31adabdbb00168a524b","index":2},"pox_cycle_index":403,"pox_cycle_length":1050,"pox_cycle_position":402,"stacks_block_hash":"0x050c078b40986917c9c383c8edb9bf9dfed8ab6a323dbf5b2c0e0e869cf5c935"},"parent_block_identifier":{"hash":"0x7d3ca9d1b64fc3c2174b87a6201b271bb99978f9c099f4f00a0c3f7552893e44","index":99906},"timestamp":1678370543,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x736a646e73616b646c6a766e)","execution_cost":{"read_count":16,"read_length":44016,"runtime":167107,"write_count":2,"write_length":163},"fee":3000,"kind":{"data":{"args":["0x627463","0x736a646e73616b646c6a766e"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":19,"position":{"index":5},"proof":null,"raw_tx":"0x8080000000040093848da413b5311e1efe84e9f1bcfb1c0977877600000000000000130000000000000bb8000153819438d89eb673984df0daed0e38805f04ae29d7180d59e03edbd25a5f0b5844b5f07df2b9b0265a4b648dcbc13ae82f0038ce4c06a77bf8d5fdd158acc079030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000c736a646e73616b646c6a766e","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000a9504686173680200000000086d657461646174610c00000004046e616d65020000000c736a646e73616b646c6a766e096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a93848da413b5311e1efe84e9f1bcfb1c09778776","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST29R93D42ETK27GYZT2EKWDWZCE0JXW7ERS23XG9","success":true},"operations":[],"transaction_identifier":{"hash":"0xe68888e240001a008f11295309b72600866babd2ca5b3f7e68c9c602d118f6bc"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x61ca3f5f8042a5abcaf5dc22f344ea2124fecb44765099ba0077d86ad95b0b3e","index":100012},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000002d620e3e3ddc7afde62d3a236ab7236a45741a0ee4dfbcb75026","index":2423861},"confirm_microblock_identifier":{"hash":"0x2a014f043afbfca3b4fc1708c643cb9435aabfaf6bd5d38976867b16afacfb2f","index":2},"pox_cycle_index":403,"pox_cycle_length":1050,"pox_cycle_position":710,"stacks_block_hash":"0x54d172205e54dfdfae5b944eff76898ccc02fba054ba56d693d1af76f1b508ba"},"parent_block_identifier":{"hash":"0xcae9caf8b336c423af87c16538a96aea8c3c8da96f1d606f56c1e9d0e9867a71","index":100011},"timestamp":1678441865,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x616b6b73636e61736c6b6e63)","execution_cost":{"read_count":16,"read_length":44016,"runtime":167107,"write_count":2,"write_length":163},"fee":3000,"kind":{"data":{"args":["0x627463","0x616b6b73636e61736c6b6e63"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":26,"position":{"index":4},"proof":null,"raw_tx":"0x808000000004002c4673bcc1fcf2bacdae24385dddd9a85d88175a000000000000001a0000000000000bb8000172bb49ef56d27f09464d73f41b0f73754238f982aab8c42769feab0378e366d8048e9e03158e56df0e44e866234342f2f6fec724113dee1bdcf14719537d9617030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000c616b6b73636e61736c6b6e63","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000a9c04686173680200000000086d657461646174610c00000004046e616d65020000000c616b6b73636e61736c6b6e63096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a2c4673bcc1fcf2bacdae24385dddd9a85d88175a","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STP4CWXWR7YF5EPDNRJ3GQEXV6M5V20QBBRY5215","success":true},"operations":[],"transaction_identifier":{"hash":"0x716f614ec83f8dad1e1458bac54816bf2069ca2b68c673bd8bf40acc90e4d152"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x0cd10149b8c8f51d9d9d923c16f7610c6e81aa36354307f609668ca8f7ac3fba","index":100024},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000c3a281db766ef2e595dd3192affaa0b58084f9c70ff89a30e","index":2423874},"confirm_microblock_identifier":{"hash":"0xeaff545338097583919f9c81e31994f09722884f49cd3d21098e04c94bdebf41","index":0},"pox_cycle_index":403,"pox_cycle_length":1050,"pox_cycle_position":723,"stacks_block_hash":"0x2c2126814acf66f34da6a84c5636152aac6b4a740117c72d3152070384748301"},"parent_block_identifier":{"hash":"0x6b23dd43bc6e9b4a8c998566c5664bcd29e67e7efb73271f8f7b03cf9d5a7d65","index":100023},"timestamp":1678453537,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x696e6672617465737431)","execution_cost":{"read_count":16,"read_length":44010,"runtime":167005,"write_count":2,"write_length":161},"fee":3500,"kind":{"data":{"args":["0x627463","0x696e6672617465737431"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":59,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400ef29ee95fc9093bd6d968fec5f005495939d86a8000000000000003b0000000000000dac0001488ea8ab61dacfecce0c4a4b090dbbc31d26b56f8c279a66d4f05dba4382cb42091076f0456d9a1208f3e2b4b9b4b1fe3416cb0de1b3bf046b8119ff2980ea52030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000a696e6672617465737431","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000aa104686173680200000000086d657461646174610c00000004046e616d65020000000a696e6672617465737431096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aef29ee95fc9093bd6d968fec5f005495939d86a8","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3QJKVMNZJ897FBDJT7YRQR0AJAS77C6N04SVV51","success":true},"operations":[],"transaction_identifier":{"hash":"0x7584aa8d12544efbefb58b3446bdd26798ebedb8b83137d9c48c3f1446b91a3f"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x638056fe7498f67a42c29de1a53995c6fdc69e612824ffc9ec43258926ec0dde","index":100027},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000023f0db843302ef311cce7a0de0d93f3c8534ea48398eee5bbd60","index":2423877},"confirm_microblock_identifier":{"hash":"0x4981cb868ad0c924a4a5d9214ce83669f002b50916f538d6c96ecc75e94ebb80","index":3},"pox_cycle_index":403,"pox_cycle_length":1050,"pox_cycle_position":726,"stacks_block_hash":"0x9e149fbc3b75398f4dca01fc5a26be8519774a896c10a049f796bcfffc1f42d0"},"parent_block_identifier":{"hash":"0x8a35f1554e4abedad8ab129ce33ff97e15dbead760e307e39e7b6c439521d079","index":100026},"timestamp":1678455668,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x666c6f7774657374)","execution_cost":{"read_count":16,"read_length":44004,"runtime":166903,"write_count":2,"write_length":159},"fee":3000,"kind":{"data":{"args":["0x627463","0x666c6f7774657374"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":31,"position":{"index":9},"proof":null,"raw_tx":"0x808000000004002c4673bcc1fcf2bacdae24385dddd9a85d88175a000000000000001f0000000000000bb8000044c0a0eee0eaf8144d398e1dec070f061d37915ded83c42a4202c238bc1525d424edfab1fd4d9751666621f32c0a295d35b1a26de3cd588c8bacdba784b4b877030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000008666c6f7774657374","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000aa404686173680200000000086d657461646174610c00000004046e616d650200000008666c6f7774657374096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a2c4673bcc1fcf2bacdae24385dddd9a85d88175a","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STP4CWXWR7YF5EPDNRJ3GQEXV6M5V20QBBRY5215","success":true},"operations":[],"transaction_identifier":{"hash":"0x9fb65f97b653241c039f8585909f4fe9cf433a1135020c4f4c3c750bc0247d07"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x5d90fbceac51bba8b714941121c08ff9e64b7caae8ccd56c796e87ce90d8a53b","index":100030},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000a5be47d53483528e42bfe2adc822a050db963958b46e68995","index":2423880},"confirm_microblock_identifier":{"hash":"0x9235820a76b9a7d6714977121dc6451ba9952800c835ff7b9eba9e227cd7ac83","index":3},"pox_cycle_index":403,"pox_cycle_length":1050,"pox_cycle_position":729,"stacks_block_hash":"0x1e3d409c45b758ee3b1e6d0383ea5bff589048ad31241572cd329372d77623dc"},"parent_block_identifier":{"hash":"0x3b98b55bf9248c3e924e0202e459739196fb30f3749fd9a520058b10b3dda635","index":100029},"timestamp":1678457892,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x312d74782d7465737431)","execution_cost":{"read_count":16,"read_length":44010,"runtime":167005,"write_count":2,"write_length":161},"fee":3500,"kind":{"data":{"args":["0x627463","0x312d74782d7465737431"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":61,"position":{"index":4},"proof":null,"raw_tx":"0x80800000000400ef29ee95fc9093bd6d968fec5f005495939d86a8000000000000003d0000000000000dac00019fad466f54eade3489a71aa9c02a573584bf18fb3cd48590f87402482dcbabe223b9fff9b96a2d2e4f2fd0c6be5912061092dc8c6f89353991dfdda9b82caeec030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000a312d74782d7465737431","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000aa504686173680200000000086d657461646174610c00000004046e616d65020000000a312d74782d7465737431096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aef29ee95fc9093bd6d968fec5f005495939d86a8","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3QJKVMNZJ897FBDJT7YRQR0AJAS77C6N04SVV51","success":true},"operations":[],"transaction_identifier":{"hash":"0x5b216338489bb405c7652dcb649cdfc7208f3e54d432585f8f7f9dc81eaf7220"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x188affb381441b5c7ba179c81afbe5f117024401465a73ed5ece6acd6b56592c","index":100031},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000035e08af0b08ea06c0aa607ae1b788d7dcef5e43d785d35119864","index":2423881},"confirm_microblock_identifier":{"hash":"0x32e33ae3bd13de063542f855e76babafa8e2985349f7a35361256553c5146a4e","index":3},"pox_cycle_index":403,"pox_cycle_length":1050,"pox_cycle_position":730,"stacks_block_hash":"0x94489ee9811815d4382128c1ed1104c0fcabfc1cb94f09cfdf51da39f9421477"},"parent_block_identifier":{"hash":"0x5d90fbceac51bba8b714941121c08ff9e64b7caae8ccd56c796e87ce90d8a53b","index":100030},"timestamp":1678459013,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x646f6d61696e7465737431)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167056,"write_count":2,"write_length":162},"fee":3000,"kind":{"data":{"args":["0x627463","0x646f6d61696e7465737431"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400c505e4f648d2d5228ffe2c5a425dc49ff52bc74400000000000000020000000000000bb8000071ac309292c4612917afec3f24dd6fc3faeb5c1fcdb757e193ab73ba7416dc9e6eeef1670fdde0f7ac3a531ffe7f478c4eebd710d49220fdb239df1a9aa9dc51030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b646f6d61696e7465737431","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000aa704686173680200000000086d657461646174610c00000004046e616d65020000000b646f6d61696e7465737431096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac505e4f648d2d5228ffe2c5a425dc49ff52bc744","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST32GBS7P939DA8MFZRP5MGJXRJFZAAY78GZFNYNH","success":true},"operations":[],"transaction_identifier":{"hash":"0x3e92f1b24d22bfd7879cc4fccbe463ce06470128df702ff37822d57a82ff9263"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xed8348f9cdb1499656aa060eaff99c0a39f1dbc078b6893fa08ff348213d10b3","index":100045},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000004ee664a5688aa221fe6bfaa06eb2add27bcd7f0450b28aa9be254f2","index":2423895},"confirm_microblock_identifier":{"hash":"0x694e566dbc28b782724bdfe87bc0170d47f33a5dcaa1cc721647087862c8fc19","index":3},"pox_cycle_index":403,"pox_cycle_length":1050,"pox_cycle_position":744,"stacks_block_hash":"0xb0aec78fac1d460880dde3f356a40d3d51e4f5db1096b042adb66eaf1079774e"},"parent_block_identifier":{"hash":"0x875acd6850466535516b562b832b1e119f052860feeffa6a3f18947f652384fa","index":100044},"timestamp":1678470224,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x666c6f777465737431)","execution_cost":{"read_count":16,"read_length":44007,"runtime":166954,"write_count":2,"write_length":160},"fee":3000,"kind":{"data":{"args":["0x627463","0x666c6f777465737431"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":36,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004002c4673bcc1fcf2bacdae24385dddd9a85d88175a00000000000000240000000000000bb8000184d6bf8140be9570f4079b9d189518a7ba922abe425458ab81bae305fe74c1583f904843f66989790321d4d9f300f8f1a3748f82d91d6b60f1c1803dfafdb47a030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000009666c6f777465737431","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000aae04686173680200000000086d657461646174610c00000004046e616d650200000009666c6f777465737431096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a2c4673bcc1fcf2bacdae24385dddd9a85d88175a","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STP4CWXWR7YF5EPDNRJ3GQEXV6M5V20QBBRY5215","success":true},"operations":[],"transaction_identifier":{"hash":"0x6e531273b5388eb3f4cccd3ad4ccefe5d2fe6b4f59f1534ab93cb1760be28f5b"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x3e7c61886034a46270d0b546795a49cc8df4669460d19641eed1c00a94cdf007","index":100215},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000004478cb2a7575ab16d4972ee3cef41b202793d3003b34e7b50","index":2424102},"confirm_microblock_identifier":{"hash":"0x43c99c89b3aa4fb551fda4cf7485ff2fb11a2974a709815710438a788a1c147e","index":2},"pox_cycle_index":403,"pox_cycle_length":1050,"pox_cycle_position":951,"stacks_block_hash":"0x285e9bae9fd2120c798f180169dd49b035214d68c9829120f20450403fc83bc3"},"parent_block_identifier":{"hash":"0x1c64d4be48833fd2c4d864888f894e41cc1c44a3a71703ac7ee008c0cd3e7068","index":100214},"timestamp":1678631904,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x312d74782d3637303030303032)","execution_cost":{"read_count":16,"read_length":44019,"runtime":167158,"write_count":2,"write_length":164},"fee":3000,"kind":{"data":{"args":["0x627463","0x312d74782d3637303030303032"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":1,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400c1ec276e335e5dc1dea60a077cf35fe9db6f2d1b00000000000000010000000000000bb80001234c67a6011b833941342da649d57717135b148db3253aa2ca54c95b194bd4a359e6253478e5d7f45e987bc96625f8e9fbb61637cc7422fd54fc043a1de265ff030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000d312d74782d3637303030303032","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000ab604686173680200000000086d657461646174610c00000004046e616d65020000000d312d74782d3637303030303032096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac1ec276e335e5dc1dea60a077cf35fe9db6f2d1b","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST30YR9VE6DF5VGEYMR50EZ7KBZMXPVSD3EGGTCY0","success":true},"operations":[],"transaction_identifier":{"hash":"0x403d194f9b8e1789a9081662f4b53314a8b8ceee32489c62b962d124c1fa38ee"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x0c502a332f2c6dbec3faa949d0fefa6edaffbb4723a3c0cdb43e7b44884505b5","index":100283},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000b8894b2a73c294bd9b2d4303929a8c280926d11d0bb4b2867","index":2424197},"confirm_microblock_identifier":{"hash":"0x59e6cbe77370e4b56aa612ed9bd9c5d29012864a2489a88660907247c1aa3523","index":2},"pox_cycle_index":403,"pox_cycle_length":1050,"pox_cycle_position":1046,"stacks_block_hash":"0xa54151a46e913847aa8e8084bfc10fd7b543284239ef2751ce4ce1a283ee867e"},"parent_block_identifier":{"hash":"0x7c87da4aed1c5967b682890e4af1e42fb84937394b6fcdf533d09a88951bc506","index":100282},"timestamp":1678703029,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x312d74782d70726f63657373696e67)","execution_cost":{"read_count":16,"read_length":44025,"runtime":167260,"write_count":2,"write_length":166},"fee":3000,"kind":{"data":{"args":["0x627463","0x312d74782d70726f63657373696e67"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":1,"position":{"index":5},"proof":null,"raw_tx":"0x808000000004001e9dd422cec4fa9d8ff291814043e385ff645e7500000000000000010000000000000bb80001a82691a9388c5590393b24deb20049c6a341070ba94ebcfe80acf5105c5c12ce2f5c6782da9a3fcb55cc7f3b36100d9005ba915bd07295e9eb4db8b7bae59f4a030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000f312d74782d70726f63657373696e67","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000aba04686173680200000000086d657461646174610c00000004046e616d65020000000f312d74782d70726f63657373696e67096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a1e9dd422cec4fa9d8ff291814043e385ff645e75","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STF9VN12SV2FN7CFYA8R2G23WE2ZYS2YEN8CE0XM","success":true},"operations":[],"transaction_identifier":{"hash":"0x385d89ece246267a3004cc3df58ad479cb9e6950bffda9a4196d452ef1bef46a"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xa1eb92fcf69b102faa07afefd2b93ceceb691e9b0c80d73f17d70be63851f40c","index":100284},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000278f88d6f30e23d1377d51ecc406d3f9d2b5ed4e0c6a5c5725","index":2424204},"confirm_microblock_identifier":{"hash":"0xc2cf64fdbd226db41a8779de6af77570be5c77f4676498609e2dd0bdc2436b9b","index":16},"pox_cycle_index":404,"pox_cycle_length":1050,"pox_cycle_position":3,"stacks_block_hash":"0xfba4b9c3f309891c45a9b0b28a7b5164a2b522be814c6a8e2049916a1ea9d14d"},"parent_block_identifier":{"hash":"0x0c502a332f2c6dbec3faa949d0fefa6edaffbb4723a3c0cdb43e7b44884505b5","index":100283},"timestamp":1678703872,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x312d74782d37383930303038383939)","execution_cost":{"read_count":16,"read_length":44025,"runtime":167260,"write_count":2,"write_length":166},"fee":3000,"kind":{"data":{"args":["0x627463","0x312d74782d37383930303038383939"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":6},"proof":null,"raw_tx":"0x80800000000400c1ec276e335e5dc1dea60a077cf35fe9db6f2d1b00000000000000030000000000000bb80000ca3e4fe199fd9aa6cd11f69806128738ac3a3c80910572251804f050c8347b852dd967b26701bf1438170fc3e3515149ac50bf71593b4a482bcee41a2e495852030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000f312d74782d37383930303038383939","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000abb04686173680200000000086d657461646174610c00000004046e616d65020000000f312d74782d37383930303038383939096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac1ec276e335e5dc1dea60a077cf35fe9db6f2d1b","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST30YR9VE6DF5VGEYMR50EZ7KBZMXPVSD3EGGTCY0","success":true},"operations":[],"transaction_identifier":{"hash":"0x161cc28052ae2636317a6285a876afeea81380fde36bf58e6adb75ee14affafd"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x646f6d61696e7465737436)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167056,"write_count":2,"write_length":162},"fee":3000,"kind":{"data":{"args":["0x627463","0x646f6d61696e7465737436"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":8},"proof":null,"raw_tx":"0x8080000000040083104514eb98328ce0d822680a1d78cc617379d300000000000000000000000000000bb80000cced3bbb9c54fec25dbc66a55dd531ea0a62f17104ebcf2550828b196533725e6557d90c9f1bf100e03700578d2f9ce8450f5fdac2a3cb5d48d4728e203ec91c030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b646f6d61696e7465737436","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000abc04686173680200000000086d657461646174610c00000004046e616d65020000000b646f6d61696e7465737436096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a83104514eb98328ce0d822680a1d78cc617379d3","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST21H0H8MXEC35370V0H6G2GXF3662WVSTFVSSJDM","success":true},"operations":[],"transaction_identifier":{"hash":"0xdd20779a16a217fd5bfcee6e88956a82ef1726e85572bbf5817abe2a6f96381e"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x617363616373617363)","execution_cost":{"read_count":16,"read_length":44007,"runtime":166954,"write_count":2,"write_length":160},"fee":3000,"kind":{"data":{"args":["0x627463","0x617363616373617363"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":20,"position":{"index":11},"proof":null,"raw_tx":"0x80800000000400c30d9ea5321592df016f6a3fa91f07c6927d1e2300000000000000140000000000000bb8000028a3d5c1b2fbd215a8e28e97544bd7a2a5548f36c7fdd4866e4a1476b9fb32057455e144b749d17af1f8570e70334dcd5516f37d49226e0076296e02d3236d8a030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000009617363616373617363","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000abe04686173680200000000086d657461646174610c00000004046e616d650200000009617363616373617363096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac30d9ea5321592df016f6a3fa91f07c6927d1e23","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST31GV7N568AS5QR1DXN3ZA8Z0Z394Z8Y4C5J1Q9E","success":true},"operations":[],"transaction_identifier":{"hash":"0x89b37a7100140f9106733bc9f13b936ae31a1c9452a9f2d710090a0631c51841"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7364636b6a6e73646b636a6e)","execution_cost":{"read_count":16,"read_length":44016,"runtime":167107,"write_count":2,"write_length":163},"fee":3000,"kind":{"data":{"args":["0x627463","0x7364636b6a6e73646b636a6e"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":7,"position":{"index":18},"proof":null,"raw_tx":"0x80800000000400c505e4f648d2d5228ffe2c5a425dc49ff52bc74400000000000000070000000000000bb8000082283489e866ed2bb71d8cee2ef2b6d67eac5793bdf6314ac817983ab0e0d8e51c202d9340b0a8c12557f56ed70da7c4f96d3384cfdc26818064416749b13735030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000c7364636b6a6e73646b636a6e","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000ac104686173680200000000086d657461646174610c00000004046e616d65020000000c7364636b6a6e73646b636a6e096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac505e4f648d2d5228ffe2c5a425dc49ff52bc744","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST32GBS7P939DA8MFZRP5MGJXRJFZAAY78GZFNYNH","success":true},"operations":[],"transaction_identifier":{"hash":"0xc1f57a7c63792f44c9e3d3b30ec3fcdab2b626ce105ff224a16f21913dac598b"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x646661736664736176)","execution_cost":{"read_count":16,"read_length":44007,"runtime":166954,"write_count":2,"write_length":160},"fee":3500,"kind":{"data":{"args":["0x627463","0x646661736664736176"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":7,"position":{"index":21},"proof":null,"raw_tx":"0x808000000004002fb0ec2ba051fcda050d1ad134b72297edc9ca2200000000000000070000000000000dac00010d1abd3bdc91a5a6b2d9bdd16af7bfb01c55b83ddd71d6cf39718c78f8cf40524ca7e90f3e38167c3d61cf3fa2a393af4ef3733e4bf65318338b4edf04b8fa4d030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000009646661736664736176","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000ac204686173680200000000086d657461646174610c00000004046e616d650200000009646661736664736176096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a2fb0ec2ba051fcda050d1ad134b72297edc9ca22","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STQV1V1BM18ZSPG51MDD2D5Q4ABYVJEA48K29AKB","success":true},"operations":[],"transaction_identifier":{"hash":"0xf14e190e36901f73940d29b107d7859019befa1a48723497e673dc6de6563ae1"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x72616e646f6d7465737431)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167056,"write_count":2,"write_length":162},"fee":3500,"kind":{"data":{"args":["0x627463","0x72616e646f6d7465737431"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":22},"proof":null,"raw_tx":"0x808000000004005cc58c2d9ed572a394f18eecfb8b8379a0c9dd9c00000000000000020000000000000dac00008d0f0deb1389e3753e35a36541e05e63673c3b668f2f91ee5fc69e2e59ed565d75731e19fb1a679e59e165ca5ac266991465dd53857e07cfc88c2b85c3d7b726030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b72616e646f6d7465737431","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000ac304686173680200000000086d657461646174610c00000004046e616d65020000000b72616e646f6d7465737431096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a5cc58c2d9ed572a394f18eecfb8b8379a0c9dd9c","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1ECB31DKVAQ58WMY67ESYWBGDWT1JEXKH947KJ6","success":true},"operations":[],"transaction_identifier":{"hash":"0x49324ee18602b17ca0decf23aaa17ce7586411a7b5d92036ec3f995801b0253c"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x72616e646f6d7465737432)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167056,"write_count":2,"write_length":162},"fee":3500,"kind":{"data":{"args":["0x627463","0x72616e646f6d7465737432"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":20,"position":{"index":23},"proof":null,"raw_tx":"0x808000000004001774a586f815ec30cc44bec4f78c27571e33d22600000000000000140000000000000dac0001326f3ad683027ab7601c1f2046edb5eee168301ffbc7b0e77d42727a7ae0a1f12fd33d9d27bf3052b2ff4408083840023490dadd3960ddab21de5a43b20b749e030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b72616e646f6d7465737432","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000ac404686173680200000000086d657461646174610c00000004046e616d65020000000b72616e646f6d7465737432096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a1774a586f815ec30cc44bec4f78c27571e33d226","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STBQ99C6Z0AYRC6C8JZC9XWC4XBHWCYJ4TXSKV4A","success":true},"operations":[],"transaction_identifier":{"hash":"0x9bcc2d3c8ceb6e4bfe486bba3bbde1cb6d5c3519c5b617fb322959ca2d1e14a0"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x65646765636173657465737432)","execution_cost":{"read_count":16,"read_length":44019,"runtime":167158,"write_count":2,"write_length":164},"fee":3500,"kind":{"data":{"args":["0x627463","0x65646765636173657465737432"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":5,"position":{"index":25},"proof":null,"raw_tx":"0x80800000000400a5a51de2c7c7ede9ddf31d05c9cf1edcf4e22d8700000000000000050000000000000dac0001c3540817368e5a89624f724cefa9a48e20f9de9b0564b982b8543807685b7a4933aad43a3e2902643246dbe685fb594108ae1b5e69246bc2b163f0eb68063984030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000d65646765636173657465737432","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000ac504686173680200000000086d657461646174610c00000004046e616d65020000000d65646765636173657465737432096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aa5a51de2c7c7ede9ddf31d05c9cf1edcf4e22d87","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2JTA7F2RZ3YVTEXYCEGBJEF3VEF9RHDGZJ5D672","success":true},"operations":[],"transaction_identifier":{"hash":"0x25d3b8bdf401c3e35689d07f02833e96b183116f0f6bef06fc83ce5b58da44f7"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xb7c4dbf961f0b9067a042a181aa977fb6e5df7360b821c28c33cf86da6f9cd66","index":100287},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000d26c8a2ecba3ebc8f9a1c865a148f3a43e5bcbdda51dceea6d74","index":2424213},"confirm_microblock_identifier":{"hash":"0x68d9477f31cc86e9e107af3fc2cba1d1132a4977779ac924c68c54acfca209d3","index":10},"pox_cycle_index":404,"pox_cycle_length":1050,"pox_cycle_position":12,"stacks_block_hash":"0xadaa17247a58aed3bb6ebba51a5e679b8a7ad7af3baeb8ce739a9ad5d8e63dcd"},"parent_block_identifier":{"hash":"0xef049af793c838db15d13517e28fe2c13bffd5590a9c20d58501853d8a6dc908","index":100286},"timestamp":1678708363,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x666c6f77746573743535)","execution_cost":{"read_count":16,"read_length":44010,"runtime":167005,"write_count":2,"write_length":161},"fee":3000,"kind":{"data":{"args":["0x627463","0x666c6f77746573743535"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":9,"position":{"index":4},"proof":null,"raw_tx":"0x80800000000400c505e4f648d2d5228ffe2c5a425dc49ff52bc74400000000000000090000000000000bb8000083be4e7719d51f6578f6e61408d7a88c0535d17c5d777a4d4823e3676a094e5a1c4df394cae7ec9cb9fbc2616bb97baa3bfdf3cc66d2a118a3034040e231855c010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000a666c6f77746573743535","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000ad104686173680200000000086d657461646174610c00000004046e616d65020000000a666c6f77746573743535096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac505e4f648d2d5228ffe2c5a425dc49ff52bc744","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST32GBS7P939DA8MFZRP5MGJXRJFZAAY78GZFNYNH","success":true},"operations":[],"transaction_identifier":{"hash":"0xa17c6a8b06bbd0a875a4ce705b6e77b8dda069cf7fcc30d1d90ddf659bb259c7"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x666c6f77746573743637)","execution_cost":{"read_count":16,"read_length":44010,"runtime":167005,"write_count":2,"write_length":161},"fee":3000,"kind":{"data":{"args":["0x627463","0x666c6f77746573743637"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":5},"proof":null,"raw_tx":"0x80800000000400eabeadb9fd7309492cff225e01194b79b80ea39f00000000000000040000000000000bb80001f9acb5549b7c939a678b9e2d6f7caca12878271aeb4e9834aa41f47c9e9018e95da4b32b511f9bc274f1b365808f6fe9e5f8e115e01b2025c3ed55aec2481469010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000a666c6f77746573743637","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000ad204686173680200000000086d657461646174610c00000004046e616d65020000000a666c6f77746573743637096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aeabeadb9fd7309492cff225e01194b79b80ea39f","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3NBXBDSZNSGJJ9CZWH5W08S9DWVG3N3KYDK21AV","success":true},"operations":[],"transaction_identifier":{"hash":"0xe89735ea2d09557eafacee2111a8ea4a409ed683469fcfbf06c760840e8cfea8"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7a6f6e652d74657374)","execution_cost":{"read_count":16,"read_length":44007,"runtime":166954,"write_count":2,"write_length":160},"fee":3000,"kind":{"data":{"args":["0x627463","0x7a6f6e652d74657374"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":7},"proof":null,"raw_tx":"0x808000000004001e9dd422cec4fa9d8ff291814043e385ff645e7500000000000000030000000000000bb80000253ec8c8e4ba2ccae120f3188c28b7f77c79771e86a711f3392f2897e3a62f1a1bf6ce8f14639f8b697f7f6e438587e4bc481c67407032bd75983b95997d7424030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000097a6f6e652d74657374","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000acb04686173680200000000086d657461646174610c00000004046e616d6502000000097a6f6e652d74657374096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a1e9dd422cec4fa9d8ff291814043e385ff645e75","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STF9VN12SV2FN7CFYA8R2G23WE2ZYS2YEN8CE0XM","success":true},"operations":[],"transaction_identifier":{"hash":"0x2fcfa69acf9daf19c81eea9ad9f4d1ab26dea85e6d4d2f38193f9779f00380e6"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x8b8446bf0cc3c6d2aad8b37b65a25faaebd1b76f8d9b41890525ee0450f350a9","index":100293},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000018c67ba970c8b40c6cbe08736b97645d6ae8869c6262310a80","index":2424297},"confirm_microblock_identifier":{"hash":"0x6c0f39836b78f11c8ad9088309fd2c841954ac64bfd38c1cdecbfab1a954665d","index":62},"pox_cycle_index":404,"pox_cycle_length":1050,"pox_cycle_position":96,"stacks_block_hash":"0xf9bc5186adc8234c78f55d4266ed424b6b30251fe416d3f291bc8a6be601d5e5"},"parent_block_identifier":{"hash":"0xf8f9c3be42817deb75f7d544fd9e7e5659f1d83aad6f8eefe0053b1b1bb4f9b5","index":100292},"timestamp":1678712852,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6372617a7979797979)","execution_cost":{"read_count":16,"read_length":44007,"runtime":166954,"write_count":2,"write_length":160},"fee":3000,"kind":{"data":{"args":["0x627463","0x6372617a7979797979"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":39},"proof":null,"raw_tx":"0x80800000000400ae9268d2dfdf7c712b23a39e0b0a81fda9205cc500000000000000040000000000000bb8000007df715bec28fdc8ed97a34434d89f45a17b69d16bc107302295eae6fc03027d3f306ff1d05436a80049113b5ff900c4f2994b906a30a4fbd58eac87b6677a02030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000096372617a7979797979","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000ad804686173680200000000086d657461646174610c00000004046e616d6502000000096372617a7979797979096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aae9268d2dfdf7c712b23a39e0b0a81fda9205cc5","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2Q94T6JVZFQRW9B4EHSW2RAG7YTJ82WRQASBW9X","success":true},"operations":[],"transaction_identifier":{"hash":"0x06c29bdf52ca6bf492a6b46ee8c2d9fc9d8950484e4967fcaaad8418769c4be7"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7a6f6e652d66696c65)","execution_cost":{"read_count":16,"read_length":44007,"runtime":166954,"write_count":2,"write_length":160},"fee":3000,"kind":{"data":{"args":["0x627463","0x7a6f6e652d66696c65"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":41},"proof":null,"raw_tx":"0x8080000000040022ee654fac2990d26487b3a6af4874e4677705b200000000000000020000000000000bb80001f1d6eb108cac4bbf4260040a00b5d9fa32933ac25f03c7ca26b44ca7b3cde2e57439739a56058d4fe24f3b39edba6c8be7b97e1107e2f6e3c8b3918027ae02ac030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000097a6f6e652d66696c65","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000ad904686173680200000000086d657461646174610c00000004046e616d6502000000097a6f6e652d66696c65096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a22ee654fac2990d26487b3a6af4874e4677705b2","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STHEWSAFNGMS1MK4GYSTDBT8EKJ6EXR5PA2RVDEM","success":true},"operations":[],"transaction_identifier":{"hash":"0xd7cb5369603585e1a90f51eb330c5fadb17748287d6bcd82c791cf355c2f3571"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6d616e6167652d2d706167652d3232)","execution_cost":{"read_count":16,"read_length":44025,"runtime":167260,"write_count":2,"write_length":166},"fee":3000,"kind":{"data":{"args":["0x627463","0x6d616e6167652d2d706167652d3232"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":8,"position":{"index":42},"proof":null,"raw_tx":"0x80800000000400b40025714a64d3e84a98768e0e34a716eedaffce00000000000000080000000000000bb80001c9a954ea56a902ff5eb7d998054008d51269c80088bb0b8785aad39408bfff923f00f81fcc0689497887518ac018dc1f9f247a77b471305de79bf7a7d94a6959030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000f6d616e6167652d2d706167652d3232","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000ada04686173680200000000086d657461646174610c00000004046e616d65020000000f6d616e6167652d2d706167652d3232096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ab40025714a64d3e84a98768e0e34a716eedaffce","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2T009BH99JD7T2AK1V8W3HMMWBEXPQZSV808DH9","success":true},"operations":[],"transaction_identifier":{"hash":"0x29d8f3c3461b509d5b1fd9bc374773795995cb1e2db2df3906f07a3c142153fb"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x616a6565622d313030)","execution_cost":{"read_count":16,"read_length":44007,"runtime":166954,"write_count":2,"write_length":160},"fee":3000,"kind":{"data":{"args":["0x627463","0x616a6565622d313030"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":1,"position":{"index":44},"proof":null,"raw_tx":"0x808000000004001057ff3746289ce361da37defe34e69847904d8900000000000000010000000000000bb8000016ea037ab501ed5b6f7465dba221a46114e7ed4fc23581cb3c6a26d102662fb35459536e7cec4dfa6473edaebbaf41137c452ceff46ce41d2d724003b9389377030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000009616a6565622d313030","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000adb04686173680200000000086d657461646174610c00000004046e616d650200000009616a6565622d313030096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a1057ff3746289ce361da37defe34e69847904d89","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST85FZSQ8RM9SRV1V8VXXZHMWTC4F42DH78J2ESV","success":true},"operations":[],"transaction_identifier":{"hash":"0xb5fe931d1f58adbdecde4f73382044c302e516ccf84f78864b94f4a074bad195"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x312d74782d3230)","execution_cost":{"read_count":16,"read_length":44001,"runtime":166852,"write_count":2,"write_length":158},"fee":3500,"kind":{"data":{"args":["0x627463","0x312d74782d3230"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":1,"position":{"index":46},"proof":null,"raw_tx":"0x808000000004008f914089eaee5eea997148a86f055466f3b1effd00000000000000010000000000000dac000084ad7751dce1d3f83854457cc797333d0dfe2f7b5fc10fc923fd23b06f0ea81571ff19c54f6e4716b735da2b7807f4ac45b8d647442f35eba69616d3017f0662030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000007312d74782d3230","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000adc04686173680200000000086d657461646174610c00000004046e616d650200000007312d74782d3230096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a8f914089eaee5eea997148a86f055466f3b1effd","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST27S2G49XBQ5XTMSE54AGVR5AHKF7CFFZPFTE3EJ","success":true},"operations":[],"transaction_identifier":{"hash":"0x59940688c9a24d1e53ca77c86ef4888f021dedbc45a88daa4479966820bb726d"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6d69696e6e69692d31303030303030)","execution_cost":{"read_count":6,"read_length":42527,"runtime":58303,"write_count":0,"write_length":0},"fee":3000,"kind":{"data":{"args":["0x627463","0x6d69696e6e69692d31303030303030"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":1,"position":{"index":64},"proof":null,"raw_tx":"0x80800000000400949068e9eaecfdf22ae0845ba3ff067e269a953a00000000000000010000000000000bb80000b7edf20534038b57bdbad785a692952453acaa03e568e721921fa1f7464fe8af343cbe180ddb7c8967502eb86efaecf15e42b8200cdcdc25bb02e9aa7b6de2ec030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000f6d69696e6e69692d31303030303030","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2006)","sender":"ST2A90T79XBPFVWHAW225Q8ZZ0SZ2D6MN797RAK10","success":false},"operations":[],"transaction_identifier":{"hash":"0xf6c99a2b3b8bed504d50c6098c56fbfbe65bb8ea30d7437c4070edf73aff619a"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x616a6565622d3530)","execution_cost":{"read_count":16,"read_length":44004,"runtime":166903,"write_count":2,"write_length":159},"fee":3000,"kind":{"data":{"args":["0x627463","0x616a6565622d3530"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":66},"proof":null,"raw_tx":"0x80800000000400949068e9eaecfdf22ae0845ba3ff067e269a953a00000000000000020000000000000bb80000a03438393f438e0e8a95543d82cab59787711b2871f97fe2c4a21a3dfa4c148e7402b064ccdcc5b0f6bee73d3ed404d863fe5e0aa5698d8b39d3da940b30e2eb030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000008616a6565622d3530","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000add04686173680200000000086d657461646174610c00000004046e616d650200000008616a6565622d3530096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a949068e9eaecfdf22ae0845ba3ff067e269a953a","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2A90T79XBPFVWHAW225Q8ZZ0SZ2D6MN797RAK10","success":true},"operations":[],"transaction_identifier":{"hash":"0xaccb766ae8e7cdd683af3b60c5d1b1a4f0505c4077c35b7db1612eca001a0bf7"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x96e126f3ee4415eeaa38473e0b56240dad9a05bd919c4dfe185cad3e9b331231","index":100294},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000bec53269ee95d6853b743eb34eede5ac447388fb0852eaa705496b7c","index":2424298},"confirm_microblock_identifier":{"hash":"0x57e26ac547b61e33bc5fdb9b87b81dae2195edf753602a0da09b265c9a0baa3a","index":3},"pox_cycle_index":404,"pox_cycle_length":1050,"pox_cycle_position":97,"stacks_block_hash":"0xa1f15d9ad4953b64515a7afb5dca83018a0e13dd7c8a738a36f36fc886fbd178"},"parent_block_identifier":{"hash":"0x8b8446bf0cc3c6d2aad8b37b65a25faaebd1b76f8d9b41890525ee0450f350a9","index":100293},"timestamp":1678754916,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x666c6f77746573743838)","execution_cost":{"read_count":16,"read_length":44010,"runtime":167005,"write_count":2,"write_length":161},"fee":3000,"kind":{"data":{"args":["0x627463","0x666c6f77746573743838"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":24,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040093848da413b5311e1efe84e9f1bcfb1c0977877600000000000000180000000000000bb80000b650325cc1c61d1f47671a7aaa90e60d0c8294e9a0515030919605e1f37643c714808c07d3a59d0f05319026e9af9405c82b1ccd8bb0b7529b2fde340c4b7ab0010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000a666c6f77746573743838","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000ae004686173680200000000086d657461646174610c00000004046e616d65020000000a666c6f77746573743838096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a93848da413b5311e1efe84e9f1bcfb1c09778776","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST29R93D42ETK27GYZT2EKWDWZCE0JXW7ERS23XG9","success":true},"operations":[],"transaction_identifier":{"hash":"0xeb34a7e80941e60d361bd1951a8b1ce93cc16b006f1ab3108d63455875b16641"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x666c6f77746573743730)","execution_cost":{"read_count":16,"read_length":44010,"runtime":167005,"write_count":2,"write_length":161},"fee":3000,"kind":{"data":{"args":["0x627463","0x666c6f77746573743730"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":18,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400c29f2bc04c3a559f50d45767e3b8c3978952032b00000000000000120000000000000bb800013576685fd4f66b4bf13ebfd2212e62435deaf87aedd11de5aa0e4b907aff2e911ac3a678bc5a2b5dd83291bc04662a2fc86d2c024c97d6a4c4129b76cf24b822010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000a666c6f77746573743730","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000ae104686173680200000000086d657461646174610c00000004046e616d65020000000a666c6f77746573743730096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac29f2bc04c3a559f50d45767e3b8c3978952032b","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST319YAY09GX5B7TGTHBPFRXRREBRJMG35D7B28QY","success":true},"operations":[],"transaction_identifier":{"hash":"0x44513b61220bfafee4f040f5d43f426bfb97b2870c71ca7c2a2352cbaa650774"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xfba664d3ffc8644bd3583dfe916e2689d7b4ad2bf48ce0cd445184b5744ae4e9","index":100319},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000bc734cf6bb534c22d8f6229abb731530e16b8bfbefd2b9db52d4eeb6","index":2424338},"confirm_microblock_identifier":{"hash":"0x7bafa016cb10eb965483bbb32512dfc54b108b6c1142f7d23bbbf26b5acdb4fb","index":4},"pox_cycle_index":404,"pox_cycle_length":1050,"pox_cycle_position":137,"stacks_block_hash":"0xcea772789cc6cb4c724b0a1ec3001a0a5990950a43727fc308cdadc9b2994ebd"},"parent_block_identifier":{"hash":"0x8f74794d7d8f369f3fc3ddbd2162d19087cec6514959fd64922d8d6421124ee0","index":100318},"timestamp":1678776457,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x666c6f77746573743839)","execution_cost":{"read_count":16,"read_length":44010,"runtime":167005,"write_count":2,"write_length":161},"fee":3000,"kind":{"data":{"args":["0x627463","0x666c6f77746573743839"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040083104514eb98328ce0d822680a1d78cc617379d300000000000000030000000000000bb800015831f30227e601d295fdb9152feff56d1d5f65a3e63b8147cf8c4f1ca2673b1115a137ddbcb1467815d3b4379093f505154fffb9cdf9e3f25deb7426c4173445010200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000a666c6f77746573743839","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000ae504686173680200000000086d657461646174610c00000004046e616d65020000000a666c6f77746573743839096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a83104514eb98328ce0d822680a1d78cc617379d3","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST21H0H8MXEC35370V0H6G2GXF3662WVSTFVSSJDM","success":true},"operations":[],"transaction_identifier":{"hash":"0x4b8274c1fa1c59cefc693d29dac3cdd266ddc735417403471d925aa520d1ad1a"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xdcb61ae84cda43a92d8c18724e55907faf529527e2433a7ebafd71797a27ae83","index":100322},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000a2edd2194c6ce225fb1caf02a34d639add84c8b608794d2c0","index":2424341},"confirm_microblock_identifier":{"hash":"0x19a139c3f6782af20725a7688fa9d7e3e61c2e999f36973065ec2c3468e9946c","index":2},"pox_cycle_index":404,"pox_cycle_length":1050,"pox_cycle_position":140,"stacks_block_hash":"0x5b235898573a2b674a746e5ef45d19d7722935c8d212ef9f698b876b1c55801d"},"parent_block_identifier":{"hash":"0xb7134c74a9498014a6ac42d2fe8182dacb5925ac3ce0449c809e027861c0c3f4","index":100321},"timestamp":1678778943,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x73646673646673)","execution_cost":{"read_count":16,"read_length":44001,"runtime":166852,"write_count":2,"write_length":158},"fee":3500,"kind":{"data":{"args":["0x627463","0x73646673646673"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":6,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400909b3b63ac083b69d76f08df2a013f299a36599500000000000000060000000000000dac0001166ff2cc48485fa02cf475774a094a18f214eb380cce47a1c951721c4e5805e7269b777e0e1275ee0c968bbbda36890f10003fd9b6c033c1eb99731cc067e101030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000773646673646673","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000ae804686173680200000000086d657461646174610c00000004046e616d65020000000773646673646673096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a909b3b63ac083b69d76f08df2a013f299a365995","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST289PEV3NG43PTEQDW4DYAG17WMSMDJSJQ8P2KND","success":true},"operations":[],"transaction_identifier":{"hash":"0x55ade28b0835137447a71beb698cb2b026fb0b1820ea024fc0f05e2658329573"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x13c2fbaad398b91f1cea38b5ca28d8ae0a10459646609afcaa494eb885375766","index":100325},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000043ff0820d00ad264876d4343ffd982a215ba7d64c432af49be6935d0","index":2424345},"confirm_microblock_identifier":{"hash":"0x3fd21265f04d43a988ac9ca09c565dfa69d759a22aa232fb49a94984e4df2b6e","index":3},"pox_cycle_index":404,"pox_cycle_length":1050,"pox_cycle_position":144,"stacks_block_hash":"0xebb884cafb77cf8a2ac291b9a84c8b8a6a4e720a531c871a03dddb8b8c124286"},"parent_block_identifier":{"hash":"0xbbb5635a64ca142e5cfffa6a91c7a052ee694a51e286e45e419b651998254895","index":100324},"timestamp":1678782064,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x666c6f777465737437)","execution_cost":{"read_count":16,"read_length":44007,"runtime":166954,"write_count":2,"write_length":160},"fee":3000,"kind":{"data":{"args":["0x627463","0x666c6f777465737437"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":21,"position":{"index":6},"proof":null,"raw_tx":"0x80800000000400c29f2bc04c3a559f50d45767e3b8c3978952032b00000000000000150000000000000bb8000180a538f5377054ce7e4467f56e7d7a603c664d2ac5350bf52223972d792a1f900fb1b03307f415c5098d0c5f2df524d35015b1d6a21f680efb956d0a55cf35c3030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000009666c6f777465737437","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000aed04686173680200000000086d657461646174610c00000004046e616d650200000009666c6f777465737437096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac29f2bc04c3a559f50d45767e3b8c3978952032b","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST319YAY09GX5B7TGTHBPFRXRREBRJMG35D7B28QY","success":true},"operations":[],"transaction_identifier":{"hash":"0x500101c67ea38c238391f2183d5c529faef5c53e007fb28627543cc1674cb25c"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x5614f5fa76dd0eebfaa05259a3670a355ed893a40c016f9a7d4cd706b658192a","index":100326},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000010fc736bdb434033867cf86dcc2232acb1d68486e70b4f0d45ea","index":2424346},"confirm_microblock_identifier":{"hash":"0xd98ffb3d08678a906d5587db165a0d2c8ac883e7dfb821d0a0998831213af25b","index":3},"pox_cycle_index":404,"pox_cycle_length":1050,"pox_cycle_position":145,"stacks_block_hash":"0x9784c434b8c7a51146a7d4e57b98b8c3c4e4d8fcbec5a94664b333d19dd1357e"},"parent_block_identifier":{"hash":"0x13c2fbaad398b91f1cea38b5ca28d8ae0a10459646609afcaa494eb885375766","index":100325},"timestamp":1678783279,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x666c6f777465737435)","execution_cost":{"read_count":16,"read_length":44007,"runtime":166954,"write_count":2,"write_length":160},"fee":3000,"kind":{"data":{"args":["0x627463","0x666c6f777465737435"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400b0bec85a220d180680d3762dfdf2f4cd5cd0da1700000000000000040000000000000bb80000bd7b578a20b8c46488828207c7229916573aee113fb978a5d65d3d06ea61143d117ae2b905efcc129aab470751a01d1c90673de9b3dcd19b5fbaf46c9465daed030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000009666c6f777465737435","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000aee04686173680200000000086d657461646174610c00000004046e616d650200000009666c6f777465737435096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ab0bec85a220d180680d3762dfdf2f4cd5cd0da17","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2RBXJ2T486HG1M0TDV2VZFJYK6NSM6T2WD5FP7G","success":true},"operations":[],"transaction_identifier":{"hash":"0x5a6d8ea5d4440ef4c119a5a9fc6bc894947d47bd5fe44b535cfdee6210e68025"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x8cf59c5e12ca2ae41d2ad7f1bb0b3365ba872a9ebb342e1afb85ad98a3861f25","index":100328},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000460d719038d440c315a0dff8a9cacfcf658f28937a33d4dd8d24","index":2424348},"confirm_microblock_identifier":{"hash":"0xcf779eb1aa1b5d1afac9cc3964d4e8037fce32602379f336634ef054db9ff61d","index":3},"pox_cycle_index":404,"pox_cycle_length":1050,"pox_cycle_position":147,"stacks_block_hash":"0xe632f5a763783803fca93bb29c5183f6c70b7cd91e4910f714f8fb387af0597b"},"parent_block_identifier":{"hash":"0xb18916daecee17a7d202a82e98871db4d919ee6313d42a46534b7db05a1b00d1","index":100327},"timestamp":1678784984,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6975796674647273617863686a)","execution_cost":{"read_count":16,"read_length":44019,"runtime":167158,"write_count":2,"write_length":164},"fee":3000,"kind":{"data":{"args":["0x627463","0x6975796674647273617863686a"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":24,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400c29f2bc04c3a559f50d45767e3b8c3978952032b00000000000000180000000000000bb80001ee0293463f231bc3ef7936e29951706f3eb13bb4d86f46a2659123916e6fdf5c1bb94bcf9c3a5d9f5c7210606fb3ae2d5947ad6824ed21fbdfad828c44d1449e030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000d6975796674647273617863686a","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000af204686173680200000000086d657461646174610c00000004046e616d65020000000d6975796674647273617863686a096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac29f2bc04c3a559f50d45767e3b8c3978952032b","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST319YAY09GX5B7TGTHBPFRXRREBRJMG35D7B28QY","success":true},"operations":[],"transaction_identifier":{"hash":"0x977b8c3029cc7ae82183c0538974054c015b1c64bff76ccb544525882977852e"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x9117fc82b1100bc869be65ee5a8af6b9b98e113f8ab79a944dedf87dc2daa4c3","index":100331},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000011c5ecfe3e780a5178d462b918157e7bf6e6ca8f11ec6ac82","index":2424354},"confirm_microblock_identifier":{"hash":"0x48d952c76f636d4944e46de5ef133d5c293453a3bfdcabf5416e1861b0045cec","index":3},"pox_cycle_index":404,"pox_cycle_length":1050,"pox_cycle_position":153,"stacks_block_hash":"0x971fbd9b33a64809927ac3f451b69a39993aecb103338b71a2640035a325fd78"},"parent_block_identifier":{"hash":"0x7607cc3b288aedf8455cfd0e290669f2201979a9a84f07dd24076bb3923c905d","index":100330},"timestamp":1678788761,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6673676867)","execution_cost":{"read_count":16,"read_length":43995,"runtime":166750,"write_count":2,"write_length":156},"fee":3000,"kind":{"data":{"args":["0x627463","0x6673676867"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":13},"proof":null,"raw_tx":"0x80800000000400d193371e464a7f06e56a152b1bcf20591ee25fbd00000000000000000000000000000bb800018d4fe6c592f3268df47c954e8b05be93a77d2c7ea03eef60f1cf67a8fc65182d04ff6aadfc5f6709a847d738a23a91ec96d1dcde3bc4351572a43307553bf567030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000056673676867","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000af504686173680200000000086d657461646174610c00000004046e616d6502000000056673676867096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ad193371e464a7f06e56a152b1bcf20591ee25fbd","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST38S6DRY8S57Y1Q5D8AJP6YF41CHXRJZQMKE5RPG","success":true},"operations":[],"transaction_identifier":{"hash":"0x375e1261658c1c68002e823c8095fa21c3d837eeff006cfbdb3734dcf698c080"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xac782f5eaf02a6ff002394dbad976bb481e740fc807389ef0b7e927b27698ba0","index":100337},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000ce8151dac34e39191b4956556bb09058f7b9c7dbdff4a0e8d6ff","index":2424364},"confirm_microblock_identifier":{"hash":"0xbd4f009e61835e428438afaeb56250aa152c6499745a4f267f7a865fb2404add","index":3},"pox_cycle_index":404,"pox_cycle_length":1050,"pox_cycle_position":163,"stacks_block_hash":"0x379f8b0764769e21ceda4a72e951d64c6282d77e2629fd8d88b7bae9ae152846"},"parent_block_identifier":{"hash":"0xa2808fe2997514ed36b383de3918ed2bbf9879c23742b490b2b793fe1ae867fc","index":100336},"timestamp":1678795079,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x312d74782d66726f6e7472756e6e696e672d31)","execution_cost":{"read_count":16,"read_length":44037,"runtime":167464,"write_count":2,"write_length":170},"fee":3000,"kind":{"data":{"args":["0x627463","0x312d74782d66726f6e7472756e6e696e672d31"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":1,"position":{"index":4},"proof":null,"raw_tx":"0x80800000000400444405205b939a0230313fde340e79246068346f00000000000000010000000000000bb8000146e528d05e5d8957bbd1c528dd75f07dbacc6f5216bbafed7aae3d7398ccabf349d95aec10cafe4fe5ec3333d17349c9e04b7a8bfe8715d650932cb112cd3ec9030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000013312d74782d66726f6e7472756e6e696e672d31","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000afa04686173680200000000086d657461646174610c00000004046e616d650200000013312d74782d66726f6e7472756e6e696e672d31096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a444405205b939a0230313fde340e79246068346f","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1248190BE9SM0HG64ZXWD0EF4J60T1MDWQWZ3EH","success":true},"operations":[],"transaction_identifier":{"hash":"0xdfb2c3f905b69e8a906ac521a4f90da8f6cacdc206746caf416f51b890c6806b"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x0b076fbe31d45758ea1f055b7dac4d63d4fb4cbebe022c6ca9b33e7f39ae8145","index":100345},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000067c0bf5fb69284da5f12787bf8b15f80a9908fe7e8d5cbc15a500342","index":2424380},"confirm_microblock_identifier":{"hash":"0xeb072722fc12916cd0082c85ec9baad33b4f2f742ed162970be8b62539601926","index":15},"pox_cycle_index":404,"pox_cycle_length":1050,"pox_cycle_position":179,"stacks_block_hash":"0x99afb006e55d1b0e908fdb9686ccfdb76211adc3ace136f042f2fad417b21101"},"parent_block_identifier":{"hash":"0x7f4fe234d3a31018f0486cabcb5f8bc6e16291035da297045144565bffa1c20a","index":100344},"timestamp":1678800663,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x312d74782d66726f6e7472756e6e696e67)","execution_cost":{"read_count":16,"read_length":44031,"runtime":167362,"write_count":2,"write_length":168},"fee":3000,"kind":{"data":{"args":["0x627463","0x312d74782d66726f6e7472756e6e696e67"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":1,"position":{"index":12},"proof":null,"raw_tx":"0x80800000000400852736929dfe2f4e7bbed70081beadb13c83c36900000000000000010000000000000bb80001a708cfd14b9a144187738860b30b275203b0f3cce1fc7cae5ce730d7be9b9cb648fd90ca4e2ddb9a1a6d4dc2a9f3257f2241ba2197b806c6dcf3df5a479636f3030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000011312d74782d66726f6e7472756e6e696e67","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000afd04686173680200000000086d657461646174610c00000004046e616d650200000011312d74782d66726f6e7472756e6e696e67096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a852736929dfe2f4e7bbed70081beadb13c83c369","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST22JEDMJKQZ2YKKVQVBG10DYNPRKS0Y3D5HVK5PH","success":true},"operations":[],"transaction_identifier":{"hash":"0x3b2921dcce6559190891b722a8b0bb7bb28f1a997003a288fe10d6b4e510f6b2"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x9ae9e0af6d5195b2351128ad841b25dd0b037dfce49c2908fa761e03589fe023","index":100354},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000002d079052be1ab6af4b6aa7c8a7f9919cfe84c64acaa634f47","index":2424391},"confirm_microblock_identifier":{"hash":"0x68a7376ee9c4e8e3c1f5d524c8e93fbfe941244e9908a7cad806d98cc7777222","index":4},"pox_cycle_index":404,"pox_cycle_length":1050,"pox_cycle_position":190,"stacks_block_hash":"0x6cafe3602b161e9ac700dac756b74d186b3c6f933876d2396fe3b69459f0b9f0"},"parent_block_identifier":{"hash":"0x14b20dd0a035c427644d13d8b9dc80a6967df96a935fabae0a97b792cda25e0c","index":100353},"timestamp":1678810905,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6b6a686766647377)","execution_cost":{"read_count":16,"read_length":44004,"runtime":166903,"write_count":2,"write_length":159},"fee":3000,"kind":{"data":{"args":["0x627463","0x6b6a686766647377"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":9,"position":{"index":5},"proof":null,"raw_tx":"0x80800000000400b0bec85a220d180680d3762dfdf2f4cd5cd0da1700000000000000090000000000000bb80000a76a20186fdc440e6211d8601a740685b4cffb3c77ff9c9f4678e50e511e6e182f0b781117cdf81528d5ea8365dc45c70914392a3829aa7a5faa00e9a10b98a4030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000086b6a686766647377","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b0004686173680200000000086d657461646174610c00000004046e616d6502000000086b6a686766647377096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ab0bec85a220d180680d3762dfdf2f4cd5cd0da17","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2RBXJ2T486HG1M0TDV2VZFJYK6NSM6T2WD5FP7G","success":true},"operations":[],"transaction_identifier":{"hash":"0x35a85f134ed22e604363c9b69e16961c6abf83c111ba8a27f587162680eec0e4"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x4147a81f76cf85c17bd622583273d23fb93c78b07c36e64d102ba91a37c3ff4d","index":100360},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000056a86309849b324c28115bb0efef05cb62d0ca848257b4421","index":2424404},"confirm_microblock_identifier":{"hash":"0xa960b8b4f2d0fa3b78f6254d06723b09cd17c379cc95aeea8b27c468cb3a589d","index":9},"pox_cycle_index":404,"pox_cycle_length":1050,"pox_cycle_position":203,"stacks_block_hash":"0x36bc9380a9ee9d8874fbc9fc2272085c01c9a4e118a50fe0aee795348254054a"},"parent_block_identifier":{"hash":"0x68e51081cba9c52536ae2e153260b52febb59acfed7535493af3f8eddeed6443","index":100359},"timestamp":1678818514,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x616466737662)","execution_cost":{"read_count":16,"read_length":43998,"runtime":166801,"write_count":2,"write_length":157},"fee":3500,"kind":{"data":{"args":["0x627463","0x616466737662"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":4},"proof":null,"raw_tx":"0x80800000000400e037f847bd8fef429835622061cf707e903fa4c900000000000000000000000000000dac0000ef0faad964464bc7478af984f884bbd192fcc764de99441fe18a0fd18cb9a4210799de5105ae15a02b0745b0196e06558edd9d906505f986c4145814ca3a38b1030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006616466737662","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b0204686173680200000000086d657461646174610c00000004046e616d650200000006616466737662096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ae037f847bd8fef429835622061cf707e903fa4c9","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3G3FY27QP7YYGMR6NH20REFE1Z90FX4S72JTD3X","success":true},"operations":[],"transaction_identifier":{"hash":"0xa59db6fe9a28a17faf0ac62f2a25c6289746a50085b2e643f726cfe81dffe5c6"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x2887d588348593d153a6bee21780ac736ebae18e207e2a98581729b2eade64c7","index":100361},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000001470d579c2d5c22de32082e7bd7c564ab3739e9807bda4e1ed","index":2424408},"confirm_microblock_identifier":{"hash":"0xbef9eac7647c650ea100aac6c8630a38703c54a689f1608c2480be2c2c9fb3ec","index":7},"pox_cycle_index":404,"pox_cycle_length":1050,"pox_cycle_position":207,"stacks_block_hash":"0x380a7a8cafdfd801f6b98dd5e4c2b5651f8d771f2600997ac84da68c65640a6b"},"parent_block_identifier":{"hash":"0x4147a81f76cf85c17bd622583273d23fb93c78b07c36e64d102ba91a37c3ff4d","index":100360},"timestamp":1678821035,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6f6e652d74782d6572726f72)","execution_cost":{"read_count":16,"read_length":44016,"runtime":167107,"write_count":2,"write_length":163},"fee":3000,"kind":{"data":{"args":["0x627463","0x6f6e652d74782d6572726f72"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400444405205b939a0230313fde340e79246068346f00000000000000030000000000000bb80001dace2abb8062a71121e5c01d31690efe90c9a344809adc47ad2252c5fc80da0e4ddd59c1c3613af15f47fc8a05c4c61163ac5ae852285996419c4045c44e3419030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000c6f6e652d74782d6572726f72","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b0404686173680200000000086d657461646174610c00000004046e616d65020000000c6f6e652d74782d6572726f72096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a444405205b939a0230313fde340e79246068346f","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1248190BE9SM0HG64ZXWD0EF4J60T1MDWQWZ3EH","success":true},"operations":[],"transaction_identifier":{"hash":"0xcebf7f75482f052f2cb48e95c95a680b3fda9ceda4457d2e6a1075af52c266e0"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x53a0bcfa5dabf75570c31fab594366d0f73fb3f47cecf523cacf4d24679f6b2f","index":100418},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000001d32161ab4a0c2bb22ff2db22dcd7a1f1b6f181e321db091c9","index":2424485},"confirm_microblock_identifier":{"hash":"0x10fff6ad740e78720005dcb4c78907363d8dc3bb200e157fe7ec300f0ab3923c","index":3},"pox_cycle_index":404,"pox_cycle_length":1050,"pox_cycle_position":284,"stacks_block_hash":"0x2a0a4b48c5a37335cdf392c17ac359dc9f1ee5fdda5d5da2bfd6fe748708870e"},"parent_block_identifier":{"hash":"0x743c59b512fb4b3bd25fe0d1f9a185a2322c96d282100ed582733a8b169914a7","index":100417},"timestamp":1678879192,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x666c6f777465737432)","execution_cost":{"read_count":16,"read_length":44007,"runtime":166954,"write_count":2,"write_length":160},"fee":3000,"kind":{"data":{"args":["0x627463","0x666c6f777465737432"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":39,"position":{"index":3},"proof":null,"raw_tx":"0x808000000004002c4673bcc1fcf2bacdae24385dddd9a85d88175a00000000000000270000000000000bb8000148ec86b13819cd146876cdc45a5789ee43d7848f9da2b4c0e0d1bba8b320cdab69fe771c230d519568dfcfcb3e8774121419a40699e26bfc791e7ac41f28f173030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000009666c6f777465737432","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b0d04686173680200000000086d657461646174610c00000004046e616d650200000009666c6f777465737432096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a2c4673bcc1fcf2bacdae24385dddd9a85d88175a","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STP4CWXWR7YF5EPDNRJ3GQEXV6M5V20QBBRY5215","success":true},"operations":[],"transaction_identifier":{"hash":"0x9976aa8cfaba0018cfe747e256a2a8614f392673c3982cba3112ea0a4c73dd56"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x0ab8bba6f25eb708ada5af0e5c4bfe802277c986c4f30c3cb9924fde331b5b8d","index":100456},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000020bc22d646316579d9709a29a5211c0655e824d1d5895ad8a3","index":2424539},"confirm_microblock_identifier":{"hash":"0xee148147d2afcccf7e22539a6cfcaa599f740d379f56754e323defdfa71c14af","index":0},"pox_cycle_index":404,"pox_cycle_length":1050,"pox_cycle_position":338,"stacks_block_hash":"0x364c1fd78f39171c26389a46419237bdd4d55e2bafc5a51a6ac73af7a4870d06"},"parent_block_identifier":{"hash":"0x1f232fd56ef310902e8f8712998df953328cd007e964ab7d9ba31e40da68974a","index":100455},"timestamp":1678911162,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x66696e642d74782d6572726f722d31)","execution_cost":{"read_count":16,"read_length":44025,"runtime":167260,"write_count":2,"write_length":166},"fee":3000,"kind":{"data":{"args":["0x627463","0x66696e642d74782d6572726f722d31"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040019544bb51de02f1155b412d901bd9aa8596c559f00000000000000020000000000000bb80000fd89394ecf605b1aa842abd71ad1a5888f721ad6e16b80d99e2c354563b8977f6af8c7ff69559537c89cbfa23eb3f8a1339ecc80327e208d6f85d589475bfb22030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000f66696e642d74782d6572726f722d31","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b1504686173680200000000086d657461646174610c00000004046e616d65020000000f66696e642d74782d6572726f722d31096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a19544bb51de02f1155b412d901bd9aa8596c559f","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STCN8JXN3QG2Y4ANPG9DJ0DXKAM5JV2NKXSKYV9C","success":true},"operations":[],"transaction_identifier":{"hash":"0x5929dbd478130da2093d01652b709bb7bca1a7e9c91dda5d33af2f51a491bfb6"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x9795645ebe4ef3965926d08b4f268115a8cd8c573de0b62f517707736223572b","index":100458},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000012bf986014adf520966b82dfd14377224416a5b0e2be10d5d1","index":2424542},"confirm_microblock_identifier":{"hash":"0xbff7fa8e591de4f65668b5244843d43ce7d43cced72c78f22d8c1d8961633507","index":0},"pox_cycle_index":404,"pox_cycle_length":1050,"pox_cycle_position":341,"stacks_block_hash":"0x169ccd1a001cc530d0c1296fa780a01ad42bbb7edd24cb6c06543cf57b1d39bc"},"parent_block_identifier":{"hash":"0x684ca184a829f43484d6f97a57a523a4c64c18ceed090c06089772ef843e365d","index":100457},"timestamp":1678912545,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x66696e642d74782d6572726f72)","execution_cost":{"read_count":16,"read_length":44019,"runtime":167158,"write_count":2,"write_length":164},"fee":3000,"kind":{"data":{"args":["0x627463","0x66696e642d74782d6572726f72"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":6,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400444405205b939a0230313fde340e79246068346f00000000000000060000000000000bb800008accc2c8d4dcd229dfccdec230badb461f53b550ecc59ab5536ed4874fe95e1b1199a6a507cc4184f0ecdebf15676a2a18f6c6d05584fec54d43b017599aa449030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000d66696e642d74782d6572726f72","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b1b04686173680200000000086d657461646174610c00000004046e616d65020000000d66696e642d74782d6572726f72096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a444405205b939a0230313fde340e79246068346f","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1248190BE9SM0HG64ZXWD0EF4J60T1MDWQWZ3EH","success":true},"operations":[],"transaction_identifier":{"hash":"0xab3455cab62b68bba346429b6a9c3624c81181ccd702d4483847268de5c0ca40"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x312d74782d72656769737465722d6661696c6564)","execution_cost":{"read_count":16,"read_length":44040,"runtime":167515,"write_count":2,"write_length":171},"fee":3000,"kind":{"data":{"args":["0x627463","0x312d74782d72656769737465722d6661696c6564"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":1,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400225700e5544339411fecd77be4aae305e146e15100000000000000010000000000000bb80001608ee06bc71ff70f7ff13b203f3dc4f2e3ae8a2ef37f12d21ce94836fcf820150ff054cf0ea67a8c0676a360b9bfb4b2374292ae013ca8216281bbf608f212e1030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000014312d74782d72656769737465722d6661696c6564","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b1c04686173680200000000086d657461646174610c00000004046e616d650200000014312d74782d72656769737465722d6661696c6564096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a225700e5544339411fecd77be4aae305e146e151","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STH5E075AH1KJG8ZXKBQQS5AWC2Y2HQ1A550JWV2","success":true},"operations":[],"transaction_identifier":{"hash":"0xa4c1d092d43d3472811da9d039f91959c2d2eba4399b434e30cd162a938f408c"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x322d74782d7365636f6e64)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167056,"write_count":2,"write_length":162},"fee":3000,"kind":{"data":{"args":["0x627463","0x322d74782d7365636f6e64"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":6,"position":{"index":5},"proof":null,"raw_tx":"0x808000000004006e32e39d293009c471010cd9dada98ecaed4000d00000000000000060000000000000bb800011563d8700b1addfc66879db8643e64033774334fcf02b1c05aad1ac42148e1286dee25cc3184b9b5b5ddaab12e2769b2a72971b48b6b1f3c37019f3182fd42ba030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b322d74782d7365636f6e64","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b1604686173680200000000086d657461646174610c00000004046e616d65020000000b322d74782d7365636f6e64096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a6e32e39d293009c471010cd9dada98ecaed4000d","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1Q35RWX54R0KH3H046DKPPTK3PAXN001QENC5FS","success":true},"operations":[],"transaction_identifier":{"hash":"0x5f7d6e5b9ee7d583e7635dac18f21afdee2e8db5715876134038577cc677977c"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x322d74782d6669727374)","execution_cost":{"read_count":16,"read_length":44010,"runtime":167005,"write_count":2,"write_length":161},"fee":3000,"kind":{"data":{"args":["0x627463","0x322d74782d6669727374"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":6},"proof":null,"raw_tx":"0x8080000000040015748d4fab3bd14c369030378468b5af3b6ed58f00000000000000020000000000000bb8000008c9049d0dd3c70fe370458885b5859c4c54f0ea1a3b07b21b30fd7e31b7115b604a4d857b04f31e9a14e5935b8bf836bcb112e9ac32f5ba8861b96c90fb04d6030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000a322d74782d6669727374","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b1704686173680200000000086d657461646174610c00000004046e616d65020000000a322d74782d6669727374096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a15748d4fab3bd14c369030378468b5af3b6ed58f","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STAQ93AFNCXX2K1PJ0R3F138PPQKPVPNHYDKH08A","success":true},"operations":[],"transaction_identifier":{"hash":"0x411ba341610ba66ea221624cf4234c2628d55a3a7c85cce4632b519249325e46"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x636c61696d2d6572726f72)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167056,"write_count":2,"write_length":162},"fee":3000,"kind":{"data":{"args":["0x627463","0x636c61696d2d6572726f72"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":7},"proof":null,"raw_tx":"0x80800000000400824aa968bb0fd20d502a5dd6e8b1828124acc70500000000000000030000000000000bb800012531591ca309f4b4f69f168e2135482e89cc4969c0e8741f532d941de24c9f543b2cca3739e485da8f13df8596240101594fd74075b06ff6b620fc98bc709bc5030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b636c61696d2d6572726f72","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b1804686173680200000000086d657461646174610c00000004046e616d65020000000b636c61696d2d6572726f72096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a824aa968bb0fd20d502a5dd6e8b1828124acc705","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST214NAB8QC7X43AG59EXDT5HGA0J9B670PN9S5GX","success":true},"operations":[],"transaction_identifier":{"hash":"0xcfd783b92f3845047aece30dd3d0726cac1c55b911f0cbc2757c7e09f81f49e8"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x636c61696d2d6572726f72)","execution_cost":{"read_count":12,"read_length":43984,"runtime":122683,"write_count":0,"write_length":0},"fee":3000,"kind":{"data":{"args":["0x627463","0x636c61696d2d6572726f72"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":8},"proof":null,"raw_tx":"0x80800000000400824aa968bb0fd20d502a5dd6e8b1828124acc70500000000000000040000000000000bb80000a956853b234433e8679d36383c6405e9b6041606817e865b8fc136785abfe1690d827bfd65bdeaeb9369fb62b8564f84fb39dfa74ba4e4822f82d38d80a1dd42030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b636c61696d2d6572726f72","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST214NAB8QC7X43AG59EXDT5HGA0J9B670PN9S5GX","success":false},"operations":[],"transaction_identifier":{"hash":"0xdc26459d26e9bc815cc1c79fbbf71058f84dde8c595cd0c7fa2db6acee3f8144"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x312d74782d3134)","execution_cost":{"read_count":16,"read_length":44001,"runtime":166852,"write_count":2,"write_length":158},"fee":3000,"kind":{"data":{"args":["0x627463","0x312d74782d3134"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":9},"proof":null,"raw_tx":"0x8080000000040027212eae634e8dec6d02956b344a236eef38fb8600000000000000040000000000000bb80000f5b2c7ca54f93b509b28cd65827b4ce9712bea04eeb5698a1fd1c0d682fa695c4af620d02613a446a563667029ecb5a17af3df6a23259c5c9f6b141fcbdb19c1030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000007312d74782d3134","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b1904686173680200000000086d657461646174610c00000004046e616d650200000007312d74782d3134096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a27212eae634e8dec6d02956b344a236eef38fb86","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STKJ2BNECD78VV3D0AAPPD2A4DQEYE7VGR57QFJ6","success":true},"operations":[],"transaction_identifier":{"hash":"0x717a88aeee57eab9ac5cfb257ef708f8d3c5d2f23ddfa61182a5203b91f95afb"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x768cee95db4adf4226b862461f04d27d79611f1304db680d1d48c75a27372c4a","index":100459},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000067dce8c79cc704839aff0849c0b9d56ac3d59b14663b9701d90b","index":2424551},"confirm_microblock_identifier":{"hash":"0x5af69b60113663e4af9279c340a9216e31db26094efa29ff5eed9a57535bde30","index":7},"pox_cycle_index":404,"pox_cycle_length":1050,"pox_cycle_position":350,"stacks_block_hash":"0x19ce89b9af072044478b7c22ac61d47b487ef17c4ec111d8e5c2fe85a713c431"},"parent_block_identifier":{"hash":"0x9795645ebe4ef3965926d08b4f268115a8cd8c573de0b62f517707736223572b","index":100458},"timestamp":1678914074,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6368616e67652d706c616e2d627574746f6e)","execution_cost":{"read_count":16,"read_length":44034,"runtime":167413,"write_count":2,"write_length":169},"fee":3000,"kind":{"data":{"args":["0x627463","0x6368616e67652d706c616e2d627574746f6e"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":3},"proof":null,"raw_tx":"0x8080000000040019544bb51de02f1155b412d901bd9aa8596c559f00000000000000040000000000000bb8000083a4b8ae78048e829f2c179872f776746c79b39d00cf33f67cd7075864809c3e246ee5058af6a7480cda6b67e310156f5ffaf89bbd0b9b4adefe5b6d78ab6f50030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000126368616e67652d706c616e2d627574746f6e","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b2004686173680200000000086d657461646174610c00000004046e616d6502000000126368616e67652d706c616e2d627574746f6e096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a19544bb51de02f1155b412d901bd9aa8596c559f","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STCN8JXN3QG2Y4ANPG9DJ0DXKAM5JV2NKXSKYV9C","success":true},"operations":[],"transaction_identifier":{"hash":"0x9182dca75c82b58b7cd8710067c18ac8fa3b887402f3728f41cad6ddd6fb5f6c"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x5e066e7195586f6e8df59119054c13d80dedefb5b26702879cb401b185e3b591","index":100460},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000002877997bc6867c0cd2dd88b418c87aa0f41b618d3644b9e9c755","index":2424555},"confirm_microblock_identifier":{"hash":"0x7e165ee5e6730aeb384379ee55f4f9d73065113acd2756696d8bb02935fe1e95","index":3},"pox_cycle_index":404,"pox_cycle_length":1050,"pox_cycle_position":354,"stacks_block_hash":"0x9ce9de24fc489982adebe7d828fed622b6b3339290a2b421d3596c00badbbc8e"},"parent_block_identifier":{"hash":"0x768cee95db4adf4226b862461f04d27d79611f1304db680d1d48c75a27372c4a","index":100459},"timestamp":1678918979,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7272727272)","execution_cost":{"read_count":16,"read_length":43995,"runtime":166750,"write_count":2,"write_length":156},"fee":3000,"kind":{"data":{"args":["0x627463","0x7272727272"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":3,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400225700e5544339411fecd77be4aae305e146e15100000000000000030000000000000bb800005836c31082fe0e746142406db064bda660b2217de42df519e117295d391a3e48697a6229c5147591dd7497a3cba46fc9779302b91e28c77cb8ab0c4a7db61887030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000057272727272","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b2304686173680200000000086d657461646174610c00000004046e616d6502000000057272727272096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a225700e5544339411fecd77be4aae305e146e151","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STH5E075AH1KJG8ZXKBQQS5AWC2Y2HQ1A550JWV2","success":true},"operations":[],"transaction_identifier":{"hash":"0xd2b2723872839af681f9c34ebbcbfe88d1a51fb91ee22cf87c83758a04b90016"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x926f7207f6714e47a0b0e24c1a01eb87a2a5e9a505e8c86620de5342bb8e4f48","index":100489},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000003b49379aac3373f92500d25eafb7f65f34b27d6aef2c2efd5","index":2424587},"confirm_microblock_identifier":{"hash":"0x1f47fa0945eae58b352b1b22db75408a0dc313ba0eea5c440f317079c61fb927","index":1},"pox_cycle_index":404,"pox_cycle_length":1050,"pox_cycle_position":386,"stacks_block_hash":"0xec190f917235c09016ceadb459bc46d37541928af52cec864c743d1f56969c0e"},"parent_block_identifier":{"hash":"0x4deb432ce58598c99672bc61803ce44adf22c7646defc29a3ad860a0aebc155e","index":100488},"timestamp":1678944565,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x616e616c7974696373)","execution_cost":{"read_count":16,"read_length":44007,"runtime":166954,"write_count":2,"write_length":160},"fee":3000,"kind":{"data":{"args":["0x627463","0x616e616c7974696373"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":7,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040019544bb51de02f1155b412d901bd9aa8596c559f00000000000000070000000000000bb800005ed829251d240b76461b437ab132d084544846b53b1e7ec217e93d5c795bfb50574c211702b223d680a6869e94f52233e379b4e2353df98700b5583411e32ff6030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000009616e616c7974696373","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b2704686173680200000000086d657461646174610c00000004046e616d650200000009616e616c7974696373096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a19544bb51de02f1155b412d901bd9aa8596c559f","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STCN8JXN3QG2Y4ANPG9DJ0DXKAM5JV2NKXSKYV9C","success":true},"operations":[],"transaction_identifier":{"hash":"0x6b57455b5eb009369f630beb76c3e74150e8bee5edf8145994c9d15149215a68"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6c6173737474)","execution_cost":{"read_count":16,"read_length":43998,"runtime":166801,"write_count":2,"write_length":157},"fee":3000,"kind":{"data":{"args":["0x627463","0x6c6173737474"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":1,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400bc436bc123036a89a3111b21708d0d16e90955ef00000000000000010000000000000bb800003bea08573be6fb7ffd3c02f0e0378c283c3c9f6ae4c1cb29a981e6f3fa987dc64cd19ebe32b8cfb845476e8ef2bdfdfe4af960ee23b00df0730ca283973ee6a9030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000066c6173737474","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b2804686173680200000000086d657461646174610c00000004046e616d6502000000066c6173737474096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051abc436bc123036a89a3111b21708d0d16e90955ef","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2Y46TY14C1PN2D324DJ2W4D1MBEJ2ANXW80VHB1","success":true},"operations":[],"transaction_identifier":{"hash":"0x9059ad704a758de15c7308e85f43335fa481f4c0cc832176c7d195b37a7f7047"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xb0451303997d2ca746aa964b1fbe8d55a47ef2cc8fba213521838bf9f1d84f7d","index":100496},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000e1797d014e89ba86639858837b4e7b1c13869156041062eec8c8","index":2424595},"confirm_microblock_identifier":{"hash":"0x872e426bc297a97bf6a0d4dd60a16559872300df398556039b9cd17a72401b91","index":3},"pox_cycle_index":404,"pox_cycle_length":1050,"pox_cycle_position":394,"stacks_block_hash":"0x4ec21da64dc9a9ba4030dca423f31484f5b8d317b5e7bb2438181103cd9b36f4"},"parent_block_identifier":{"hash":"0xb1f74c17bc3e25f4556fa37fd019c87dd064e4bcddd2743f1dc876910913ba6d","index":100495},"timestamp":1678948668,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x312d74782d616e616c7974696373)","execution_cost":{"read_count":16,"read_length":44022,"runtime":167209,"write_count":2,"write_length":165},"fee":3000,"kind":{"data":{"args":["0x627463","0x312d74782d616e616c7974696373"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":5,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400225700e5544339411fecd77be4aae305e146e15100000000000000050000000000000bb8000123de2fa44547d074194a9a6070d28aaf5c05abf8cd1033292eddcd892c4ef20b21478b1ecbb2d09ca77783054872ecd732ea7107af7faaa6594ca2268159ae2f030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000e312d74782d616e616c7974696373","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b2a04686173680200000000086d657461646174610c00000004046e616d65020000000e312d74782d616e616c7974696373096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a225700e5544339411fecd77be4aae305e146e151","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STH5E075AH1KJG8ZXKBQQS5AWC2Y2HQ1A550JWV2","success":true},"operations":[],"transaction_identifier":{"hash":"0x822a2bd4cbc39437c827702f19ee8d649d4718ea014a29091034223cb314a134"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x62746e6e2d7662746e6e)","execution_cost":{"read_count":16,"read_length":44010,"runtime":167005,"write_count":2,"write_length":161},"fee":3000,"kind":{"data":{"args":["0x627463","0x62746e6e2d7662746e6e"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":9,"position":{"index":4},"proof":null,"raw_tx":"0x80800000000400444405205b939a0230313fde340e79246068346f00000000000000090000000000000bb80001c370c72972d9db4a4667d5c311eb7c6b927956dd082eeca39a82618605f7eece24d8e6e449913293f3a839c1b434020e375c9042216eee3e5ad9d671f3678a71030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000a62746e6e2d7662746e6e","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b2b04686173680200000000086d657461646174610c00000004046e616d65020000000a62746e6e2d7662746e6e096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a444405205b939a0230313fde340e79246068346f","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1248190BE9SM0HG64ZXWD0EF4J60T1MDWQWZ3EH","success":true},"operations":[],"transaction_identifier":{"hash":"0x44f85683038dbf6a9323b7507dc5f73be814b6f3033289e7b913a7f2e857cf9c"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6675636b2d6974)","execution_cost":{"read_count":16,"read_length":44001,"runtime":166852,"write_count":2,"write_length":158},"fee":3000,"kind":{"data":{"args":["0x627463","0x6675636b2d6974"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":8,"position":{"index":5},"proof":null,"raw_tx":"0x808000000004006e32e39d293009c471010cd9dada98ecaed4000d00000000000000080000000000000bb800013e0615b473b388af43dbb654703e40f47524631e8e010b856d90d58c457e52267e3d70d5338a54c55af010019df71b387fa779890cf9879e0f00d8a55a8ac626030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000076675636b2d6974","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b2c04686173680200000000086d657461646174610c00000004046e616d6502000000076675636b2d6974096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a6e32e39d293009c471010cd9dada98ecaed4000d","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1Q35RWX54R0KH3H046DKPPTK3PAXN001QENC5FS","success":true},"operations":[],"transaction_identifier":{"hash":"0x4dc6bd6ba080e4ad63b24a16398b6c0865b51acef60ee3c29ed4e61e2972b401"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xcd3fdb3c66e01378465bdc06a7b58bfcb8903a43efce282aec11d5b541e154ba","index":100497},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000015cadfcbae38fde4ca91b9252541ad9e2a17b110814bb451fb","index":2424597},"confirm_microblock_identifier":{"hash":"0x3132f9d61ab83dc908f44d0734c869f8df4e1b022b5feaee331ca74cba3afde0","index":2},"pox_cycle_index":404,"pox_cycle_length":1050,"pox_cycle_position":396,"stacks_block_hash":"0xe7cb4e2d3dedcc89ef6421d38d68588794a2bf77887386b25238ad51a48dc705"},"parent_block_identifier":{"hash":"0xb0451303997d2ca746aa964b1fbe8d55a47ef2cc8fba213521838bf9f1d84f7d","index":100496},"timestamp":1678949905,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x66757563636b6b6b6b6b)","execution_cost":{"read_count":16,"read_length":44010,"runtime":167005,"write_count":2,"write_length":161},"fee":3000,"kind":{"data":{"args":["0x627463","0x66757563636b6b6b6b6b"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":6,"position":{"index":2},"proof":null,"raw_tx":"0x8080000000040027212eae634e8dec6d02956b344a236eef38fb8600000000000000060000000000000bb80000eeffe6e59ade44662eb7c039538808188078c6f5f4a7e236a746def54eb8cd9b50d3202558aacf017e62c68f0c226641366e6d25a4bbd7137e6eb4cd01668d35030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000a66757563636b6b6b6b6b","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b2d04686173680200000000086d657461646174610c00000004046e616d65020000000a66757563636b6b6b6b6b096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a27212eae634e8dec6d02956b344a236eef38fb86","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STKJ2BNECD78VV3D0AAPPD2A4DQEYE7VGR57QFJ6","success":true},"operations":[],"transaction_identifier":{"hash":"0xb51701920284992214e2a29cec2dc807b80162850f8d7a6bcee29b19e2fe2f62"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7265706c616365642d7478)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167056,"write_count":2,"write_length":162},"fee":3000,"kind":{"data":{"args":["0x627463","0x7265706c616365642d7478"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":89,"position":{"index":3},"proof":null,"raw_tx":"0x8080000000040054bd886f037ac729ebf2e2aea742ad0a1a3029b900000000000000590000000000000bb80001b10e42c07539a8f4d5368f06f0da86fef78da1cbf149b6bc8db0079502a6a9e358f6616ee4717837f0824378e768936d0238461b924796abb18ffea34732c2a8030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b7265706c616365642d7478","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b2e04686173680200000000086d657461646174610c00000004046e616d65020000000b7265706c616365642d7478096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a54bd886f037ac729ebf2e2aea742ad0a1a3029b9","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1ABV23F0DXCEAFBYBHAX9T2NM51MC19Q4K6JDY9","success":true},"operations":[],"transaction_identifier":{"hash":"0x7900616cdfc4cebb7068acfa085d42c0cd65c23098cc5b5a5d3b224cd4677bc2"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x20bfaa332ef36e636f452587f99e825344bb5fa64a500a7e1c9aa8b910456baa","index":100502},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000cc02470fc898204cd643196121f391b632cacc4b421e8a979b4","index":2424602},"confirm_microblock_identifier":{"hash":"0x4a5875c0afd44ba2d78572d5ac996b295e0fcb8a18a12fa8b644d658be3508db","index":1},"pox_cycle_index":404,"pox_cycle_length":1050,"pox_cycle_position":401,"stacks_block_hash":"0x9d95122d44f6e618bae8f8a4eaed9423d5150cc1b8808643a5dced42fc1559ae"},"parent_block_identifier":{"hash":"0x7f3f38ad0ca0aa2a209a735a3f91c951b43df31c0928ec445ee35f0a8318db03","index":100501},"timestamp":1678952425,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6675636b2d69742d32)","execution_cost":{"read_count":16,"read_length":44007,"runtime":166954,"write_count":2,"write_length":160},"fee":3000,"kind":{"data":{"args":["0x627463","0x6675636b2d69742d32"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":91,"position":{"index":2},"proof":null,"raw_tx":"0x8080000000040054bd886f037ac729ebf2e2aea742ad0a1a3029b9000000000000005b0000000000000bb80000a5d2b47b2dcec8987ccad8d2489ecd60daa0f5783e6a7cc7150978fbe23db91550fcb4a0c8d9968679e0492da0d2414ad41e1517265f4792bb0001e4c868f7f6030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000096675636b2d69742d32","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b3204686173680200000000086d657461646174610c00000004046e616d6502000000096675636b2d69742d32096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a54bd886f037ac729ebf2e2aea742ad0a1a3029b9","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1ABV23F0DXCEAFBYBHAX9T2NM51MC19Q4K6JDY9","success":true},"operations":[],"transaction_identifier":{"hash":"0x8c25e802c4db64a892729ca88a8559fd776f8524181ba5cfebf4c5c45e4cb907"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xc2b2afc4ff71446a61b6006cc718201e50c062af9a6dca048ba54ab4527b5880","index":100504},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000e3cd137a675e62772c9187a8e5dc5676fab7cb1fcff6421db","index":2424604},"confirm_microblock_identifier":{"hash":"0x2114fb8357761c717a2db6268fe2fddde2be07430446a02a26a1afc876fb8cb3","index":2},"pox_cycle_index":404,"pox_cycle_length":1050,"pox_cycle_position":403,"stacks_block_hash":"0x440d88064210b47cc120aa61a3eb156be5c873732602f0db5c280de7f11f4fce"},"parent_block_identifier":{"hash":"0x434d627f8183ad20a94e4865d5bf931e0c30ba4ff0d6208249ee5f22d061cc02","index":100503},"timestamp":1678954846,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6c797463732d31)","execution_cost":{"read_count":16,"read_length":44001,"runtime":166852,"write_count":2,"write_length":158},"fee":3000,"kind":{"data":{"args":["0x627463","0x6c797463732d31"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400bc436bc123036a89a3111b21708d0d16e90955ef00000000000000040000000000000bb8000177fb52ea5b130a2b5ac954f9c4e575ea1164a7c706419a19383fcd68028a373d78eb4d35fb936188cff4eeb119731426aff82be6fc96845a721eadf46b8d6078030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000076c797463732d31","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b3304686173680200000000086d657461646174610c00000004046e616d6502000000076c797463732d31096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051abc436bc123036a89a3111b21708d0d16e90955ef","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2Y46TY14C1PN2D324DJ2W4D1MBEJ2ANXW80VHB1","success":true},"operations":[],"transaction_identifier":{"hash":"0xa76ef37036df32985b65e7c3ac6f16a6a35e83e09a93aa21958f2de8d8fc602d"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xcd4998108ec73779de7b870ff40d6718bed96e77966224d4ac2f7fc636fd2686","index":100506},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000728e4566861e26f1d88a5a61ca0764b2b8835b09b3f622f037a","index":2424606},"confirm_microblock_identifier":{"hash":"0x600e37a7bdb70014089b0502ccf68a8fd28775ed26c8c3edd0d651b7540ca6cb","index":1},"pox_cycle_index":404,"pox_cycle_length":1050,"pox_cycle_position":405,"stacks_block_hash":"0x581eef47e64de24da94cc0ef5268922a840789c79b0bc32017b4e19ca4492484"},"parent_block_identifier":{"hash":"0xf0ec7899204779425ee537d8b424832d9f7aa50da419d04226a72a716cc966f5","index":100505},"timestamp":1678955807,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x74657374696e672d646576)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167056,"write_count":2,"write_length":162},"fee":3000,"kind":{"data":{"args":["0x627463","0x74657374696e672d646576"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":6,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400ba08204032084fb7528ee740404e676b2e093c9900000000000000060000000000000bb80001eda00bb8c583a4d7b4544e127b3fad15b1f7c1221586a6b055c75cd71c4bd98873e1cf7fc3daa364af052e1f54bb55490addc3a1a8c7eda53bc0eadd63cabc1a030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b74657374696e672d646576","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b3404686173680200000000086d657461646174610c00000004046e616d65020000000b74657374696e672d646576096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aba08204032084fb7528ee740404e676b2e093c99","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2X0G8206844ZDTJHVKM0G2ECXNJW29WK563N445","success":true},"operations":[],"transaction_identifier":{"hash":"0x601bdd2dffdb7eeea800fa8bd337f62eef3484026eb19df23f6206ee1987322b"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xb15403852e9bc6525fe358ed008f489d43c70fd65ae138edab714859b07c7119","index":100507},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000001aff80ab2d34f9d94006599579828efa194f9c1d3d4b10769","index":2424607},"confirm_microblock_identifier":{"hash":"0xbca57969606799ad3c00cf6f375cafc83335eb4466a8fd368c536bf1038dbfb5","index":2},"pox_cycle_index":404,"pox_cycle_length":1050,"pox_cycle_position":406,"stacks_block_hash":"0x21f8d84606b6e59c850453d70acfc970d8b6303b95fc3f0e8abc81b0703f82bc"},"parent_block_identifier":{"hash":"0xcd4998108ec73779de7b870ff40d6718bed96e77966224d4ac2f7fc636fd2686","index":100506},"timestamp":1678957017,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x746573742d34)","execution_cost":{"read_count":16,"read_length":43998,"runtime":166801,"write_count":2,"write_length":157},"fee":3000,"kind":{"data":{"args":["0x627463","0x746573742d34"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400892124f1d97814a899bf876dc3af57aa49a6056000000000000000020000000000000bb8000198bd32ade31ecf7a969b724a608ea5bf81072fcf3ade60180f4555487a3c51017200256669254095297bd4953f5ea21b70b99eac1cdc49267f53ecd3fdddf6ab030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006746573742d34","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b3504686173680200000000086d657461646174610c00000004046e616d650200000006746573742d34096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a892124f1d97814a899bf876dc3af57aa49a60560","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST24J297HV5W19A4SQY3PVGXFAYN4K9G5C07JV0A1","success":true},"operations":[],"transaction_identifier":{"hash":"0x5fb018901b171138b965bf72f00e0ea2cc8687604e201736a62835fde6606cd9"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x365b769753af508b0f4d2c5c082063dadba72490ce5358725973e87f2533f6dc","index":100639},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000001d3bbfe16e258e36af4ed487992455c113750a1c0e89c5a71d","index":2424791},"confirm_microblock_identifier":{"hash":"0xd82ee4cceca2ab354f788ef5ecdd0804cdbb1947b471f404c39df6d9471c64b4","index":0},"pox_cycle_index":404,"pox_cycle_length":1050,"pox_cycle_position":590,"stacks_block_hash":"0xb0f61f6da9741cce635b539f8f8e8b5645b5402ec64a71e4e964dd44f8c53afa"},"parent_block_identifier":{"hash":"0x3178f258885f029c1f62498aa5b53edab82124f38fa1313134b1191977187375","index":100638},"timestamp":1679042701,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x74657374666c6f77)","execution_cost":{"read_count":16,"read_length":44004,"runtime":166903,"write_count":2,"write_length":159},"fee":3000,"kind":{"data":{"args":["0x627463","0x74657374666c6f77"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":42,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004002c4673bcc1fcf2bacdae24385dddd9a85d88175a000000000000002a0000000000000bb800006f21d4c63015a31f1b32bf8b49d23ddcf63cf7826e15ce303b5a761ee785676f353d9c9bb19a7970a4bd5447304c34441d3b7207aa10bed8e4c5d8dcbddd8822030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000874657374666c6f77","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b3d04686173680200000000086d657461646174610c00000004046e616d65020000000874657374666c6f77096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a2c4673bcc1fcf2bacdae24385dddd9a85d88175a","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STP4CWXWR7YF5EPDNRJ3GQEXV6M5V20QBBRY5215","success":true},"operations":[],"transaction_identifier":{"hash":"0x389b3f6be697c6c9f5d7b502b0a6d0da0f88a3d762d8b0fcd061c5c8dc25e758"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x23e9d8222ae70b54e051271b163386bff3dcfc1863282119e30a3c77558af238","index":100647},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000eb95573912a019cc1dd4e5ba0153f7915b863ad39512df092","index":2424799},"confirm_microblock_identifier":{"hash":"0xd88085f2a83a28f2ed62f4ac0a1665f3ed855eb8e25cebe40e955b2f528b1b9c","index":0},"pox_cycle_index":404,"pox_cycle_length":1050,"pox_cycle_position":598,"stacks_block_hash":"0x27f6d1ded2d456e7c5653a871479e4360637d45f5953a26646fbb42a7d3549d8"},"parent_block_identifier":{"hash":"0xf6167a1b6b53a888fe8bd87dc39245bbe4a3c21b391e37158e22db1acbca6d35","index":100646},"timestamp":1679048775,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x666c6f77666c6f77)","execution_cost":{"read_count":16,"read_length":44004,"runtime":166903,"write_count":2,"write_length":159},"fee":3000,"kind":{"data":{"args":["0x627463","0x666c6f77666c6f77"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":27,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400c29f2bc04c3a559f50d45767e3b8c3978952032b000000000000001b0000000000000bb800004b1ba8a31d229304c1476e358c3895b46ead7d5f203b7a7d22a46b0f8049e8297bc0de20e69fa8f5b81b48caa83cae914ec5e8ecf29015e0d837667bda507edb030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000008666c6f77666c6f77","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b4004686173680200000000086d657461646174610c00000004046e616d650200000008666c6f77666c6f77096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac29f2bc04c3a559f50d45767e3b8c3978952032b","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST319YAY09GX5B7TGTHBPFRXRREBRJMG35D7B28QY","success":true},"operations":[],"transaction_identifier":{"hash":"0x25ad691fa2144eca33e222b8afd42f590f0db2ca69685250b6a3c8d5ca2ff73c"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xb3c21675e880d4f67211decf9c52824ab2a1e30ecc236a9e17b451e7d1fdbbd0","index":100654},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000001ec0f52c6368c747d353426c64289b996b0bfdc4722476eea","index":2424810},"confirm_microblock_identifier":{"hash":"0x6c7def3922b50d256cd9285d42bac7da253950cc5a1fdb51f2d734f8cf4c99c6","index":0},"pox_cycle_index":404,"pox_cycle_length":1050,"pox_cycle_position":609,"stacks_block_hash":"0xc7da837b82bd204f01af98621d3909897bcf043ec2b8276bfde0ebeb1cd3052a"},"parent_block_identifier":{"hash":"0x00e69de6b2c35cfb9013bbaf7f25846696602e83e6a11596c8f98e3ccd30304d","index":100653},"timestamp":1679052177,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6e6577646f6d61696e6e616d65)","execution_cost":{"read_count":16,"read_length":44019,"runtime":167158,"write_count":2,"write_length":164},"fee":3000,"kind":{"data":{"args":["0x627463","0x6e6577646f6d61696e6e616d65"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":30,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400c29f2bc04c3a559f50d45767e3b8c3978952032b000000000000001e0000000000000bb80001bc8fd730cd023484a4824585c322c08ca3505f9cec8e9f284a5cfaef82e63a1671c74bf990b2a139b97d87dbd1925d96d160f51beefaf55007f93daca2185aa9030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000d6e6577646f6d61696e6e616d65","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b4304686173680200000000086d657461646174610c00000004046e616d65020000000d6e6577646f6d61696e6e616d65096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac29f2bc04c3a559f50d45767e3b8c3978952032b","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST319YAY09GX5B7TGTHBPFRXRREBRJMG35D7B28QY","success":true},"operations":[],"transaction_identifier":{"hash":"0x05d64933adad84811619d4e1cf9beaaf2ed586b15f1a5a90bb465202bc65e715"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xe9a27b2fc0f4cf5385e1173b75d1eec3b28b8fe91b93ed94dcd9ae319c042c92","index":100943},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000003c9053f0cfc934c02907c17265b01876683994985cebdcab7347","index":2425176},"confirm_microblock_identifier":{"hash":"0x1a76b3e170a415a27c6fb7c37fe42b6ae1baa3bd2e4585913bde1a700b2943c3","index":3},"pox_cycle_index":404,"pox_cycle_length":1050,"pox_cycle_position":975,"stacks_block_hash":"0x9258332f20910951e81459fd2bd72c745b9f8feb339e71f99635affcd86b3b10"},"parent_block_identifier":{"hash":"0x20397903507ba10156e13628129f20f55a66181112dbb9435c74ef4a31f2b88e","index":100942},"timestamp":1679310426,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x666c6f77666c6f7731)","execution_cost":{"read_count":16,"read_length":44007,"runtime":166954,"write_count":2,"write_length":160},"fee":3000,"kind":{"data":{"args":["0x627463","0x666c6f77666c6f7731"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":7,"position":{"index":5},"proof":null,"raw_tx":"0x8080000000040083104514eb98328ce0d822680a1d78cc617379d300000000000000070000000000000bb80001280318e2c3e5735f966090d0b5873b4e802ff33d1d58bc80aad5ba3ce73653c418f83c7db8bdd58d1c82ee198e00fd8e74a7aac186928b3f721331138a7dcdf3030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000009666c6f77666c6f7731","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b4904686173680200000000086d657461646174610c00000004046e616d650200000009666c6f77666c6f7731096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a83104514eb98328ce0d822680a1d78cc617379d3","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST21H0H8MXEC35370V0H6G2GXF3662WVSTFVSSJDM","success":true},"operations":[],"transaction_identifier":{"hash":"0xaa24dbfa6581fdbb4138fb084a3ea658d968998ec07d640d13a18c6685ad6d38"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x58e52a97f8d2e56e80e3cd7f69e0997e702bf62553bebc6cf45a447aa1401eca","index":100953},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000028da47c78e7592efc46532b5d7a8ab14e96c6d8c01310cf8f4","index":2425187},"confirm_microblock_identifier":{"hash":"0x0b4b0df1916cdee194bd7585f797f063b0f67bc346ea7aee67588fc8990b5ace","index":2},"pox_cycle_index":404,"pox_cycle_length":1050,"pox_cycle_position":986,"stacks_block_hash":"0xeb6c969090a00cdf7818f0f3339d53101ed3cba1a6fb860f626e50d88e9eaf1d"},"parent_block_identifier":{"hash":"0x14744ba4353fb4c63d8237392f9eb94e1b2d1ab83ff71329d67509ced890b25d","index":100952},"timestamp":1679318345,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6a6b6e6c6b6e6c6b6e6c6b6e)","execution_cost":{"read_count":16,"read_length":44016,"runtime":167107,"write_count":2,"write_length":163},"fee":3000,"kind":{"data":{"args":["0x627463","0x6a6b6e6c6b6e6c6b6e6c6b6e"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":29,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040093848da413b5311e1efe84e9f1bcfb1c09778776000000000000001d0000000000000bb80001f59e191bb2827f070bf32eea4a76a60ecf44e540cdea7aa0f086cdb6f23a71f775fbaa213b483adbe179480309e265412f1b32b5a36d54d562b1191c33f39cf2030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000c6a6b6e6c6b6e6c6b6e6c6b6e","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b4b04686173680200000000086d657461646174610c00000004046e616d65020000000c6a6b6e6c6b6e6c6b6e6c6b6e096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a93848da413b5311e1efe84e9f1bcfb1c09778776","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST29R93D42ETK27GYZT2EKWDWZCE0JXW7ERS23XG9","success":true},"operations":[],"transaction_identifier":{"hash":"0xe6a2f9d7da138b634243e4323eef99dab7051849e2a92349dcbf233dc612cab4"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x42f42d8daa65102f01a979652e31bbee261681003467a583c85f8205f1035c93","index":100958},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000024838c489ccfed90322718cd61a2b0e7b5108c6c30ed48e76e","index":2425192},"confirm_microblock_identifier":{"hash":"0x48a3c694c10ce551f7d7d4daaa4fb9a1a94dada504fa94edb24c2a6a13e9e1ca","index":0},"pox_cycle_index":404,"pox_cycle_length":1050,"pox_cycle_position":991,"stacks_block_hash":"0x4b6ec6b6ec4d070055b424df8e52dc0001cbaacf3164e748a180fccf90918775"},"parent_block_identifier":{"hash":"0x7c6cd89f742aaba03d5e0790b3b7c7f9c81ccfe83c5d48e4b3769972d418a478","index":100957},"timestamp":1679322615,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x646f6d61696e7465737435)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167056,"write_count":2,"write_length":162},"fee":3000,"kind":{"data":{"args":["0x627463","0x646f6d61696e7465737435"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400d011c05d550b40b28f943f41f1914780e58a117200000000000000020000000000000bb80000db08590cf47ac7d1faa5c2f14e42847ef977f0cd972e2f702834beb74dcb9e767c8598c89a68a575babe789b0678a6b08a131a27cad4272f74d6192f65cf91fd030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b646f6d61696e7465737435","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b4e04686173680200000000086d657461646174610c00000004046e616d65020000000b646f6d61696e7465737435096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ad011c05d550b40b28f943f41f1914780e58a1172","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3813G2XAM5M1CMFJGZM3WCH8Y0EB2GHE89FX450","success":true},"operations":[],"transaction_identifier":{"hash":"0x3777ebde668eda00c88c6b711eda97ed9fbf8efcea875de47b25f7e40ea9bfde"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xb4988bd8b3ed3b28be4dfdb4a338df1765a593ff20fcf0b2c47222b7d2c5514b","index":100965},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000002852fe140e745870a2fddfc5943ae8246bff1e72a6461adccc","index":2425200},"confirm_microblock_identifier":{"hash":"0x1dbb918dfe8424c11f149f91f3d20271b3a53333e9e4308f2a925b9210f29ada","index":1},"pox_cycle_index":404,"pox_cycle_length":1050,"pox_cycle_position":999,"stacks_block_hash":"0x1b4d1583179c3515c7da39941c5bcfe3cfb187f13c8b43ec280a3456a45da157"},"parent_block_identifier":{"hash":"0x80ecbdb577738741868718ce10d92ca5c31deb9d1485ce3306957254d6df00f4","index":100964},"timestamp":1679328419,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x62676267626762)","execution_cost":{"read_count":16,"read_length":44001,"runtime":166852,"write_count":2,"write_length":158},"fee":3000,"kind":{"data":{"args":["0x627463","0x62676267626762"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":6,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400824aa968bb0fd20d502a5dd6e8b1828124acc70500000000000000060000000000000bb80001f67ebaf43b9cb10afafab1b3511ad0664803000767a0517c6a8ad2dabc71367474d8579c018e3d3d81e14841020592c62dbffd1a35b2a3ec11ee1d8dd81164d4030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000762676267626762","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b4f04686173680200000000086d657461646174610c00000004046e616d65020000000762676267626762096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a824aa968bb0fd20d502a5dd6e8b1828124acc705","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST214NAB8QC7X43AG59EXDT5HGA0J9B670PN9S5GX","success":true},"operations":[],"transaction_identifier":{"hash":"0x68de6008df8eb6fe02ec95a070ae4114235e9d99e4c46eae0df1eacffd755e4a"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x019f86fe64c84e50745fddddb18eaf25744158af7785c2915dc59a06a8c5c7f2","index":100966},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000004295d383dcdc4b2d9ac2c6c34401691bf2d5f9fd9f6a0f184231","index":2425201},"confirm_microblock_identifier":{"hash":"0xe9229f6dad36d3d7a3f7115846920eb1d33680e4459e827a42e0c4d0d2d4dcb2","index":2},"pox_cycle_index":404,"pox_cycle_length":1050,"pox_cycle_position":1000,"stacks_block_hash":"0x19e8a30d2566a14d5f0216960945b64572b84ac0aff948759c44fe04c0cebb6e"},"parent_block_identifier":{"hash":"0xb4988bd8b3ed3b28be4dfdb4a338df1765a593ff20fcf0b2c47222b7d2c5514b","index":100965},"timestamp":1679329097,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6c79746373)","execution_cost":{"read_count":16,"read_length":43995,"runtime":166750,"write_count":2,"write_length":156},"fee":3000,"kind":{"data":{"args":["0x627463","0x6c79746373"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":1},"proof":null,"raw_tx":"0x8080000000040015748d4fab3bd14c369030378468b5af3b6ed58f00000000000000040000000000000bb800019a1b54202c4f4b227a151e429b564a7f3d2fcc21c564885ae2e3dced48ad48c11ac1b602b4da6ea7dd1b30081a4725e319642aa2b8623cf4ddf5d3530d9a335c030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000056c79746373","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b5004686173680200000000086d657461646174610c00000004046e616d6502000000056c79746373096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a15748d4fab3bd14c369030378468b5af3b6ed58f","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STAQ93AFNCXX2K1PJ0R3F138PPQKPVPNHYDKH08A","success":true},"operations":[],"transaction_identifier":{"hash":"0x07453f63eae1c469e02b69d9187a02be5a67fc7f0af8ed1f1d8ac763ad159855"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xf82a5f9a6fd19c418c50802efc2ee094bff53da61c2083f8941291dbc260a858","index":101021},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000009739d32075db8ef16d3d608acb91bcf81708f2789806f8b23b2c","index":2425274},"confirm_microblock_identifier":{"hash":"0xf4d20307b35c7ce3ed847c33f26fba721385fd7d2b1a4f434ca97f12b592d668","index":3},"pox_cycle_index":405,"pox_cycle_length":1050,"pox_cycle_position":23,"stacks_block_hash":"0xfb74d4d3d5b18e4bbabd62160d1b0ffa18ae8eb532ceadd20a82a39129f4aec2"},"parent_block_identifier":{"hash":"0x5f880cef99754a3e25df6083319df3210b706dcd8f5cdba01ed7ad81c032e272","index":101020},"timestamp":1679391571,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x67636867636c6a)","execution_cost":{"read_count":16,"read_length":44001,"runtime":166852,"write_count":2,"write_length":158},"fee":3000,"kind":{"data":{"args":["0x627463","0x67636867636c6a"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":33,"position":{"index":4},"proof":null,"raw_tx":"0x8080000000040093848da413b5311e1efe84e9f1bcfb1c0977877600000000000000210000000000000bb800008a5ec00a578d8d3b76650049285b0467db67d4d260e71e2110f15e0ac0ce28ad393f21fa710cd5b70ccaac097146a5a6df6c2c41a47994be07002dfdcedcfe6b030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000767636867636c6a","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b5a04686173680200000000086d657461646174610c00000004046e616d65020000000767636867636c6a096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a93848da413b5311e1efe84e9f1bcfb1c09778776","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST29R93D42ETK27GYZT2EKWDWZCE0JXW7ERS23XG9","success":true},"operations":[],"transaction_identifier":{"hash":"0x1f76bdc36450fdbf9960a5df95ba3fb0a6594fb1cd4407d279c9e5c556b70e67"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x76691b1f53d6b529b8b7eb5c601264b79cb749fee01286562b95facb726bc4ca","index":101118},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000001162a101e7ae48a687247de5dacd2dfe370c07fb30c956b9e829e","index":2425378},"confirm_microblock_identifier":{"hash":"0xe83b6a12434f762ae41f63c63ca150ae9a47e9343f711a935027ff36ee42a864","index":3},"pox_cycle_index":405,"pox_cycle_length":1050,"pox_cycle_position":127,"stacks_block_hash":"0x49589c7e4c111e16aa47902587042d23cc3224a37b78e98633b8b1650d48e524"},"parent_block_identifier":{"hash":"0xa6183f1f9424b8a6517ca0aeeefb303a72cd9cf8ba7264f49995ddd2bfd34f4f","index":101117},"timestamp":1679469338,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x676466676261646662)","execution_cost":{"read_count":16,"read_length":44007,"runtime":166954,"write_count":2,"write_length":160},"fee":3000,"kind":{"data":{"args":["0x627463","0x676466676261646662"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":35,"position":{"index":2},"proof":null,"raw_tx":"0x8080000000040093848da413b5311e1efe84e9f1bcfb1c0977877600000000000000230000000000000bb80001dd24891c26cd80bbaa02da70912f385bb6c82ebf8734ee89b79f560b2639647a15507b7e51abfc8a3fc87e631b7bbd39a59af7c4a229e0c9b0f895219f9c39ba030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000009676466676261646662","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b5d04686173680200000000086d657461646174610c00000004046e616d650200000009676466676261646662096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a93848da413b5311e1efe84e9f1bcfb1c09778776","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST29R93D42ETK27GYZT2EKWDWZCE0JXW7ERS23XG9","success":true},"operations":[],"transaction_identifier":{"hash":"0xc6b582bef609e61ed45ae0908409bc0a8b74198794f3d336f6d33df6ecfb4848"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x35dc2ecec74b2208daba3519d9e1b95b099bb04d00bcb50b5000a1d12df698ad","index":101122},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000029f02fa5359973f68abc2683f725d2ba3925fb8f1fd83bdac3ef4","index":2425382},"confirm_microblock_identifier":{"hash":"0x04a113859cafd07cdf9f9de01d9d502b46563275ca08dd64524aa24e03e4a527","index":3},"pox_cycle_index":405,"pox_cycle_length":1050,"pox_cycle_position":131,"stacks_block_hash":"0x9f2a552428dad5213845a3ae0dcb1169d4d91eab57be53276b77b63fa6f1cfd4"},"parent_block_identifier":{"hash":"0xa914828835a013f838a3b5d09cc735d2febcf8d7d683886b604329db165b09cc","index":101121},"timestamp":1679473777,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6d6b616e6a646362696173767963)","execution_cost":{"read_count":16,"read_length":44022,"runtime":167209,"write_count":2,"write_length":165},"fee":3000,"kind":{"data":{"args":["0x627463","0x6d6b616e6a646362696173767963"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":11,"position":{"index":2},"proof":null,"raw_tx":"0x8080000000040083104514eb98328ce0d822680a1d78cc617379d3000000000000000b0000000000000bb80000d69b8bc5bae8f83e6fd6285bf9515b9dd8cdfdc5fcb4105dd252cff6b0d28e497b5600a11353cd1f7781e108d965cd7d7fd82c3ef5123d0e8325bab3f61dc58e030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000e6d6b616e6a646362696173767963","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b6104686173680200000000086d657461646174610c00000004046e616d65020000000e6d6b616e6a646362696173767963096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a83104514eb98328ce0d822680a1d78cc617379d3","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST21H0H8MXEC35370V0H6G2GXF3662WVSTFVSSJDM","success":true},"operations":[],"transaction_identifier":{"hash":"0xd01f12a6666c639228d062463f0a2b9945fca766c15264c77320b3313c915b6c"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x646f6d61696e7465737433)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167056,"write_count":2,"write_length":162},"fee":3000,"kind":{"data":{"args":["0x627463","0x646f6d61696e7465737433"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":6},"proof":null,"raw_tx":"0x80800000000400d996ed7e31d1b4bf8d056d21f418540c782e701f00000000000000020000000000000bb8000176e2df11881a23f5ead6772471f9aca4572cc563c186357fa39105e2ca2500b0781920f0f048ef21c9d0898b743c39fa3330c1e26525a4f12ffc9ae17a0647c2030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b646f6d61696e7465737433","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b6304686173680200000000086d657461646174610c00000004046e616d65020000000b646f6d61696e7465737433096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ad996ed7e31d1b4bf8d056d21f418540c782e701f","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3CSDVBY678V9FWD0NPJ3X0RAG67GBKG3WQKZZ13","success":true},"operations":[],"transaction_identifier":{"hash":"0x3ea96432382b00f17b3692b2ac50117f73cc7455bd074b0d9248a40be7b96158"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xc91f61cf29c57ce6403cd788946ec802b41c9d14e003f66b100a4ef9d79f9c32","index":101353},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000028726a3c2fc10fdcd2244302a38e800d3e5ab6ff3570ce71e4","index":2425640},"confirm_microblock_identifier":{"hash":"0x141b8db76b71a21e5c339af4cab790e1d9043cf5f6183d622a7af0cec16e3686","index":2},"pox_cycle_index":405,"pox_cycle_length":1050,"pox_cycle_position":389,"stacks_block_hash":"0x46b49a36242adaf330e61a3079721d164c68e45f63d820d15bf103c7f9842467"},"parent_block_identifier":{"hash":"0x1bdf56f8869e695fc83cd6391cd02d775cf67dc218ae83259f8602f278cc04ae","index":101352},"timestamp":1679649487,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6c6b73646e766c736b646e766c736b646e76)","execution_cost":{"read_count":16,"read_length":44034,"runtime":167413,"write_count":2,"write_length":169},"fee":374911,"kind":{"data":{"args":["0x627463","0x6c6b73646e766c736b646e766c736b646e76"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":12,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004007a4389649f07fd1bc0383216339055b5922005cb000000000000000c000000000005b87f0001d04ce03c15fcb69aa8e12dec28146ad2135e4a686e955316f1a0d6ec34955c1c6f51649821733c5401557977c5148e0ef3a426455516e643f63ea9c91f19b946030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000126c6b73646e766c736b646e766c736b646e76","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b6a04686173680200000000086d657461646174610c00000004046e616d6502000000126c6b73646e766c736b646e766c736b646e76096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a7a4389649f07fd1bc0383216339055b5922005cb","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1X472B4KW3ZT6Y070S1CCWGAPTS4805SCT6P4WG","success":true},"operations":[],"transaction_identifier":{"hash":"0x5ce1b0c63ca5b07cfbd5f5496f4697f2333d042f6ee240a4fde12282431c93de"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xd0468e005fc74f07e32e5103c02555a25297b92570577d1ed2a004dd357a59c4","index":101671},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000257acccf78d2e98a4e16fee7d494f621c354999c16be7ab2f9","index":2426067},"confirm_microblock_identifier":{"hash":"0x7224e1c1fcd4cfd084c247c74657f5bd308f227c37e5b5be6ba717acf9dc63a3","index":0},"pox_cycle_index":405,"pox_cycle_length":1050,"pox_cycle_position":816,"stacks_block_hash":"0xf59eb9dc5afd3053318f18418959927614aaa442babd210c1f8e087895c5036e"},"parent_block_identifier":{"hash":"0x91490e51924c055c5d6e86b8bf1691c4b20f6c70881df338d6bbd61db966d0b3","index":101670},"timestamp":1679895588,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x312d74787465737434)","execution_cost":{"read_count":16,"read_length":44007,"runtime":166954,"write_count":2,"write_length":160},"fee":6710,"kind":{"data":{"args":["0x627463","0x312d74787465737434"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":10,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004002fb0ec2ba051fcda050d1ad134b72297edc9ca22000000000000000a0000000000001a3600019e638a18008fc9d43b70434eedad91b1d30c3fcaa2415ac9f6cef1af14e42fce5586fdaf2f0662e64cb9418222d777a3a155259d4e9dfbbe321d4f4647a74c06030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000009312d74787465737434","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b6d04686173680200000000086d657461646174610c00000004046e616d650200000009312d74787465737434096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a2fb0ec2ba051fcda050d1ad134b72297edc9ca22","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STQV1V1BM18ZSPG51MDD2D5Q4ABYVJEA48K29AKB","success":true},"operations":[],"transaction_identifier":{"hash":"0x5a89d90c4e64bcd29bae494b40569817ebb332df127c595e52455a6fc7783a49"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xd5bf8d07e047cd0a5d91153f6885654f196b432275e20df09e934ecf10786ff6","index":101699},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000001290d32dc2108f9acea7335c54375c35b6a48faee7296a56e3","index":2426096},"confirm_microblock_identifier":{"hash":"0xaa224bc15cbf0c7a04a20f3c7b2d74d753316012715ae15343e7ab61fb6401ce","index":3},"pox_cycle_index":405,"pox_cycle_length":1050,"pox_cycle_position":845,"stacks_block_hash":"0xccb4df598d9ea61a6f6bbf7e60094c6abfa990e146407ab01411f68c2cb7fa8d"},"parent_block_identifier":{"hash":"0x64af1232784784c3cd843936fcefba69f7c974f3f5c2fc658fe2966b706d987a","index":101698},"timestamp":1679915640,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x736a6670717765686976626b73646a6276)","execution_cost":{"read_count":16,"read_length":44031,"runtime":167362,"write_count":2,"write_length":168},"fee":19078,"kind":{"data":{"args":["0x627463","0x736a6670717765686976626b73646a6276"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":5,"position":{"index":5},"proof":null,"raw_tx":"0x80800000000400d996ed7e31d1b4bf8d056d21f418540c782e701f00000000000000050000000000004a86000024b6001c92dfdf2e88ea256060e5df970acc8f242770ac88911c774c32b2eb4f6d61049169a1d0f4a7697b7ac33c0883db240fbb88219c511985755343dbc80a030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000011736a6670717765686976626b73646a6276","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b7004686173680200000000086d657461646174610c00000004046e616d650200000011736a6670717765686976626b73646a6276096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ad996ed7e31d1b4bf8d056d21f418540c782e701f","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3CSDVBY678V9FWD0NPJ3X0RAG67GBKG3WQKZZ13","success":true},"operations":[],"transaction_identifier":{"hash":"0x9b0f34434697c7ee04b27b037ff66eb89ecc8e7bfc8384e50be37d83f88ffb43"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x661d547f94c64e5e17e815c0ee1ec70d4ed1a9e6cda446e8a62d88fb158423b6","index":101713},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000001a1589696ff25ed0335528ca45b51f98aae8fdba1f91f6602","index":2426112},"confirm_microblock_identifier":{"hash":"0x992f24bc5f058f6cd46d54896fed2ca254b2df7e1d90bebf47f5c55323102253","index":3},"pox_cycle_index":405,"pox_cycle_length":1050,"pox_cycle_position":861,"stacks_block_hash":"0xae6f14dbd46ed02995ac0ee392ef4a2303be59d6ae9057f0cc4eeee2a9df41a2"},"parent_block_identifier":{"hash":"0xec24d0f0708cd6b610f0dbf0079ce456f7d578bd829f1f94f1d03c9f29b8d42f","index":101712},"timestamp":1679927137,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x646f6d61696e6e616d65)","execution_cost":{"read_count":16,"read_length":44010,"runtime":167005,"write_count":2,"write_length":161},"fee":3313,"kind":{"data":{"args":["0x627463","0x646f6d61696e6e616d65"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400d011c05d550b40b28f943f41f1914780e58a117200000000000000040000000000000cf100000906c9bf8b086d8aa1f738052ee1c40e8656fd5d9344364759fd5b20f70d8ce636540762ee0ea7e774e024b8bf1916de1079b2eebd07fb730f3db9f89b96e758030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000a646f6d61696e6e616d65","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b7304686173680200000000086d657461646174610c00000004046e616d65020000000a646f6d61696e6e616d65096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ad011c05d550b40b28f943f41f1914780e58a1172","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3813G2XAM5M1CMFJGZM3WCH8Y0EB2GHE89FX450","success":true},"operations":[],"transaction_identifier":{"hash":"0x8f13e1b6077ccb53849e62f7238535250319b91ed58210df81cc62cb7a3bd94e"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x22496d3a6ab82fbe1617af2ddfd9132500858779275b0f3dbc865f873b0c15bb","index":101939},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000027d48c65f765a144abbe4f374f02cddcecd9150c809e6b293a","index":2426364},"confirm_microblock_identifier":{"hash":"0x81a5398c37f66c5e121f555d46417e9d78e72b1273fc68ad95cce3328430b221","index":1},"pox_cycle_index":406,"pox_cycle_length":1050,"pox_cycle_position":63,"stacks_block_hash":"0x887cdaaaa7eb0126fdb5ea8869edfbaf5034edb2e4f7e6a2f96da3430f6a007d"},"parent_block_identifier":{"hash":"0xc82936b62a7470e373736b7fcd1a9e47fb278dd0ef3d77a98d1c8b8266ebaaed","index":101938},"timestamp":1680089313,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6b6c6e76736c6b6a6e7664)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167056,"write_count":2,"write_length":162},"fee":6374,"kind":{"data":{"args":["0x627463","0x6b6c6e76736c6b6a6e7664"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":29,"position":{"index":8},"proof":null,"raw_tx":"0x80800000000400714eb6c48636eb734c823bd4cee142b828356778000000000000001d00000000000018e60001126768262abaa6c19865249141caff98335ce802ee718da79607488654c3c66776152f95b2d93bac75d1da202863f5b723857e9068441dad47a51e54ad4f12ee030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b6b6c6e76736c6b6a6e7664","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b8b04686173680200000000086d657461646174610c00000004046e616d65020000000b6b6c6e76736c6b6a6e7664096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a714eb6c48636eb734c823bd4cee142b828356778","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1RMXDP4GRVEPWTCG8XX9KQ18AW2GDB7F1ZDHQQQ","success":true},"operations":[],"transaction_identifier":{"hash":"0x2f58679a341e27cff7d30fa8f3078d1817fbb88175e3e17dd66b1acb86ec82ea"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x0f30b3c46cdb104ca4366f9f5974b6b16f078558e5c7d05e1cabbdfc84a4791d","index":102060},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000182a6937d77ce69ac30e7deaa3100a8c2bdd208e334b5b8e1f","index":2426561},"confirm_microblock_identifier":{"hash":"0x76f6e7c7982e0559f02b817a2cc6cdfee06d8285afa21b2f05ddab723119c37c","index":4},"pox_cycle_index":406,"pox_cycle_length":1050,"pox_cycle_position":260,"stacks_block_hash":"0xbe6d53772aa69a42ea87d86876a73c55b62f0e07b6cd1a9b89fa75acc31e64b0"},"parent_block_identifier":{"hash":"0x3aeb03e763b82128a8fa4e063c53ac7b2fe7b3339b3cb4a20cef4e409d8eddf0","index":102059},"timestamp":1680177373,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6f6e6574776f74687265)","execution_cost":{"read_count":16,"read_length":44010,"runtime":167005,"write_count":2,"write_length":161},"fee":3566,"kind":{"data":{"args":["0x627463","0x6f6e6574776f74687265"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":17,"position":{"index":7},"proof":null,"raw_tx":"0x80800000000400ed00fb06edc442679f772c1776e0dd695f85e55900000000000000110000000000000dee000086149338ff9ed0626bfaae2677f2e6a67706f66fe5b10acbd754ebdf516219ae2e444ba06d0590b52926b00ba05044d22671b0a41f79238d2f20fe8878f900fe030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000a6f6e6574776f74687265","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b9d04686173680200000000086d657461646174610c00000004046e616d65020000000a6f6e6574776f74687265096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aed00fb06edc442679f772c1776e0dd695f85e559","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3PG1YR6XQ244SWZEWP1EXQ0VNMNZ1F5B4FXAJYB","success":true},"operations":[],"transaction_identifier":{"hash":"0xe4eeaa3dfad7ec8d360b10de27d3f5af1c35237f98610be1c2fa7c11bb11d901"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x77c5311328eab9628d654e04ea2a5c4e218d02b842f4c52131c0fcf571d3b2da","index":102593},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000a04d0096e68fe40903d01e890ab5d61d932173078b22b5143","index":2427205},"confirm_microblock_identifier":{"hash":"0x5393993ab4c2ca4b28311fcf005dd92a4525618e6650cfd552ee7557d2543d96","index":2},"pox_cycle_index":406,"pox_cycle_length":1050,"pox_cycle_position":904,"stacks_block_hash":"0xd5b57dda0a2e23549ac8c1c9dc5dd918e0d70116cbe1e77b89f547828d895742"},"parent_block_identifier":{"hash":"0x486bea0d40a759467e49b19e3e6847588205d970bf668ead9a41d85c2bfed373","index":102592},"timestamp":1680523100,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x687472736a79)","execution_cost":{"read_count":16,"read_length":43998,"runtime":166801,"write_count":2,"write_length":157},"fee":5746,"kind":{"data":{"args":["0x627463","0x687472736a79"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":8,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400909b3b63ac083b69d76f08df2a013f299a3659950000000000000008000000000000167200018084a4b9a660a5f18f3a819eca1b417a0a669ba0297fac1b72c14a2fdee9ea2a2caca17c826ee1142edec286c4ebbdb238da359c11fa23eaeb30cfda387ac428030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006687472736a79","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000b9e04686173680200000000086d657461646174610c00000004046e616d650200000006687472736a79096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a909b3b63ac083b69d76f08df2a013f299a365995","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST289PEV3NG43PTEQDW4DYAG17WMSMDJSJQ8P2KND","success":true},"operations":[],"transaction_identifier":{"hash":"0xa5de2f2ff9ca3e8e9a9984613f6f3682cbb15a5967a755c18282fa35e115be21"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x645869a0112304fbf6cca7a3c4f8995fe082a8acd77fcd832851b56e43db7aa8","index":103409},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000bc691d447d5017180a72bd78bce8b983b7979a6f4704436e48d0","index":2428209},"confirm_microblock_identifier":{"hash":"0xd9e0e9187b44ecd6572580e68181653642b8be6f6654bfa6d35af490c01ee2cf","index":2},"pox_cycle_index":407,"pox_cycle_length":1050,"pox_cycle_position":858,"stacks_block_hash":"0xbf2152445378f97d91ee96c82c888646c3e696e059aab4f56f60bdf1ff69e700"},"parent_block_identifier":{"hash":"0x4ad3f5f96faa9a7b0b7b56fef08e64c66fa382db582af26e40ff92a70943bbd8","index":103408},"timestamp":1681065205,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x72737468776772736772)","execution_cost":{"read_count":16,"read_length":44010,"runtime":167005,"write_count":2,"write_length":161},"fee":142770,"kind":{"data":{"args":["0x627463","0x72737468776772736772"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400a08b49409b03b11d0b7b90dbfeb2339b6127f6d600000000000000040000000000022db200014210302178a14c5530aa2b9bb3ff315f313c3d26312258d91ac03fd5dc8fd7b37e82ce4c064961fa2cfcdfe8279190f4411f6a4303e1259d1120688e040cc7b9030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000a72737468776772736772","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000ba704686173680200000000086d657461646174610c00000004046e616d65020000000a72737468776772736772096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aa08b49409b03b11d0b7b90dbfeb2339b6127f6d6","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2G8PJA0KC1V278BFE8DQZNJ6EDP29ZPTRS12Y9C","success":true},"operations":[],"transaction_identifier":{"hash":"0x88e4dbf78406841af33ad6614f9d04a502826b78c61afad912286805dd683584"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xd08d89ef37e5c654f18cffdc166b6e236f228197d8e6b01e83d092071852f814","index":103507},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000001b2c8529901836c39a450fc31bf61a8fb9e30811ff58f79d47bf","index":2428313},"confirm_microblock_identifier":{"hash":"0x51144da1c0cd34aa1b3207ab260bc74dc0d03e70c4a1c42ecca46b450b307f57","index":1},"pox_cycle_index":407,"pox_cycle_length":1050,"pox_cycle_position":962,"stacks_block_hash":"0x589d69fa27e8c0dbd96f5d0fe31ea0bc607d5e8d8771bda403954207f8b0bcde"},"parent_block_identifier":{"hash":"0x7cfc1b0201ccaf869ae987975a83bd24b7219ea17e0ca60c6cadf32801b9ec9b","index":103506},"timestamp":1681125558,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x746573746e6574)","execution_cost":{"read_count":16,"read_length":44001,"runtime":166852,"write_count":2,"write_length":158},"fee":750000,"kind":{"data":{"args":["0x627463","0x746573746e6574"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":2},"proof":null,"raw_tx":"0x8080000000040095d873b1c6e1f6b5ecf4f179ebe82fc676e8a8bb000000000000000200000000000b71b0000045648b06916b5b154c4f7efc3fca3deaf0292392e07731812f029b8436db071a73bf4b87db2c7dd7909fbc3d4eeb03d760e4ba12a58bad8bfc4f382068f039de030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000007746573746e6574","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000bb204686173680200000000086d657461646174610c00000004046e616d650200000007746573746e6574096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a95d873b1c6e1f6b5ecf4f179ebe82fc676e8a8bb","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2AXGWXHRVGZDDFCYKRQKTZ85Z37DT58QF6MH5G8","success":true},"operations":[],"transaction_identifier":{"hash":"0x26f627c1ec55d456cb5618cfad89dfd7e10d863b586037f596b09d7395c25006"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xb958b43ab5e85b30e91115e0704702cbe1a7b85c38dfa106e9e4402b84b72a1d","index":103510},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000705b34329351308bb234db90b19fb5c7b7acc2d4daea015ff","index":2428318},"confirm_microblock_identifier":null,"pox_cycle_index":407,"pox_cycle_length":1050,"pox_cycle_position":967,"stacks_block_hash":"0x69eeb6d047953a587c24d85b41725fddc83f4bd9c9a6d4a5b7572cd6d44b8451"},"parent_block_identifier":{"hash":"0x9b23a09b49d80db721a6b3ae19decfb53fafec217589bbbca4eafa03244bebbd","index":103509},"timestamp":1681128206,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x777466757564646f696e6667)","execution_cost":{"read_count":16,"read_length":44016,"runtime":167107,"write_count":2,"write_length":163},"fee":579745,"kind":{"data":{"args":["0x627463","0x777466757564646f696e6667"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":12,"position":{"index":13},"proof":null,"raw_tx":"0x808000000004001e9dd422cec4fa9d8ff291814043e385ff645e75000000000000000c000000000008d8a1000062c8ec1485552fc621937b0c4a48e7d9d5e3b3c581b0d05ea8c60d37a0a082db3f8486069c52e2acee682f6fe99dba00195b32abf85f850230d294dcb7e9baca030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000c777466757564646f696e6667","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000bb504686173680200000000086d657461646174610c00000004046e616d65020000000c777466757564646f696e6667096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a1e9dd422cec4fa9d8ff291814043e385ff645e75","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STF9VN12SV2FN7CFYA8R2G23WE2ZYS2YEN8CE0XM","success":true},"operations":[],"transaction_identifier":{"hash":"0x317395097cf945f3af2fcc63e89493b1813db5210edffabea09bf4947d925cc2"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xe5bed45360ed1b563bb4fc1741be265cca8e0d95703b619aa301922a7acd9116","index":103516},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000dcb35ac7b1f4e2e35585b89de9907d06517299569cbb359d2","index":2428326},"confirm_microblock_identifier":null,"pox_cycle_index":407,"pox_cycle_length":1050,"pox_cycle_position":975,"stacks_block_hash":"0x34408ff925ae8afcb8eb203a9533c80c03090913c32f32d29ff28ee3bdde5fcb"},"parent_block_identifier":{"hash":"0xa11cae9ff99d813a116d179a29be1af79c03a4ca25d6a3823b8c29270601ef7f","index":103515},"timestamp":1681135367,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x312d74782d797579757575)","execution_cost":{"read_count":16,"read_length":44013,"runtime":167056,"write_count":2,"write_length":162},"fee":244873,"kind":{"data":{"args":["0x627463","0x312d74782d797579757575"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":4,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400852736929dfe2f4e7bbed70081beadb13c83c3690000000000000004000000000003bc890000b12f2c7f57fcf452159b67d21c9fb56b2b204e9fa427f0238162f036e987699f3c28aed86b245dff81e20f234f3b3b4420031511ff8521baa94270386dd29b90030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000b312d74782d797579757575","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000bb704686173680200000000086d657461646174610c00000004046e616d65020000000b312d74782d797579757575096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a852736929dfe2f4e7bbed70081beadb13c83c369","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST22JEDMJKQZ2YKKVQVBG10DYNPRKS0Y3D5HVK5PH","success":true},"operations":[],"transaction_identifier":{"hash":"0x6200e22fc7b48501c2c3ddea0095275fef1a61ba76beb98b6e0d965ad28cfd70"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7265706c61636564)","execution_cost":{"read_count":16,"read_length":44004,"runtime":166903,"write_count":2,"write_length":159},"fee":244873,"kind":{"data":{"args":["0x627463","0x7265706c61636564"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":9,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400967d775781d098dd8832dcbf5820aa5f757cec590000000000000009000000000003bc89000093cb756be280819603f8d4157296d84494c42735b4422fed31e6466cd8a412833e421b4d5d2e58612ab940b215899eaac95e1e32d3b061ffe2ed06d7b8fbe5b0030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000087265706c61636564","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000bb804686173680200000000086d657461646174610c00000004046e616d6502000000087265706c61636564096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a967d775781d098dd8832dcbf5820aa5f757cec59","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2B7TXTQG789HQC86BEBYP10N9FQAZ7CB5E25D9K","success":true},"operations":[],"transaction_identifier":{"hash":"0x2d3e426db294d4fa25b7488dd5f209c30dc1f8fd8f99424b3b580726c2e63801"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x3800ff3170943db76fc66081db65fd38da687ececd70f51294c53c735d047e4c","index":103542},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000020c3b60ccfccb9122fade1ccf6258791671cfd43434dd3fc5f","index":2428356},"confirm_microblock_identifier":{"hash":"0x23337f08019286cb7b1fb720ff40edba71bc4df4583299e44bc1321ff66675f2","index":2},"pox_cycle_index":407,"pox_cycle_length":1050,"pox_cycle_position":1005,"stacks_block_hash":"0xcb53b392a75cd9960f40630763a3bed2b166d9ccdec2edccb245dbceb7c74cba"},"parent_block_identifier":{"hash":"0xa4fc6308dc3b8f864edbb835583093046635f379b34266b936c6c2f7d33ccff4","index":103541},"timestamp":1681152282,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x706f69757974)","execution_cost":{"read_count":16,"read_length":43998,"runtime":166801,"write_count":2,"write_length":157},"fee":79770,"kind":{"data":{"args":["0x627463","0x706f69757974"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":8,"position":{"index":4},"proof":null,"raw_tx":"0x80800000000400fd07ac2bb4feefb4fc6e37c6c8dae3bd0a2543040000000000000008000000000001379a0001760c271490c7835769478427692793f3bb33db007c3bf82604b5cbd1842b9cd55b83db347c53b919ff333e26ee2450ea2213a828cac8776329a452b588e6bc0b030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000006706f69757974","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000bbb04686173680200000000086d657461646174610c00000004046e616d650200000006706f69757974096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051afd07ac2bb4feefb4fc6e37c6c8dae3bd0a254304","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3YGFB1BPKZEZD7WDRVWDJ6TWEYGM9A30H4Q0PHZ","success":true},"operations":[],"transaction_identifier":{"hash":"0x6881e6ab5cc3a0d46af57b0d3acf7f45564ac2f9b4dac5f18911edf3fc03c7ec"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x161e3e48e0b0b2100261e1fc6e3adbc3ccde385dc9b9d5ca6d87d9d7060354e2","index":103655},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000c2cdaf0e4ae124239976b7fac17a9be53d8ae46b3efb12982","index":2428606},"confirm_microblock_identifier":{"hash":"0xc1fa7b4c25778c3b7809033b981910afdb8fef1db597e33b391b84cd26b755d8","index":1},"pox_cycle_index":408,"pox_cycle_length":1050,"pox_cycle_position":205,"stacks_block_hash":"0x510133c7dea851c2224e329d4c0d2a02394c99eb5ee4945fdd91b476327a9f1c"},"parent_block_identifier":{"hash":"0x58128da55fc7121102f428927017c2978e49433943fabd39a7ce6d3d0cf542ce","index":103654},"timestamp":1681298389,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x616a6565622d3132)","execution_cost":{"read_count":16,"read_length":44004,"runtime":166903,"write_count":2,"write_length":159},"fee":589063,"kind":{"data":{"args":["0x627463","0x616a6565622d3132"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":1},"proof":null,"raw_tx":"0x808000000004009826e863e38e708774b71a961c516032c6dbd4990000000000000002000000000008fd070001076363f1e10d154aec0a22b4b1bfeded05f8b051e9520095407639c9c85ff3c93343dc03452ce73b2598c776233eb0b90176fa7102f121a196ce5c0a34bcb13d030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000008616a6565622d3132","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000bc204686173680200000000086d657461646174610c00000004046e616d650200000008616a6565622d3132096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a9826e863e38e708774b71a961c516032c6dbd499","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2C2DT33WE7711VMPWD9C72HC0SCDPYMK7YBX4AV","success":true},"operations":[],"transaction_identifier":{"hash":"0x8e9823acae04c87caf0a98ee5a57a3edeb7c2de1c935a0698011f160c02f6509"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x0684b932413b1ab4c3a7662f50995333c380e08b44c6cbb92c820d39170a2c12","index":104198},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000001794ef6446787ef12fb7e97a88b294a5a1a32dcea8bd484a1b","index":2429280},"confirm_microblock_identifier":{"hash":"0xe233cc28f8b466e7e4596230d7682bea75905a20ab3ae5f96edf135ffd878f48","index":2},"pox_cycle_index":408,"pox_cycle_length":1050,"pox_cycle_position":879,"stacks_block_hash":"0x856a2adadc54ff3925ed207bfa3e70cf797fcb6c8dcd0dca3e77b67e18f68358"},"parent_block_identifier":{"hash":"0x5eada79fac5ddc46f75da8d37c66f30c721999f340ac9c0f45b414e4fa914b65","index":104197},"timestamp":1681720238,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x736c646b636e776f6965686776736c626b7664)","execution_cost":{"read_count":16,"read_length":44037,"runtime":167464,"write_count":2,"write_length":170},"fee":100740,"kind":{"data":{"args":["0x627463","0x736c646b636e776f6965686776736c626b7664"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":11,"position":{"index":9},"proof":null,"raw_tx":"0x808000000004001124c966ba863ba7c8c86cf6c8b436ca411f602a000000000000000b00000000000189840000edfa431c10f54961f694220a620a89827721deb9b4117a1bc5271873ace79f2a15442ac9cd149f15de33215e5eee052a84183b4fad3ee3297935ecd225b6d594030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000013736c646b636e776f6965686776736c626b7664","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000bd504686173680200000000086d657461646174610c00000004046e616d650200000013736c646b636e776f6965686776736c626b7664096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a1124c966ba863ba7c8c86cf6c8b436ca411f602a","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST8J9JB6QA33Q9Y8S1PFDJ5M6V5427V05B80T6B2","success":true},"operations":[],"transaction_identifier":{"hash":"0x37cf1341020b26035faf0fda48f8fef51b8f115fc3135b6a709a1f3a297ee4ac"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xc2b33ed4381445c716357a8ef7c7552033f79ed8a935b8521ca2d92ef83047bf","index":104206},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000255b58d5915b5af5c57c287e5c0d31a629ee7817f3edc20330","index":2429290},"confirm_microblock_identifier":{"hash":"0x9f7fdb3c86b4762fa0c82ada647f348dcef3830724b7e619057acfb8e10af8ac","index":2},"pox_cycle_index":408,"pox_cycle_length":1050,"pox_cycle_position":889,"stacks_block_hash":"0x2feefb0050504eec507b20d7b7dfafa64733b907ca52b1e9e82bae5b5b607a89"},"parent_block_identifier":{"hash":"0x665d51ab230795414c828bb047eebe8e67a6ca1b8a47b494c2b3f5cb7608dae4","index":104205},"timestamp":1681727013,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x736b6a64736b646a666e)","execution_cost":{"read_count":16,"read_length":44010,"runtime":167005,"write_count":2,"write_length":161},"fee":550141,"kind":{"data":{"args":["0x627463","0x736b6a64736b646a666e"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":10,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400293fab26b49ac31ac4d89467dc56fb6df4ce17b1000000000000000a00000000000864fd00011cec2d3715f17154b09ded1be9921c195dc1586b64709b9430bfb05718c0a5b027d8d129d874dea8f4e323bd97cd22807963ab9dcb0bdb2295b1f37511cd52a2030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000a736b6a64736b646a666e","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000bda04686173680200000000086d657461646174610c00000004046e616d65020000000a736b6a64736b646a666e096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a293fab26b49ac31ac4d89467dc56fb6df4ce17b1","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STMKZAS6PJDC66P4V2A6FQ2PZDPZ9KGQP4RWT9SR","success":true},"operations":[],"transaction_identifier":{"hash":"0xe588c8289da018fe87310cbb2225e271c6bf20927b24858404bd3bb5b3b0a06e"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x0813e325903ca3deea10d7098b507afaa352d699f8283fb47db2c7c5b1dc8c37","index":105801},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000065759d238526ea995fbadd75150c82015dd77f5e5ebcb5f999ef8a76","index":2431163},"confirm_microblock_identifier":{"hash":"0x8a69995d90a1ffa778c1ece0ba5f14aeeb53835d8a3a75e74e50fd6e8ca10e95","index":2},"pox_cycle_index":410,"pox_cycle_length":1050,"pox_cycle_position":662,"stacks_block_hash":"0x354fe373411cff716f7b4695c01505356ee64d853c3d9721c7dcbb18b872e4a5"},"parent_block_identifier":{"hash":"0x2ff2a741712dc4d23e9f75beb8596733588f40fea80a84168ec930c303f5c0d6","index":105800},"timestamp":1682555543,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6177646173667367)","execution_cost":{"read_count":16,"read_length":44004,"runtime":166903,"write_count":2,"write_length":159},"fee":15571,"kind":{"data":{"args":["0x627463","0x6177646173667367"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":12,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400a08b49409b03b11d0b7b90dbfeb2339b6127f6d6000000000000000c0000000000003cd30001acb9e86abf3be20e7d4ef569cc73b80a37b59a08ed49550f950ee4b76c0a8f9f4b1c4008d00aa6bd1678f3741f3ea1876226fd8bcb52fbe7e99e6cdcb631ad35030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000086177646173667367","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000bf904686173680200000000086d657461646174610c00000004046e616d6502000000086177646173667367096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aa08b49409b03b11d0b7b90dbfeb2339b6127f6d6","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2G8PJA0KC1V278BFE8DQZNJ6EDP29ZPTRS12Y9C","success":true},"operations":[],"transaction_identifier":{"hash":"0x597aabee20b1593a802690b3abbac31673cb0777e8f762c76a2d36e4c78d6a60"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x8a8796a055482da79bb2ff89f7906660737b7202e052d95353b45f5fcc982cc8","index":105821},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000eb95c86a5dd4b7df8ebcbf035d789dd0a63e53b288b508b80edc31a4","index":2431184},"confirm_microblock_identifier":{"hash":"0x9da5dcdb3fcfbc82d266cbe39a6c89800a6ffd6ffaa29ea191247e48a3fc4061","index":3},"pox_cycle_index":410,"pox_cycle_length":1050,"pox_cycle_position":683,"stacks_block_hash":"0x4fa67e48673c3ac783ffe64fda952bc845e4cbd41cffac605798325dc8b77ea0"},"parent_block_identifier":{"hash":"0x2a41d5a2dafcbf6b15e116462c921667f8d0db634c8adcb4b00e3f1edc81b925","index":105820},"timestamp":1682578956,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6a6b626e6b6a6e6b6a766b6a)","execution_cost":{"read_count":16,"read_length":44016,"runtime":167107,"write_count":2,"write_length":163},"fee":6240,"kind":{"data":{"args":["0x627463","0x6a6b626e6b6a6e6b6a766b6a"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":38,"position":{"index":3},"proof":null,"raw_tx":"0x8080000000040093848da413b5311e1efe84e9f1bcfb1c0977877600000000000000260000000000001860000197002b7ba086f655f11563246275dd19f606419fdb77cef976a918aaae28643759e2baf972e0eead302d814152e96d335fb975f4c2abbe3a7e03cbed75254720030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000c6a6b626e6b6a6e6b6a766b6a","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000bfb04686173680200000000086d657461646174610c00000004046e616d65020000000c6a6b626e6b6a6e6b6a766b6a096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a93848da413b5311e1efe84e9f1bcfb1c09778776","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST29R93D42ETK27GYZT2EKWDWZCE0JXW7ERS23XG9","success":true},"operations":[],"transaction_identifier":{"hash":"0xc2901ae3e88c40ca41a203a8e79eaf911aa1249122f0ed9169c3aefb7fd643dd"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x112fbd3805ef2ca8225cf3cc01d0c9c9ed05887a6ae1b8cdae6714ed7a0ce624","index":105827},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000009f90bfef005b32e576695fab7a223ff6c02723871426a88f4b464e7b","index":2431190},"confirm_microblock_identifier":{"hash":"0x79d161e70145cb2cefd076d721625a3c427ecd4e68f046f4c3cea19b276d25dc","index":3},"pox_cycle_index":410,"pox_cycle_length":1050,"pox_cycle_position":689,"stacks_block_hash":"0x8d94ac96f2d2060aa968f0dc320fb1d494c5b6943fad8caf95ce576887821fb5"},"parent_block_identifier":{"hash":"0x9f6dfb101b57115c6a763429fc90e3ccd295414cadb8c218211805c77de60cb4","index":105826},"timestamp":1682586194,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x73646c766b6e736c646b766e)","execution_cost":{"read_count":16,"read_length":44016,"runtime":167107,"write_count":2,"write_length":163},"fee":30635,"kind":{"data":{"args":["0x627463","0x73646c766b6e736c646b766e"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":14,"position":{"index":4},"proof":null,"raw_tx":"0x8080000000040083104514eb98328ce0d822680a1d78cc617379d3000000000000000e00000000000077ab00012ef30710b47179fa36a7e948c82da03d3aa3e0e6be1e2d396c2dbc796d5104346c5f92a0c3ec5c8bd7716dd7a3dd9659a5cbf162e85a1608c8715ee74c2c4d0c030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000c73646c766b6e736c646b766e","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000c0004686173680200000000086d657461646174610c00000004046e616d65020000000c73646c766b6e736c646b766e096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a83104514eb98328ce0d822680a1d78cc617379d3","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST21H0H8MXEC35370V0H6G2GXF3662WVSTFVSSJDM","success":true},"operations":[],"transaction_identifier":{"hash":"0x446439085939bedc72f05e3a1c6b689079023203a95d7fd54e7c0dee75ca6501"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xd19f2aeea3624a835fb88d65198586fedf540e3f22f332d59c770f13f9ff6504","index":105830},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000009beee2948953f1ef0f0e493907455d373e552fb1a4d1be4dd6f6f675","index":2431194},"confirm_microblock_identifier":{"hash":"0x3c9c06ea06123ef3285d59c9213effa8ba8f6fcebf4ead9385af4ff99dda6831","index":1},"pox_cycle_index":410,"pox_cycle_length":1050,"pox_cycle_position":693,"stacks_block_hash":"0x4e9260cee3fa5869f264d153a1eedc0402f40c69e0b12e6fc747dd7577d6618b"},"parent_block_identifier":{"hash":"0x538a2452e1ff7a4a2bdb0cb52684e54db3271e96513e0c7098dbe28475fdf655","index":105829},"timestamp":1682589798,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x71776f7270716276)","execution_cost":{"read_count":16,"read_length":44004,"runtime":166903,"write_count":2,"write_length":159},"fee":31775,"kind":{"data":{"args":["0x627463","0x71776f7270716276"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":8,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400d011c05d550b40b28f943f41f1914780e58a117200000000000000080000000000007c1f0000cbceface46e095613093c25d15ac6771c4d116efa3d5773e4bb7713540ced2fe478e74463736f8badb0e00c1b8ad488b0798eb0bfcc30772022baf7a205dd578030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000871776f7270716276","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000c0404686173680200000000086d657461646174610c00000004046e616d65020000000871776f7270716276096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ad011c05d550b40b28f943f41f1914780e58a1172","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3813G2XAM5M1CMFJGZM3WCH8Y0EB2GHE89FX450","success":true},"operations":[],"transaction_identifier":{"hash":"0x26208c0280060f2e13b2e85d605feb0a3142e98c52a443d8ba4f480bb89c7f4e"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x55240566c824414106e1d7bec59bcd75f6e239ae6c361875da52c21fae93078b","index":105833},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000099370d5a783515340334a68ce4e6959aaa77dbee71bbdfcf3","index":2431198},"confirm_microblock_identifier":{"hash":"0xb3dd1bf5f077074c43fe5a5f3c8b071a191e7e0d7b7eb0dae6d70045329d72cc","index":6},"pox_cycle_index":410,"pox_cycle_length":1050,"pox_cycle_position":697,"stacks_block_hash":"0xd23d71bea08a19f569748653a59337d3064be85f0b5f46d491de173836bf3faf"},"parent_block_identifier":{"hash":"0xe96b0b21ef6e55ea8ec711a850e6dfecef12b4e67a7caf471a675181e612511e","index":105832},"timestamp":1682595820,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x686472667a627a)","execution_cost":{"read_count":16,"read_length":44001,"runtime":166852,"write_count":2,"write_length":158},"fee":2000000,"kind":{"data":{"args":["0x627463","0x686472667a627a"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":15,"position":{"index":6},"proof":null,"raw_tx":"0x80800000000400a08b49409b03b11d0b7b90dbfeb2339b6127f6d6000000000000000f00000000001e8480000131ee0c35365b78e37b8a5c3adb000222dac4dc5b94f38fa774639b3a761865cc0f2d02d5fb3d241ff771c8b26fd6db9becb8580a0ce71958cb282e4816f420c4030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000007686472667a627a","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000c0904686173680200000000086d657461646174610c00000004046e616d650200000007686472667a627a096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aa08b49409b03b11d0b7b90dbfeb2339b6127f6d6","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2G8PJA0KC1V278BFE8DQZNJ6EDP29ZPTRS12Y9C","success":true},"operations":[],"transaction_identifier":{"hash":"0xc762abf2e3050ee4f5013d9ba6a8b02fd45f5fd9a9596ace7cddca1275b03b6e"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x331005b74125a9e8516afd857178d10f346de3f66a3f2eccac2124c711391c5f","index":106148},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000f7082555fa5e96bcda5aad3dc2057bc9648534ff44d346516036576e","index":2431572},"confirm_microblock_identifier":null,"pox_cycle_index":411,"pox_cycle_length":1050,"pox_cycle_position":21,"stacks_block_hash":"0x139b0f56e5c62d07307286de5ab7c87c55b398969a1b72f5ff7d9779a488d80e"},"parent_block_identifier":{"hash":"0x901e74d84a7b244169b3d45badbf0b27e8133128e8620bf9f07e2bd7cfa88cb8","index":106147},"timestamp":1683003187,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x73616466617364)","execution_cost":{"read_count":16,"read_length":44001,"runtime":166852,"write_count":2,"write_length":158},"fee":102180,"kind":{"data":{"args":["0x627463","0x73616466617364"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":17,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400a08b49409b03b11d0b7b90dbfeb2339b6127f6d600000000000000110000000000018f240000da734b03eb13f6745116401fd6c0660f388632d7e8c842f78c841e648314555330f6f5fd1ef9346e634c053c69a0e7b3a34744af6bc522b48f522461060bf2a5030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000773616466617364","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000c1204686173680200000000086d657461646174610c00000004046e616d65020000000773616466617364096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aa08b49409b03b11d0b7b90dbfeb2339b6127f6d6","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2G8PJA0KC1V278BFE8DQZNJ6EDP29ZPTRS12Y9C","success":true},"operations":[],"transaction_identifier":{"hash":"0x99d1ecef0b08400609733b35ef69bcb0fbe315843f835876516b1168302a139d"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x58eaac06b5ba761089907db191b150e0d842c3e3718a8dae65bf81d8c3119665","index":106595},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000003551bcf2502482941a4dcf812a43d28ceb3ddb7512b9a622290ea12d","index":2432105},"confirm_microblock_identifier":{"hash":"0xe9a96e6025603e622302027865cc3fb2f188960f35a2b0259c0f95fa5221ff0e","index":1},"pox_cycle_index":411,"pox_cycle_length":1050,"pox_cycle_position":554,"stacks_block_hash":"0xcbf822e4f23c8d222c1e5b224a533ab8acdd44cc4cd1d4a7facdb50412f763f9"},"parent_block_identifier":{"hash":"0xd2245ca6458a362202c0103dcc25f80042e3402cc1ed47e564b967a1638bf4ad","index":106594},"timestamp":1683547579,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7a7364786376626e6a)","execution_cost":{"read_count":16,"read_length":44007,"runtime":166954,"write_count":2,"write_length":160},"fee":296166,"kind":{"data":{"args":["0x627463","0x7a7364786376626e6a"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":37,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400c29f2bc04c3a559f50d45767e3b8c3978952032b000000000000002500000000000484e60000f84a319b0253af87e9b8fc0a4251f6fd7ee1ffab3365ab919b1211b7ce4a03aa220d07cea2ee909389e2c90a62799746cbf57733f3d93d01d0eaabc23856ec8c030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000097a7364786376626e6a","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000c2004686173680200000000086d657461646174610c00000004046e616d6502000000097a7364786376626e6a096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac29f2bc04c3a559f50d45767e3b8c3978952032b","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST319YAY09GX5B7TGTHBPFRXRREBRJMG35D7B28QY","success":true},"operations":[],"transaction_identifier":{"hash":"0x33d07d56d38a7d3594cdd3e636221f6ef0b06aa092947ae3890c5bc7ad27855b"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7a7364786376626e6a)","execution_cost":{"read_count":12,"read_length":43978,"runtime":122631,"write_count":0,"write_length":0},"fee":296166,"kind":{"data":{"args":["0x627463","0x7a7364786376626e6a"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":38,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400c29f2bc04c3a559f50d45767e3b8c3978952032b000000000000002600000000000484e60000a7b608c7e3e22dc43b2a6dfc93abdc9f96eb527418b03c963e49a292e635412255018f2bafe0d19a39617f62c9251a4d54b4f3684171552261b35dc622b9f5ff030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000097a7364786376626e6a","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST319YAY09GX5B7TGTHBPFRXRREBRJMG35D7B28QY","success":false},"operations":[],"transaction_identifier":{"hash":"0xee484acb8e5bcd9e74fc311ae97e8f4b044bf73c4a78600ed0e9488ff39411f1"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7a7364786376626e6a)","execution_cost":{"read_count":12,"read_length":43978,"runtime":122631,"write_count":0,"write_length":0},"fee":296166,"kind":{"data":{"args":["0x627463","0x7a7364786376626e6a"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":39,"position":{"index":4},"proof":null,"raw_tx":"0x80800000000400c29f2bc04c3a559f50d45767e3b8c3978952032b000000000000002700000000000484e60001aafeb37439d9fdc20bcd63dff5311cb1dafc4ded63e55232503dc8de17eae0e8031905012e2f3ba6a563e3458df96fa52d9a2d7135f27583a8edb502d46d2ffe030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000097a7364786376626e6a","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST319YAY09GX5B7TGTHBPFRXRREBRJMG35D7B28QY","success":false},"operations":[],"transaction_identifier":{"hash":"0x235e7320568c63e10d1e3161a73fffb15d5763e2e3239bffe85da7079507ff38"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x62696c61736964626c6173696263)","execution_cost":{"read_count":16,"read_length":44022,"runtime":167209,"write_count":2,"write_length":165},"fee":296166,"kind":{"data":{"args":["0x627463","0x62696c61736964626c6173696263"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":47,"position":{"index":5},"proof":null,"raw_tx":"0x808000000004002c4673bcc1fcf2bacdae24385dddd9a85d88175a000000000000002f00000000000484e60000e0fbda1d1f40edc459e402c610c327a593552a92c39bb3dcc31e5941938b7c25729c26facdaa06df8e9197939a393ef4781fcf0e4df60f15cbfc18c54e3d2d04030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000e62696c61736964626c6173696263","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000c2104686173680200000000086d657461646174610c00000004046e616d65020000000e62696c61736964626c6173696263096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a2c4673bcc1fcf2bacdae24385dddd9a85d88175a","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STP4CWXWR7YF5EPDNRJ3GQEXV6M5V20QBBRY5215","success":true},"operations":[],"transaction_identifier":{"hash":"0xa414682f2602d53f38b6fee3a518b5e822f1e65b80ea2c2d5d92fa01b83dc397"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7a7364786376626e6a)","execution_cost":{"read_count":12,"read_length":43978,"runtime":122631,"write_count":0,"write_length":0},"fee":296166,"kind":{"data":{"args":["0x627463","0x7a7364786376626e6a"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":40,"position":{"index":11},"proof":null,"raw_tx":"0x80800000000400c29f2bc04c3a559f50d45767e3b8c3978952032b000000000000002800000000000484e60001da6521f30ecc2dbcf40375e413376e6a269b56dabfe7a1a89d783780c6cda5ee1ce142e391236a10cc203f594e47b0112340b00b811b418b6914ee932264b2aa030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000097a7364786376626e6a","receipt":{"contract_calls_stack":[],"events":[],"mutated_assets_radius":[],"mutated_contracts_radius":[]},"result":"(err 2014)","sender":"ST319YAY09GX5B7TGTHBPFRXRREBRJMG35D7B28QY","success":false},"operations":[],"transaction_identifier":{"hash":"0x3e7d74eb221c71fc358a5a742c3ed6282b700de7f913d32a79f9793420f51c93"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xf19aaef8a1ceca7243e8ecdbedcef57700494cc473273a0368916af17e939f8b","index":106666},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000009b544c050b257eb196428b2f132b7be08b120eec835bcbb14","index":2432182},"confirm_microblock_identifier":{"hash":"0x85eb207dad8e3aafa593db31036eed940320cfa32340730c7a643a112bca699f","index":0},"pox_cycle_index":411,"pox_cycle_length":1050,"pox_cycle_position":631,"stacks_block_hash":"0xfa276edc24e43471180bb81574cc1f9b91ad56301abe6b657aaa718928a7e629"},"parent_block_identifier":{"hash":"0x4246807b97c33c89e55c8d8e8edfdefe4a04b711eabd79852621f5dd23eacc8f","index":106665},"timestamp":1683626638,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x71706f776b6b6e76736c646b76)","execution_cost":{"read_count":16,"read_length":44019,"runtime":167158,"write_count":2,"write_length":164},"fee":137230,"kind":{"data":{"args":["0x627463","0x71706f776b6b6e76736c646b76"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":5,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400a830b5b6ba9b1987d1a4eba94533e2e0ebfca3240000000000000005000000000002180e00014306408386125ee1399af16fc8965897081f6b81a4b5668a67254a6f34b6cc5508755f01b53a1693573d003611eb0abf08af47859445fb383da88046cd4c2b2b030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000d71706f776b6b6e76736c646b76","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000c2a04686173680200000000086d657461646174610c00000004046e616d65020000000d71706f776b6b6e76736c646b76096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aa830b5b6ba9b1987d1a4eba94533e2e0ebfca324","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST2M31DDPQADHK1YHMKNTJH9KWBGEQZ534G9Z87JN","success":true},"operations":[],"transaction_identifier":{"hash":"0x1555ac71c0470b281c51a1f5ab528dbd9cbff83ec546c82188635e6edab8c7c7"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0xdd4ad1708103e919422c5f35340040d28bc66acf00e72f9838ec882405783c3a","index":106769},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000000df9149ef34916a76e2913762717ead7dbee74895814b8130f","index":2432293},"confirm_microblock_identifier":{"hash":"0x67db465688dad9654801c13497e2c07ca900b2567fa4a6fdcde0f1eaf383c10b","index":0},"pox_cycle_index":411,"pox_cycle_length":1050,"pox_cycle_position":742,"stacks_block_hash":"0xba63d222d6831a77ed14df6feb556035f7a3cbe07b4346b118c2379575d92355"},"parent_block_identifier":{"hash":"0xfe2f7ed521d4ec276f1975a215be0ae94251376e3fb564ece8f659b8c27a408f","index":106768},"timestamp":1683716327,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x7265666163746f727465737432)","execution_cost":{"read_count":16,"read_length":44019,"runtime":167158,"write_count":2,"write_length":164},"fee":202159,"kind":{"data":{"args":["0x627463","0x7265666163746f727465737432"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":21,"position":{"index":5},"proof":null,"raw_tx":"0x80800000000400254a79735e9607369e43e909c2d3991d2d415bbb000000000000001500000000000315af00016a473689f453a5a48929e1f34687bb4b3a1e41659a9e3b1b0edbbfc93865dafd360f160b25271a15886267f3809abf2b7e015b01f58edca1e1e4df6e4ad4b4a0030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000d7265666163746f727465737432","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000c2e04686173680200000000086d657461646174610c00000004046e616d65020000000d7265666163746f727465737432096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a254a79735e9607369e43e909c2d3991d2d415bbb","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STJMMYBKBTB0EDMY8FMGKGPKK4EJTGAVQDW8KGP5","success":true},"operations":[],"transaction_identifier":{"hash":"0x65d86187c13201fa5c290ab3d4a1a3a6a9b521180baf78e2b3aa7ad5302000ff"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x418a1333cc8697dfc11ce6236ed4acdb4a6a9afd6f717e35b6d59d4a00d86d9c","index":106873},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000005a18e7316fd7d759b1e98586a8a228dee5f04bb39b2ea2c73","index":2432408},"confirm_microblock_identifier":null,"pox_cycle_index":411,"pox_cycle_length":1050,"pox_cycle_position":857,"stacks_block_hash":"0x9137a27bcedfdf204e127e98555a7bd651ec61b18240bdcef18ec49b0f2bde6f"},"parent_block_identifier":{"hash":"0x246f37b03a98a46715487fb3c9f975de07591e269f3c0b7c2d86d0a0e5f2d01b","index":106872},"timestamp":1683821500,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6e6577746573747472616e73666572)","execution_cost":{"read_count":16,"read_length":44025,"runtime":167260,"write_count":2,"write_length":166},"fee":25874,"kind":{"data":{"args":["0x627463","0x6e6577746573747472616e73666572"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":7},"proof":null,"raw_tx":"0x8080000000040082484c5adf7e61d16e03f01b6f736ace05587ef50000000000000000000000000000651200017e4407fc298b65c19b90af908b86f65e845f27a0d426ccf46443d0d936e6d4e93da2c5816abcbbafceb70841cfa4b23f4ce8b5865f7e0c5a27485bb6589553ec030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000f6e6577746573747472616e73666572","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000c4c04686173680200000000086d657461646174610c00000004046e616d65020000000f6e6577746573747472616e73666572096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a82484c5adf7e61d16e03f01b6f736ace05587ef5","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST214GK2TVXZ63MBE0FR1PVVKDB70AP3YYPX4PN31","success":true},"operations":[],"transaction_identifier":{"hash":"0x9a27bf468643270e047929a19b701775cb8eebc1e219da814431ecd113724166"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x74657374696e67313233)","execution_cost":{"read_count":16,"read_length":44010,"runtime":167005,"write_count":2,"write_length":161},"fee":25874,"kind":{"data":{"args":["0x627463","0x74657374696e67313233"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":2,"position":{"index":8},"proof":null,"raw_tx":"0x80800000000400fcd415d040677526629dd208223a419d9ca8d5b80000000000000002000000000000651200007961fbd2ea60ddaf5a45ef8bac719b03351467309d0d3154d56107551b9bb9c70f187440ebba6b5d24571381047a7c36f80152626036a142783233eb079dca44030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000a74657374696e67313233","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000c4d04686173680200000000086d657461646174610c00000004046e616d65020000000a74657374696e67313233096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051afcd415d040677526629dd208223a419d9ca8d5b8","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3YD85EG81KQA9K2KQ90G8HT86ESSA6NQ19GD3PD","success":true},"operations":[],"transaction_identifier":{"hash":"0x6211767308179ffe862e8d25898fdf185df2283e1ad06bccb1e1618c9386e5dd"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6c6b736e76646c6b6e73646c6b766e)","execution_cost":{"read_count":16,"read_length":44025,"runtime":167260,"write_count":2,"write_length":166},"fee":25874,"kind":{"data":{"args":["0x627463","0x6c6b736e76646c6b6e73646c6b766e"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":5,"position":{"index":9},"proof":null,"raw_tx":"0x808000000004004cef6b61953dc35caa0c2f5e42f71f9551ed488500000000000000050000000000006512000001ce24037b4d63316e702d3664b79755facd7e58bba1a2a8fa5aacbb023a51c367ca1f1e3a00d37ab4834b27919057e29cde8eed7b3ab52f7af689ae92370b71030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000f6c6b736e76646c6b6e73646c6b766e","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000c4e04686173680200000000086d657461646174610c00000004046e616d65020000000f6c6b736e76646c6b6e73646c6b766e096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a4cef6b61953dc35caa0c2f5e42f71f9551ed4885","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST16EYTV1JMYW6Q5A1GQNWGQQ3YAN3VA8GMMWFJX8","success":true},"operations":[],"transaction_identifier":{"hash":"0xf11b5757a865c3deecb9d1954ff6c0674c37ed6a4643e96cd78b4a7d564436e0"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x61737661736476)","execution_cost":{"read_count":16,"read_length":44001,"runtime":166852,"write_count":2,"write_length":158},"fee":25874,"kind":{"data":{"args":["0x627463","0x61737661736476"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":5,"position":{"index":10},"proof":null,"raw_tx":"0x80800000000400c5f54eaa50c31a29cb4cb00a57a2f3c9ac0f2eca0000000000000005000000000000651200006ff5aa6d3e620512fc16902512faf45111cddff7d6fd577eb44d45e0d4e7deb5115ad27da437db0499824473f0c6a86c5d77453404ab862ddc8036961946f347030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000761737661736476","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000c4f04686173680200000000086d657461646174610c00000004046e616d65020000000761737661736476096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac5f54eaa50c31a29cb4cb00a57a2f3c9ac0f2eca","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST32ZAKNAA31HMAEB9JR0MNX2YF4TR3SESBE4HWDV","success":true},"operations":[],"transaction_identifier":{"hash":"0xf0ae6ee3e550a466745f98fc1fca88f0cb9fa6d071abfa14de0ef1f787fef7c2"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x25bb9f2d9cc3761be80997ee8a71613477dde76f8a136a1716570c36f4a1a542","index":106874},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000012e0934504a0390632216873ab9eb83e88123fe0df2424c2f0","index":2432410},"confirm_microblock_identifier":{"hash":"0x1b80e97c8d4f80c768edbc236ae10c1009e36eb2f8a5618112f96ce617884767","index":4},"pox_cycle_index":411,"pox_cycle_length":1050,"pox_cycle_position":859,"stacks_block_hash":"0x6d8f9b9cffd2c91d27aa328c05c3ce424fc9da4ca3fcd95a0f57b1be16dd978b"},"parent_block_identifier":{"hash":"0x418a1333cc8697dfc11ce6236ed4acdb4a6a9afd6f717e35b6d59d4a00d86d9c","index":106873},"timestamp":1683822174,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x706f7177727077656734746e6b)","execution_cost":{"read_count":16,"read_length":44019,"runtime":167158,"write_count":2,"write_length":164},"fee":35511,"kind":{"data":{"args":["0x627463","0x706f7177727077656734746e6b"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":1,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400fcd18ae6a2db757b8716a108617daa2b9d0b96bb00000000000000010000000000008ab70000f063203c261c400e4de88b19cceb057c0f8c23f25177e9b6dc89449f4c379cc52b5bc5c9494a5706da79f9c943af9e5dc379d6c8c325d8aab8cd8036f002c955030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000d706f7177727077656734746e6b","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000c5004686173680200000000086d657461646174610c00000004046e616d65020000000d706f7177727077656734746e6b096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051afcd18ae6a2db757b8716a108617daa2b9d0b96bb","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3YD32Q6MBDQAYW72TGGGRBXN8NST2WPQEE8X6Z2","success":true},"operations":[],"transaction_identifier":{"hash":"0x13a1ff218aa3342f62fdea7c1a27d169738b69993bcd368df9cd365b74a87809"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x763d17ad6db3e7bd59799fe85784da8c4c6e107fd5ae1184522d95fdc534f493","index":106944},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000017b9409818c8a8c9b312d3fb66b40ad92984253243ff73f4a8","index":2432492},"confirm_microblock_identifier":{"hash":"0x3972e2539fec0968d90d4dde3e0463a005d1288db8acc33123b0d5c285a6c013","index":3},"pox_cycle_index":411,"pox_cycle_length":1050,"pox_cycle_position":941,"stacks_block_hash":"0x28f577c85ca295518b84062e64bf9d7647e05605bba0a2619ce2d5bcb0148eb5"},"parent_block_identifier":{"hash":"0xfebea6aa659f7ec6cd21511964e0ddd1ff58dc4c7459aa5aa53e9eeb2bab9a53","index":106943},"timestamp":1683882713,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x73646b6c7364766e736c646b6e76)","execution_cost":{"read_count":16,"read_length":44022,"runtime":167209,"write_count":2,"write_length":165},"fee":15756,"kind":{"data":{"args":["0x627463","0x73646b6c7364766e736c646b6e76"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":6,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400c5f54eaa50c31a29cb4cb00a57a2f3c9ac0f2eca00000000000000060000000000003d8c00003938c779ccb569e6040ba4a6cbd1eb70939a444661bc4b30e97b2de3f628854469014d2aa9bb978561d9e6d58d1bf9c9ccfc33b9e2ae20f9d56940145795cbdb030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000e73646b6c7364766e736c646b6e76","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000c5304686173680200000000086d657461646174610c00000004046e616d65020000000e73646b6c7364766e736c646b6e76096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac5f54eaa50c31a29cb4cb00a57a2f3c9ac0f2eca","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST32ZAKNAA31HMAEB9JR0MNX2YF4TR3SESBE4HWDV","success":true},"operations":[],"transaction_identifier":{"hash":"0xbe30e4ab7efe79074009e2348a38fa3aa2fae079d5f06084224712c53ff1c3d5"}},{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x70716f65777270736e7664706b6e62)","execution_cost":{"read_count":16,"read_length":44025,"runtime":167260,"write_count":2,"write_length":166},"fee":15756,"kind":{"data":{"args":["0x627463","0x70716f65777270736e7664706b6e62"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":5,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400537f79d82fd360b9bef39172107b5260f934050400000000000000050000000000003d8c0001f642fdf3c19abd7ff0e4882e4654b680663bd52260dee06e28696d66e0efbe992b8bc68d9cc005d0a0fdd5f72652f11cbcf7e903ef66e2424e06963e1fc4db5a030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000f70716f65777270736e7664706b6e62","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000c5404686173680200000000086d657461646174610c00000004046e616d65020000000f70716f65777270736e7664706b6e62096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a537f79d82fd360b9bef39172107b5260f9340504","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST19QYYER5Z9P1EDYYE8Q443VA9GFJD050KZWWD8D","success":true},"operations":[],"transaction_identifier":{"hash":"0xc22a9f6c66961ac12302649a67e81080ca81023a51494a3e718ac5808ecfe6eb"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x6c4ba14f906146f8436aaffe7da03d009a2d0df83c105fe86e88bc4e73d3d418","index":106945},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000001a3c26463627f9b1bfebbc4131c6ea2556d124974888be293d","index":2432493},"confirm_microblock_identifier":{"hash":"0xa51232657ece2a2f9496c4b1e80fb710bf1ef1a80d24fb9f3de9d20274a99b73","index":2},"pox_cycle_index":411,"pox_cycle_length":1050,"pox_cycle_position":942,"stacks_block_hash":"0xede3213858181ddc8bef968169af25d50e9ecd39f70a64574808e29d1269c9b8"},"parent_block_identifier":{"hash":"0x763d17ad6db3e7bd59799fe85784da8c4c6e107fd5ae1184522d95fdc534f493","index":106944},"timestamp":1683883693,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x64667077656f6a666e6b6e7673)","execution_cost":{"read_count":16,"read_length":44019,"runtime":167158,"write_count":2,"write_length":164},"fee":16088,"kind":{"data":{"args":["0x627463","0x64667077656f6a666e6b6e7673"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":1},"proof":null,"raw_tx":"0x80800000000400d80c068a4eb2510207d63e2d89fa5820155deb0d00000000000000000000000000003ed80000388dde44f1084175d65704e9cfdc4fc19af4db29292d8015c317cbc698e827d539cbca26df860466ee213629da64a4d89cfbd518bef6f6cb522c50ceda64a444030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000d64667077656f6a666e6b6e7673","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000c5504686173680200000000086d657461646174610c00000004046e616d65020000000d64667077656f6a666e6b6e7673096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ad80c068a4eb2510207d63e2d89fa5820155deb0d","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3C0R1MA9TS520G7TRZ2V2FTB0G1AQFB1P8SVC3R","success":true},"operations":[],"transaction_identifier":{"hash":"0x4960653262dea6d51a43c2861dce53ad18a599f7f4ba756e73569ae2c731ef99"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x9a110ca35bbc4746cbbafb1f83b6f750a5ee5e9378bedf6d58ff836c17ade32a","index":106946},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x00000000000000025ff08ec42a0cc8b5e9ae8222a012b6c2c031e38d7a5415a9","index":2432494},"confirm_microblock_identifier":{"hash":"0x795e6a5e926c3827488fa54c869fa4922faf55264f9c9807f2c376fa75afd4ad","index":0},"pox_cycle_index":411,"pox_cycle_length":1050,"pox_cycle_position":943,"stacks_block_hash":"0x68eb93cd0b3c15a702ff5d29d9ebde1714d446072dd2ec3d022b71a932c8dda7"},"parent_block_identifier":{"hash":"0x6c4ba14f906146f8436aaffe7da03d009a2d0df83c105fe86e88bc4e73d3d418","index":106945},"timestamp":1683884313,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x736b64766c736b64766e6c6b6e7364766e)","execution_cost":{"read_count":16,"read_length":44031,"runtime":167362,"write_count":2,"write_length":168},"fee":15922,"kind":{"data":{"args":["0x627463","0x736b64766c736b64766e6c6b6e7364766e"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":0,"position":{"index":2},"proof":null,"raw_tx":"0x80800000000400ef5ea7208782386d27c37f64e183759952b8113f00000000000000000000000000003e3200015283474320ee6dbad8b9399f4e8750aad496ef4d294481bc08b3a1eb093c6817135724600b9e2d136bf434f78cb22e4958b14f5b1d573d6d2e9953fdb3d92d94030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000011736b64766c736b64766e6c6b6e7364766e","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000c5804686173680200000000086d657461646174610c00000004046e616d650200000011736b64766c736b64766e6c6b6e7364766e096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051aef5ea7208782386d27c37f64e183759952b8113f","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST3QNX9S0GY13GV97RDZP9RC3EPCN5E0H7WZDCEVW","success":true},"operations":[],"transaction_identifier":{"hash":"0x7285fe9d057fdcd68b47984107aa277687711c154cb478c15650032d846f0c27"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x7b21d82a4e6a777260287dcfac760b8bae75a974c2b3fcd7139c221c4c9470cc","index":106951},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000010ecfad52ee097a7245d421e15e470a8f4ede85fd897e91a6b","index":2432500},"confirm_microblock_identifier":{"hash":"0x30169877b06d233b41246a6fd688260995005296c3497e24eea6ae8aa2eb025f","index":3},"pox_cycle_index":411,"pox_cycle_length":1050,"pox_cycle_position":949,"stacks_block_hash":"0xba50aa9b4a43cb2e735fdc2131f916e387c173eec6ec10b2707583f200e48e1b"},"parent_block_identifier":{"hash":"0x4e8817e05011e4156e22161300c723c52227197d3c43f75e3f9373375b702fbd","index":106950},"timestamp":1683887813,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x616b736a6362616b6a736263616a6b736263)","execution_cost":{"read_count":16,"read_length":44034,"runtime":167413,"write_count":2,"write_length":169},"fee":57049,"kind":{"data":{"args":["0x627463","0x616b736a6362616b6a736263616a6b736263"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":7,"position":{"index":3},"proof":null,"raw_tx":"0x80800000000400c5f54eaa50c31a29cb4cb00a57a2f3c9ac0f2eca0000000000000007000000000000ded90000e8fc8490287df17c37cf1fb3eadc7b1df15bfc6119679d552c279f71383c28e8100caf6b73faee63e60b88da3c0607705abbaeb3d37d2a22dd5abcb15cfe2d82030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000012616b736a6362616b6a736263616a6b736263","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000c5904686173680200000000086d657461646174610c00000004046e616d650200000012616b736a6362616b6a736263616a6b736263096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051ac5f54eaa50c31a29cb4cb00a57a2f3c9ac0f2eca","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST32ZAKNAA31HMAEB9JR0MNX2YF4TR3SESBE4HWDV","success":true},"operations":[],"transaction_identifier":{"hash":"0xa60f0020cd642490a7a8c41a736321a81703bb61d65c2894522bae554ec11918"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x844e68b8d826c3d87526768c197a3b71dd93c5bc67bbadc2d71aa2cb34e549dd","index":106971},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000093c24ced0708d7e38175a1bf68d7e7c89065682189f58ab183e","index":2432533},"confirm_microblock_identifier":{"hash":"0x7bc11e931c110bb96c0ea0753d50c17d7b1260367d54e891218a7b1597d09cc9","index":3},"pox_cycle_index":411,"pox_cycle_length":1050,"pox_cycle_position":982,"stacks_block_hash":"0x4e46f4707b5882656efa80169e5da4f58c56315a6c052329a452d84723f9453c"},"parent_block_identifier":{"hash":"0x8c64dab90f0c64a7cc99fcb8525c500f9e5dcc103fd077230bc0aea2a7d32448","index":106970},"timestamp":1683911077,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x746f6f6c746970)","execution_cost":{"read_count":16,"read_length":44001,"runtime":166852,"write_count":2,"write_length":158},"fee":20247,"kind":{"data":{"args":["0x627463","0x746f6f6c746970"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":19,"position":{"index":2},"proof":null,"raw_tx":"0x8080000000040083104514eb98328ce0d822680a1d78cc617379d300000000000000130000000000004f17000112800f7a55e8d39b79d2e27fc595cae355ff39fdb9440765cf459ad450717d9b79379624f43ae36535e2b0206d9c3b096f76c3514dd6f657e029d12cb9130f75030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b650000000202000000036274630200000007746f6f6c746970","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000c6204686173680200000000086d657461646174610c00000004046e616d650200000007746f6f6c746970096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a83104514eb98328ce0d822680a1d78cc617379d3","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST21H0H8MXEC35370V0H6G2GXF3662WVSTFVSSJDM","success":true},"operations":[],"transaction_identifier":{"hash":"0x2f068add33c01f5031b3b9633b386749f1b3e691dcc00fdbe0d45e778b63f4d6"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x0aefeeba88a8de883251e60e9992f55918de571ade4e6e62e3498a23d99571f8","index":111708},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x000000000000001abd482a0018f65e44731b0f6781d876c01a63409e1359a2d5","index":2441322},"confirm_microblock_identifier":{"hash":"0x68bcd7fa5d8a6189adff8585d12b2ab7da89191aaa1b6daf2e1a8ae53a6ac7bb","index":3},"pox_cycle_index":420,"pox_cycle_length":1050,"pox_cycle_position":321,"stacks_block_hash":"0x5650d07988e1b7b8b5cf6e7357a17aa122f2db0ddbaf4c1697be4fcb7d0807a7"},"parent_block_identifier":{"hash":"0x703968d5d2a6c8e65e2d8a0be12647f7b9e6c7838371cdf022c082f75d8bc726","index":111707},"timestamp":1689058186,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x6b6a6c)","execution_cost":{"read_count":16,"read_length":43989,"runtime":166648,"write_count":2,"write_length":154},"fee":1714296,"kind":{"data":{"args":["0x627463","0x6b6a6c"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":41,"position":{"index":75},"proof":null,"raw_tx":"0x808000000004006eae96ccc5f772aea645fd31ec4101cddcb08822000000000000002900000000001a28780000b63f1f684c9c78bc0cfff828449795c6cda2ebc54eebb739e0baa50ce5492b3a24d6ed0b1ac03dc3dd2c0497fddb93175b713ce090856accae2edd82f312712c030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b6500000002020000000362746302000000036b6a6c","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000c8c04686173680200000000086d657461646174610c00000004046e616d6502000000036b6a6c096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a6eae96ccc5f772aea645fd31ec4101cddcb08822","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1QAX5PCRQVQ5BN68QYK3V21076XSC484AA9ME7P","success":true},"operations":[],"transaction_identifier":{"hash":"0xf46b12e6d921802b255ba1a4e48f50bbf00f3477ef78929431a10101b3808215"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x3808f2b46ce4a47dca679ebd8f501882f7d53538935970a8b6f68916dcb9560c","index":111714},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000023fd956e6d7085bacec0dd0b16dd8bcd4ddb39414f4f20ebe8","index":2441330},"confirm_microblock_identifier":{"hash":"0xce92bbf5b564542150ea8d20bb301f5c4021642f249b55fbd49c5a46fb78d3d6","index":3},"pox_cycle_index":420,"pox_cycle_length":1050,"pox_cycle_position":329,"stacks_block_hash":"0x1561e216e11ea043d56c08a92149992afea87bfe842832a2c2ca1e5ccc3581d8"},"parent_block_identifier":{"hash":"0x7d1fe1e0121e80454131d57f2be6e87bc7d969bd0a4b64fcd00a51713cfa9371","index":111713},"timestamp":1689062395,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x72727272727272)","execution_cost":{"read_count":16,"read_length":44001,"runtime":166852,"write_count":2,"write_length":158},"fee":411080,"kind":{"data":{"args":["0x627463","0x72727272727272"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":16,"position":{"index":337},"proof":null,"raw_tx":"0x8080000000040065a21f6c2fe4aede58afa9760e32988d5ef09659000000000000001000000000000645c80000b51f60a1abd81b986894e671f25123f91e536c4446d5093fd66087d6806c536147a9b4165c1ab049eae8695930710d4a8bca8ab786d1c8fd309950ae27fabe8c030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000772727272727272","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000c8d04686173680200000000086d657461646174610c00000004046e616d65020000000772727272727272096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a65a21f6c2fe4aede58afa9760e32988d5ef09659","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"ST1JT47VC5ZJAXQJRNYMQC3HJK26NXW4PB5VA0GMF","success":true},"operations":[],"transaction_identifier":{"hash":"0xbfef8fdd5e9ff200472eb66abce71f8c002b81bd0557e3fe722ccec17624e15f"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} +{"apply":[{"block_identifier":{"hash":"0x525eadcf976a3fe9132351a2bdf64529ab91ca685506fd2268aebb6ccdbd0a81","index":113507},"metadata":{"bitcoin_anchor_block_identifier":{"hash":"0x0000000000000023e2a2635ff8e2467b18e26dd4e6a161bd909278ab4183f236","index":2443361},"confirm_microblock_identifier":{"hash":"0x73835531e58b34799f7d9e1fb74fa3cf709abba1662d69a1329de3c7fbc6c2f1","index":3},"pox_cycle_index":422,"pox_cycle_length":1050,"pox_cycle_position":260,"stacks_block_hash":"0x709606a72667f998f325667161b8b28517f82a25988f62226e16fbafba1b8da0"},"parent_block_identifier":{"hash":"0x6e7ef392e1327fc38411d301d06d9e94c378755300921ee97633f5034473dbb7","index":113506},"timestamp":1690122313,"transactions":[{"metadata":{"description":"invoked: ST000000000000000000002AMW42H.bns::name-revoke(0x627463, 0x64656c657465646f6d61696e)","execution_cost":{"read_count":16,"read_length":44016,"runtime":167107,"write_count":2,"write_length":163},"fee":2000000,"kind":{"data":{"args":["0x627463","0x64656c657465646f6d61696e"],"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"type":"ContractCall"},"nonce":1,"position":{"index":14},"proof":null,"raw_tx":"0x808000000004002ce98a2a05fca6799a8c7df2569742000ce92bc9000000000000000100000000001e84800001e9fa22998d98d330def5d0fa30936a80e3160eefc4251f5bcb313d7b6dba1a4c4dd3fbd201b39cb504613db57bb629633e0611efecaa94ab8e55359bdc9617eb030200000000021a000000000000000000000000000000000000000003626e730b6e616d652d7265766f6b65000000020200000003627463020000000c64656c657465646f6d61696e","receipt":{"contract_calls_stack":[],"events":[{"data":{"contract_identifier":"ST000000000000000000002AMW42H.bns","raw_value":"0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e6465780100000000000000000000000000000c9904686173680200000000086d657461646174610c00000004046e616d65020000000c64656c657465646f6d61696e096e616d6573706163650200000003627463026f700d0000000b6e616d652d7265766f6b650974782d73656e646572051a2ce98a2a05fca6799a8c7df2569742000ce92bc9","topic":"print"},"type":"SmartContractEvent"}],"mutated_assets_radius":[],"mutated_contracts_radius":["ST000000000000000000002AMW42H.bns"]},"result":"(ok true)","sender":"STPEK2HA0QYACYCTHHYZ4NMQ8800ST9BS4F3CE2Z","success":true},"operations":[],"transaction_identifier":{"hash":"0x19cb213406c30dded17ca9d1117800749df3fca3647f14da4fba1443e6263d17"}}]}],"chainhook":{"is_streaming_blocks":false,"predicate":{"contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke","scope":"contract_call"},"uuid":"0dcfe481-ef9e-40f7-ad7b-1a9a39895516"},"rollback":[]} diff --git a/tests/stacks-predicates/contract-call/contract-call-file.json b/tests/stacks-predicates/contract-call/contract-call-file.json new file mode 100644 index 000000000..9d655e5a5 --- /dev/null +++ b/tests/stacks-predicates/contract-call/contract-call-file.json @@ -0,0 +1,22 @@ +{ + "chain": "stacks", + "uuid": "0dcfe481-ef9e-40f7-ad7b-1a9a39895516", + "name": "Contract Call File", + "version": 1, + "networks": { + "testnet": { + "start_block": 0, + "end_block": 311800, + "if_this": { + "scope": "contract_call", + "contract_identifier": "ST000000000000000000002AMW42H.bns", + "method": "name-revoke" + }, + "then_that": { + "file_append": { + "path": "script/stacks-predicates/contract-call/contract-call-file-result.json" + } + } + } + } +} diff --git a/tests/stacks-predicates/contract-call/contract-call-post.json b/tests/stacks-predicates/contract-call/contract-call-post.json new file mode 100644 index 000000000..60bf64e05 --- /dev/null +++ b/tests/stacks-predicates/contract-call/contract-call-post.json @@ -0,0 +1 @@ +{"chain":"stacks","uuid":"35ed0323-7549-41ee-a546-ab00d453a681","name":"Contract Call Post","version":1,"networks":{"testnet":{"start_block":0,"end_block":311800,"if_this":{"scope":"contract_call","contract_identifier":"ST000000000000000000002AMW42H.bns","method":"name-revoke"},"then_that":{"http_post":{"url":"https://webhook.site/db639532-0288-44e3-9add-1584af436d6d","authorization_header":""}}}}} \ No newline at end of file